162 lines
4.1 KiB
JavaScript
Raw Normal View History

/**
* Created by knut on 14-11-19.
*/
2017-04-11 22:14:25 +08:00
var actors = {}
var messages = []
var notes = []
var title = ''
var Logger = require('../../logger')
var log = Logger.Log
exports.addActor = function (id, name, description) {
2017-04-16 23:48:36 +08:00
// Don't allow description nulling
2017-04-11 22:14:25 +08:00
var old = actors[id]
if (old && name === old.name && description == null) return
2017-04-16 23:48:36 +08:00
// Don't allow null descriptions, either
2017-04-11 22:14:25 +08:00
if (description == null) description = name
2017-04-16 23:48:36 +08:00
actors[id] = { name: name, description: description }
2017-04-11 22:14:25 +08:00
}
2017-04-11 22:14:25 +08:00
exports.addMessage = function (idFrom, idTo, message, answer) {
2017-04-16 23:48:36 +08:00
messages.push({ from: idFrom, to: idTo, message: message, answer: answer })
2017-04-11 22:14:25 +08:00
}
2017-04-11 22:14:25 +08:00
exports.addSignal = function (idFrom, idTo, message, messageType) {
log.debug('Adding message from=' + idFrom + ' to=' + idTo + ' message=' + message + ' type=' + messageType)
2017-04-16 23:48:36 +08:00
messages.push({ from: idFrom, to: idTo, message: message, type: messageType })
2017-04-11 22:14:25 +08:00
}
exports.getMessages = function () {
return messages
}
exports.getActors = function () {
return actors
}
exports.getActor = function (id) {
return actors[id]
}
exports.getActorKeys = function () {
return Object.keys(actors)
}
exports.getTitle = function () {
return title
}
exports.clear = function () {
actors = {}
messages = []
}
2014-12-04 17:58:05 +01:00
exports.LINETYPE = {
2017-04-11 22:14:25 +08:00
SOLID: 0,
DOTTED: 1,
NOTE: 2,
SOLID_CROSS: 3,
DOTTED_CROSS: 4,
SOLID_OPEN: 5,
DOTTED_OPEN: 6,
LOOP_START: 10,
LOOP_END: 11,
ALT_START: 12,
ALT_ELSE: 13,
ALT_END: 14,
OPT_START: 15,
OPT_END: 16,
ACTIVE_START: 17,
ACTIVE_END: 18,
PAR_START: 19,
PAR_AND: 20,
PAR_END: 21
}
2014-12-04 17:58:05 +01:00
exports.ARROWTYPE = {
2017-04-11 22:14:25 +08:00
FILLED: 0,
OPEN: 1
}
2014-12-04 17:58:05 +01:00
exports.PLACEMENT = {
2017-04-11 22:14:25 +08:00
LEFTOF: 0,
RIGHTOF: 1,
OVER: 2
}
2014-12-04 17:58:05 +01:00
2017-04-11 22:14:25 +08:00
exports.addNote = function (actor, placement, message) {
2017-04-16 23:48:36 +08:00
var note = { actor: actor, placement: placement, message: message }
2014-12-04 17:58:05 +01:00
2017-04-16 23:48:36 +08:00
// Coerce actor into a [to, from, ...] array
2017-04-11 22:14:25 +08:00
var actors = [].concat(actor, actor)
2014-12-04 17:58:05 +01:00
2017-04-11 22:14:25 +08:00
notes.push(note)
2017-04-16 23:48:36 +08:00
messages.push({ from: actors[0], to: actors[1], message: message, type: exports.LINETYPE.NOTE, placement: placement })
}
2017-04-11 22:14:25 +08:00
exports.setTitle = function (titleText) {
title = titleText
}
2014-12-04 17:58:05 +01:00
2017-04-11 22:14:25 +08:00
exports.parseError = function (err, hash) {
global.mermaidAPI.parseError(err, hash)
}
2017-04-11 22:14:25 +08:00
exports.apply = function (param) {
if (param instanceof Array) {
param.forEach(function (item) {
exports.apply(item)
})
} else {
switch (param.type) {
case 'addActor':
exports.addActor(param.actor, param.actor, param.description)
break
case 'activeStart':
exports.addSignal(param.actor, undefined, undefined, param.signalType)
break
case 'activeEnd':
exports.addSignal(param.actor, undefined, undefined, param.signalType)
break
case 'addNote':
exports.addNote(param.actor, param.placement, param.text)
break
case 'addMessage':
exports.addSignal(param.from, param.to, param.msg, param.signalType)
break
case 'loopStart':
exports.addSignal(undefined, undefined, param.loopText, param.signalType)
break
case 'loopEnd':
exports.addSignal(undefined, undefined, undefined, param.signalType)
break
case 'optStart':
exports.addSignal(undefined, undefined, param.optText, param.signalType)
break
case 'optEnd':
exports.addSignal(undefined, undefined, undefined, param.signalType)
break
case 'altStart':
exports.addSignal(undefined, undefined, param.altText, param.signalType)
break
case 'else':
exports.addSignal(undefined, undefined, param.altText, param.signalType)
break
case 'altEnd':
exports.addSignal(undefined, undefined, undefined, param.signalType)
break
case 'setTitle':
exports.setTitle(param.text)
break
case 'parStart':
exports.addSignal(undefined, undefined, param.parText, param.signalType)
break
case 'and':
exports.addSignal(undefined, undefined, param.parText, param.signalType)
break
case 'parEnd':
exports.addSignal(undefined, undefined, undefined, param.signalType)
break
}
2017-04-11 22:14:25 +08:00
}
}