Skip to content

Commit a78f05a

Browse files
committedJun 8, 2016
Merge pull request #129 from anubmat/issue_124
Adding capability for ternary expression as a separate scope
2 parents dcfc96b + 79bf69c commit a78f05a

6 files changed

+327
-0
lines changed
 

‎TypeScript.YAML-tmLanguage

+34
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,45 @@ repository:
2626
'1': { name: variable.ts }
2727
end: (?=$|[;,])
2828
patterns:
29+
- include: '#ternary-expression'
2930
- include: '#type-annotation'
3031
- include: '#string'
3132
- include: '#comment'
3233
- include: '#expression'
3334

35+
ternary-expression:
36+
begin: (?=\?)
37+
end: (?=$|[;,])
38+
patterns:
39+
- include: '#ternary-operator'
40+
- include: '#ternary-expression-type'
41+
42+
ternary-operator:
43+
begin: (\?)
44+
end: (:)
45+
patterns:
46+
- include: '#ternary-expression-type'
47+
48+
ternary-expression-type:
49+
name: meta.expression.ts
50+
patterns:
51+
- include: '#string'
52+
- include: '#regex'
53+
- include: '#template'
54+
- include: '#comment'
55+
- include: '#literal'
56+
- include: '#paren-expression'
57+
- include: '#ternary-expression'
58+
- include: '#import-operator'
59+
- include: '#expression-operator'
60+
- include: '#imply-operator'
61+
- include: '#relational-operator'
62+
- include: '#arithmetic-operator'
63+
- include: '#logic-operator'
64+
- include: '#assignment-operator'
65+
- include: '#type-primitive'
66+
- include: '#function-call'
67+
3468
control-statement:
3569
name: keyword.control.ts
3670
match: (?<!\.)\b(break|catch|continue|debugger|declare|do|else|finally|for|if|return|switch|throw|try|while|with|super|case|default|yield)\b

‎TypeScript.tmLanguage

+108
Original file line numberDiff line numberDiff line change
@@ -1448,6 +1448,110 @@
14481448
</dict>
14491449
</array>
14501450
</dict>
1451+
<key>ternary-expression</key>
1452+
<dict>
1453+
<key>begin</key>
1454+
<string>(?=\?)</string>
1455+
<key>end</key>
1456+
<string>(?=$|[;,])</string>
1457+
<key>patterns</key>
1458+
<array>
1459+
<dict>
1460+
<key>include</key>
1461+
<string>#ternary-operator</string>
1462+
</dict>
1463+
<dict>
1464+
<key>include</key>
1465+
<string>#ternary-expression-type</string>
1466+
</dict>
1467+
</array>
1468+
</dict>
1469+
<key>ternary-expression-type</key>
1470+
<dict>
1471+
<key>name</key>
1472+
<string>meta.expression.ts</string>
1473+
<key>patterns</key>
1474+
<array>
1475+
<dict>
1476+
<key>include</key>
1477+
<string>#string</string>
1478+
</dict>
1479+
<dict>
1480+
<key>include</key>
1481+
<string>#regex</string>
1482+
</dict>
1483+
<dict>
1484+
<key>include</key>
1485+
<string>#template</string>
1486+
</dict>
1487+
<dict>
1488+
<key>include</key>
1489+
<string>#comment</string>
1490+
</dict>
1491+
<dict>
1492+
<key>include</key>
1493+
<string>#literal</string>
1494+
</dict>
1495+
<dict>
1496+
<key>include</key>
1497+
<string>#paren-expression</string>
1498+
</dict>
1499+
<dict>
1500+
<key>include</key>
1501+
<string>#ternary-expression</string>
1502+
</dict>
1503+
<dict>
1504+
<key>include</key>
1505+
<string>#import-operator</string>
1506+
</dict>
1507+
<dict>
1508+
<key>include</key>
1509+
<string>#expression-operator</string>
1510+
</dict>
1511+
<dict>
1512+
<key>include</key>
1513+
<string>#imply-operator</string>
1514+
</dict>
1515+
<dict>
1516+
<key>include</key>
1517+
<string>#relational-operator</string>
1518+
</dict>
1519+
<dict>
1520+
<key>include</key>
1521+
<string>#arithmetic-operator</string>
1522+
</dict>
1523+
<dict>
1524+
<key>include</key>
1525+
<string>#logic-operator</string>
1526+
</dict>
1527+
<dict>
1528+
<key>include</key>
1529+
<string>#assignment-operator</string>
1530+
</dict>
1531+
<dict>
1532+
<key>include</key>
1533+
<string>#type-primitive</string>
1534+
</dict>
1535+
<dict>
1536+
<key>include</key>
1537+
<string>#function-call</string>
1538+
</dict>
1539+
</array>
1540+
</dict>
1541+
<key>ternary-operator</key>
1542+
<dict>
1543+
<key>begin</key>
1544+
<string>(\?)</string>
1545+
<key>end</key>
1546+
<string>(:)</string>
1547+
<key>patterns</key>
1548+
<array>
1549+
<dict>
1550+
<key>include</key>
1551+
<string>#ternary-expression-type</string>
1552+
</dict>
1553+
</array>
1554+
</dict>
14511555
<key>this-literal</key>
14521556
<dict>
14531557
<key>match</key>
@@ -1839,6 +1943,10 @@
18391943
<string>meta.var-single-variable.expr.ts</string>
18401944
<key>patterns</key>
18411945
<array>
1946+
<dict>
1947+
<key>include</key>
1948+
<string>#ternary-expression</string>
1949+
</dict>
18421950
<dict>
18431951
<key>include</key>
18441952
<string>#type-annotation</string>

