UNPKG

phrase-engine

Version:

Language files on steroids for conversational UIs that aren't boring.

56 lines 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const SentenceNode_1 = require("./Nodes/SentenceNode"); const makeTerminus_1 = require("./makeTerminus"); class PhraseEngine { constructor(sentence) { this.__sentence = sentence; } static getDOMParser() { return DOMParser; } static compile(xml) { return new PhraseEngine(new SentenceNode_1.SentenceNode((new (this.getDOMParser())).parseFromString(xml, 'text/xml').documentElement, { ignore_spaces: [false], next_stack: [makeTerminus_1.default()], id_map: {}, node_count: 0 })); } makeEvalPacket(data) { return { data, sentence_components: [], id_render_map: {}, class_render_map: {} }; } makePresentable(components) { return components .join('') .replace(/ +/ig, ' ') .replace(/\r/ig, '') .replace(/ +\n/ig, "\n") .replace(/\n +/ig, "\n") .trim(); } random(data = {}) { return this.makePresentable(this.__sentence.eval(this.makeEvalPacket(data)).sentence_components); } *iterate(data = {}) { const iterator = this.__sentence.gen(this.makeEvalPacket(data)); for (let pack of iterator) { yield this.makePresentable(pack.sentence_components); } } vars() { return this.__sentence.vars({ vars: {} }); } count(data = {}) { return this.__sentence.count(this.makeEvalPacket(data)); } } exports.default = PhraseEngine; //# sourceMappingURL=browser.js.map