0
|
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others
|
|
2 // Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
|
3
|
|
4 (function() {
|
|
5 var mode = CodeMirror.getMode({tabSize: 4}, 'textile');
|
|
6 function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
|
|
7
|
|
8 MT('simpleParagraphs',
|
|
9 'Some text.',
|
|
10 '',
|
|
11 'Some more text.');
|
|
12
|
|
13 /*
|
|
14 * Phrase Modifiers
|
|
15 */
|
|
16
|
|
17 MT('em',
|
|
18 'foo [em _bar_]');
|
|
19
|
|
20 MT('emBoogus',
|
|
21 'code_mirror');
|
|
22
|
|
23 MT('strong',
|
|
24 'foo [strong *bar*]');
|
|
25
|
|
26 MT('strongBogus',
|
|
27 '3 * 3 = 9');
|
|
28
|
|
29 MT('italic',
|
|
30 'foo [em __bar__]');
|
|
31
|
|
32 MT('italicBogus',
|
|
33 'code__mirror');
|
|
34
|
|
35 MT('bold',
|
|
36 'foo [strong **bar**]');
|
|
37
|
|
38 MT('boldBogus',
|
|
39 '3 ** 3 = 27');
|
|
40
|
|
41 MT('simpleLink',
|
|
42 '[link "CodeMirror":https://codemirror.net]');
|
|
43
|
|
44 MT('referenceLink',
|
|
45 '[link "CodeMirror":code_mirror]',
|
|
46 'Normal Text.',
|
|
47 '[link [[code_mirror]]https://codemirror.net]');
|
|
48
|
|
49 MT('footCite',
|
|
50 'foo bar[qualifier [[1]]]');
|
|
51
|
|
52 MT('footCiteBogus',
|
|
53 'foo bar[[1a2]]');
|
|
54
|
|
55 MT('special-characters',
|
|
56 'Registered [tag (r)], ' +
|
|
57 'Trademark [tag (tm)], and ' +
|
|
58 'Copyright [tag (c)] 2008');
|
|
59
|
|
60 MT('cite',
|
|
61 "A book is [keyword ??The Count of Monte Cristo??] by Dumas.");
|
|
62
|
|
63 MT('additionAndDeletion',
|
|
64 'The news networks declared [negative -Al Gore-] ' +
|
|
65 '[positive +George W. Bush+] the winner in Florida.');
|
|
66
|
|
67 MT('subAndSup',
|
|
68 'f(x, n) = log [builtin ~4~] x [builtin ^n^]');
|
|
69
|
|
70 MT('spanAndCode',
|
|
71 'A [quote %span element%] and [atom @code element@]');
|
|
72
|
|
73 MT('spanBogus',
|
|
74 'Percentage 25% is not a span.');
|
|
75
|
|
76 MT('citeBogus',
|
|
77 'Question? is not a citation.');
|
|
78
|
|
79 MT('codeBogus',
|
|
80 'user@example.com');
|
|
81
|
|
82 MT('subBogus',
|
|
83 '~username');
|
|
84
|
|
85 MT('supBogus',
|
|
86 'foo ^ bar');
|
|
87
|
|
88 MT('deletionBogus',
|
|
89 '3 - 3 = 0');
|
|
90
|
|
91 MT('additionBogus',
|
|
92 '3 + 3 = 6');
|
|
93
|
|
94 MT('image',
|
|
95 'An image: [string !http://www.example.com/image.png!]');
|
|
96
|
|
97 MT('imageWithAltText',
|
|
98 'An image: [string !http://www.example.com/image.png (Alt Text)!]');
|
|
99
|
|
100 MT('imageWithUrl',
|
|
101 'An image: [string !http://www.example.com/image.png!:http://www.example.com/]');
|
|
102
|
|
103 /*
|
|
104 * Headers
|
|
105 */
|
|
106
|
|
107 MT('h1',
|
|
108 '[header&header-1 h1. foo]');
|
|
109
|
|
110 MT('h2',
|
|
111 '[header&header-2 h2. foo]');
|
|
112
|
|
113 MT('h3',
|
|
114 '[header&header-3 h3. foo]');
|
|
115
|
|
116 MT('h4',
|
|
117 '[header&header-4 h4. foo]');
|
|
118
|
|
119 MT('h5',
|
|
120 '[header&header-5 h5. foo]');
|
|
121
|
|
122 MT('h6',
|
|
123 '[header&header-6 h6. foo]');
|
|
124
|
|
125 MT('h7Bogus',
|
|
126 'h7. foo');
|
|
127
|
|
128 MT('multipleHeaders',
|
|
129 '[header&header-1 h1. Heading 1]',
|
|
130 '',
|
|
131 'Some text.',
|
|
132 '',
|
|
133 '[header&header-2 h2. Heading 2]',
|
|
134 '',
|
|
135 'More text.');
|
|
136
|
|
137 MT('h1inline',
|
|
138 '[header&header-1 h1. foo ][header&header-1&em _bar_][header&header-1 baz]');
|
|
139
|
|
140 /*
|
|
141 * Lists
|
|
142 */
|
|
143
|
|
144 MT('ul',
|
|
145 'foo',
|
|
146 'bar',
|
|
147 '',
|
|
148 '[variable-2 * foo]',
|
|
149 '[variable-2 * bar]');
|
|
150
|
|
151 MT('ulNoBlank',
|
|
152 'foo',
|
|
153 'bar',
|
|
154 '[variable-2 * foo]',
|
|
155 '[variable-2 * bar]');
|
|
156
|
|
157 MT('ol',
|
|
158 'foo',
|
|
159 'bar',
|
|
160 '',
|
|
161 '[variable-2 # foo]',
|
|
162 '[variable-2 # bar]');
|
|
163
|
|
164 MT('olNoBlank',
|
|
165 'foo',
|
|
166 'bar',
|
|
167 '[variable-2 # foo]',
|
|
168 '[variable-2 # bar]');
|
|
169
|
|
170 MT('ulFormatting',
|
|
171 '[variable-2 * ][variable-2&em _foo_][variable-2 bar]',
|
|
172 '[variable-2 * ][variable-2&strong *][variable-2&em&strong _foo_]' +
|
|
173 '[variable-2&strong *][variable-2 bar]',
|
|
174 '[variable-2 * ][variable-2&strong *foo*][variable-2 bar]');
|
|
175
|
|
176 MT('olFormatting',
|
|
177 '[variable-2 # ][variable-2&em _foo_][variable-2 bar]',
|
|
178 '[variable-2 # ][variable-2&strong *][variable-2&em&strong _foo_]' +
|
|
179 '[variable-2&strong *][variable-2 bar]',
|
|
180 '[variable-2 # ][variable-2&strong *foo*][variable-2 bar]');
|
|
181
|
|
182 MT('ulNested',
|
|
183 '[variable-2 * foo]',
|
|
184 '[variable-3 ** bar]',
|
|
185 '[keyword *** bar]',
|
|
186 '[variable-2 **** bar]',
|
|
187 '[variable-3 ** bar]');
|
|
188
|
|
189 MT('olNested',
|
|
190 '[variable-2 # foo]',
|
|
191 '[variable-3 ## bar]',
|
|
192 '[keyword ### bar]',
|
|
193 '[variable-2 #### bar]',
|
|
194 '[variable-3 ## bar]');
|
|
195
|
|
196 MT('ulNestedWithOl',
|
|
197 '[variable-2 * foo]',
|
|
198 '[variable-3 ## bar]',
|
|
199 '[keyword *** bar]',
|
|
200 '[variable-2 #### bar]',
|
|
201 '[variable-3 ** bar]');
|
|
202
|
|
203 MT('olNestedWithUl',
|
|
204 '[variable-2 # foo]',
|
|
205 '[variable-3 ** bar]',
|
|
206 '[keyword ### bar]',
|
|
207 '[variable-2 **** bar]',
|
|
208 '[variable-3 ## bar]');
|
|
209
|
|
210 MT('definitionList',
|
|
211 '[number - coffee := Hot ][number&em _and_][number black]',
|
|
212 '',
|
|
213 'Normal text.');
|
|
214
|
|
215 MT('definitionListSpan',
|
|
216 '[number - coffee :=]',
|
|
217 '',
|
|
218 '[number Hot ][number&em _and_][number black =:]',
|
|
219 '',
|
|
220 'Normal text.');
|
|
221
|
|
222 MT('boo',
|
|
223 '[number - dog := woof woof]',
|
|
224 '[number - cat := meow meow]',
|
|
225 '[number - whale :=]',
|
|
226 '[number Whale noises.]',
|
|
227 '',
|
|
228 '[number Also, ][number&em _splashing_][number . =:]');
|
|
229
|
|
230 /*
|
|
231 * Attributes
|
|
232 */
|
|
233
|
|
234 MT('divWithAttribute',
|
|
235 '[punctuation div][punctuation&attribute (#my-id)][punctuation . foo bar]');
|
|
236
|
|
237 MT('divWithAttributeAnd2emRightPadding',
|
|
238 '[punctuation div][punctuation&attribute (#my-id)((][punctuation . foo bar]');
|
|
239
|
|
240 MT('divWithClassAndId',
|
|
241 '[punctuation div][punctuation&attribute (my-class#my-id)][punctuation . foo bar]');
|
|
242
|
|
243 MT('paragraphWithCss',
|
|
244 'p[attribute {color:red;}]. foo bar');
|
|
245
|
|
246 MT('paragraphNestedStyles',
|
|
247 'p. [strong *foo ][strong&em _bar_][strong *]');
|
|
248
|
|
249 MT('paragraphWithLanguage',
|
|
250 'p[attribute [[fr]]]. Parlez-vous français?');
|
|
251
|
|
252 MT('paragraphLeftAlign',
|
|
253 'p[attribute <]. Left');
|
|
254
|
|
255 MT('paragraphRightAlign',
|
|
256 'p[attribute >]. Right');
|
|
257
|
|
258 MT('paragraphRightAlign',
|
|
259 'p[attribute =]. Center');
|
|
260
|
|
261 MT('paragraphJustified',
|
|
262 'p[attribute <>]. Justified');
|
|
263
|
|
264 MT('paragraphWithLeftIndent1em',
|
|
265 'p[attribute (]. Left');
|
|
266
|
|
267 MT('paragraphWithRightIndent1em',
|
|
268 'p[attribute )]. Right');
|
|
269
|
|
270 MT('paragraphWithLeftIndent2em',
|
|
271 'p[attribute ((]. Left');
|
|
272
|
|
273 MT('paragraphWithRightIndent2em',
|
|
274 'p[attribute ))]. Right');
|
|
275
|
|
276 MT('paragraphWithLeftIndent3emRightIndent2em',
|
|
277 'p[attribute ((())]. Right');
|
|
278
|
|
279 MT('divFormatting',
|
|
280 '[punctuation div. ][punctuation&strong *foo ]' +
|
|
281 '[punctuation&strong&em _bar_][punctuation&strong *]');
|
|
282
|
|
283 MT('phraseModifierAttributes',
|
|
284 'p[attribute (my-class)]. This is a paragraph that has a class and' +
|
|
285 ' this [em _][em&attribute (#special-phrase)][em emphasized phrase_]' +
|
|
286 ' has an id.');
|
|
287
|
|
288 MT('linkWithClass',
|
|
289 '[link "(my-class). This is a link with class":http://redcloth.org]');
|
|
290
|
|
291 /*
|
|
292 * Layouts
|
|
293 */
|
|
294
|
|
295 MT('paragraphLayouts',
|
|
296 'p. This is one paragraph.',
|
|
297 '',
|
|
298 'p. This is another.');
|
|
299
|
|
300 MT('div',
|
|
301 '[punctuation div. foo bar]');
|
|
302
|
|
303 MT('pre',
|
|
304 '[operator pre. Text]');
|
|
305
|
|
306 MT('bq.',
|
|
307 '[bracket bq. foo bar]',
|
|
308 '',
|
|
309 'Normal text.');
|
|
310
|
|
311 MT('footnote',
|
|
312 '[variable fn123. foo ][variable&strong *bar*]');
|
|
313
|
|
314 /*
|
|
315 * Spanning Layouts
|
|
316 */
|
|
317
|
|
318 MT('bq..ThenParagraph',
|
|
319 '[bracket bq.. foo bar]',
|
|
320 '',
|
|
321 '[bracket More quote.]',
|
|
322 'p. Normal Text');
|
|
323
|
|
324 MT('bq..ThenH1',
|
|
325 '[bracket bq.. foo bar]',
|
|
326 '',
|
|
327 '[bracket More quote.]',
|
|
328 '[header&header-1 h1. Header Text]');
|
|
329
|
|
330 MT('bc..ThenParagraph',
|
|
331 '[atom bc.. # Some ruby code]',
|
|
332 '[atom obj = {foo: :bar}]',
|
|
333 '[atom puts obj]',
|
|
334 '',
|
|
335 '[atom obj[[:love]] = "*love*"]',
|
|
336 '[atom puts obj.love.upcase]',
|
|
337 '',
|
|
338 'p. Normal text.');
|
|
339
|
|
340 MT('fn1..ThenParagraph',
|
|
341 '[variable fn1.. foo bar]',
|
|
342 '',
|
|
343 '[variable More.]',
|
|
344 'p. Normal Text');
|
|
345
|
|
346 MT('pre..ThenParagraph',
|
|
347 '[operator pre.. foo bar]',
|
|
348 '',
|
|
349 '[operator More.]',
|
|
350 'p. Normal Text');
|
|
351
|
|
352 /*
|
|
353 * Tables
|
|
354 */
|
|
355
|
|
356 MT('table',
|
|
357 '[variable-3&operator |_. name |_. age|]',
|
|
358 '[variable-3 |][variable-3&strong *Walter*][variable-3 | 5 |]',
|
|
359 '[variable-3 |Florence| 6 |]',
|
|
360 '',
|
|
361 'p. Normal text.');
|
|
362
|
|
363 MT('tableWithAttributes',
|
|
364 '[variable-3&operator |_. name |_. age|]',
|
|
365 '[variable-3 |][variable-3&attribute /2.][variable-3 Jim |]',
|
|
366 '[variable-3 |][variable-3&attribute \\2{color: red}.][variable-3 Sam |]');
|
|
367
|
|
368 /*
|
|
369 * HTML
|
|
370 */
|
|
371
|
|
372 MT('html',
|
|
373 '[comment <div id="wrapper">]',
|
|
374 '[comment <section id="introduction">]',
|
|
375 '',
|
|
376 '[header&header-1 h1. Welcome]',
|
|
377 '',
|
|
378 '[variable-2 * Item one]',
|
|
379 '[variable-2 * Item two]',
|
|
380 '',
|
|
381 '[comment <a href="http://example.com">Example</a>]',
|
|
382 '',
|
|
383 '[comment </section>]',
|
|
384 '[comment </div>]');
|
|
385
|
|
386 MT('inlineHtml',
|
|
387 'I can use HTML directly in my [comment <span class="youbetcha">Textile</span>].');
|
|
388
|
|
389 /*
|
|
390 * No-Textile
|
|
391 */
|
|
392
|
|
393 MT('notextile',
|
|
394 '[string-2 notextile. *No* formatting]');
|
|
395
|
|
396 MT('notextileInline',
|
|
397 'Use [string-2 ==*asterisks*==] for [strong *strong*] text.');
|
|
398
|
|
399 MT('notextileWithPre',
|
|
400 '[operator pre. *No* formatting]');
|
|
401
|
|
402 MT('notextileWithSpanningPre',
|
|
403 '[operator pre.. *No* formatting]',
|
|
404 '',
|
|
405 '[operator *No* formatting]');
|
|
406
|
|
407 /* Only toggling phrases between non-word chars. */
|
|
408
|
|
409 MT('phrase-in-word',
|
|
410 'foo_bar_baz');
|
|
411
|
|
412 MT('phrase-non-word',
|
|
413 '[negative -x-] aaa-bbb ccc-ddd [negative -eee-] fff [negative -ggg-]');
|
|
414
|
|
415 MT('phrase-lone-dash',
|
|
416 'foo - bar - baz');
|
|
417 })();
|