phrase-engine
Version:
Language files on steroids for conversational UIs that aren't boring.
56 lines • 1.7 kB
JavaScript
;
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