Skip to content

Commit 1364518

Browse files
committed
Handle object-literal members so that it can handle computed names and string literal keys better
Fixes #476
1 parent 7f81759 commit 1364518

File tree

6 files changed

+342
-188
lines changed

6 files changed

+342
-188
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 26 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1579,31 +1579,24 @@ repository:
15791579
patterns:
15801580
- include: '#comment'
15811581
- include: '#object-literal-method-declaration'
1582-
- name: meta.object.member.ts
1583-
begin: (?=(?:(?:\'.*\')|(?:\".*\")|(?:\[([^\[\]]|\[[^\[\]]*\])+\]))\s*:)
1584-
end: (?=,|\})
1582+
- name: meta.object.member.ts meta.object-literal.key.ts
1583+
begin: (?=\[)
1584+
end: (?=:)
15851585
patterns:
1586-
- name: meta.object-literal.key.ts
1587-
begin: (?=(?:(?:\'.*\')|(?:\".*\")|(?:\[([^\[\]]|\[[^\[\]]*\])+\]))\s*:)
1588-
end: ':'
1589-
endCaptures:
1590-
'0': { name: punctuation.separator.key-value.ts }
1591-
patterns:
1592-
- include: '#string'
1593-
- include: '#array-literal'
1594-
- include: '#expression'
1586+
- include: '#array-literal'
1587+
- name: meta.object.member.ts meta.object-literal.key.ts
1588+
begin: (?=[\'\"])
1589+
end: (?=:)
1590+
patterns:
1591+
- include: '#string'
15951592
- name: meta.object.member.ts
1596-
begin: (?![_$[:alpha:]])([[:digit:]]+)\s*(:)
1597-
beginCaptures:
1593+
match: (?![_$[:alpha:]])([[:digit:]]+)\s*(?=:)
1594+
captures:
15981595
'0': { name: meta.object-literal.key.ts }
15991596
'1': { name: constant.numeric.decimal.ts }
1600-
'2': { name: punctuation.separator.key-value.ts }
1601-
end: (?=,|\})
1602-
patterns:
1603-
- include: '#expression'
16041597
- name: meta.object.member.ts
1605-
begin: |-
1606-
(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\s*(:)(?=\s*(
1598+
match: |-
1599+
(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\s*(?=:\s*(
16071600
((async\s+)?(
16081601
(function\s*[(<]) |
16091602
(function\s+) |
@@ -1615,21 +1608,14 @@ repository:
16151608
((<([^<>=]|=[^<]|\<([^=<>]|=[^<])+\>)+>\s*)?\(([^()]|\([^()]*\))*\)(\s*:\s*(.)*)?\s*=>)
16161609
))
16171610
)))
1618-
beginCaptures:
1611+
captures:
16191612
'0': { name: meta.object-literal.key.ts }
16201613
'1': { name: entity.name.function.ts }
1621-
'2': { name: punctuation.separator.key-value.ts }
1622-
end: (?=,|\})
1623-
patterns:
1624-
- include: '#expression'
16251614
- name: meta.object.member.ts
1626-
begin: (?:[_$[:alpha:]][_$[:alnum:]]*)\s*(:)
1627-
beginCaptures:
1615+
match: (?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=:)
1616+
captures:
16281617
'0': { name: meta.object-literal.key.ts }
1629-
'1': { name: punctuation.separator.key-value.ts }
16301618
end: (?=,|\})
1631-
patterns:
1632-
- include: '#expression'
16331619
- name: meta.object.member.ts
16341620
begin: \.\.\.
16351621
beginCaptures:
@@ -1641,8 +1627,18 @@ repository:
16411627
match: ([_$[:alpha:]][_$[:alnum:]]*)\s*(?=,|\}|$)
16421628
captures:
16431629
'1': { name: variable.other.readwrite.ts }
1630+
- include: '#object-member-body'
16441631
- include: '#punctuation-comma'
16451632

1633+
object-member-body:
1634+
name: meta.object.member.ts
1635+
begin: ':'
1636+
beginCaptures:
1637+
'0': { name: meta.object-literal.key.ts punctuation.separator.key-value.ts }
1638+
end: (?=,|\})
1639+
patterns:
1640+
- include: '#expression'
1641+
16461642
expression-operators:
16471643
patterns:
16481644
- name: keyword.control.flow.ts

TypeScript.tmLanguage

Lines changed: 54 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -4343,52 +4343,40 @@
43434343
</dict>
43444344
<dict>
43454345
<key>name</key>
4346-
<string>meta.object.member.ts</string>
4346+
<string>meta.object.member.ts meta.object-literal.key.ts</string>
43474347
<key>begin</key>
4348-
<string>(?=(?:(?:\'.*\')|(?:\".*\")|(?:\[([^\[\]]|\[[^\[\]]*\])+\]))\s*:)</string>
4348+
<string>(?=\[)</string>
43494349
<key>end</key>
4350-
<string>(?=,|\})</string>
4350+
<string>(?=:)</string>
43514351
<key>patterns</key>
43524352
<array>
43534353
<dict>
4354-
<key>name</key>
4355-
<string>meta.object-literal.key.ts</string>
4356-
<key>begin</key>
4357-
<string>(?=(?:(?:\'.*\')|(?:\".*\")|(?:\[([^\[\]]|\[[^\[\]]*\])+\]))\s*:)</string>
4358-
<key>end</key>
4359-
<string>:</string>
4360-
<key>endCaptures</key>
4361-
<dict>
4362-
<key>0</key>
4363-
<dict>
4364-
<key>name</key>
4365-
<string>punctuation.separator.key-value.ts</string>
4366-
</dict>
4367-
</dict>
4368-
<key>patterns</key>
4369-
<array>
4370-
<dict>
4371-
<key>include</key>
4372-
<string>#string</string>
4373-
</dict>
4374-
<dict>
4375-
<key>include</key>
4376-
<string>#array-literal</string>
4377-
</dict>
4378-
</array>
4354+
<key>include</key>
4355+
<string>#array-literal</string>
43794356
</dict>
4357+
</array>
4358+
</dict>
4359+
<dict>
4360+
<key>name</key>
4361+
<string>meta.object.member.ts meta.object-literal.key.ts</string>
4362+
<key>begin</key>
4363+
<string>(?=[\'\"])</string>
4364+
<key>end</key>
4365+
<string>(?=:)</string>
4366+
<key>patterns</key>
4367+
<array>
43804368
<dict>
43814369
<key>include</key>
4382-
<string>#expression</string>
4370+
<string>#string</string>
43834371
</dict>
43844372
</array>
43854373
</dict>
43864374
<dict>
43874375
<key>name</key>
43884376
<string>meta.object.member.ts</string>
4389-
<key>begin</key>
4390-
<string>(?![_$[:alpha:]])([[:digit:]]+)\s*(:)</string>
4391-
<key>beginCaptures</key>
4377+
<key>match</key>
4378+
<string>(?![_$[:alpha:]])([[:digit:]]+)\s*(?=:)</string>
4379+
<key>captures</key>
43924380
<dict>
43934381
<key>0</key>
43944382
<dict>
@@ -4400,27 +4388,13 @@
44004388
<key>name</key>
44014389
<string>constant.numeric.decimal.ts</string>
44024390
</dict>
4403-
<key>2</key>
4404-
<dict>
4405-
<key>name</key>
4406-
<string>punctuation.separator.key-value.ts</string>
4407-
</dict>
44084391
</dict>
4409-
<key>end</key>
4410-
<string>(?=,|\})</string>
4411-
<key>patterns</key>
4412-
<array>
4413-
<dict>
4414-
<key>include</key>
4415-
<string>#expression</string>
4416-
</dict>
4417-
</array>
44184392
</dict>
44194393
<dict>
44204394
<key>name</key>
44214395
<string>meta.object.member.ts</string>
4422-
<key>begin</key>
4423-
<string>(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\s*(:)(?=\s*(
4396+
<key>match</key>
4397+
<string>(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\s*(?=:\s*(
44244398
((async\s+)?(
44254399
(function\s*[(&lt;]) |
44264400
(function\s+) |
@@ -4432,7 +4406,7 @@
44324406
((&lt;([^&lt;&gt;=]|=[^&lt;]|\&lt;([^=&lt;&gt;]|=[^&lt;])+\&gt;)+&gt;\s*)?\(([^()]|\([^()]*\))*\)(\s*:\s*(.)*)?\s*=&gt;)
44334407
))
44344408
)))</string>
4435-
<key>beginCaptures</key>
4409+
<key>captures</key>
44364410
<dict>
44374411
<key>0</key>
44384412
<dict>
@@ -4444,49 +4418,23 @@
44444418
<key>name</key>
44454419
<string>entity.name.function.ts</string>
44464420
</dict>
4447-
<key>2</key>
4448-
<dict>
4449-
<key>name</key>
4450-
<string>punctuation.separator.key-value.ts</string>
4451-
</dict>
44524421
</dict>
4453-
<key>end</key>
4454-
<string>(?=,|\})</string>
4455-
<key>patterns</key>
4456-
<array>
4457-
<dict>
4458-
<key>include</key>
4459-
<string>#expression</string>
4460-
</dict>
4461-
</array>
44624422
</dict>
44634423
<dict>
44644424
<key>name</key>
44654425
<string>meta.object.member.ts</string>
4466-
<key>begin</key>
4467-
<string>(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(:)</string>
4468-
<key>beginCaptures</key>
4426+
<key>match</key>
4427+
<string>(?:[_$[:alpha:]][_$[:alnum:]]*)\s*(?=:)</string>
4428+
<key>captures</key>
44694429
<dict>
44704430
<key>0</key>
44714431
<dict>
44724432
<key>name</key>
44734433
<string>meta.object-literal.key.ts</string>
44744434
</dict>
4475-
<key>1</key>
4476-
<dict>
4477-
<key>name</key>
4478-
<string>punctuation.separator.key-value.ts</string>
4479-
</dict>
44804435
</dict>
44814436
<key>end</key>
44824437
<string>(?=,|\})</string>
4483-
<key>patterns</key>
4484-
<array>
4485-
<dict>
4486-
<key>include</key>
4487-
<string>#expression</string>
4488-
</dict>
4489-
</array>
44904438
</dict>
44914439
<dict>
44924440
<key>name</key>
@@ -4525,12 +4473,40 @@
45254473
</dict>
45264474
</dict>
45274475
</dict>
4476+
<dict>
4477+
<key>include</key>
4478+
<string>#object-member-body</string>
4479+
</dict>
45284480
<dict>
45294481
<key>include</key>
45304482
<string>#punctuation-comma</string>
45314483
</dict>
45324484
</array>
45334485
</dict>
4486+
<key>object-member-body</key>
4487+
<dict>
4488+
<key>name</key>
4489+
<string>meta.object.member.ts</string>
4490+
<key>begin</key>
4491+
<string>:</string>
4492+
<key>beginCaptures</key>
4493+
<dict>
4494+
<key>0</key>
4495+
<dict>
4496+
<key>name</key>
4497+
<string>meta.object-literal.key.ts punctuation.separator.key-value.ts</string>
4498+
</dict>
4499+
</dict>
4500+
<key>end</key>
4501+
<string>(?=,|\})</string>
4502+
<key>patterns</key>
4503+
<array>
4504+
<dict>
4505+
<key>include</key>
4506+
<string>#expression</string>
4507+
</dict>
4508+
</array>
4509+
</dict>
45344510
<key>expression-operators</key>
45354511
<dict>
45364512
<key>patterns</key>

0 commit comments

Comments
 (0)