freemarker-parser
Version:
Freemarker Parser is a javascript implementation of the Freemarker
185 lines • 8.22 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const NodeTypes_1 = require("../enum/NodeTypes");
const ParseError_1 = __importDefault(require("../errors/ParseError"));
const AssignNode_1 = __importDefault(require("../nodes/AssignNode"));
const AttemptNode_1 = __importDefault(require("../nodes/AttemptNode"));
const AutoEscNode_1 = __importDefault(require("../nodes/AutoEscNode"));
const BreakNode_1 = __importDefault(require("../nodes/BreakNode"));
const CommentNode_1 = __importDefault(require("../nodes/CommentNode"));
const CompressNode_1 = __importDefault(require("../nodes/CompressNode"));
const ConditionNode_1 = __importDefault(require("../nodes/ConditionNode"));
const EscapeNode_1 = __importDefault(require("../nodes/EscapeNode"));
const FlushNode_1 = __importDefault(require("../nodes/FlushNode"));
const FtlNode_1 = __importDefault(require("../nodes/FtlNode"));
const FunctionNode_1 = __importDefault(require("../nodes/FunctionNode"));
const GlobalNode_1 = __importDefault(require("../nodes/GlobalNode"));
const ImportNode_1 = __importDefault(require("../nodes/ImportNode"));
const IncludeNode_1 = __importDefault(require("../nodes/IncludeNode"));
const InterpolationNode_1 = __importDefault(require("../nodes/InterpolationNode"));
const ListNode_1 = __importDefault(require("../nodes/ListNode"));
const LocalNode_1 = __importDefault(require("../nodes/LocalNode"));
const LtNode_1 = __importDefault(require("../nodes/LtNode"));
const MacroCallNode_1 = __importDefault(require("../nodes/MacroCallNode"));
const MacroNode_1 = __importDefault(require("../nodes/MacroNode"));
const NoAutoEscNode_1 = __importDefault(require("../nodes/NoAutoEscNode"));
const NoEscapeNode_1 = __importDefault(require("../nodes/NoEscapeNode"));
const NtNode_1 = __importDefault(require("../nodes/NtNode"));
const OutputFormatNode_1 = __importDefault(require("../nodes/OutputFormatNode"));
const ReturnNode_1 = __importDefault(require("../nodes/ReturnNode"));
const RtNode_1 = __importDefault(require("../nodes/RtNode"));
const SettingNode_1 = __importDefault(require("../nodes/SettingNode"));
const StopNode_1 = __importDefault(require("../nodes/StopNode"));
const SwitchCaseNode_1 = __importDefault(require("../nodes/SwitchCaseNode"));
const SwitchDefaultNode_1 = __importDefault(require("../nodes/SwitchDefaultNode"));
const SwitchNode_1 = __importDefault(require("../nodes/SwitchNode"));
const TextNode_1 = __importDefault(require("../nodes/TextNode"));
const TNode_1 = __importDefault(require("../nodes/TNode"));
const Items_1 = __importDefault(require("../nodes/Items"));
const Nodes = {
[NodeTypes_1.NodeTypes.Else](token, parent) {
if (parent instanceof ConditionNode_1.default && !parent.alternate) {
parent.alternate = [];
return parent;
}
else if (parent instanceof ListNode_1.default && !parent.fallback) {
parent.fallback = [];
return parent;
}
throw new ParseError_1.default(`Error while creating node '${NodeTypes_1.NodeTypes.Else}' inside '${parent.type}'`, token);
},
[NodeTypes_1.NodeTypes.Condition](token) {
return new ConditionNode_1.default(token);
},
[NodeTypes_1.NodeTypes.ConditionElse](token, parent) {
if (parent instanceof ConditionNode_1.default && !parent.alternate) {
parent.alternate = [];
return new ConditionNode_1.default(token);
}
throw new ParseError_1.default(`Error while creating node '${NodeTypes_1.NodeTypes.ConditionElse}' inside '${parent.type}'`, token);
},
[NodeTypes_1.NodeTypes.Recover](token, parent) {
if (parent instanceof AttemptNode_1.default) {
if (!parent.fallback) {
parent.fallback = [];
return parent;
}
}
throw new ParseError_1.default(`Error while creating node '${NodeTypes_1.NodeTypes.Recover}' inside '${parent.type}'`, token);
},
[NodeTypes_1.NodeTypes.SwitchCase](token, parent) {
if (parent instanceof SwitchNode_1.default) {
parent.cases.push(new SwitchCaseNode_1.default(token));
return parent;
}
throw new ParseError_1.default(`Error while creating node '${NodeTypes_1.NodeTypes.SwitchCase}' inside '${parent.type}'`, token);
},
[NodeTypes_1.NodeTypes.SwitchDefault](token, parent) {
if (parent instanceof SwitchNode_1.default) {
parent.cases.push(new SwitchDefaultNode_1.default(token));
return parent;
}
throw new ParseError_1.default(`Error while creating node '${NodeTypes_1.NodeTypes.SwitchDefault}' inside '${parent.type}'`, token);
},
[NodeTypes_1.NodeTypes.Global](token) {
return new GlobalNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Local](token) {
return new LocalNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Assign](token) {
return new AssignNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Function](token) {
return new FunctionNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Return](token) {
return new ReturnNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Attempt](token) {
return new AttemptNode_1.default(token);
},
[NodeTypes_1.NodeTypes.List](token) {
return new ListNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Macro](token) {
return new MacroNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Include](token) {
return new IncludeNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Interpolation](token) {
return new InterpolationNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Items](token) {
return new Items_1.default(token);
},
[NodeTypes_1.NodeTypes.Text](token) {
return new TextNode_1.default(token);
},
[NodeTypes_1.NodeTypes.MacroCall](token) {
return new MacroCallNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Comment](token) {
return new CommentNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Switch](token) {
return new SwitchNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Break](token) {
return new BreakNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Compress](token) {
return new CompressNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Import](token) {
return new ImportNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Stop](token) {
return new StopNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Setting](token) {
return new SettingNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Rt](token) {
return new RtNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Lt](token) {
return new LtNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Nt](token) {
return new NtNode_1.default(token);
},
[NodeTypes_1.NodeTypes.T](token) {
return new TNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Flush](token) {
return new FlushNode_1.default(token);
},
[NodeTypes_1.NodeTypes.Escape](token) {
return new EscapeNode_1.default(token);
},
[NodeTypes_1.NodeTypes.NoEscape](token, parent) {
if (parent instanceof EscapeNode_1.default || parent instanceof NoEscapeNode_1.default) {
return new NoEscapeNode_1.default(token);
}
throw new ParseError_1.default(`Error while creating node '${NodeTypes_1.NodeTypes.NoEscape}' inside '${parent.type}'`, token);
},
[NodeTypes_1.NodeTypes.Ftl](token) {
return new FtlNode_1.default(token);
},
[NodeTypes_1.NodeTypes.AutoEsc](token) {
return new AutoEscNode_1.default(token);
},
[NodeTypes_1.NodeTypes.NoAutoEsc](token) {
return new NoAutoEscNode_1.default(token);
},
[NodeTypes_1.NodeTypes.OutputFormat](token) {
return new OutputFormatNode_1.default(token);
},
};
exports.default = Nodes;
//# sourceMappingURL=Nodes.js.map