From 2dda577d7ca17f081978b455710ca6cd8fa115b4 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 28 Mar 2014 10:51:30 -0600 Subject: [PATCH] Improve TokenizedLine::getScopeTree specs and fix bug --- spec/tokenized-line-spec.coffee | 25 ++++++++++++++----------- src/tokenized-line.coffee | 2 +- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/spec/tokenized-line-spec.coffee b/spec/tokenized-line-spec.coffee index 12a869857..9e017c9ec 100644 --- a/spec/tokenized-line-spec.coffee +++ b/spec/tokenized-line-spec.coffee @@ -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) diff --git a/src/tokenized-line.coffee b/src/tokenized-line.coffee index d57a957ed..acf0d2075 100644 --- a/src/tokenized-line.coffee +++ b/src/tokenized-line.coffee @@ -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) ->