UNPKG

ts-edifact

Version:
60 lines 2.66 kB
"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