test.min.js (6868B)
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 // Distributed under an MIT license: http://codemirror.net/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 feedbac") 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 })();