Mercurial
comparison .cms/lib/codemirror/mode/gfm/test.js @ 0:78edf6b517a0 draft
24.10
author | Coffee CMS <info@coffee-cms.ru> |
---|---|
date | Fri, 11 Oct 2024 22:40:23 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:78edf6b517a0 |
---|---|
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 config = {tabSize: 4, indentUnit: 2} | |
6 var mode = CodeMirror.getMode(config, "gfm"); | |
7 function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } | |
8 var modeHighlightFormatting = CodeMirror.getMode(config, {name: "gfm", highlightFormatting: true}); | |
9 function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); } | |
10 | |
11 FT("codeBackticks", | |
12 "[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]"); | |
13 | |
14 FT("doubleBackticks", | |
15 "[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]"); | |
16 | |
17 FT("taskList", | |
18 "[variable-2&formatting&formatting-list&formatting-list-ul - ][meta&formatting&formatting-task [ ]]][variable-2 foo]", | |
19 "[variable-2&formatting&formatting-list&formatting-list-ul - ][property&formatting&formatting-task [x]]][variable-2 foo]"); | |
20 | |
21 FT("formatting_strikethrough", | |
22 "[strikethrough&formatting&formatting-strikethrough ~~][strikethrough foo][strikethrough&formatting&formatting-strikethrough ~~]"); | |
23 | |
24 FT("formatting_strikethrough", | |
25 "foo [strikethrough&formatting&formatting-strikethrough ~~][strikethrough bar][strikethrough&formatting&formatting-strikethrough ~~]"); | |
26 | |
27 FT("formatting_emoji", | |
28 "foo [builtin&formatting&formatting-emoji :smile:] foo"); | |
29 | |
30 MT("emInWordAsterisk", | |
31 "foo[em *bar*]hello"); | |
32 | |
33 MT("emInWordUnderscore", | |
34 "foo_bar_hello"); | |
35 | |
36 MT("emStrongUnderscore", | |
37 "[em&strong ___foo___] bar"); | |
38 | |
39 MT("taskListAsterisk", | |
40 "[variable-2 * ][link&variable-2 [[]]][variable-2 foo]", // Invalid; must have space or x between [] | |
41 "[variable-2 * ][link&variable-2 [[ ]]][variable-2 bar]", // Invalid; must have space after ] | |
42 "[variable-2 * ][link&variable-2 [[x]]][variable-2 hello]", // Invalid; must have space after ] | |
43 "[variable-2 * ][meta [ ]]][variable-2 ][link&variable-2 [[world]]]", // Valid; tests reference style links | |
44 " [variable-3 * ][property [x]]][variable-3 foo]"); // Valid; can be nested | |
45 | |
46 MT("taskListPlus", | |
47 "[variable-2 + ][link&variable-2 [[]]][variable-2 foo]", // Invalid; must have space or x between [] | |
48 "[variable-2 + ][link&variable-2 [[x]]][variable-2 hello]", // Invalid; must have space after ] | |
49 "[variable-2 + ][meta [ ]]][variable-2 ][link&variable-2 [[world]]]", // Valid; tests reference style links | |
50 " [variable-3 + ][property [x]]][variable-3 foo]"); // Valid; can be nested | |
51 | |
52 MT("taskListDash", | |
53 "[variable-2 - ][link&variable-2 [[]]][variable-2 foo]", // Invalid; must have space or x between [] | |
54 "[variable-2 - ][link&variable-2 [[x]]][variable-2 hello]", // Invalid; must have space after ] | |
55 "[variable-2 - ][meta [ ]]][variable-2 world]", // Valid; tests reference style links | |
56 " [variable-3 - ][property [x]]][variable-3 foo]"); // Valid; can be nested | |
57 | |
58 MT("taskListNumber", | |
59 "[variable-2 1. ][link&variable-2 [[]]][variable-2 foo]", // Invalid; must have space or x between [] | |
60 "[variable-2 2. ][link&variable-2 [[ ]]][variable-2 bar]", // Invalid; must have space after ] | |
61 "[variable-2 3. ][meta [ ]]][variable-2 world]", // Valid; tests reference style links | |
62 " [variable-3 1. ][property [x]]][variable-3 foo]"); // Valid; can be nested | |
63 | |
64 MT("SHA", | |
65 "foo [link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] bar"); | |
66 | |
67 MT("SHAEmphasis", | |
68 "[em *foo ][em&link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); | |
69 | |
70 MT("shortSHA", | |
71 "foo [link be6a8cc] bar"); | |
72 | |
73 MT("tooShortSHA", | |
74 "foo be6a8c bar"); | |
75 | |
76 MT("longSHA", | |
77 "foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd22 bar"); | |
78 | |
79 MT("badSHA", | |
80 "foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cg2 bar"); | |
81 | |
82 MT("userSHA", | |
83 "foo [link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] hello"); | |
84 | |
85 MT("userSHAEmphasis", | |
86 "[em *foo ][em&link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); | |
87 | |
88 MT("userProjectSHA", | |
89 "foo [link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] world"); | |
90 | |
91 MT("userProjectSHAEmphasis", | |
92 "[em *foo ][em&link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); | |
93 | |
94 MT("wordSHA", | |
95 "ask for feedback") | |
96 | |
97 MT("num", | |
98 "foo [link #1] bar"); | |
99 | |
100 MT("numEmphasis", | |
101 "[em *foo ][em&link #1][em *]"); | |
102 | |
103 MT("badNum", | |
104 "foo #1bar hello"); | |
105 | |
106 MT("userNum", | |
107 "foo [link bar#1] hello"); | |
108 | |
109 MT("userNumEmphasis", | |
110 "[em *foo ][em&link bar#1][em *]"); | |
111 | |
112 MT("userProjectNum", | |
113 "foo [link bar/hello#1] world"); | |
114 | |
115 MT("userProjectNumEmphasis", | |
116 "[em *foo ][em&link bar/hello#1][em *]"); | |
117 | |
118 MT("vanillaLink", | |
119 "foo [link http://www.example.com/] bar"); | |
120 | |
121 MT("vanillaLinkNoScheme", | |
122 "foo [link www.example.com] bar"); | |
123 | |
124 MT("vanillaLinkHttps", | |
125 "foo [link https://www.example.com/] bar"); | |
126 | |
127 MT("vanillaLinkDataSchema", | |
128 "foo [link data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==] bar"); | |
129 | |
130 MT("vanillaLinkPunctuation", | |
131 "foo [link http://www.example.com/]. bar"); | |
132 | |
133 MT("vanillaLinkExtension", | |
134 "foo [link http://www.example.com/index.html] bar"); | |
135 | |
136 MT("vanillaLinkEmphasis", | |
137 "foo [em *][em&link http://www.example.com/index.html][em *] bar"); | |
138 | |
139 MT("notALink", | |
140 "foo asfd:asdf bar"); | |
141 | |
142 MT("notALink", | |
143 "[comment ``foo `bar` http://www.example.com/``] hello"); | |
144 | |
145 MT("notALink", | |
146 "[comment `foo]", | |
147 "[comment&link http://www.example.com/]", | |
148 "[comment `] foo", | |
149 "", | |
150 "[link http://www.example.com/]"); | |
151 | |
152 MT("strikethrough", | |
153 "[strikethrough ~~foo~~]"); | |
154 | |
155 MT("strikethroughWithStartingSpace", | |
156 "~~ foo~~"); | |
157 | |
158 MT("strikethroughUnclosedStrayTildes", | |
159 "[strikethrough ~~foo~~~]"); | |
160 | |
161 MT("strikethroughUnclosedStrayTildes", | |
162 "[strikethrough ~~foo ~~]"); | |
163 | |
164 MT("strikethroughUnclosedStrayTildes", | |
165 "[strikethrough ~~foo ~~ bar]"); | |
166 | |
167 MT("strikethroughUnclosedStrayTildes", | |
168 "[strikethrough ~~foo ~~ bar~~]hello"); | |
169 | |
170 MT("strikethroughOneLetter", | |
171 "[strikethrough ~~a~~]"); | |
172 | |
173 MT("strikethroughWrapped", | |
174 "[strikethrough ~~foo]", | |
175 "[strikethrough foo~~]"); | |
176 | |
177 MT("strikethroughParagraph", | |
178 "[strikethrough ~~foo]", | |
179 "", | |
180 "foo[strikethrough ~~bar]"); | |
181 | |
182 MT("strikethroughEm", | |
183 "[strikethrough ~~foo][em&strikethrough *bar*][strikethrough ~~]"); | |
184 | |
185 MT("strikethroughEm", | |
186 "[em *][em&strikethrough ~~foo~~][em *]"); | |
187 | |
188 MT("strikethroughStrong", | |
189 "[strikethrough ~~][strong&strikethrough **foo**][strikethrough ~~]"); | |
190 | |
191 MT("strikethroughStrong", | |
192 "[strong **][strong&strikethrough ~~foo~~][strong **]"); | |
193 | |
194 MT("emoji", | |
195 "text [builtin :blush:] text [builtin :v:] text [builtin :+1:] text", | |
196 ":text text: [builtin :smiley_cat:]"); | |
197 | |
198 })(); |