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

Commit 22ebbb8

Browse files
committed
Merge pull request #153 from adrianlee44/fix-object-operator
Fix not tokenizing operators in object functions
2 parents 9f55d13 + 8183863 commit 22ebbb8

File tree

2 files changed

+26
-20
lines changed

2 files changed

+26
-20
lines changed

grammars/javascript.cson

+12-8
Original file line numberDiff line numberDiff line change
@@ -186,19 +186,21 @@
186186
]
187187
}
188188
{
189-
'begin': '\\b([a-zA-Z_?.$][\\w?.$]*)\\s*:\\s*\\b(?:(async)(?:\\s+))?(function\\*?)\\s*(\\*?)\\s*([a-zA-Z_?$][\\w?$]*)?\\s*(\\()'
189+
'begin': '\\b([a-zA-Z_?.$][\\w?.$]*)\\s*(:)\\s*\\b(?:(async)(?:\\s+))?(function\\*?)\\s*(\\*?)\\s*([a-zA-Z_?$][\\w?$]*)?\\s*(\\()'
190190
'beginCaptures':
191191
'1':
192192
'name': 'entity.name.function.js'
193193
'2':
194-
'name': 'storage.modifier.js'
194+
'name': 'keyword.operator.js'
195195
'3':
196-
'name': 'storage.type.function.js'
196+
'name': 'storage.modifier.js'
197197
'4':
198198
'name': 'storage.type.function.js'
199199
'5':
200-
'name': 'entity.name.function.js'
200+
'name': 'storage.type.function.js'
201201
'6':
202+
'name': 'entity.name.function.js'
203+
'7':
202204
'name': 'punctuation.definition.parameters.begin.js'
203205
'comment': 'match stuff like: foobar: function() { … }'
204206
'end': '(\\))'
@@ -213,7 +215,7 @@
213215
]
214216
}
215217
{
216-
'begin': '(?:((\')(.*?)(\'))|((")(.*?)(")))\\s*:\\s*\\b(?:(async)(?:\\s+))?(function\\*?)\\s*(\\*?)\\s*([a-zA-Z_?$][\\w?$]*)?\\s*(\\()'
218+
'begin': '(?:((\')(.*?)(\'))|((")(.*?)(")))\\s*(:)\\s*\\b(?:(async)(?:\\s+))?(function\\*?)\\s*(\\*?)\\s*([a-zA-Z_?$][\\w?$]*)?\\s*(\\()'
217219
'beginCaptures':
218220
'1':
219221
'name': 'string.quoted.single.js'
@@ -232,14 +234,16 @@
232234
'8':
233235
'name': 'punctuation.definition.string.end.js'
234236
'9':
235-
'name': 'storage.modifier.js'
237+
'name': 'keyword.operator.js'
236238
'10':
237-
'name': 'storage.type.function.js'
239+
'name': 'storage.modifier.js'
238240
'11':
239241
'name': 'storage.type.function.js'
240242
'12':
241-
'name': 'entity.name.function.js'
243+
'name': 'storage.type.function.js'
242244
'13':
245+
'name': 'entity.name.function.js'
246+
'14':
243247
'name': 'punctuation.definition.parameters.begin.js'
244248
'comment': 'Attempt to match "foo": function'
245249
'end': '(\\))'

spec/javascript-spec.coffee

+14-12
Original file line numberDiff line numberDiff line change
@@ -278,11 +278,11 @@ describe "Javascript grammar", ->
278278
it "tokenizes comments in function params", ->
279279
{tokens} = grammar.tokenizeLine('foo: function (/**Bar*/bar){')
280280

281-
expect(tokens[4]).toEqual value: '(', scopes: ['source.js', 'meta.function.json.js', 'punctuation.definition.parameters.begin.js']
282-
expect(tokens[5]).toEqual value: '/**', scopes: ['source.js', 'meta.function.json.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
283-
expect(tokens[6]).toEqual value: 'Bar', scopes: ['source.js', 'meta.function.json.js', 'comment.block.documentation.js']
284-
expect(tokens[7]).toEqual value: '*/', scopes: ['source.js', 'meta.function.json.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
285-
expect(tokens[8]).toEqual value: 'bar', scopes: ['source.js', 'meta.function.json.js', 'variable.parameter.function.js']
281+
expect(tokens[5]).toEqual value: '(', scopes: ['source.js', 'meta.function.json.js', 'punctuation.definition.parameters.begin.js']
282+
expect(tokens[6]).toEqual value: '/**', scopes: ['source.js', 'meta.function.json.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
283+
expect(tokens[7]).toEqual value: 'Bar', scopes: ['source.js', 'meta.function.json.js', 'comment.block.documentation.js']
284+
expect(tokens[8]).toEqual value: '*/', scopes: ['source.js', 'meta.function.json.js', 'comment.block.documentation.js', 'punctuation.definition.comment.js']
285+
expect(tokens[9]).toEqual value: 'bar', scopes: ['source.js', 'meta.function.json.js', 'variable.parameter.function.js']
286286

287287
describe "non-anonymous functions", ->
288288
it "tokenizes methods", ->
@@ -317,17 +317,19 @@ describe "Javascript grammar", ->
317317
{tokens} = grammar.tokenizeLine('foo: function nonAnonymous(')
318318

319319
expect(tokens[0]).toEqual value: 'foo', scopes: ['source.js', 'meta.function.json.js', 'entity.name.function.js']
320-
expect(tokens[2]).toEqual value: 'function', scopes: ['source.js', 'meta.function.json.js', 'storage.type.function.js']
321-
expect(tokens[4]).toEqual value: 'nonAnonymous', scopes: ['source.js', 'meta.function.json.js', 'entity.name.function.js']
322-
expect(tokens[5]).toEqual value: '(', scopes: ['source.js', 'meta.function.json.js', 'punctuation.definition.parameters.begin.js']
320+
expect(tokens[1]).toEqual value: ':', scopes: ['source.js', 'meta.function.json.js', 'keyword.operator.js']
321+
expect(tokens[3]).toEqual value: 'function', scopes: ['source.js', 'meta.function.json.js', 'storage.type.function.js']
322+
expect(tokens[5]).toEqual value: 'nonAnonymous', scopes: ['source.js', 'meta.function.json.js', 'entity.name.function.js']
323+
expect(tokens[6]).toEqual value: '(', scopes: ['source.js', 'meta.function.json.js', 'punctuation.definition.parameters.begin.js']
323324

324325
it "tokenizes quoted object functions", ->
325326
{tokens} = grammar.tokenizeLine('"foo": function nonAnonymous(')
326327

327-
expect(tokens[1]) .toEqual value: 'foo', scopes: ['source.js', 'meta.function.json.js', 'string.quoted.double.js', 'entity.name.function.js']
328-
expect(tokens[4]).toEqual value: 'function', scopes: ['source.js', 'meta.function.json.js', 'storage.type.function.js']
329-
expect(tokens[6]).toEqual value: 'nonAnonymous', scopes: ['source.js', 'meta.function.json.js', 'entity.name.function.js']
330-
expect(tokens[7]).toEqual value: '(', scopes: ['source.js', 'meta.function.json.js', 'punctuation.definition.parameters.begin.js']
328+
expect(tokens[1]).toEqual value: 'foo', scopes: ['source.js', 'meta.function.json.js', 'string.quoted.double.js', 'entity.name.function.js']
329+
expect(tokens[3]).toEqual value: ':', scopes: ['source.js', 'meta.function.json.js', 'keyword.operator.js']
330+
expect(tokens[5]).toEqual value: 'function', scopes: ['source.js', 'meta.function.json.js', 'storage.type.function.js']
331+
expect(tokens[7]).toEqual value: 'nonAnonymous', scopes: ['source.js', 'meta.function.json.js', 'entity.name.function.js']
332+
expect(tokens[8]).toEqual value: '(', scopes: ['source.js', 'meta.function.json.js', 'punctuation.definition.parameters.begin.js']
331333

332334
it "tokenizes async functions", ->
333335
{tokens} = grammar.tokenizeLine('async function f(){}')

0 commit comments

Comments
 (0)