jspurefix
Version:
pure node js fix engine
72 lines • 2.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MessageParser = void 0;
const definition_1 = require("../../definition");
const node_parser_1 = require("./node-parser");
const parse_context_1 = require("./parse-context");
const contained_1 = require("../../contained");
class MessageParser extends node_parser_1.NodeParser {
constructor(progress) {
super(progress);
this.progress = progress;
}
open(line, node) {
switch (node.name) {
case 'message': {
const att = node.attributes;
const msg = new definition_1.MessageDefinition(att.name, att.name, att.msgtype, att.msgcat, null);
const context = new parse_context_1.ParseContext(msg.name, true, msg);
this.header(msg, context);
break;
}
case 'field': {
this.addSimple(node);
break;
}
case 'component': {
if (node.isSelfClosing) {
this.addComponentField(node.attributes.name, node);
}
break;
}
case 'group': {
if (!node.isSelfClosing) {
this.beginGroupDefinition(node);
}
break;
}
}
}
header(msg, context) {
const hdr = this.progress.definitions.component.get('StandardHeader');
const builder = new contained_1.ContainedSetBuilder(msg);
const contained = hdr
? new contained_1.ContainedComponentField(hdr, msg.fields.length, true)
: null;
if (contained) {
this.progress.newAdds++;
builder.add(contained);
this.startContext(context);
}
}
close(line, name) {
var _a, _b;
switch (name) {
case 'message': {
const parent = (_a = this.parseContexts.pop()) !== null && _a !== void 0 ? _a : null;
const message = (_b = parent === null || parent === void 0 ? void 0 : parent.asMessage()) !== null && _b !== void 0 ? _b : null;
if (message) {
this.progress.newDefines++;
this.progress.definitions.addMessage(message);
}
break;
}
case 'group': {
this.addGroupField(name);
break;
}
}
}
}
exports.MessageParser = MessageParser;
//# sourceMappingURL=message-parser.js.map