phrase-engine
Version:
Language files on steroids for conversational UIs that aren't boring.
43 lines • 1.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const SpaceNode_1 = require("./Nodes/SpaceNode");
const peek_1 = require("./peek");
const PhraseError_1 = require("./PhraseError");
function default_1(root, packet, support) {
const length = root.childNodes.length;
if (length === 0) {
return peek_1.default(packet.next_stack);
}
let last_node;
let name = root.childNodes.item(length - 1).nodeName;
if (!(name in support)) {
let err = new PhraseError_1.PhraseError(`Unrecognized child <${name}>...</${name}>`);
err.node(root.childNodes.item(length - 1));
return err;
}
last_node = support[name](root.childNodes.item(length - 1), packet);
if (last_node instanceof SpaceNode_1.SpaceNode && peek_1.default(packet.ignore_spaces)) {
last_node = peek_1.default(packet.next_stack);
}
for (let i = length - 2; i > -1; i--) {
packet.next_stack.push(last_node);
let name = root.childNodes.item(i).nodeName;
let node;
if (!(name in support)) {
let err = new PhraseError_1.PhraseError(`Unrecognized child <${name}>...</${name}>`);
err.node(root.childNodes.item(i));
throw err;
}
node = support[name](root.childNodes.item(i), packet);
if (node instanceof SpaceNode_1.SpaceNode && peek_1.default(packet.ignore_spaces)) {
packet.next_stack.pop();
continue;
}
last_node = node;
packet.next_stack.pop();
}
return last_node;
}
exports.default = default_1;
;
//# sourceMappingURL=text.js.map