Skip to content
This repository was archived by the owner on Dec 15, 2022. It is now read-only.

Commit e432aa6

Browse files
author
Wliu
authored
Merge pull request #147 from atom/wl-clamp-embedded-js
Clamp embedded JS patterns
2 parents 4cc45ec + fd51bb5 commit e432aa6

File tree

2 files changed

+22
-16
lines changed

2 files changed

+22
-16
lines changed

grammars/coffeescript.cson

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -84,21 +84,20 @@
8484
]
8585
}
8686
{
87-
'begin': '`'
88-
'beginCaptures':
89-
'0':
87+
'match': '(`)(.*)(`)'
88+
'name': 'string.quoted.script.coffee'
89+
'captures':
90+
'1':
9091
'name': 'punctuation.definition.string.begin.coffee'
91-
'end': '`'
92-
'endCaptures':
93-
'0':
92+
'2':
93+
'name': 'source.js.embedded.coffee'
94+
'patterns': [
95+
{
96+
'include': 'source.js'
97+
}
98+
]
99+
'3':
94100
'name': 'punctuation.definition.string.end.coffee'
95-
'name': 'string.quoted.script.coffee'
96-
'contentName': 'source.embedded.js'
97-
'patterns': [
98-
{
99-
'include': 'source.js'
100-
}
101-
]
102101
}
103102
{
104103
'begin': '(?<!#)###(?!#)'

spec/coffee-script-spec.coffee

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -528,19 +528,26 @@ describe "CoffeeScript grammar", ->
528528
runs ->
529529
{tokens} = grammar.tokenizeLine("`;`")
530530
expect(tokens[0]).toEqual value: "`", scopes: ["source.coffee", "string.quoted.script.coffee", "punctuation.definition.string.begin.coffee"]
531-
expect(tokens[1]).toEqual value: ";", scopes: ["source.coffee", "string.quoted.script.coffee", "source.embedded.js", "punctuation.terminator.statement.js"]
531+
expect(tokens[1]).toEqual value: ";", scopes: ["source.coffee", "string.quoted.script.coffee", "source.js.embedded.coffee", "punctuation.terminator.statement.js"]
532532
expect(tokens[2]).toEqual value: "`", scopes: ["source.coffee", "string.quoted.script.coffee", "punctuation.definition.string.end.coffee"]
533533

534534
lines = grammar.tokenizeLines """
535535
`var a = 1;`
536536
a = 2
537537
"""
538538
expect(lines[0][0]).toEqual value: '`', scopes: ["source.coffee", "string.quoted.script.coffee", "punctuation.definition.string.begin.coffee"]
539-
expect(lines[0][1]).toEqual value: 'var', scopes: ["source.coffee", "string.quoted.script.coffee", "source.embedded.js", "storage.type.var.js"]
540-
expect(lines[0][6]).toEqual value: ';', scopes: ["source.coffee", "string.quoted.script.coffee", "source.embedded.js", "punctuation.terminator.statement.js"]
539+
expect(lines[0][1]).toEqual value: 'var', scopes: ["source.coffee", "string.quoted.script.coffee", "source.js.embedded.coffee", "storage.type.var.js"]
540+
expect(lines[0][6]).toEqual value: ';', scopes: ["source.coffee", "string.quoted.script.coffee", "source.js.embedded.coffee", "punctuation.terminator.statement.js"]
541541
expect(lines[0][7]).toEqual value: '`', scopes: ["source.coffee", "string.quoted.script.coffee", "punctuation.definition.string.end.coffee"]
542542
expect(lines[1][0]).toEqual value: 'a', scopes: ["source.coffee", "variable.assignment.coffee"]
543543

544+
{tokens} = grammar.tokenizeLine("`// comment` a = 2")
545+
expect(tokens[0]).toEqual value: '`', scopes: ["source.coffee", "string.quoted.script.coffee", "punctuation.definition.string.begin.coffee"]
546+
expect(tokens[1]).toEqual value: '//', scopes: ["source.coffee", "string.quoted.script.coffee", "source.js.embedded.coffee", "comment.line.double-slash.js", "punctuation.definition.comment.js"]
547+
expect(tokens[2]).toEqual value: ' comment', scopes: ["source.coffee", "string.quoted.script.coffee", "source.js.embedded.coffee", "comment.line.double-slash.js"]
548+
expect(tokens[3]).toEqual value: '`', scopes: ["source.coffee", "string.quoted.script.coffee", "punctuation.definition.string.end.coffee"]
549+
expect(tokens[5]).toEqual value: 'a', scopes: ["source.coffee", "variable.assignment.coffee"]
550+
544551
describe "function calls", ->
545552
it "tokenizes function calls", ->
546553
{tokens} = grammar.tokenizeLine('functionCall()')

0 commit comments

Comments
 (0)