123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- // CodeMirror, copyright (c) by Marijn Haverbeke and others
- // Distributed under an MIT license: https://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:]");
- })();
|