ts-edifact
Version:
Edifact parser library
60 lines • 2.66 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.UNECEMetaDataPageParser = void 0;
const messageStructureParser_1 = require("./messageStructureParser");
const unecePageParser_1 = require("./unecePageParser");
var State;
(function (State) {
State["initial"] = "initial";
State["beforeMessageType"] = "beforeMessageType";
State["afterMessageType"] = "afterMessageType";
State["beforeMetaData"] = "beforeMetaData";
State["afterMetaData"] = "afterMetaData";
})(State || (State = {}));
const SM_DEFINITION = {
initial: State.initial,
transitions: [
{ from: State.initial, to: State.beforeMessageType },
{ from: State.beforeMessageType, to: State.afterMessageType },
{ from: State.afterMessageType, to: State.beforeMetaData },
{ from: State.beforeMetaData, to: State.afterMetaData }
]
};
class UNECEMetaDataPageParser extends unecePageParser_1.UNECEPageParser {
constructor() {
super(SM_DEFINITION);
}
setupHandler() {
const handler = super.setupHandler();
handler.onText = (text) => {
switch (this.sm.state) {
case State.initial:
if (text.includes('Message Type')) {
this.sm.transition(State.beforeMessageType);
}
break;
case State.beforeMessageType:
this.messageType = text;
this.sm.transition(State.afterMessageType);
break;
case State.afterMessageType:
if (!this.messageType) {
this.throwCouldNotParsePage();
}
else {
if (text.includes('Version') && text.includes('Release') && text.includes('Contr. Agency')) {
const version = this.extractTextValue(text, /Version\s*: ([A-Z]*)\s/g, 1);
const release = this.extractTextValue(text, /Release\s*: ([0-9A-Z]*)\s/g, 1);
const controllingAgency = this.extractTextValue(text, /Contr. Agency\s*: ([0-9A-Z]*)\s/g, 1);
this._spec = new messageStructureParser_1.EdifactMessageSpecificationImpl(this.messageType, version, release, controllingAgency);
}
}
break;
default: this.throwInvalidParserState(this.sm.state);
}
};
return handler;
}
}
exports.UNECEMetaDataPageParser = UNECEMetaDataPageParser;
//# sourceMappingURL=uneceMetaDataPageParser.js.map
;