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

Commit 933c9d4

Browse files
committed
Support multiline YARD comments
YARD allows comments to extend over multiple lines provided that the subsequent lines are indented (within the comment) at least two spaces from the tag. This change extends the YARD-specific comment highlighting onto those subsequent lines.
1 parent d88a4cf commit 933c9d4

2 files changed

Lines changed: 167 additions & 80 deletions

File tree

grammars/ruby.cson

Lines changed: 109 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1358,6 +1358,9 @@
13581358
'end': '^=end'
13591359
'name': 'comment.block.documentation.ruby'
13601360
}
1361+
{
1362+
'include': '#yard'
1363+
}
13611364
{
13621365
'begin': '(^[ \\t]+)?(?=#)'
13631366
'beginCaptures':
@@ -1372,11 +1375,6 @@
13721375
'name': 'punctuation.definition.comment.ruby'
13731376
'end': '\\n'
13741377
'name': 'comment.line.number-sign.ruby'
1375-
'patterns': [
1376-
{
1377-
'include': '#yard'
1378-
}
1379-
]
13801378
}
13811379
]
13821380
}
@@ -2286,7 +2284,6 @@
22862284
}
22872285
]
22882286
'yard':
2289-
'name': 'comment.line.yard.ruby'
22902287
'patterns': [
22912288
{
22922289
'include': '#yard_comment'
@@ -2306,77 +2303,147 @@
23062303
]
23072304
'yard_comment':
23082305
'comment': 'For YARD tags that follow the tag-comment pattern'
2309-
'match': '(@)(abstract|api|author|deprecated|example|note|overload|since|todo|version)(?=\\s)(.*)$'
2310-
'captures':
2306+
'begin': '^(\\s*)(#)(\\s*)(@)(abstract|api|author|deprecated|example|macro|note|overload|since|todo|version)(?=\\s|$)'
2307+
'beginCaptures':
23112308
'1':
2312-
'name': 'comment.line.keyword.punctuation.yard.ruby'
2309+
'name': ''
23132310
'2':
2314-
'name': 'comment.line.keyword.yard.ruby'
2311+
'name': 'punctuation.definition.comment.ruby'
23152312
'3':
2316-
'name': 'comment.line.string.yard.ruby'
2313+
'name': ''
2314+
'4':
2315+
'name': 'comment.line.keyword.punctuation.yard.ruby'
2316+
'5':
2317+
'name': 'comment.line.keyword.yard.ruby'
2318+
'end': '^(?!\\s*#\\3\\s{2,})'
2319+
'contentName': 'comment.line.string.yard.ruby'
2320+
'name': 'comment.line.number-sign.ruby'
2321+
'patterns': [
2322+
{
2323+
'include': '#yard'
2324+
}
2325+
{
2326+
'include': '#yard_continuation'
2327+
}
2328+
]
23172329
'yard_name_types':
23182330
'comment': 'For YARD tags that follow the tag-name-types-comment pattern'
2319-
'match': '(@)(attr|attr_reader|attr_writer|option|param|see|yieldparam)(?=\\s)(\\s+([a-z_][a-zA-Z_]*))?(\\s+((\\[).+(])))?(.*)$'
2320-
'captures':
2331+
'begin': '^(\\s*)(#)(\\s*)(@)(attr|attr_reader|attr_writer|option|param|see|yieldparam)(?=\\s)(\\s+([a-z_][a-zA-Z_]*))?(\\s+((\\[).+(])))?'
2332+
'beginCaptures':
23212333
'1':
2322-
'name': 'comment.line.keyword.punctuation.yard.ruby'
2334+
'name': ''
23232335
'2':
2324-
'name': 'comment.line.keyword.yard.ruby'
2336+
'name': 'punctuation.definition.comment.ruby'
23252337
'3':
2326-
'name': 'comment.line.yard.ruby'
2338+
'name': ''
23272339
'4':
2328-
'name': 'comment.line.parameter.yard.ruby'
2340+
'name': 'comment.line.keyword.punctuation.yard.ruby'
23292341
'5':
2330-
'name': 'comment.line.yard.ruby'
2342+
'name': 'comment.line.keyword.yard.ruby'
23312343
'6':
2332-
'name': 'comment.line.type.yard.ruby'
2344+
'name': 'comment.line.yard.ruby'
23332345
'7':
2334-
'name': 'comment.line.punctuation.yard.ruby'
2346+
'name': 'comment.line.parameter.yard.ruby'
23352347
'8':
2336-
'name': 'comment.line.punctuation.yard.ruby'
2348+
'name': 'comment.line.yard.ruby'
23372349
'9':
2338-
'name': 'comment.line.string.yard.ruby'
2350+
'name': 'comment.line.type.yard.ruby'
2351+
'10':
2352+
'name': 'comment.line.punctuation.yard.ruby'
2353+
'11':
2354+
'name': 'comment.line.punctuation.yard.ruby'
2355+
'end': '^(?!\\s*#\\3\\s{2,})'
2356+
'contentName': 'comment.line.string.yard.ruby'
2357+
'name': 'comment.line.number-sign.ruby'
2358+
'patterns': [
2359+
{
2360+
'include': '#yard'
2361+
}
2362+
{
2363+
'include': '#yard_continuation'
2364+
}
2365+
]
23392366
'yard_tag':
23402367
'comment': 'For YARD tags that are just the tag'
2341-
'match': '(@)(private)$'
2368+
'match': '^(\\s*)(#)(\\s*)(@)(private)$'
23422369
'captures':
23432370
'1':
2344-
'name': 'comment.line.keyword.punctuation.yard.ruby'
2371+
'name': ''
23452372
'2':
2373+
'name': 'punctuation.definition.comment.ruby'
2374+
'3':
2375+
'name': ''
2376+
'4':
2377+
'name': 'comment.line.keyword.punctuation.yard.ruby'
2378+
'5':
23462379
'name': 'comment.line.keyword.yard.ruby'
2380+
'name': 'comment.line.number-sign.ruby'
23472381
'yard_types':
23482382
'comment': 'For YARD tags that follow the tag-types-comment pattern'
2349-
'match': '(@)(raise|return|yield(?:return)?)(?=\\s)(\\s+((\\[).+(])))?(.*)$'
2350-
'captures':
2383+
'begin': '^(\\s*)(#)(\\s*)(@)(raise|return|yield(?:return)?)(?=\\s)(\\s+((\\[).+(])))?'
2384+
'beginCaptures':
23512385
'1':
2352-
'name': 'comment.line.keyword.punctuation.yard.ruby'
2386+
'name': ''
23532387
'2':
2354-
'name': 'comment.line.keyword.yard.ruby'
2388+
'name': 'punctuation.definition.comment.ruby'
23552389
'3':
2356-
'name': 'comment.line.yard.ruby'
2390+
'name': ''
23572391
'4':
2358-
'name': 'comment.line.type.yard.ruby'
2392+
'name': 'comment.line.keyword.punctuation.yard.ruby'
23592393
'5':
2360-
'name': 'comment.line.punctuation.yard.ruby'
2394+
'name': 'comment.line.keyword.yard.ruby'
23612395
'6':
2362-
'name': 'comment.line.punctuation.yard.ruby'
2396+
'name': 'comment.line.yard.ruby'
23632397
'7':
2364-
'name': 'comment.line.string.yard.ruby'
2398+
'name': 'comment.line.type.yard.ruby'
2399+
'8':
2400+
'name': 'comment.line.punctuation.yard.ruby'
2401+
'9':
2402+
'name': 'comment.line.punctuation.yard.ruby'
2403+
'end': '^(?!\\s*#\\3\\s{2,})'
2404+
'contentName': 'comment.line.string.yard.ruby'
2405+
'name': 'comment.line.number-sign.ruby'
2406+
'patterns': [
2407+
{
2408+
'include': '#yard'
2409+
}
2410+
{
2411+
'include': '#yard_continuation'
2412+
}
2413+
]
23652414
'yard_directive':
23662415
'comment': 'For YARD directives'
2367-
'match': '(@!)(attribute|endgroup|group|macro|method|parse|scope|visibility)(\\s+((\\[).+(])))?(?=\\s)(.*)$'
2368-
'captures':
2416+
'begin': '^(\\s*)(#)(\\s*)(@!)(attribute|endgroup|group|macro|method|parse|scope|visibility)(\\s+((\\[).+(])))?(?=\\s)'
2417+
'beginCaptures':
23692418
'1':
2370-
'name': 'comment.line.keyword.punctuation.yard.ruby'
2419+
'name': ''
23712420
'2':
2372-
'name': 'comment.line.keyword.yard.ruby'
2421+
'name': 'punctuation.definition.comment.ruby'
23732422
'3':
2374-
'name': 'comment.line.yard.ruby'
2423+
'name': ''
23752424
'4':
2376-
'name': 'comment.line.type.yard.ruby'
2425+
'name': 'comment.line.keyword.punctuation.yard.ruby'
23772426
'5':
2378-
'name': 'comment.line.punctuation.yard.ruby'
2427+
'name': 'comment.line.keyword.yard.ruby'
23792428
'6':
2380-
'name': 'comment.line.punctuation.yard.ruby'
2429+
'name': 'comment.line.yard.ruby'
23812430
'7':
2382-
'name': 'comment.line.string.yard.ruby'
2431+
'name': 'comment.line.type.yard.ruby'
2432+
'8':
2433+
'name': 'comment.line.punctuation.yard.ruby'
2434+
'9':
2435+
'name': 'comment.line.punctuation.yard.ruby'
2436+
'end': '^(?!\\s*#\\3\\s{2,})'
2437+
'contentName': 'comment.line.string.yard.ruby'
2438+
'name': 'comment.line.number-sign.ruby'
2439+
'patterns': [
2440+
{
2441+
'include': '#yard'
2442+
}
2443+
{
2444+
'include': '#yard_continuation'
2445+
}
2446+
]
2447+
'yard_continuation':
2448+
'match': '^\\s*#'
2449+
'name': 'punctuation.definition.comment.ruby'

spec/ruby-spec.coffee

Lines changed: 58 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -585,36 +585,51 @@ describe "Ruby grammar", ->
585585
expect(tokens[2]).toEqual value: '@', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.punctuation.yard.ruby']
586586
expect(tokens[3]).toEqual value: 'private', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.yard.ruby']
587587

588-
{tokens} = grammar.tokenizeLine('# @deprecated Because I said so')
589-
expect(tokens[0]).toEqual value: '#', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'punctuation.definition.comment.ruby']
590-
expect(tokens[1]).toEqual value: ' ', scopes: ['source.ruby', 'comment.line.number-sign.ruby']
591-
expect(tokens[2]).toEqual value: '@', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.punctuation.yard.ruby']
592-
expect(tokens[3]).toEqual value: 'deprecated', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.yard.ruby']
593-
expect(tokens[4]).toEqual value: ' Because I said so', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby']
588+
tokens = grammar.tokenizeLines '''
589+
# @deprecated Because I said so,
590+
# end of discussion
591+
'''
592+
expect(tokens[0][0]).toEqual value: '#', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'punctuation.definition.comment.ruby']
593+
expect(tokens[0][1]).toEqual value: ' ', scopes: ['source.ruby', 'comment.line.number-sign.ruby']
594+
expect(tokens[0][2]).toEqual value: '@', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.punctuation.yard.ruby']
595+
expect(tokens[0][3]).toEqual value: 'deprecated', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.yard.ruby']
596+
expect(tokens[0][4]).toEqual value: ' Because I said so,', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby']
597+
expect(tokens[1][0]).toEqual value: '#', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby', 'punctuation.definition.comment.ruby']
598+
expect(tokens[1][1]).toEqual value: ' end of discussion', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby']
594599

