mirror of
https://github.com/renbaoshuo/S2OJ.git
synced 2024-11-25 20:38:41 +00:00
154 lines
5.1 KiB
JavaScript
154 lines
5.1 KiB
JavaScript
|
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||
|
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
||
|
|
||
|
(function() {
|
||
|
var mode = CodeMirror.getMode({tabSize: 4}, "gfm");
|
||
|
function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
|
||
|
var modeHighlightFormatting = CodeMirror.getMode({tabSize: 4}, {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("codeBlock",
|
||
|
"[comment&formatting&formatting-code-block ```css]",
|
||
|
"[tag foo]",
|
||
|
"[comment&formatting&formatting-code-block ```]");
|
||
|
|
||
|
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]");
|
||
|
|
||
|
MT("emInWordAsterisk",
|
||
|
"foo[em *bar*]hello");
|
||
|
|
||
|
MT("emInWordUnderscore",
|
||
|
"foo_bar_hello");
|
||
|
|
||
|
MT("emStrongUnderscore",
|
||
|
"[strong __][em&strong _foo__][em _] bar");
|
||
|
|
||
|
MT("fencedCodeBlocks",
|
||
|
"[comment ```]",
|
||
|
"[comment foo]",
|
||
|
"",
|
||
|
"[comment ```]",
|
||
|
"bar");
|
||
|
|
||
|
MT("fencedCodeBlockModeSwitching",
|
||
|
"[comment ```javascript]",
|
||
|
"[variable foo]",
|
||
|
"",
|
||
|
"[comment ```]",
|
||
|
"bar");
|
||
|
|
||
|
MT("taskListAsterisk",
|
||
|
"[variable-2 * []] foo]", // Invalid; must have space or x between []
|
||
|
"[variable-2 * [ ]]bar]", // Invalid; must have space after ]
|
||
|
"[variable-2 * [x]]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("taskListPlus",
|
||
|
"[variable-2 + []] foo]", // Invalid; must have space or x between []
|
||
|
"[variable-2 + [ ]]bar]", // Invalid; must have space after ]
|
||
|
"[variable-2 + [x]]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("taskListDash",
|
||
|
"[variable-2 - []] foo]", // Invalid; must have space or x between []
|
||
|
"[variable-2 - [ ]]bar]", // Invalid; must have space after ]
|
||
|
"[variable-2 - [x]]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. []] foo]", // Invalid; must have space or x between []
|
||
|
"[variable-2 2. [ ]]bar]", // Invalid; must have space after ]
|
||
|
"[variable-2 3. [x]]hello]", // Invalid; must have space after ]
|
||
|
"[variable-2 4. ][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("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("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",
|
||
|
"[comment ```css]",
|
||
|
"[tag foo] {[property color]:[keyword black];}",
|
||
|
"[comment ```][link http://www.example.com/]");
|
||
|
|
||
|
MT("notALink",
|
||
|
"[comment ``foo `bar` http://www.example.com/``] hello");
|
||
|
|
||
|
MT("notALink",
|
||
|
"[comment `foo]",
|
||
|
"[link http://www.example.com/]",
|
||
|
"[comment `foo]",
|
||
|
"",
|
||
|
"[link http://www.example.com/]");
|
||
|
})();
|