Size can also be used with dot notation (#25)

* Size can also be used with dot notation (for example, {{ my_string.size }}).

* Fixed test failed.

* Optimization
This commit is contained in:
chenos
2017-03-20 15:06:32 +08:00
committed by Jun Yang
parent 5b5db616e2
commit b307f6ffd0
2 changed files with 14 additions and 0 deletions
+10
View File
@@ -1,6 +1,7 @@
const _ = require('./util/underscore.js');
const lexical = require('./lexical.js');
const assert = require('./util/assert.js');
const toStr = Object.prototype.toString;
var Scope = {
getAll: function() {
@@ -75,7 +76,16 @@ var Scope = {
throw new TypeError('undefined variable');
}
var variable = obj[varName];
var lastName = paths.pop();
paths.forEach(p => variable = variable[p]);
if (undefined !== lastName) {
if (lastName === 'size' &&
(toStr.call(variable) === '[object Array]'
|| toStr.call(variable) === '[object String]')) {
return variable.length;
}
variable = variable[lastName]
}
return variable;
},