Skip to content

Commit

Permalink
fix: reading .first, .last of Array, closes #175
Browse files Browse the repository at this point in the history
  • Loading branch information
harttle committed Nov 15, 2019
1 parent ef28903 commit f82da11
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 2 deletions.
16 changes: 14 additions & 2 deletions src/context/context.ts
Expand Up @@ -123,11 +123,23 @@ function readProperty (obj: Scope, key: string) {
if (obj.hasOwnProperty(key)) return obj[key]
return obj.liquidMethodMissing(key)
}
return key === 'size' ? readSize(obj) : obj[key]
if (key === 'size') return readSize(obj)
if (key === 'first') return readFirst(obj)
if (key === 'last') return readLast(obj)
return obj[key]
}

function readFirst (obj: Scope) {
if (_.isArray(obj)) return obj[0]
return obj['first']
}

function readLast (obj: Scope) {
if (_.isArray(obj)) return obj[obj.length - 1]
return obj['last']
}

function readSize (obj: Scope) {
if (!_.isNil(obj['size'])) return obj['size']
if (_.isArray(obj) || _.isString(obj)) return obj.length
return obj['size']
}
Expand Down
16 changes: 16 additions & 0 deletions test/unit/context/context.ts
Expand Up @@ -11,6 +11,10 @@ describe('Context', function () {
foo: 'zoo',
one: 1,
zoo: { size: 4 },
obj: {
first: 'f',
last: 'l'
},
bar: {
zoo: 'coo',
'Mr.Smith': 'John',
Expand Down Expand Up @@ -124,6 +128,18 @@ describe('Context', function () {
it('should return undefined if do not have size and length', async function () {
expect(ctx.get('one.size')).to.equal(undefined)
})
it('should read .first of array', async function () {
expect(ctx.get('bar.arr.first')).to.equal('a')
})
it('should read .first of object', async function () {
expect(ctx.get('obj.first')).to.equal('f')
})
it('should read .last of array', async function () {
expect(ctx.get('bar.arr.last')).to.equal('b')
})
it('should read .last of object', async function () {
expect(ctx.get('obj.last')).to.equal('l')
})
})
describe('strictVariables', async function () {
let ctx: Context
Expand Down

0 comments on commit f82da11

Please sign in to comment.