60 lines
2.6 KiB
JavaScript
60 lines
2.6 KiB
JavaScript
"use strict";
|
|
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
|