595-
{tokens} = grammar.tokenizeLine('# @raise [Bar] Baz')
596-
expect(tokens[0]).toEqual value: '#', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'punctuation.definition.comment.ruby']
597-
expect(tokens[1]).toEqual value: ' ', scopes: ['source.ruby', 'comment.line.number-sign.ruby']
598-
expect(tokens[2]).toEqual value: '@', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.punctuation.yard.ruby']
599-
expect(tokens[3]).toEqual value: 'raise', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.yard.ruby']
600-
expect(tokens[4]).toEqual value: ' ', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby']
601-
expect(tokens[5]).toEqual value: '[', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby', 'comment.line.punctuation.yard.ruby']
602-
expect(tokens[6]).toEqual value: 'Bar', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby']
603-
expect(tokens[7]).toEqual value: ']', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby', 'comment.line.punctuation.yard.ruby']
604-
expect(tokens[8]).toEqual value: ' Baz', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby']
600+
tokens = grammar.tokenizeLines '''
601+
# @raise [AccountBalanceError] if the account does not have
602+
# sufficient funds to perform the transaction
603+
'''
604+
expect(tokens[0][0]).toEqual value: '#', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'punctuation.definition.comment.ruby']
605+
expect(tokens[0][1]).toEqual value: ' ', scopes: ['source.ruby', 'comment.line.number-sign.ruby']
606+
expect(tokens[0][2]).toEqual value: '@', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.punctuation.yard.ruby']
607+
expect(tokens[0][3]).toEqual value: 'raise', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.yard.ruby']
608+
expect(tokens[0][4]).toEqual value: ' ', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby']
609+
expect(tokens[0][5]).toEqual value: '[', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby', 'comment.line.punctuation.yard.ruby']
610+
expect(tokens[0][6]).toEqual value: 'AccountBalanceError', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby']
611+
expect(tokens[0][7]).toEqual value: ']', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby', 'comment.line.punctuation.yard.ruby']
612+
expect(tokens[0][8]).toEqual value: ' if the account does not have', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby']
613+
expect(tokens[1][0]).toEqual value: '#', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby', 'punctuation.definition.comment.ruby']
614+
expect(tokens[1][1]).toEqual value: ' sufficient funds to perform the transaction', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby']
605615

