@@ -11,3 +11,27 @@ describe "Clojure grammar", ->
11
11
it " parses the grammar" , ->
12
12
expect (grammar).toBeDefined ()
13
13
expect (grammar .scopeName ).toBe " source.clojure"
14
+
15
+ it " tokenizes functions in nested sexp" , ->
16
+ {tokens } = grammar .tokenizeLine " ((foo bar) baz)"
17
+ expect (tokens[0 ]).toEqual value : " (" , scopes : [" source.clojure" , " meta.expression.clojure" , " punctuation.section.expression.begin.clojure" ]
18
+ expect (tokens[1 ]).toEqual value : " (" , scopes : [" source.clojure" , " meta.expression.clojure" , " meta.expression.clojure" , " punctuation.section.expression.begin.clojure" ]
19
+ expect (tokens[2 ]).toEqual value : " foo" , scopes : [" source.clojure" , " meta.expression.clojure" , " meta.expression.clojure" , " entity.name.function.clojure" ]
20
+ expect (tokens[3 ]).toEqual value : " " , scopes : [" source.clojure" , " meta.expression.clojure" , " meta.expression.clojure" ]
21
+ expect (tokens[4 ]).toEqual value : " bar" , scopes : [" source.clojure" , " meta.expression.clojure" , " meta.expression.clojure" , " meta.symbol.clojure" ]
22
+ expect (tokens[5 ]).toEqual value : " )" , scopes : [" source.clojure" , " meta.expression.clojure" , " meta.expression.clojure" , " punctuation.section.expression.end.clojure" ]
23
+ expect (tokens[6 ]).toEqual value : " " , scopes : [" source.clojure" , " meta.expression.clojure" ]
24
+ expect (tokens[7 ]).toEqual value : " baz" , scopes : [" source.clojure" , " meta.expression.clojure" , " meta.symbol.clojure" ]
25
+ expect (tokens[8 ]).toEqual value : " )" , scopes : [" source.clojure" , " meta.expression.clojure" , " punctuation.section.expression.end.clojure" ]
26
+
27
+ it " tokenizes maps used as functions" , ->
28
+ {tokens } = grammar .tokenizeLine " ({:foo bar} :foo)"
29
+ expect (tokens[0 ]).toEqual value : " (" , scopes : [" source.clojure" , " meta.expression.clojure" , " punctuation.section.expression.begin.clojure" ]
30
+ expect (tokens[1 ]).toEqual value : " {" , scopes : [" source.clojure" , " meta.expression.clojure" , " meta.map.clojure" , " punctuation.section.map.begin.clojure" ]
31
+ expect (tokens[2 ]).toEqual value : " :foo" , scopes : [" source.clojure" , " meta.expression.clojure" , " meta.map.clojure" , " constant.keyword.clojure" ]
32
+ expect (tokens[3 ]).toEqual value : " " , scopes : [" source.clojure" , " meta.expression.clojure" , " meta.map.clojure" ]
33
+ expect (tokens[4 ]).toEqual value : " bar" , scopes : [" source.clojure" , " meta.expression.clojure" , " meta.map.clojure" , " meta.symbol.clojure" ]
34
+ expect (tokens[5 ]).toEqual value : " }" , scopes : [" source.clojure" , " meta.expression.clojure" , " meta.map.clojure" , " punctuation.section.map.end.clojure" ]
35
+ expect (tokens[6 ]).toEqual value : " " , scopes : [" source.clojure" , " meta.expression.clojure" ]
36
+ expect (tokens[7 ]).toEqual value : " :foo" , scopes : [" source.clojure" , " meta.expression.clojure" , " constant.keyword.clojure" ]
37
+ expect (tokens[8 ]).toEqual value : " )" , scopes : [" source.clojure" , " meta.expression.clojure" , " punctuation.section.expression.end.clojure" ]
0 commit comments