| 776 |
lars |
1 |
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
|
|
2 |
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
|
|
3 |
|
|
|
4 |
(function() {
|
|
|
5 |
var mode = CodeMirror.getMode({indentUnit: 2}, "javascript");
|
|
|
6 |
function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
|
|
|
7 |
|
|
|
8 |
MT("locals",
|
|
|
9 |
"[keyword function] [variable foo]([def a], [def b]) { [keyword var] [def c] [operator =] [number 10]; [keyword return] [variable-2 a] [operator +] [variable-2 c] [operator +] [variable d]; }");
|
|
|
10 |
|
|
|
11 |
MT("comma-and-binop",
|
|
|
12 |
"[keyword function](){ [keyword var] [def x] [operator =] [number 1] [operator +] [number 2], [def y]; }");
|
|
|
13 |
|
|
|
14 |
MT("destructuring",
|
|
|
15 |
"([keyword function]([def a], [[[def b], [def c] ]]) {",
|
|
|
16 |
" [keyword let] {[def d], [property foo]: [def c][operator =][number 10], [def x]} [operator =] [variable foo]([variable-2 a]);",
|
|
|
17 |
" [[[variable-2 c], [variable y] ]] [operator =] [variable-2 c];",
|
|
|
18 |
"})();");
|
|
|
19 |
|
|
|
20 |
MT("class_body",
|
|
|
21 |
"[keyword class] [variable Foo] {",
|
|
|
22 |
" [property constructor]() {}",
|
|
|
23 |
" [property sayName]() {",
|
|
|
24 |
" [keyword return] [string-2 `foo${][variable foo][string-2 }oo`];",
|
|
|
25 |
" }",
|
|
|
26 |
"}");
|
|
|
27 |
|
|
|
28 |
MT("class",
|
|
|
29 |
"[keyword class] [variable Point] [keyword extends] [variable SuperThing] {",
|
|
|
30 |
" [property get] [property prop]() { [keyword return] [number 24]; }",
|
|
|
31 |
" [property constructor]([def x], [def y]) {",
|
|
|
32 |
" [keyword super]([string 'something']);",
|
|
|
33 |
" [keyword this].[property x] [operator =] [variable-2 x];",
|
|
|
34 |
" }",
|
|
|
35 |
"}");
|
|
|
36 |
|
|
|
37 |
MT("import",
|
|
|
38 |
"[keyword function] [variable foo]() {",
|
|
|
39 |
" [keyword import] [def $] [keyword from] [string 'jquery'];",
|
|
|
40 |
" [keyword import] { [def encrypt], [def decrypt] } [keyword from] [string 'crypto'];",
|
|
|
41 |
"}");
|
|
|
42 |
|
|
|
43 |
MT("const",
|
|
|
44 |
"[keyword function] [variable f]() {",
|
|
|
45 |
" [keyword const] [[ [def a], [def b] ]] [operator =] [[ [number 1], [number 2] ]];",
|
|
|
46 |
"}");
|
|
|
47 |
|
|
|
48 |
MT("for/of",
|
|
|
49 |
"[keyword for]([keyword let] [variable of] [keyword of] [variable something]) {}");
|
|
|
50 |
|
|
|
51 |
MT("generator",
|
|
|
52 |
"[keyword function*] [variable repeat]([def n]) {",
|
|
|
53 |
" [keyword for]([keyword var] [def i] [operator =] [number 0]; [variable-2 i] [operator <] [variable-2 n]; [operator ++][variable-2 i])",
|
|
|
54 |
" [keyword yield] [variable-2 i];",
|
|
|
55 |
"}");
|
|
|
56 |
|
|
|
57 |
MT("quotedStringAddition",
|
|
|
58 |
"[keyword let] [variable f] [operator =] [variable a] [operator +] [string 'fatarrow'] [operator +] [variable c];");
|
|
|
59 |
|
|
|
60 |
MT("quotedFatArrow",
|
|
|
61 |
"[keyword let] [variable f] [operator =] [variable a] [operator +] [string '=>'] [operator +] [variable c];");
|
|
|
62 |
|
|
|
63 |
MT("fatArrow",
|
|
|
64 |
"[variable array].[property filter]([def a] [operator =>] [variable-2 a] [operator +] [number 1]);",
|
|
|
65 |
"[variable a];", // No longer in scope
|
|
|
66 |
"[keyword let] [variable f] [operator =] ([[ [def a], [def b] ]], [def c]) [operator =>] [variable-2 a] [operator +] [variable-2 c];",
|
|
|
67 |
"[variable c];");
|
|
|
68 |
|
|
|
69 |
MT("spread",
|
|
|
70 |
"[keyword function] [variable f]([def a], [meta ...][def b]) {",
|
|
|
71 |
" [variable something]([variable-2 a], [meta ...][variable-2 b]);",
|
|
|
72 |
"}");
|
|
|
73 |
|
|
|
74 |
MT("comprehension",
|
|
|
75 |
"[keyword function] [variable f]() {",
|
|
|
76 |
" [[([variable x] [operator +] [number 1]) [keyword for] ([keyword var] [def x] [keyword in] [variable y]) [keyword if] [variable pred]([variable-2 x]) ]];",
|
|
|
77 |
" ([variable u] [keyword for] ([keyword var] [def u] [keyword of] [variable generateValues]()) [keyword if] ([variable-2 u].[property color] [operator ===] [string 'blue']));",
|
|
|
78 |
"}");
|
|
|
79 |
|
|
|
80 |
MT("quasi",
|
|
|
81 |
"[variable re][string-2 `fofdlakj${][variable x] [operator +] ([variable re][string-2 `foo`]) [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]");
|
|
|
82 |
|
|
|
83 |
MT("quasi_no_function",
|
|
|
84 |
"[variable x] [operator =] [string-2 `fofdlakj${][variable x] [operator +] [string-2 `foo`] [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]");
|
|
|
85 |
|
|
|
86 |
MT("indent_statement",
|
|
|
87 |
"[keyword var] [variable x] [operator =] [number 10]",
|
|
|
88 |
"[variable x] [operator +=] [variable y] [operator +]",
|
|
|
89 |
" [atom Infinity]",
|
|
|
90 |
"[keyword debugger];");
|
|
|
91 |
|
|
|
92 |
MT("indent_if",
|
|
|
93 |
"[keyword if] ([number 1])",
|
|
|
94 |
" [keyword break];",
|
|
|
95 |
"[keyword else] [keyword if] ([number 2])",
|
|
|
96 |
" [keyword continue];",
|
|
|
97 |
"[keyword else]",
|
|
|
98 |
" [number 10];",
|
|
|
99 |
"[keyword if] ([number 1]) {",
|
|
|
100 |
" [keyword break];",
|
|
|
101 |
"} [keyword else] [keyword if] ([number 2]) {",
|
|
|
102 |
" [keyword continue];",
|
|
|
103 |
"} [keyword else] {",
|
|
|
104 |
" [number 10];",
|
|
|
105 |
"}");
|
|
|
106 |
|
|
|
107 |
MT("indent_for",
|
|
|
108 |
"[keyword for] ([keyword var] [variable i] [operator =] [number 0];",
|
|
|
109 |
" [variable i] [operator <] [number 100];",
|
|
|
110 |
" [variable i][operator ++])",
|
|
|
111 |
" [variable doSomething]([variable i]);",
|
|
|
112 |
"[keyword debugger];");
|
|
|
113 |
|
|
|
114 |
MT("indent_c_style",
|
|
|
115 |
"[keyword function] [variable foo]()",
|
|
|
116 |
"{",
|
|
|
117 |
" [keyword debugger];",
|
|
|
118 |
"}");
|
|
|
119 |
|
|
|
120 |
MT("indent_else",
|
|
|
121 |
"[keyword for] (;;)",
|
|
|
122 |
" [keyword if] ([variable foo])",
|
|
|
123 |
" [keyword if] ([variable bar])",
|
|
|
124 |
" [number 1];",
|
|
|
125 |
" [keyword else]",
|
|
|
126 |
" [number 2];",
|
|
|
127 |
" [keyword else]",
|
|
|
128 |
" [number 3];");
|
|
|
129 |
|
|
|
130 |
MT("indent_funarg",
|
|
|
131 |
"[variable foo]([number 10000],",
|
|
|
132 |
" [keyword function]([def a]) {",
|
|
|
133 |
" [keyword debugger];",
|
|
|
134 |
"};");
|
|
|
135 |
|
|
|
136 |
MT("indent_below_if",
|
|
|
137 |
"[keyword for] (;;)",
|
|
|
138 |
" [keyword if] ([variable foo])",
|
|
|
139 |
" [number 1];",
|
|
|
140 |
"[number 2];");
|
|
|
141 |
|
|
|
142 |
MT("multilinestring",
|
|
|
143 |
"[keyword var] [variable x] [operator =] [string 'foo\\]",
|
|
|
144 |
"[string bar'];");
|
|
|
145 |
|
|
|
146 |
MT("scary_regexp",
|
|
|
147 |
"[string-2 /foo[[/]]bar/];");
|
|
|
148 |
|
|
|
149 |
MT("indent_strange_array",
|
|
|
150 |
"[keyword var] [variable x] [operator =] [[",
|
|
|
151 |
" [number 1],,",
|
|
|
152 |
" [number 2],",
|
|
|
153 |
"]];",
|
|
|
154 |
"[number 10];");
|
|
|
155 |
|
|
|
156 |
MT("param_default",
|
|
|
157 |
"[keyword function] [variable foo]([def x] [operator =] [string-2 `foo${][number 10][string-2 }bar`]) {",
|
|
|
158 |
" [keyword return] [variable-2 x];",
|
|
|
159 |
"}");
|
|
|
160 |
|
|
|
161 |
var jsonld_mode = CodeMirror.getMode(
|
|
|
162 |
{indentUnit: 2},
|
|
|
163 |
{name: "javascript", jsonld: true}
|
|
|
164 |
);
|
|
|
165 |
function LD(name) {
|
|
|
166 |
test.mode(name, jsonld_mode, Array.prototype.slice.call(arguments, 1));
|
|
|
167 |
}
|
|
|
168 |
|
|
|
169 |
LD("json_ld_keywords",
|
|
|
170 |
'{',
|
|
|
171 |
' [meta "@context"]: {',
|
|
|
172 |
' [meta "@base"]: [string "http://example.com"],',
|
|
|
173 |
' [meta "@vocab"]: [string "http://xmlns.com/foaf/0.1/"],',
|
|
|
174 |
' [property "likesFlavor"]: {',
|
|
|
175 |
' [meta "@container"]: [meta "@list"]',
|
|
|
176 |
' [meta "@reverse"]: [string "@beFavoriteOf"]',
|
|
|
177 |
' },',
|
|
|
178 |
' [property "nick"]: { [meta "@container"]: [meta "@set"] },',
|
|
|
179 |
' [property "nick"]: { [meta "@container"]: [meta "@index"] }',
|
|
|
180 |
' },',
|
|
|
181 |
' [meta "@graph"]: [[ {',
|
|
|
182 |
' [meta "@id"]: [string "http://dbpedia.org/resource/John_Lennon"],',
|
|
|
183 |
' [property "name"]: [string "John Lennon"],',
|
|
|
184 |
' [property "modified"]: {',
|
|
|
185 |
' [meta "@value"]: [string "2010-05-29T14:17:39+02:00"],',
|
|
|
186 |
' [meta "@type"]: [string "http://www.w3.org/2001/XMLSchema#dateTime"]',
|
|
|
187 |
' }',
|
|
|
188 |
' } ]]',
|
|
|
189 |
'}');
|
|
|
190 |
|
|
|
191 |
LD("json_ld_fake",
|
|
|
192 |
'{',
|
|
|
193 |
' [property "@fake"]: [string "@fake"],',
|
|
|
194 |
' [property "@contextual"]: [string "@identifier"],',
|
|
|
195 |
' [property "user@domain.com"]: [string "@graphical"],',
|
|
|
196 |
' [property "@ID"]: [string "@@ID"]',
|
|
|
197 |
'}');
|
|
|
198 |
})();
|