Spaces:
Running
Running
// CodeMirror, copyright (c) by Marijn Haverbeke and others | |
// Distributed under an MIT license: http://codemirror.net/LICENSE | |
(function() { | |
var config = {tabSize: 4, indentUnit: 2} | |
var mode = CodeMirror.getMode(config, "gfm"); | |
function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } | |
var modeHighlightFormatting = CodeMirror.getMode(config, {name: "gfm", highlightFormatting: true}); | |
function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); } | |
FT("codeBackticks", | |
"[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]"); | |
FT("doubleBackticks", | |
"[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]"); | |
FT("taskList", | |
"[variable-2&formatting&formatting-list&formatting-list-ul - ][meta&formatting&formatting-task [ ]]][variable-2 foo]", | |
"[variable-2&formatting&formatting-list&formatting-list-ul - ][property&formatting&formatting-task [x]]][variable-2 foo]"); | |
FT("formatting_strikethrough", | |
"[strikethrough&formatting&formatting-strikethrough ~~][strikethrough foo][strikethrough&formatting&formatting-strikethrough ~~]"); | |
FT("formatting_strikethrough", | |
"foo [strikethrough&formatting&formatting-strikethrough ~~][strikethrough bar][strikethrough&formatting&formatting-strikethrough ~~]"); | |
FT("formatting_emoji", | |
"foo [builtin&formatting&formatting-emoji :smile:] foo"); | |
MT("emInWordAsterisk", | |
"foo[em *bar*]hello"); | |
MT("emInWordUnderscore", | |
"foo_bar_hello"); | |
MT("emStrongUnderscore", | |
"[em&strong ___foo___] bar"); | |
MT("taskListAsterisk", | |
"[variable-2 * ][link&variable-2 [[]]][variable-2 foo]", // Invalid; must have space or x between [] | |
"[variable-2 * ][link&variable-2 [[ ]]][variable-2 bar]", // Invalid; must have space after ] | |
"[variable-2 * ][link&variable-2 [[x]]][variable-2 hello]", // Invalid; must have space after ] | |
"[variable-2 * ][meta [ ]]][variable-2 ][link&variable-2 [[world]]]", // Valid; tests reference style links | |
" [variable-3 * ][property [x]]][variable-3 foo]"); // Valid; can be nested | |
MT("taskListPlus", | |
"[variable-2 + ][link&variable-2 [[]]][variable-2 foo]", // Invalid; must have space or x between [] | |
"[variable-2 + ][link&variable-2 [[x]]][variable-2 hello]", // Invalid; must have space after ] | |
"[variable-2 + ][meta [ ]]][variable-2 ][link&variable-2 [[world]]]", // Valid; tests reference style links | |
" [variable-3 + ][property [x]]][variable-3 foo]"); // Valid; can be nested | |
MT("taskListDash", | |
"[variable-2 - ][link&variable-2 [[]]][variable-2 foo]", // Invalid; must have space or x between [] | |
"[variable-2 - ][link&variable-2 [[x]]][variable-2 hello]", // Invalid; must have space after ] | |
"[variable-2 - ][meta [ ]]][variable-2 world]", // Valid; tests reference style links | |
" [variable-3 - ][property [x]]][variable-3 foo]"); // Valid; can be nested | |
MT("taskListNumber", | |
"[variable-2 1. ][link&variable-2 [[]]][variable-2 foo]", // Invalid; must have space or x between [] | |
"[variable-2 2. ][link&variable-2 [[ ]]][variable-2 bar]", // Invalid; must have space after ] | |
"[variable-2 3. ][meta [ ]]][variable-2 world]", // Valid; tests reference style links | |
" [variable-3 1. ][property [x]]][variable-3 foo]"); // Valid; can be nested | |
MT("SHA", | |
"foo [link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] bar"); | |
MT("SHAEmphasis", | |
"[em *foo ][em&link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); | |
MT("shortSHA", | |
"foo [link be6a8cc] bar"); | |
MT("tooShortSHA", | |
"foo be6a8c bar"); | |
MT("longSHA", | |
"foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd22 bar"); | |
MT("badSHA", | |
"foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cg2 bar"); | |
MT("userSHA", | |
"foo [link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] hello"); | |
MT("userSHAEmphasis", | |
"[em *foo ][em&link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); | |
MT("userProjectSHA", | |
"foo [link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] world"); | |
MT("userProjectSHAEmphasis", | |
"[em *foo ][em&link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); | |
MT("wordSHA", | |
"ask for feedbac") | |
MT("num", | |
"foo [link #1] bar"); | |
MT("numEmphasis", | |
"[em *foo ][em&link #1][em *]"); | |
MT("badNum", | |
"foo #1bar hello"); | |
MT("userNum", | |
"foo [link bar#1] hello"); | |
MT("userNumEmphasis", | |
"[em *foo ][em&link bar#1][em *]"); | |
MT("userProjectNum", | |
"foo [link bar/hello#1] world"); | |
MT("userProjectNumEmphasis", | |
"[em *foo ][em&link bar/hello#1][em *]"); | |
MT("vanillaLink", | |
"foo [link http://www.example.com/] bar"); | |
MT("vanillaLinkNoScheme", | |
"foo [link www.example.com] bar"); | |
MT("vanillaLinkHttps", | |
"foo [link https://www.example.com/] bar"); | |
MT("vanillaLinkDataSchema", | |
"foo [link data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==] bar"); | |
MT("vanillaLinkPunctuation", | |
"foo [link http://www.example.com/]. bar"); | |
MT("vanillaLinkExtension", | |
"foo [link http://www.example.com/index.html] bar"); | |
MT("vanillaLinkEmphasis", | |
"foo [em *][em&link http://www.example.com/index.html][em *] bar"); | |
MT("notALink", | |
"foo asfd:asdf bar"); | |
MT("notALink", | |
"[comment ``foo `bar` http://www.example.com/``] hello"); | |
MT("notALink", | |
"[comment `foo]", | |
"[comment&link http://www.example.com/]", | |
"[comment `] foo", | |
"", | |
"[link http://www.example.com/]"); | |
MT("strikethrough", | |
"[strikethrough ~~foo~~]"); | |
MT("strikethroughWithStartingSpace", | |
"~~ foo~~"); | |
MT("strikethroughUnclosedStrayTildes", | |
"[strikethrough ~~foo~~~]"); | |
MT("strikethroughUnclosedStrayTildes", | |
"[strikethrough ~~foo ~~]"); | |
MT("strikethroughUnclosedStrayTildes", | |
"[strikethrough ~~foo ~~ bar]"); | |
MT("strikethroughUnclosedStrayTildes", | |
"[strikethrough ~~foo ~~ bar~~]hello"); | |
MT("strikethroughOneLetter", | |
"[strikethrough ~~a~~]"); | |
MT("strikethroughWrapped", | |
"[strikethrough ~~foo]", | |
"[strikethrough foo~~]"); | |
MT("strikethroughParagraph", | |
"[strikethrough ~~foo]", | |
"", | |
"foo[strikethrough ~~bar]"); | |
MT("strikethroughEm", | |
"[strikethrough ~~foo][em&strikethrough *bar*][strikethrough ~~]"); | |
MT("strikethroughEm", | |
"[em *][em&strikethrough ~~foo~~][em *]"); | |
MT("strikethroughStrong", | |
"[strikethrough ~~][strong&strikethrough **foo**][strikethrough ~~]"); | |
MT("strikethroughStrong", | |
"[strong **][strong&strikethrough ~~foo~~][strong **]"); | |
MT("emoji", | |
"text [builtin :blush:] text [builtin :v:] text [builtin :+1:] text", | |
":text text: [builtin :smiley_cat:]"); | |
})(); | |