// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: https://codemirror.net/LICENSE ;(function () { var mode = CodeMirror.getMode({ tabSize: 4 }, 'textile') function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)) } MT('simpleParagraphs', 'Some text.', '', 'Some more text.') /* * Phrase Modifiers */ MT('em', 'foo [em _bar_]') MT('emBoogus', 'code_mirror') MT('strong', 'foo [strong *bar*]') MT('strongBogus', '3 * 3 = 9') MT('italic', 'foo [em __bar__]') MT('italicBogus', 'code__mirror') MT('bold', 'foo [strong **bar**]') MT('boldBogus', '3 ** 3 = 27') MT('simpleLink', '[link "CodeMirror":https://codemirror.net]') MT('referenceLink', '[link "CodeMirror":code_mirror]', 'Normal Text.', '[link [[code_mirror]]https://codemirror.net]') MT('footCite', 'foo bar[qualifier [[1]]]') MT('footCiteBogus', 'foo bar[[1a2]]') MT('special-characters', 'Registered [tag (r)], ' + 'Trademark [tag (tm)], and ' + 'Copyright [tag (c)] 2008') MT('cite', 'A book is [keyword ??The Count of Monte Cristo??] by Dumas.') MT('additionAndDeletion', 'The news networks declared [negative -Al Gore-] ' + '[positive +George W. Bush+] the winner in Florida.') MT('subAndSup', 'f(x, n) = log [builtin ~4~] x [builtin ^n^]') MT('spanAndCode', 'A [quote %span element%] and [atom @code element@]') MT('spanBogus', 'Percentage 25% is not a span.') MT('citeBogus', 'Question? is not a citation.') MT('codeBogus', 'user@example.com') MT('subBogus', '~username') MT('supBogus', 'foo ^ bar') MT('deletionBogus', '3 - 3 = 0') MT('additionBogus', '3 + 3 = 6') MT('image', 'An image: [string !http://www.example.com/image.png!]') MT('imageWithAltText', 'An image: [string !http://www.example.com/image.png (Alt Text)!]') MT('imageWithUrl', 'An image: [string !http://www.example.com/image.png!:http://www.example.com/]') /* * Headers */ MT('h1', '[header&header-1 h1. foo]') MT('h2', '[header&header-2 h2. foo]') MT('h3', '[header&header-3 h3. foo]') MT('h4', '[header&header-4 h4. foo]') MT('h5', '[header&header-5 h5. foo]') MT('h6', '[header&header-6 h6. foo]') MT('h7Bogus', 'h7. foo') MT('multipleHeaders', '[header&header-1 h1. Heading 1]', '', 'Some text.', '', '[header&header-2 h2. Heading 2]', '', 'More text.') MT('h1inline', '[header&header-1 h1. foo ][header&header-1&em _bar_][header&header-1 baz]') /* * Lists */ MT('ul', 'foo', 'bar', '', '[variable-2 * foo]', '[variable-2 * bar]') MT('ulNoBlank', 'foo', 'bar', '[variable-2 * foo]', '[variable-2 * bar]') MT('ol', 'foo', 'bar', '', '[variable-2 # foo]', '[variable-2 # bar]') MT('olNoBlank', 'foo', 'bar', '[variable-2 # foo]', '[variable-2 # bar]') MT( 'ulFormatting', '[variable-2 * ][variable-2&em _foo_][variable-2 bar]', '[variable-2 * ][variable-2&strong *][variable-2&em&strong _foo_]' + '[variable-2&strong *][variable-2 bar]', '[variable-2 * ][variable-2&strong *foo*][variable-2 bar]' ) MT( 'olFormatting', '[variable-2 # ][variable-2&em _foo_][variable-2 bar]', '[variable-2 # ][variable-2&strong *][variable-2&em&strong _foo_]' + '[variable-2&strong *][variable-2 bar]', '[variable-2 # ][variable-2&strong *foo*][variable-2 bar]' ) MT('ulNested', '[variable-2 * foo]', '[variable-3 ** bar]', '[keyword *** bar]', '[variable-2 **** bar]', '[variable-3 ** bar]') MT('olNested', '[variable-2 # foo]', '[variable-3 ## bar]', '[keyword ### bar]', '[variable-2 #### bar]', '[variable-3 ## bar]') MT('ulNestedWithOl', '[variable-2 * foo]', '[variable-3 ## bar]', '[keyword *** bar]', '[variable-2 #### bar]', '[variable-3 ** bar]') MT('olNestedWithUl', '[variable-2 # foo]', '[variable-3 ** bar]', '[keyword ### bar]', '[variable-2 **** bar]', '[variable-3 ## bar]') MT('definitionList', '[number - coffee := Hot ][number&em _and_][number black]', '', 'Normal text.') MT('definitionListSpan', '[number - coffee :=]', '', '[number Hot ][number&em _and_][number black =:]', '', 'Normal text.') MT('boo', '[number - dog := woof woof]', '[number - cat := meow meow]', '[number - whale :=]', '[number Whale noises.]', '', '[number Also, ][number&em _splashing_][number . =:]') /* * Attributes */ MT('divWithAttribute', '[punctuation div][punctuation&attribute (#my-id)][punctuation . foo bar]') MT('divWithAttributeAnd2emRightPadding', '[punctuation div][punctuation&attribute (#my-id)((][punctuation . foo bar]') MT('divWithClassAndId', '[punctuation div][punctuation&attribute (my-class#my-id)][punctuation . foo bar]') MT('paragraphWithCss', 'p[attribute {color:red;}]. foo bar') MT('paragraphNestedStyles', 'p. [strong *foo ][strong&em _bar_][strong *]') MT('paragraphWithLanguage', 'p[attribute [[fr]]]. Parlez-vous français?') MT('paragraphLeftAlign', 'p[attribute <]. Left') MT('paragraphRightAlign', 'p[attribute >]. Right') MT('paragraphRightAlign', 'p[attribute =]. Center') MT('paragraphJustified', 'p[attribute <>]. Justified') MT('paragraphWithLeftIndent1em', 'p[attribute (]. Left') MT('paragraphWithRightIndent1em', 'p[attribute )]. Right') MT('paragraphWithLeftIndent2em', 'p[attribute ((]. Left') MT('paragraphWithRightIndent2em', 'p[attribute ))]. Right') MT('paragraphWithLeftIndent3emRightIndent2em', 'p[attribute ((())]. Right') MT('divFormatting', '[punctuation div. ][punctuation&strong *foo ]' + '[punctuation&strong&em _bar_][punctuation&strong *]') MT('phraseModifierAttributes', 'p[attribute (my-class)]. This is a paragraph that has a class and' + ' this [em _][em&attribute (#special-phrase)][em emphasized phrase_]' + ' has an id.') MT('linkWithClass', '[link "(my-class). This is a link with class":http://redcloth.org]') /* * Layouts */ MT('paragraphLayouts', 'p. This is one paragraph.', '', 'p. This is another.') MT('div', '[punctuation div. foo bar]') MT('pre', '[operator pre. Text]') MT('bq.', '[bracket bq. foo bar]', '', 'Normal text.') MT('footnote', '[variable fn123. foo ][variable&strong *bar*]') /* * Spanning Layouts */ MT('bq..ThenParagraph', '[bracket bq.. foo bar]', '', '[bracket More quote.]', 'p. Normal Text') MT('bq..ThenH1', '[bracket bq.. foo bar]', '', '[bracket More quote.]', '[header&header-1 h1. Header Text]') MT('bc..ThenParagraph', '[atom bc.. # Some ruby code]', '[atom obj = {foo: :bar}]', '[atom puts obj]', '', '[atom obj[[:love]] = "*love*"]', '[atom puts obj.love.upcase]', '', 'p. Normal text.') MT('fn1..ThenParagraph', '[variable fn1.. foo bar]', '', '[variable More.]', 'p. Normal Text') MT('pre..ThenParagraph', '[operator pre.. foo bar]', '', '[operator More.]', 'p. Normal Text') /* * Tables */ MT('table', '[variable-3&operator |_. name |_. age|]', '[variable-3 |][variable-3&strong *Walter*][variable-3 | 5 |]', '[variable-3 |Florence| 6 |]', '', 'p. Normal text.') MT( 'tableWithAttributes', '[variable-3&operator |_. name |_. age|]', '[variable-3 |][variable-3&attribute /2.][variable-3 Jim |]', '[variable-3 |][variable-3&attribute \\2{color: red}.][variable-3 Sam |]' ) /* * HTML */ MT( 'html', '[comment
]', '[comment
]', '', '[header&header-1 h1. Welcome]', '', '[variable-2 * Item one]', '[variable-2 * Item two]', '', '[comment Example]', '', '[comment
]', '[comment
]' ) MT('inlineHtml', 'I can use HTML directly in my [comment Textile].') /* * No-Textile */ MT('notextile', '[string-2 notextile. *No* formatting]') MT('notextileInline', 'Use [string-2 ==*asterisks*==] for [strong *strong*] text.') MT('notextileWithPre', '[operator pre. *No* formatting]') MT('notextileWithSpanningPre', '[operator pre.. *No* formatting]', '', '[operator *No* formatting]') /* Only toggling phrases between non-word chars. */ MT('phrase-in-word', 'foo_bar_baz') MT('phrase-non-word', '[negative -x-] aaa-bbb ccc-ddd [negative -eee-] fff [negative -ggg-]') MT('phrase-lone-dash', 'foo - bar - baz') })()