606-
{tokens} = grammar.tokenizeLine('# @param foo [Bar] Baz')
607-
expect(tokens[0]).toEqual value: '#', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'punctuation.definition.comment.ruby']
608-
expect(tokens[1]).toEqual value: ' ', scopes: ['source.ruby', 'comment.line.number-sign.ruby']
609-
expect(tokens[2]).toEqual value: '@', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.punctuation.yard.ruby']
610-
expect(tokens[3]).toEqual value: 'param', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.yard.ruby']
611-
expect(tokens[4]).toEqual value: ' ', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby']
612-
expect(tokens[5]).toEqual value: 'foo', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.parameter.yard.ruby']
613-
expect(tokens[6]).toEqual value: ' ', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby']
614-
expect(tokens[7]).toEqual value: '[', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby', 'comment.line.punctuation.yard.ruby']
615-
expect(tokens[8]).toEqual value: 'Bar', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby']
616-
expect(tokens[9]).toEqual value: ']', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby', 'comment.line.punctuation.yard.ruby']
617-
expect(tokens[10]).toEqual value: ' Baz', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby']
616+
tokens = grammar.tokenizeLines '''
617+
# @param value [Object] describe value param in a long way which
618+
# makes it multiline
619+
'''
620+
expect(tokens[0][0]).toEqual value: '#', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'punctuation.definition.comment.ruby']
621+
expect(tokens[0][1]).toEqual value: ' ', scopes: ['source.ruby', 'comment.line.number-sign.ruby']
622+
expect(tokens[0][2]).toEqual value: '@', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.punctuation.yard.ruby']
623+
expect(tokens[0][3]).toEqual value: 'param', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.yard.ruby']
624+
expect(tokens[0][4]).toEqual value: ' ', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby']
625+
expect(tokens[0][5]).toEqual value: 'value', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.parameter.yard.ruby']
626+
expect(tokens[0][6]).toEqual value: ' ', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby']
627+
expect(tokens[0][7]).toEqual value: '[', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby', 'comment.line.punctuation.yard.ruby']
628+
expect(tokens[0][8]).toEqual value: 'Object', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby']
629+
expect(tokens[0][9]).toEqual value: ']', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby', 'comment.line.punctuation.yard.ruby']
630+
expect(tokens[0][10]).toEqual value: ' describe value param in a long way which', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby']
631+
expect(tokens[1][0]).toEqual value: '#', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby', 'punctuation.definition.comment.ruby']
632+
expect(tokens[1][1]).toEqual value: ' makes it multiline', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby']
618633

