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

Commit dd2de8e

Browse files
authored
Merge pull request #234 from cbothner/multiline-yard
Support multiline YARD comments
2 parents 484326a + 933c9d4 commit dd2de8e

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
@@ -587,36 +587,51 @@ describe "TextMate Ruby grammar", ->
587587
expect(tokens[2]).toEqual value: '@', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.punctuation.yard.ruby']
588588
expect(tokens[3]).toEqual value: 'private', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.keyword.yard.ruby']
589589

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

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

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

621636
{tokens} = grammar.tokenizeLine('# @param [Bar] Baz')
622637
expect(tokens[0]).toEqual value: '#', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'punctuation.definition.comment.ruby']
@@ -651,16 +666,21 @@ describe "TextMate Ruby grammar", ->
651666
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']
652667
expect(tokens[8]).toEqual value: ' comment', scopes: ['source.ruby', 'comment.line.number-sign.ruby', 'comment.line.string.yard.ruby']
653668

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

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

0 commit comments

Comments
 (0)