Skip to content

Commit be53f25

Browse files
fix(#50): Fix escape sequences (#53)
* fix: Support escape sequence in string expression * fix(#50): update versions and generate parser --------- Co-authored-by: Mohamad Mohebifar <mohamad@mohebifar.com>
1 parent cba2889 commit be53f25

File tree

8 files changed

+3987
-3586
lines changed

8 files changed

+3987
-3586
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "tree-sitter-angular"
33
description = "Angular grammar for tree-sitter"
4-
version = "0.5.1"
4+
version = "0.5.2"
55
keywords = ["incremental", "parsing", "angular"]
66
categories = ["parsing", "text-editors"]
77
repository = "https://github.com/tree-sitter/tree-sitter-angular"

grammar.js

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -387,10 +387,7 @@ module.exports = grammar(HTML, {
387387
'=',
388388
$._double_quote,
389389
optional(choice($._any_expression, $.assignment_expression)),
390-
repeat(seq(
391-
';',
392-
optional(choice($._any_expression, $.assignment_expression)),
393-
)),
390+
repeat(seq(';', optional(choice($._any_expression, $.assignment_expression)))),
394391
$._double_quote,
395392
),
396393

@@ -509,8 +506,31 @@ module.exports = grammar(HTML, {
509506
// String
510507
string: ($) =>
511508
choice(
512-
seq($._double_quote, repeat(token.immediate(/[^"]/)), $._double_quote),
513-
seq($._single_quote, repeat(token.immediate(/[^']/)), $._single_quote),
509+
seq(
510+
$._double_quote,
511+
repeat(choice(token.immediate(/[^"]/), $._escape_sequence)),
512+
$._double_quote,
513+
),
514+
seq(
515+
$._single_quote,
516+
repeat(choice(token.immediate(/[^']/), $._escape_sequence)),
517+
$._single_quote,
518+
),
519+
),
520+
521+
_escape_sequence: (_) =>
522+
token.immediate(
523+
seq(
524+
'\\',
525+
choice(
526+
/[^xu0-7]/,
527+
/[0-7]{1,3}/,
528+
/x[0-9a-fA-F]{2}/,
529+
/u[0-9a-fA-F]{4}/,
530+
/u\{[0-9a-fA-F]+\}/,
531+
/[\r?][\n\u2028\u2029]/,
532+
),
533+
),
514534
),
515535

516536
// Number

package.json

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "tree-sitter-angular",
3-
"version": "0.5.1",
3+
"version": "0.5.2",
44
"description": "Tree-sitter grammar for the Angular framework",
55
"main": "bindings/node",
66
"types": "bindings/node",
@@ -62,9 +62,7 @@
6262
"tree-sitter": [
6363
{
6464
"scope": "source.angular",
65-
"file-types": [
66-
"component.html"
67-
]
65+
"injection-regex": "^angular$"
6866
}
6967
]
7068
}

src/grammar.json

Lines changed: 69 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)