mirror of
https://github.com/cupcakearmy/cometa.git
synced 2025-09-06 04:50:40 +00:00
Dist
This commit is contained in:
58
dist/compiler.js
vendored
Normal file
58
dist/compiler.js
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const options_1 = require("./options");
|
||||
const actions = require("./actions");
|
||||
const rexp = Object.freeze({
|
||||
begin: new RegExp(options_1.re.begin, 'g'),
|
||||
end: new RegExp(options_1.re.ending, 'g'),
|
||||
});
|
||||
exports.compileBlock = part => {
|
||||
let next;
|
||||
const getNext = (s) => Object.freeze({
|
||||
start: s.search(rexp.begin),
|
||||
end: s.search(rexp.end),
|
||||
});
|
||||
let ret = {
|
||||
parts: [],
|
||||
length: NaN
|
||||
};
|
||||
function addToRet(item) {
|
||||
ret.parts = ret.parts.concat(item);
|
||||
}
|
||||
next = getNext(part);
|
||||
while (next.start !== -1) {
|
||||
if (next.start === null || next.end === null)
|
||||
throw new Error(options_1.error.parse.default);
|
||||
addToRet(part.substr(0, next.start));
|
||||
part = part.slice(next.start);
|
||||
let func;
|
||||
switch (part[options_1.re.begin.length]) {
|
||||
case options_1.re.comment:
|
||||
func = actions.comment;
|
||||
break;
|
||||
case options_1.re.if:
|
||||
func = actions.logic;
|
||||
break;
|
||||
case options_1.re.for:
|
||||
func = actions.loop;
|
||||
break;
|
||||
case options_1.re.incude:
|
||||
func = actions.importer;
|
||||
break;
|
||||
default:
|
||||
func = actions.variables;
|
||||
break;
|
||||
}
|
||||
const result = func(part);
|
||||
addToRet(result.parts);
|
||||
part = part.slice(result.length);
|
||||
next = getNext(part);
|
||||
}
|
||||
addToRet(part);
|
||||
return ret;
|
||||
};
|
||||
function process(html, options = {}) {
|
||||
const parts = exports.compileBlock(html).parts;
|
||||
return parts;
|
||||
}
|
||||
exports.process = process;
|
Reference in New Issue
Block a user