diff --git a/grammars/html (ruby - erb).cson b/grammars/html (ruby - erb).cson index e353422..64a8b9b 100644 --- a/grammars/html (ruby - erb).cson +++ b/grammars/html (ruby - erb).cson @@ -71,8 +71,8 @@ 'beginCaptures': '0': 'name': 'punctuation.section.embedded.begin.erb' - 'contentName': 'source.ruby' - 'end': '(-?%)>' + 'contentName': 'source.ruby.embedded.erb' + 'end': '-?%>' 'endCaptures': '0': 'name': 'punctuation.section.embedded.end.erb' @@ -97,8 +97,8 @@ 'beginCaptures': '0': 'name': 'punctuation.section.embedded.begin.erb' - 'contentName': 'source.ruby' - 'end': '(-?%)>' + 'contentName': 'source.ruby.embedded.erb' + 'end': '-?%>' 'endCaptures': '0': 'name': 'punctuation.section.embedded.end.erb' diff --git a/spec/erb-spec.coffee b/spec/erb-spec.coffee new file mode 100644 index 0000000..83b987b --- /dev/null +++ b/spec/erb-spec.coffee @@ -0,0 +1,26 @@ +describe "HTML (Ruby - ERB) grammar", -> + grammar = null + + beforeEach -> + waitsForPromise -> + atom.packages.activatePackage("language-ruby") + + runs -> + grammar = atom.grammars.grammarForScopeName("text.html.erb") + + it "parses the grammar", -> + expect(grammar).toBeTruthy() + expect(grammar.scopeName).toBe "text.html.erb" + + it "tokenizes embedded ruby", -> + {tokens} = grammar.tokenizeLine('<%= self %>') + expect(tokens[0]).toEqual value: '<%=', scopes: ['text.html.erb', 'meta.embedded.line.erb', 'punctuation.section.embedded.begin.erb'] + expect(tokens[1]).toEqual value: ' ', scopes: ['text.html.erb', 'meta.embedded.line.erb', 'source.ruby.embedded.erb'] + expect(tokens[2]).toEqual value: 'self', scopes: ['text.html.erb', 'meta.embedded.line.erb', 'source.ruby.embedded.erb', 'variable.language.self.ruby'] + expect(tokens[3]).toEqual value: ' ', scopes: ['text.html.erb', 'meta.embedded.line.erb', 'source.ruby.embedded.erb'] + expect(tokens[4]).toEqual value: '%>', scopes: ['text.html.erb', 'meta.embedded.line.erb', 'punctuation.section.embedded.end.erb'] + + lines = grammar.tokenizeLines('<%=\nself\n%>') + expect(lines[0][0]).toEqual value: '<%=', scopes: ['text.html.erb', 'meta.embedded.block.erb', 'punctuation.section.embedded.begin.erb'] + expect(lines[1][0]).toEqual value: 'self', scopes: ['text.html.erb', 'meta.embedded.block.erb', 'source.ruby.embedded.erb', 'variable.language.self.ruby'] + expect(lines[2][0]).toEqual value: '%>', scopes: ['text.html.erb', 'meta.embedded.block.erb', 'punctuation.section.embedded.end.erb']