mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-15 12:20:40 -07:00
51 lines
1.4 KiB
JavaScript
51 lines
1.4 KiB
JavaScript
const context = require('./context');
|
|
const tokenizer = require('./tokenizer.js');
|
|
const Render = require('./render.js');
|
|
const lexical = require('./lexical.js');
|
|
const path = require("path");
|
|
const fs = require('fs');
|
|
const Tag = require('./tag.js');
|
|
const Filter = require('./filter.js');
|
|
|
|
const tagsPath = path.join(__dirname, "tags");
|
|
const filtersPath = path.join(__dirname, "filters");
|
|
|
|
var _engine = {
|
|
registerFilter : function(name, filter){
|
|
return this.filter.register(name, filter);
|
|
},
|
|
registerTag : function(name, tag){
|
|
return this.tag.register(name, tag);
|
|
}
|
|
};
|
|
|
|
function factory(){
|
|
var engine = Object.create(_engine);
|
|
engine.tag = Tag();
|
|
engine.filter = Filter();
|
|
|
|
var renderer = Render(engine.filter, engine.tag);
|
|
engine.evaluate = renderer.evaluate;
|
|
engine.renderTokens = renderer.render;
|
|
engine.render = function(html, ctx) {
|
|
return engine.renderTokens(tokenizer.parse(html), context.factory(ctx));
|
|
},
|
|
|
|
fs.readdirSync(tagsPath).map(function(f){
|
|
var match = /^(\w+)\.js$/.exec(f);
|
|
if(!match) return;
|
|
require("./tags/" + f)(engine);
|
|
});
|
|
|
|
fs.readdirSync(filtersPath).map(function(f){
|
|
var match = /^(\w+)\.js$/.exec(f);
|
|
if(!match) return;
|
|
require("./filters/" + f)(engine);
|
|
});
|
|
return engine;
|
|
}
|
|
|
|
factory.lexical = lexical;
|
|
|
|
module.exports = factory;
|