refactor: merge render register into scope

This commit is contained in:
harttle
2016-11-06 15:22:29 +08:00
parent 258f4a2073
commit d7b7b1724f
8 changed files with 21 additions and 30 deletions
+2 -7
View File
@@ -42,7 +42,7 @@ var render = {
if (template.name === 'break') {
return Promise.reject(new RenderBreak('break'));
}
return template.render(scope, this.register);
return template.render(scope);
},
evalOutput: function(template, scope) {
@@ -50,7 +50,7 @@ var render = {
var val = Syntax.evalExp(template.initial, scope);
template.filters.some(filter => {
if (filter.error) {
if (this.register.strict_filters) {
if (scope.get('liquid.strict_filters')) {
throw filter.error;
} else {
val = ''
@@ -60,16 +60,11 @@ var render = {
val = filter.render(val, scope);
});
return val;
},
initRegister: function(opts) {
return this.register = opts;
}
};
function factory() {
var instance = Object.create(render);
instance.register = {};
return instance;
}
+6 -3
View File
@@ -26,7 +26,7 @@ var Scope = {
},
get: function(str) {
var val = this.safeGet(str);
if (val === undefined && this.opts.strict) {
if (val === undefined && this.opts.strict_variables) {
throw new Error(`[strict_variables] undefined variable: ${str}`);
}
return val;
@@ -149,9 +149,12 @@ function matchRightBracket(str, begin) {
exports.factory = function(ctx, opts) {
opts = _.assign({
strict: false,
blocks: {}
strict_variables: false,
strict_filters: false,
blocks: {},
root: []
}, opts);
ctx = _.assign(ctx, {
liquid: opts
});
+2 -2
View File
@@ -18,9 +18,9 @@ module.exports = function() {
var tagImpls = {};
var _tagInstance = {
render: function(scope, register) {
render: function(scope) {
var obj = hash(this.token.args, scope);
return this.tagImpl.render && this.tagImpl.render(scope, obj, register) || Promise.resolve('');
return this.tagImpl.render && this.tagImpl.render(scope, obj) || Promise.resolve('');
},
parse: function(token, tokens){
this.type = 'tag';