Improve TokenizedLine::getScopeTree specs and fix bug

This commit is contained in:
Nathan Sobo 2014-03-28 10:51:30 -06:00
parent 958bc638d7
commit 2dda577d7c
2 changed files with 15 additions and 12 deletions

View File

@ -2,18 +2,21 @@ describe "TokenizedLine", ->
editor = null
beforeEach ->
waitsForPromise -> atom.packages.activatePackage('language-javascript')
runs -> editor = atom.project.openSync('sample.js')
waitsForPromise -> atom.packages.activatePackage('language-coffee-script')
describe "::getScopeTree()", ->
it "returns a tree whose inner nodes are scopes and whose leaf nodes are tokens in those scopes", ->
editor = atom.project.openSync('coffee.coffee')
ensureValidScopeTree = (scopeTree, scopes=[]) ->
if scopeTree.children?
for child in scopeTree.children
ensureValidScopeTree(child, scopes.concat([scopeTree.scope]))
else
expect(scopeTree).toBe tokens[tokenIndex++]
expect(scopes).toEqual scopeTree.scopes
tokenIndex = 0
tokens = editor.lineForScreenRow(1).tokens
scopeTree = editor.lineForScreenRow(1).getScopeTree()
expect(scopeTree.scope).toBe 'source.js'
expect(scopeTree.children[0].value).toBe ' '
expect(scopeTree.children[1].scope).toBe 'storage.modifier.js'
expect(scopeTree.children[1].children[0].value).toBe 'var'
expect(scopeTree.children[2].value).toBe ' '
expect(scopeTree.children[3].scope).toBe 'meta.function.js'
expect(scopeTree.children[4].value).toBe ' '
expect(scopeTree.children[5].scope).toBe 'meta.brace.curly.js'
expect(scopeTree.children[5].children[0].value).toBe '{'
ensureValidScopeTree(scopeTree)

View File

@ -162,7 +162,7 @@ class TokenizedLine
# Push onto common prefix until scopeStack equals desiredScopes
for j in [i...desiredScopes.length]
scopeStack.push(new Scope(scope))
scopeStack.push(new Scope(desiredScopes[j]))
class Scope
constructor: (@scope) ->