This commit is contained in:
harttle
2018-09-29 16:45:11 +08:00
parent b7445f26d6
commit 5412c5a39f
3 changed files with 11 additions and 2 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ export const integer = /-?\d+/
export const number = /-?\d+\.?\d*|\.?\d+/
export const bool = /true|false/
// peoperty access
// property access
export const identifier = /[\w-]+[?]?/
export const subscript = new RegExp(`\\[(?:${quoted.source}|[\\w-\\.]+)\\]`)
export const literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`)
+1 -1
View File
@@ -109,7 +109,7 @@ const Scope = {
assert(j !== -1, `unbalanced []: ${str}`)
name = str.slice(i + 1, j)
if (!lexical.isInteger(name)) { // foo[bar] vs. foo[1]
name = this.get(name)
name = String(this.get(name))
}
push()
i = j + 1
+9
View File
@@ -8,6 +8,7 @@ describe('scope', function () {
beforeEach(function () {
ctx = {
foo: 'zoo',
one: 1,
bar: {
zoo: 'coo',
'Mr.Smith': 'John',
@@ -46,6 +47,14 @@ describe('scope', function () {
expect(scope.propertyAccessSeq('foo[0].bar'))
.to.deep.equal(['foo', '0', 'bar'])
})
it('should handle nested access 5', function () {
expect(scope.propertyAccessSeq('foo[one].bar'))
.to.deep.equal(['foo', '1', 'bar'])
})
it('should handle nested access 6', function () {
expect(scope.propertyAccessSeq('foo[two].bar'))
.to.deep.equal(['foo', 'undefined', 'bar'])
})
})
describe('#get()', function () {