Skip to content

Commit 25cd486

Browse files
committed
Solving issue #5: Multi Line Strings: Escape character at end of line allows multi Line String
1 parent a46d4dc commit 25cd486

File tree

6 files changed

+85
-8
lines changed

6 files changed

+85
-8
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -525,14 +525,14 @@ repository:
525525
qstring-double:
526526
name: string.double.ts
527527
begin: '"'
528-
end: '"|(?=$)'
528+
end: '"|(?:[^\\\n]$)'
529529
patterns:
530530
- include: '#string-character-escape'
531531

532532
qstring-single:
533533
name: string.single.ts
534534
begin: "'"
535-
end: "'|(?=$)"
535+
end: \'|(?:[^\\\n]$)
536536
patterns:
537537
- include: '#string-character-escape'
538538

TypeScript.tmLanguage

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1157,7 +1157,7 @@
11571157
<key>begin</key>
11581158
<string>"</string>
11591159
<key>end</key>
1160-
<string>"|(?=$)</string>
1160+
<string>"|(?:[^\\\n]$)</string>
11611161
<key>name</key>
11621162
<string>string.double.ts</string>
11631163
<key>patterns</key>
@@ -1173,7 +1173,7 @@
11731173
<key>begin</key>
11741174
<string>'</string>
11751175
<key>end</key>
1176-
<string>'|(?=$)</string>
1176+
<string>\'|(?:[^\\\n]$)</string>
11771177
<key>name</key>
11781178
<string>string.single.ts</string>
11791179
<key>patterns</key>

TypeScriptReact.YAML-tmLanguage

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -513,14 +513,14 @@ repository:
513513
qstring-double:
514514
name: string.double.tsx
515515
begin: '"'
516-
end: '"|(?=$)'
516+
end: '"|(?:[^\\\n]$)'
517517
patterns:
518518
- include: '#string-character-escape'
519519

520520
qstring-single:
521521
name: string.single.tsx
522522
begin: "'"
523-
end: "'|(?=$)"
523+
end: \'|(?:[^\\\n]$)
524524
patterns:
525525
- include: '#string-character-escape'
526526

TypeScriptReact.tmLanguage

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1523,7 +1523,7 @@
15231523
<key>begin</key>
15241524
<string>"</string>
15251525
<key>end</key>
1526-
<string>"|(?=$)</string>
1526+
<string>"|(?:[^\\\n]$)</string>
15271527
<key>name</key>
15281528
<string>string.double.tsx</string>
15291529
<key>patterns</key>
@@ -1539,7 +1539,7 @@
15391539
<key>begin</key>
15401540
<string>'</string>
15411541
<key>end</key>
1542-
<string>'|(?=$)</string>
1542+
<string>\'|(?:[^\\\n]$)</string>
15431543
<key>name</key>
15441544
<string>string.single.tsx</string>
15451545
<key>patterns</key>

tests/baselines/Issue5.txt

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
[1, 18]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts
2+
[1, 19]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts
3+
[2, 1]: source.ts
4+
[5, 23]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts
5+
[6, 6]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts constant.character.escape
6+
[9, 24]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts
7+
[10, 13]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts constant.character.escape
8+
[14, 28]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts
9+
[15, 5]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts
10+
[15, 11]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts
11+
[15, 27]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts constant.character.escape
12+
[16, 5]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts
13+
[16, 12]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts constant.character.escape
14+
[17, 5]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts
15+
[17, 10]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts constant.character.escape
16+
[18, 5]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts
17+
[18, 14]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts constant.character.escape
18+
[19, 5]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts
19+
[19, 16]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts
20+
[19, 42]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts constant.character.escape
21+
[20, 5]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts
22+
[21, 1]: source.ts
23+
[22, 27]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts
24+
[22, 42]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts constant.character.escape
25+
[23, 5]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts
26+
[23, 27]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts constant.character.escape
27+
[24, 5]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts
28+
[25, 5]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts
29+
[25, 27]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts constant.character.escape
30+
[26, 5]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts
31+
[26, 17]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts constant.character.escape
32+
[27, 5]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts
33+
[27, 44]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts constant.character.escape
34+
[28, 5]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts
35+
[28, 14]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts constant.character.escape
36+
[29, 5]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts
37+
[29, 44]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts constant.character.escape
38+
[30, 5]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.single.ts
39+
[31, 1]: source.ts
40+
[32, 18]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts
41+
[32, 19]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts
42+
[32, 35]: source.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.double.ts
43+
[33, 1]: source.ts

tests/cases/Issue5.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
let new_string = ^^"^^New Changes"
2+
^^
3+
4+
let plain_double_text = "Hello\
5+
this link to github is^^ https://github.com/\
6+
hello^^\
7+
World"
8+
9+
let plain_single_text= ^^'Try with single bracket\
10+
hello world ^^\\\\\
11+
let this be ^\
12+
a good test ^'
13+
14+
let double_quote_issue = " ^^ qstring-double:\
15+
^^name: ^^string.double.ts^^\
16+
^^begin: ^^\'\"\'\
17+
^^end: ^^\'\"|(?:[^\r\n\\]$)'\
18+
^^patterns:^^\
19+
^^- include: ^^'#string-character-escape'^^\
20+
^^"
21+
^^
22+
let single_quote_issue = '^^qstring-single:^^\
23+
^^name: string.single.ts^^\
24+
^^begin: \"\'\"\
25+
^^end: \'|(?:[^\r\n\\]$)^^\
26+
^^endCaptures:^^\
27+
^^ '0': {name: string-character-escape }^^\
28+
^^patterns:^^\
29+
^^- include: \'#string-character-escape\'^^\
30+
^^'
31+
^^
32+
let new_string = ^^"^^Changes End here^^"
33+
^^
34+

0 commit comments

Comments
 (0)