scope get all

This commit is contained in:
harttle
2016-06-26 13:16:34 +08:00
parent a482b4abe5
commit 82a6a72013
3 changed files with 18 additions and 4 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "shopify-liquid",
"version": "1.1.8",
"version": "1.1.9",
"description": "A Shopify Liquid Implementation in Node.js",
"main": "index.js",
"scripts": {
+7
View File
@@ -4,9 +4,16 @@ const error = require('./error.js');
var scope = {
get: function(str) {
var ctx = {};
for (var i = this.scopes.length - 1; i >= 0; i--) {
if(str === undefined){
_.merge(ctx, this.scopes[i]);
}
var v = _.get(this.scopes[i], str);
if (v !== undefined) return v;
if(str === undefined){
return ctx;
}
}
},
set: function(k, v) {
+10 -3
View File
@@ -5,18 +5,25 @@ var expect = chai.expect;
var Scope = require('../src/scope.js');
describe('scope', function() {
var scope;
var scope, ctx;
beforeEach(function(){
scope = Scope.factory({
ctx = {
foo: 'bar',
bar: ['a', {b: [1, 2]}]
});
};
scope = Scope.factory(ctx);
});
it('should get property', function() {
scope.get('foo').should.equal('bar');
});
it('should get all property', function() {
scope.get().should.deep.equal(ctx);
expect(scope.get('')).to.equal(undefined);
expect(scope.get(false)).to.equal(undefined);
});
it('should set property', function() {
scope.set('foo', 'FOO');
scope.get('foo').should.equal('FOO');