‎TypeScriptReact.YAML-tmLanguage

+34
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,45 @@ repository:
2828
'1': { name: variable.tsx }
2929
end: (?=$|[;,])
3030
patterns:
31+
- include: '#ternary-expression'
3132
- include: '#type-annotation'
3233
- include: '#string'
3334
- include: '#comment'
3435
- include: '#expression'
3536

37+
ternary-expression:
38+
begin: (?=\?)
39+
end: (?=$|[;,])
40+
patterns:
41+
- include: '#ternary-operator'
42+
- include: '#ternary-expression-type'
43+
44+
ternary-operator:
45+
begin: (\?)
46+
end: (:)
47+
patterns:
48+
- include: '#ternary-expression-type'
49+
50+
ternary-expression-type:
51+
name: meta.expression.tsx
52+
patterns:
53+
- include: '#string'
54+
- include: '#regex'
55+
- include: '#template'
56+
- include: '#comment'
57+
- include: '#literal'
58+
- include: '#paren-expression'
59+
- include: '#ternary-expression'
60+
- include: '#import-operator'
61+
- include: '#expression-operator'
62+
- include: '#imply-operator'
63+
- include: '#relational-operator'
64+
- include: '#arithmetic-operator'
65+
- include: '#logic-operator'
66+
- include: '#assignment-operator'
67+
- include: '#type-primitive'
68+
- include: '#function-call'
69+
3670
control-statement:
3771
name: keyword.control.tsx
3872
match: (?<!\.)\b(break|catch|continue|debugger|declare|do|else|finally|for|if|return|switch|throw|try|while|with|super|case|default|yield)\b

‎TypeScriptReact.tmLanguage

