123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- // 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 feedback')
- 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:]')
- })()
|