mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-19 14:30:38 -07:00
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:
@@ -1,6 +1,7 @@
|
|||||||
const _ = require('./util/underscore.js');
|
const _ = require('./util/underscore.js');
|
||||||
const lexical = require('./lexical.js');
|
const lexical = require('./lexical.js');
|
||||||
const assert = require('./util/assert.js');
|
const assert = require('./util/assert.js');
|
||||||
|
const toStr = Object.prototype.toString;
|
||||||
|
|
||||||
var Scope = {
|
var Scope = {
|
||||||
getAll: function() {
|
getAll: function() {
|
||||||
@@ -75,7 +76,16 @@ var Scope = {
|
|||||||
throw new TypeError('undefined variable');
|
throw new TypeError('undefined variable');
|
||||||
}
|
}
|
||||||
var variable = obj[varName];
|
var variable = obj[varName];
|
||||||
|
var lastName = paths.pop();
|
||||||
paths.forEach(p => variable = variable[p]);
|
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;
|
return variable;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -221,6 +221,10 @@ describe('filters', function() {
|
|||||||
' | split: ", " %}{{ my_array | size }}',
|
' | split: ", " %}{{ my_array | size }}',
|
||||||
'4');
|
'4');
|
||||||
});
|
});
|
||||||
|
it('should also be used with dot notation - string',
|
||||||
|
() => test('{% assign my_string = "Ground control to Major Tom." %}{{ my_string.size }}', '28'));
|
||||||
|
it('should also be used with dot notation - array',
|
||||||
|
() => test('{% assign my_array = "apples, oranges, peaches, plums" | split: ", " %}{{ my_array.size }}', '4'));
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('slice', function() {
|
describe('slice', function() {
|
||||||
|
|||||||
Reference in New Issue
Block a user