+108
Original file line numberDiff line numberDiff line change
@@ -1814,6 +1814,110 @@
18141814
</dict>
18151815
</array>
18161816
</dict>
1817+
<key>ternary-expression</key>
1818+
<dict>
1819+
<key>begin</key>
1820+
<string>(?=\?)</string>
1821+
<key>end</key>
1822+
<string>(?=$|[;,])</string>
1823+
<key>patterns</key>
1824+
<array>
1825+
<dict>
1826+
<key>include</key>
1827+
<string>#ternary-operator</string>
1828+
</dict>
1829+
<dict>
1830+
<key>include</key>
1831+
<string>#ternary-expression-type</string>
1832+
</dict>
1833+
</array>
1834+
</dict>
1835+
<key>ternary-expression-type</key>
1836+
<dict>
1837+
<key>name</key>
1838+
<string>meta.expression.tsx</string>
1839+
<key>patterns</key>
1840+
<array>
1841+
<dict>
1842+
<key>include</key>
1843+
<string>#string</string>
1844+
</dict>
1845+
<dict>
1846+
<key>include</key>
1847+
<string>#regex</string>
1848+
</dict>
1849+
<dict>
1850+
<key>include</key>
1851+
<string>#template</string>
1852+
</dict>
1853+
<dict>
1854+
<key>include</key>
1855+
<string>#comment</string>
1856+
</dict>
1857+
<dict>
1858+
<key>include</key>
1859+
<string>#literal</string>
1860+
</dict>
1861+
<dict>
1862+
<key>include</key>
1863+
<string>#paren-expression</string>
1864+
</dict>
1865+
<dict>
1866+
<key>include</key>
1867+
<string>#ternary-expression</string>
1868+
</dict>
1869+
<dict>
1870+
<key>include</key>
1871+
<string>#import-operator</string>
1872+
</dict>
1873+
<dict>
1874+
<key>include</key>
1875+
<string>#expression-operator</string>
1876+
</dict>
1877+
<dict>
1878+
<key>include</key>
1879+
<string>#imply-operator</string>
1880+
</dict>
1881+
<dict>
1882+
<key>include</key>
1883+
<string>#relational-operator</string>
1884+
</dict>
1885+
<dict>
1886+
<key>include</key>
1887+
<string>#arithmetic-operator</string>
1888+
</dict>
1889+
<dict>
1890+
<key>include</key>
1891+
<string>#logic-operator</string>
1892+
</dict>
1893+
<dict>
1894+
<key>include</key>
1895+
<string>#assignment-operator</string>
1896+
</dict>
1897+
<dict>
1898+
<key>include</key>
1899+
<string>#type-primitive</string>
1900+
</dict>
1901+
<dict>
1902+
<key>include</key>
1903+
<string>#function-call</string>
1904+
</dict>
1905+
</array>
1906+
</dict>
1907+
<key>ternary-operator</key>
1908+
<dict>
1909+
<key>begin</key>
1910+
<string>(\?)</string>
1911+
<key>end</key>
1912+
<string>(:)</string>
1913+
<key>patterns</key>
1914+
<array>
1915+
<dict>
1916+
<key>include</key>
1917+
<string>#ternary-expression-type</string>
1918+
</dict>
1919+
</array>
1920+
</dict>
18171921
<key>this-literal</key>
18181922
<dict>
18191923
<key>match</key>
@@ -2205,6 +2309,10 @@
22052309
<string>meta.var-single-variable.expr.tsx</string>
22062310
<key>patterns</key>
22072311
<array>
2312+
<dict>
2313+
<key>include</key>
2314+
<string>#ternary-expression</string>
2315+
</dict>
22082316
<dict>
22092317
<key>include</key>
22102318
<string>#type-annotation</string>

‎tests/baselines/Issue124.txt

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
[6, 9]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts constant.language.boolean.ts
2+
[6, 16]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts constant.language.boolean.ts
3+
[6, 23]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts constant.language.boolean.ts
4+
[7, 9]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts constant.language.boolean.ts
5+
[7, 16]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts constant.language.boolean.ts
6+
[7, 23]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.template.ts string.template.ts
7+
[7, 24]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.template.ts string.template.ts
8+
[7, 32]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.template.ts template.element.ts keyword.others.ts
9+
[8, 9]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts constant.language.boolean.ts
10+
[8, 16]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.template.ts string.template.ts
11+
[8, 17]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.template.ts string.template.ts
12+
[8, 26]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.template.ts string.template.ts
13+
[8, 27]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.template.ts string.template.ts
14+
[10, 5]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts variable.ts
15+
[10, 14]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
16+
[10, 16]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
17+
[10, 18]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.brace.paren.ts
18+
[10, 35]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts constant.language.boolean.ts
19+
[12, 5]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts variable.ts
20+
[12, 15]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
21+
[12, 20]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts keyword.operator.comparison.ts
22+
[12, 24]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts
23+
[12, 30]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
24+
[12, 32]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts
25+
[12, 40]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
26+
[12, 42]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts
27+
[15, 2]: source.ts comment.block.ts

‎tests/cases/Issue124.ts

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/*
2+
Solving Issue #124, #80, #81
3+
Adding capability of ternary strings.
4+
*/
5+
6+
let a = ^^true ? ^^true : ^^true;
7+
let b = ^^true ? ^^true : ^^`^^this is ^^${} highlighted`
8+
let c = ^^true ? ^^`^^hello` : ^^`^^this ${DEPENDENCY_SEPARATOR}${moduleName} is highlighted`;
9+
10+
var ^^newVar = ^^a ^^? ^^(b == `hello`) : ^^true;
11+
12+
var ^^debArch = ^^arch ^^=== ^^'x64' ^^? ^^'amd64' ^^: ^^'i386';
13+
14+
/*
15+
^^Comment
16+
*/

0 commit comments

Comments
 (0)
Please sign in to comment.