derby-templates
Advanced tools
Comparing version 0.7.0 to 0.7.1
@@ -181,3 +181,9 @@ exports.ContextMeta = ContextMeta; | ||
Context.prototype.get = function() { | ||
return (this.expression) ? this.expression.get(this) : this.controller.model.data; | ||
var value = (this.expression) ? | ||
this.expression.get(this) : | ||
this.controller.model.data; | ||
if (this.item != null) { | ||
return value && value[this.item]; | ||
} | ||
return value; | ||
}; | ||
@@ -184,0 +190,0 @@ |
@@ -11,2 +11,3 @@ var serializeObject = require('serialize-object'); | ||
exports.renderValue = renderValue; | ||
exports.renderTemplate = renderTemplate; | ||
exports.ExpressionMeta = ExpressionMeta; | ||
@@ -55,2 +56,8 @@ | ||
function renderValue(value, context) { | ||
return (typeof value !== 'object') ? value : | ||
(value instanceof Template) ? renderTemplate(value, context) : | ||
(Array.isArray(value)) ? renderArray(value, context) : | ||
renderObject(value, context); | ||
} | ||
function renderTemplate(value, context) { | ||
var i = 1000; | ||
@@ -63,2 +70,36 @@ while (value instanceof Template) { | ||
} | ||
function renderArray(array, context) { | ||
for (var i = 0; i < array.length; i++) { | ||
if (hasTemplateProperty(array[i])) { | ||
return renderArrayProperties(array, context); | ||
} | ||
} | ||
return array; | ||
} | ||
function renderObject(object, context) { | ||
return (hasTemplateProperty(object)) ? | ||
renderObjectProperties(object, context) : object; | ||
} | ||
function hasTemplateProperty(object) { | ||
if (!object) return false; | ||
if (object.constructor !== Object) return false; | ||
for (var key in object) { | ||
if (object[key] instanceof Template) return true; | ||
} | ||
return false; | ||
} | ||
function renderArrayProperties(array, context) { | ||
var out = new Array(array.length); | ||
for (var i = 0; i < array.length; i++) { | ||
out[i] = renderValue(array[i], context); | ||
} | ||
return out; | ||
} | ||
function renderObjectProperties(object, context) { | ||
var out = {}; | ||
for (var key in object) { | ||
out[key] = renderValue(object[key], context); | ||
} | ||
return out; | ||
} | ||
@@ -124,11 +165,2 @@ function ExpressionMeta(source, blockType, isEnd, as, keyAs, unescaped, bindType, valueType) { | ||
}; | ||
Expression.prototype._getPatch = function(context, value) { | ||
if (this.meta && this.meta.blockType) { | ||
value = renderValue(value, context); | ||
} | ||
if (context && context.expression === this && context.item != null) { | ||
value = value && value[context.item]; | ||
} | ||
return (value instanceof Expression) ? value.get(context) : value; | ||
}; | ||
Expression.prototype._resolvePatch = function(context, segments) { | ||
@@ -159,4 +191,4 @@ return (context && context.expression === this && context.item != null) ? | ||
}; | ||
LiteralExpression.prototype.get = function(context) { | ||
return this._getPatch(context, this.value); | ||
LiteralExpression.prototype.get = function() { | ||
return this.value; | ||
}; | ||
@@ -179,4 +211,3 @@ | ||
if (!context.controller) return; | ||
var value = lookup(this.segments, context.controller.model.data); | ||
return this._getPatch(context, value); | ||
return lookup(this.segments, context.controller.model.data); | ||
}; | ||
@@ -215,6 +246,6 @@ PathExpression.prototype.resolve = function(context) { | ||
if (this.segments.length) { | ||
value = renderValue(value, relativeContext); | ||
value = renderTemplate(value, relativeContext); | ||
value = lookup(this.segments, value); | ||
} | ||
return this._getPatch(context, value); | ||
return value; | ||
}; | ||
@@ -258,6 +289,6 @@ RelativePathExpression.prototype.resolve = function(context) { | ||
if (this.segments.length) { | ||
value = renderValue(value, aliasContext); | ||
value = renderTemplate(value, aliasContext); | ||
value = lookup(this.segments, value); | ||
} | ||
return this._getPatch(context, value); | ||
return value; | ||
}; | ||
@@ -308,6 +339,6 @@ AliasPathExpression.prototype.resolve = function(context) { | ||
if (this.segments.length) { | ||
value = renderValue(value, attributeContext); | ||
value = renderTemplate(value, attributeContext); | ||
value = lookup(this.segments, value); | ||
} | ||
return this._getPatch(context, value); | ||
return value; | ||
}; | ||
@@ -355,4 +386,3 @@ AttributePathExpression.prototype.resolve = function(context) { | ||
var base = before[inside]; | ||
var value = (this.afterSegments) ? lookup(this.afterSegments, base) : base; | ||
return this._getPatch(context, value); | ||
return (this.afterSegments) ? lookup(this.afterSegments, base) : base; | ||
}; | ||
@@ -397,4 +427,3 @@ BracketsExpression.prototype.resolve = function(context) { | ||
} | ||
var out = (this.afterSegments) ? lookup(this.afterSegments, items) : items; | ||
return this._getPatch(context, out); | ||
return (this.afterSegments) ? lookup(this.afterSegments, items) : items; | ||
}; | ||
@@ -428,4 +457,3 @@ ArrayExpression.prototype.dependencies = function(context, options) { | ||
} | ||
var out = (this.afterSegments) ? lookup(this.afterSegments, object) : object; | ||
return this._getPatch(context, out); | ||
return (this.afterSegments) ? lookup(this.afterSegments, object) : object; | ||
}; | ||
@@ -460,6 +488,3 @@ ObjectExpression.prototype.dependencies = function(context, options) { | ||
// Lookup property underneath computed value if needed | ||
if (this.afterSegments) { | ||
value = lookup(this.afterSegments, value); | ||
} | ||
return this._getPatch(context, value); | ||
return (this.afterSegments) ? lookup(this.afterSegments, value) : value; | ||
}; | ||
@@ -466,0 +491,0 @@ FnExpression.prototype.apply = function(context, extraInputs) { |
{ | ||
"name": "derby-templates", | ||
"version": "0.7.0", | ||
"version": "0.7.1", | ||
"main": "index.js", | ||
@@ -5,0 +5,0 @@ "scripts": { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
67138
1735