Bjolang's raw strings are strings
Bjolang reads """...""" as a raw string: three or more quotes open it, the same number close it, and nothing in it is an escape. The grammar has a string.quoted.triple.bjolang scope for it, so quotes inside one stay inside, and one over several lines is a string on every line. tests/demo.bjo checks both, and passes. 🤖 Generated with [ECA](https://eca.dev) (anthropic/claude-opus-5-5) Co-Authored-By: eca-agent <git@eca.dev>
This commit is contained in:
parent
c499691376
commit
6bb44bc05f
2 changed files with 30 additions and 0 deletions
|
|
@ -106,6 +106,17 @@
|
|||
[(scope "\"" ["source.cs" "string.quoted.double.cs" "punctuation.definition.string.begin.cs"])
|
||||
(scope "//" ["source.cs" "comment.line.double-slash.cs" "punctuation.definition.comment.cs"])])
|
||||
["tm-string" "tm-comment"])
|
||||
(def raw-line (vec-ref (tokenize bjo "(f \"\"\"a \"b\" c\"\"\" x)") 0))
|
||||
(expect "a raw string holds quotes, and closes with as many as opened it"
|
||||
(texts raw-line) ["(" "f " "\"\"\"" "a \"b\" c" "\"\"\"" " x" ")"])
|
||||
(expect "and all of it is the string"
|
||||
(vec-map innermost (vec-slice raw-line 2 3))
|
||||
["punctuation.definition.string.begin.bjolang" "string.quoted.triple.bjolang"
|
||||
"punctuation.definition.string.end.bjolang"])
|
||||
(expect "a raw string goes on to the next line"
|
||||
(innermost (vec-ref (vec-ref (tokenize bjo "(g \"\"\"\n one \"\" two\n \"\"\")") 1) 0))
|
||||
"string.quoted.triple.bjolang")
|
||||
|
||||
(expect "embedded code is not coloured by what it is embedded in"
|
||||
(string-join (token-classes (scope "x" ["source.bjolang" "string.interpolated.bjolang"
|
||||
"meta.embedded.line.bjolang" "source.bjolang"]))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue