| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417 | // CodeMirror, copyright (c) by Marijn Haverbeke and others// Distributed under an MIT license: http://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":http://codemirror.net]');  MT('referenceLink',      '[link "CodeMirror":code_mirror]',      'Normal Text.',      '[link [[code_mirror]]http://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 <div id="wrapper">]',      '[comment <section id="introduction">]',      '',      '[header&header-1 h1. Welcome]',      '',      '[variable-2 * Item one]',      '[variable-2 * Item two]',      '',      '[comment <a href="http://example.com">Example</a>]',      '',      '[comment </section>]',      '[comment </div>]');  MT('inlineHtml',      'I can use HTML directly in my [comment <span class="youbetcha">Textile</span>].');  /*   * 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');})();
 |