619634
{tokens} = grammar.tokenizeLine('# @param [Bar] Baz')
620635
expect(tokens[0]).toEqual value: '#', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'punctuation.definition.comment.ruby']
@@ -649,16 +664,21 @@ describe "Ruby grammar", ->
649664
expect(tokens[7]).toEqual value: ']', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby', 'comment.line.punctuation.yard.ruby']
650665
expect(tokens[8]).toEqual value: ' comment', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby']
651666

652-
{tokens} = grammar.tokenizeLine('# @!attribute [r] foo comment')
653-
expect(tokens[0]).toEqual value: '#', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'punctuation.definition.comment.ruby']
654-
expect(tokens[1]).toEqual value: ' ', scopes: ['source.ruby', 'comment.line.number-sign.ruby']
655-
expect(tokens[2]).toEqual value: '@!', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.punctuation.yard.ruby']
656-
expect(tokens[3]).toEqual value: 'attribute', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.yard.ruby']
657-
expect(tokens[4]).toEqual value: ' ', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby']
658-
expect(tokens[5]).toEqual value: '[', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby', 'comment.line.punctuation.yard.ruby']
659-
expect(tokens[6]).toEqual value: 'r', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby']
660-
expect(tokens[7]).toEqual value: ']', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby', 'comment.line.punctuation.yard.ruby']
661-
expect(tokens[8]).toEqual value: ' foo comment', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby']
667+
tokens = grammar.tokenizeLines '''
668+
# @!attribute [r] count the number of items
669+
# present in the list
670+
'''
671+
expect(tokens[0][0]).toEqual value: '#', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'punctuation.definition.comment.ruby']
672+
expect(tokens[0][1]).toEqual value: ' ', scopes: ['source.ruby', 'comment.line.number-sign.ruby']
673+
expect(tokens[0][2]).toEqual value: '@!', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.punctuation.yard.ruby']
674+
expect(tokens[0][3]).toEqual value: 'attribute', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.yard.ruby']
675+
expect(tokens[0][4]).toEqual value: ' ', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby']
676+
expect(tokens[0][5]).toEqual value: '[', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby', 'comment.line.punctuation.yard.ruby']
677+
expect(tokens[0][6]).toEqual value: 'r', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby']
678+
expect(tokens[0][7]).toEqual value: ']', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.yard.ruby', 'comment.line.type.yard.ruby', 'comment.line.punctuation.yard.ruby']
679+
expect(tokens[0][8]).toEqual value: ' count the number of items', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby']
680+
expect(tokens[1][0]).toEqual value: '#', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby', 'punctuation.definition.comment.ruby']
681+
expect(tokens[1][1]).toEqual value: ' present in the list', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby']
662682

663683
it "tokenizes a method with *args properly", ->
664684
{tokens} = grammar.tokenizeLine('def method(*args)')

0 commit comments

Comments
 (0)