From 42240ba82c8250e9057c2c9c0e87f4d25e2c30a5 Mon Sep 17 00:00:00 2001 From: Estevao Soares dos Santos Date: Thu, 11 Jun 2015 01:29:42 +0100 Subject: [PATCH] test: add karlcow's testsuite Also refactor tests to improve maintainability --- Gruntfile.js | 9 ++ dist/showdown.js | 4 +- dist/showdown.js.map | 2 +- dist/showdown.min.js | 4 +- dist/showdown.min.js.map | 2 +- package.json | 1 + src/subParsers/images.js | 2 +- test/bootstrap.js | 89 +++++++++++++++++++ .../2-paragraphs-hard-return-spaces.html | 5 ++ .../2-paragraphs-hard-return-spaces.md | 5 ++ test/karlcow/2-paragraphs-hard-return.html | 5 ++ test/karlcow/2-paragraphs-hard-return.md | 5 ++ test/karlcow/2-paragraphs-line-returns.html | 3 + test/karlcow/2-paragraphs-line-returns.md | 5 ++ test/karlcow/2-paragraphs-line-spaces.html | 3 + test/karlcow/2-paragraphs-line-spaces.md | 3 + test/karlcow/2-paragraphs-line-tab.html | 3 + test/karlcow/2-paragraphs-line-tab.md | 3 + test/karlcow/2-paragraphs-line.html | 3 + test/karlcow/2-paragraphs-line.md | 3 + test/karlcow/EOL-CR+LF.html | 5 ++ test/karlcow/EOL-CR+LF.md | 6 ++ test/karlcow/EOL-CR.html | 1 + test/karlcow/EOL-CR.md | 1 + test/karlcow/EOL-LF.html | 5 ++ test/karlcow/EOL-LF.md | 6 ++ test/karlcow/ampersand-text-flow.html | 1 + test/karlcow/ampersand-text-flow.md | 1 + test/karlcow/ampersand-uri.html | 1 + test/karlcow/ampersand-uri.md | 1 + test/karlcow/asterisk-near-text.html | 1 + test/karlcow/asterisk-near-text.md | 1 + test/karlcow/asterisk.html | 1 + test/karlcow/asterisk.md | 1 + test/karlcow/backslash-escape.html | 12 +++ test/karlcow/backslash-escape.md | 12 +++ test/karlcow/blockquote-added-markup.html | 5 ++ test/karlcow/blockquote-added-markup.md | 3 + .../karlcow/blockquote-line-2-paragraphs.html | 5 ++ test/karlcow/blockquote-line-2-paragraphs.md | 3 + test/karlcow/blockquote-line.html | 3 + test/karlcow/blockquote-line.md | 1 + .../blockquote-multiline-1-space-begin.html | 5 ++ .../blockquote-multiline-1-space-begin.md | 3 + .../blockquote-multiline-1-space-end.html | 5 ++ .../blockquote-multiline-1-space-end.md | 3 + .../blockquote-multiline-2-paragraphs.html | 8 ++ .../blockquote-multiline-2-paragraphs.md | 6 ++ test/karlcow/blockquote-multiline.html | 5 ++ test/karlcow/blockquote-multiline.md | 3 + ...ockquote-nested-multiplereturn-level1.html | 9 ++ ...blockquote-nested-multiplereturn-level1.md | 5 ++ .../blockquote-nested-multiplereturn.html | 7 ++ .../blockquote-nested-multiplereturn.md | 3 + .../blockquote-nested-return-level1.html | 8 ++ .../blockquote-nested-return-level1.md | 3 + test/karlcow/blockquote-nested.html | 7 ++ test/karlcow/blockquote-nested.md | 2 + test/karlcow/code-1-tab.html | 3 + test/karlcow/code-1-tab.md | 2 + test/karlcow/code-4-spaces-escaping.html | 3 + test/karlcow/code-4-spaces-escaping.md | 2 + test/karlcow/code-4-spaces.html | 3 + test/karlcow/code-4-spaces.md | 2 + test/karlcow/em-middle-word.html | 1 + test/karlcow/em-middle-word.md | 1 + test/karlcow/em-star.html | 1 + test/karlcow/em-star.md | 1 + test/karlcow/em-underscore.html | 1 + test/karlcow/em-underscore.md | 1 + test/karlcow/entities-text-flow.html | 1 + test/karlcow/entities-text-flow.md | 1 + .../header-level1-equal-underlined.html | 1 + .../karlcow/header-level1-equal-underlined.md | 2 + .../header-level1-hash-sign-closed.html | 1 + .../karlcow/header-level1-hash-sign-closed.md | 1 + ...der-level1-hash-sign-trailing-1-space.html | 1 + ...eader-level1-hash-sign-trailing-1-space.md | 1 + ...er-level1-hash-sign-trailing-2-spaces.html | 3 + ...ader-level1-hash-sign-trailing-2-spaces.md | 2 + test/karlcow/header-level1-hash-sign.html | 1 + test/karlcow/header-level1-hash-sign.md | 1 + .../header-level2-dash-underlined.html | 1 + test/karlcow/header-level2-dash-underlined.md | 2 + .../header-level2-hash-sign-closed.html | 1 + .../karlcow/header-level2-hash-sign-closed.md | 1 + test/karlcow/header-level2-hash-sign.html | 1 + test/karlcow/header-level2-hash-sign.md | 1 + .../header-level3-hash-sign-closed.html | 1 + .../karlcow/header-level3-hash-sign-closed.md | 1 + test/karlcow/header-level3-hash-sign.html | 1 + test/karlcow/header-level3-hash-sign.md | 1 + .../header-level4-hash-sign-closed.html | 1 + .../karlcow/header-level4-hash-sign-closed.md | 1 + test/karlcow/header-level4-hash-sign.html | 1 + test/karlcow/header-level4-hash-sign.md | 1 + .../header-level5-hash-sign-closed.html | 1 + .../karlcow/header-level5-hash-sign-closed.md | 1 + test/karlcow/header-level5-hash-sign.html | 1 + test/karlcow/header-level5-hash-sign.md | 1 + .../header-level6-hash-sign-closed.html | 1 + .../karlcow/header-level6-hash-sign-closed.md | 1 + test/karlcow/header-level6-hash-sign.html | 1 + test/karlcow/header-level6-hash-sign.md | 1 + .../horizontal-rule-3-dashes-spaces.html | 1 + .../horizontal-rule-3-dashes-spaces.md | 1 + test/karlcow/horizontal-rule-3-dashes.html | 1 + test/karlcow/horizontal-rule-3-dashes.md | 1 + test/karlcow/horizontal-rule-3-stars.html | 1 + test/karlcow/horizontal-rule-3-stars.md | 1 + .../horizontal-rule-3-underscores.html | 1 + test/karlcow/horizontal-rule-3-underscores.md | 1 + test/karlcow/horizontal-rule-7-dashes.html | 1 + test/karlcow/horizontal-rule-7-dashes.md | 1 + test/karlcow/img-idref-title.html | 1 + test/karlcow/img-idref-title.md | 3 + test/karlcow/img-idref.html | 1 + test/karlcow/img-idref.md | 3 + test/karlcow/img-title.html | 1 + test/karlcow/img-title.md | 1 + test/karlcow/img.html | 1 + test/karlcow/img.md | 1 + .../inline-code-escaping-entities.html | 1 + test/karlcow/inline-code-escaping-entities.md | 1 + .../inline-code-with-visible-backtick.html | 1 + .../inline-code-with-visible-backtick.md | 1 + test/karlcow/inline-code.html | 1 + test/karlcow/inline-code.md | 1 + test/karlcow/line-break-2-spaces.html | 2 + test/karlcow/line-break-2-spaces.md | 2 + test/karlcow/line-break-5-spaces.html | 2 + test/karlcow/line-break-5-spaces.md | 2 + test/karlcow/link-automatic.html | 1 + test/karlcow/link-automatic.md | 1 + .../link-bracket-paranthesis-title.html | 1 + .../karlcow/link-bracket-paranthesis-title.md | 1 + test/karlcow/link-bracket-paranthesis.html | 1 + test/karlcow/link-bracket-paranthesis.md | 1 + test/karlcow/link-idref-angle-bracket.html | 1 + test/karlcow/link-idref-angle-bracket.md | 3 + test/karlcow/link-idref-implicit-spaces.html | 1 + test/karlcow/link-idref-implicit-spaces.md | 3 + test/karlcow/link-idref-implicit.html | 1 + test/karlcow/link-idref-implicit.md | 3 + test/karlcow/link-idref-space.html | 1 + test/karlcow/link-idref-space.md | 3 + test/karlcow/link-idref-title-next-line.html | 1 + test/karlcow/link-idref-title-next-line.md | 4 + .../karlcow/link-idref-title-paranthesis.html | 1 + test/karlcow/link-idref-title-paranthesis.md | 3 + .../link-idref-title-single-quote.html | 1 + test/karlcow/link-idref-title-single-quote.md | 3 + test/karlcow/link-idref-title.html | 1 + test/karlcow/link-idref-title.md | 3 + test/karlcow/link-idref.html | 1 + test/karlcow/link-idref.md | 3 + test/karlcow/list-blockquote.html | 7 ++ test/karlcow/list-blockquote.md | 3 + test/karlcow/list-code.html | 7 ++ test/karlcow/list-code.md | 4 + test/karlcow/list-multiparagraphs-tab.html | 10 +++ test/karlcow/list-multiparagraphs-tab.md | 9 ++ test/karlcow/list-multiparagraphs.html | 10 +++ test/karlcow/list-multiparagraphs.md | 9 ++ test/karlcow/ordered-list-escaped.html | 1 + test/karlcow/ordered-list-escaped.md | 1 + test/karlcow/ordered-list-inner-par-list.html | 9 ++ test/karlcow/ordered-list-inner-par-list.md | 5 ++ .../ordered-list-items-random-number.html | 5 ++ .../ordered-list-items-random-number.md | 3 + test/karlcow/ordered-list-items.html | 5 ++ test/karlcow/ordered-list-items.md | 3 + test/karlcow/paragraph-hard-return.html | 3 + test/karlcow/paragraph-hard-return.md | 3 + test/karlcow/paragraph-line.html | 1 + test/karlcow/paragraph-line.md | 1 + .../paragraph-trailing-leading-spaces.html | 1 + .../paragraph-trailing-leading-spaces.md | 1 + test/karlcow/paragraph-trailing-tab.html | 1 + test/karlcow/paragraph-trailing-tab.md | 1 + test/karlcow/paragraphs-2-leading-spaces.html | 1 + test/karlcow/paragraphs-2-leading-spaces.md | 1 + test/karlcow/paragraphs-3-leading-spaces.html | 1 + test/karlcow/paragraphs-3-leading-spaces.md | 1 + test/karlcow/paragraphs-leading-space.html | 1 + test/karlcow/paragraphs-leading-space.md | 1 + test/karlcow/paragraphs-trailing-spaces.html | 1 + test/karlcow/paragraphs-trailing-spaces.md | 1 + test/karlcow/strong-middle-word.html | 1 + test/karlcow/strong-middle-word.md | 1 + test/karlcow/strong-star.html | 1 + test/karlcow/strong-star.md | 1 + test/karlcow/strong-underscore.html | 1 + test/karlcow/strong-underscore.md | 1 + .../unordered-list-items-asterisk.html | 5 ++ test/karlcow/unordered-list-items-asterisk.md | 3 + .../unordered-list-items-dashsign.html | 5 ++ test/karlcow/unordered-list-items-dashsign.md | 3 + .../unordered-list-items-leading-1space.html | 5 ++ .../unordered-list-items-leading-1space.md | 3 + .../unordered-list-items-leading-2spaces.html | 5 ++ .../unordered-list-items-leading-2spaces.md | 3 + .../unordered-list-items-leading-3spaces.html | 5 ++ .../unordered-list-items-leading-3spaces.md | 3 + .../unordered-list-items-plussign.html | 5 ++ test/karlcow/unordered-list-items-plussign.md | 3 + test/karlcow/unordered-list-paragraphs.html | 4 + test/karlcow/unordered-list-paragraphs.md | 3 + .../unordered-list-unindented-content.html | 4 + .../unordered-list-unindented-content.md | 2 + .../unordered-list-with-indented-content.html | 7 ++ .../unordered-list-with-indented-content.md | 5 ++ test/node/showdown.Converter.makeHtml.js | 87 +----------------- test/node/testsuite.issues.js | 15 ++++ test/node/testsuite.karlcow.js | 12 +++ test/node/testsuite.standard.js | 12 +++ 216 files changed, 680 insertions(+), 92 deletions(-) create mode 100644 test/bootstrap.js create mode 100644 test/karlcow/2-paragraphs-hard-return-spaces.html create mode 100644 test/karlcow/2-paragraphs-hard-return-spaces.md create mode 100644 test/karlcow/2-paragraphs-hard-return.html create mode 100644 test/karlcow/2-paragraphs-hard-return.md create mode 100644 test/karlcow/2-paragraphs-line-returns.html create mode 100644 test/karlcow/2-paragraphs-line-returns.md create mode 100644 test/karlcow/2-paragraphs-line-spaces.html create mode 100644 test/karlcow/2-paragraphs-line-spaces.md create mode 100644 test/karlcow/2-paragraphs-line-tab.html create mode 100644 test/karlcow/2-paragraphs-line-tab.md create mode 100644 test/karlcow/2-paragraphs-line.html create mode 100644 test/karlcow/2-paragraphs-line.md create mode 100644 test/karlcow/EOL-CR+LF.html create mode 100644 test/karlcow/EOL-CR+LF.md create mode 100644 test/karlcow/EOL-CR.html create mode 100644 test/karlcow/EOL-CR.md create mode 100644 test/karlcow/EOL-LF.html create mode 100644 test/karlcow/EOL-LF.md create mode 100644 test/karlcow/ampersand-text-flow.html create mode 100644 test/karlcow/ampersand-text-flow.md create mode 100644 test/karlcow/ampersand-uri.html create mode 100644 test/karlcow/ampersand-uri.md create mode 100644 test/karlcow/asterisk-near-text.html create mode 100644 test/karlcow/asterisk-near-text.md create mode 100644 test/karlcow/asterisk.html create mode 100644 test/karlcow/asterisk.md create mode 100644 test/karlcow/backslash-escape.html create mode 100644 test/karlcow/backslash-escape.md create mode 100644 test/karlcow/blockquote-added-markup.html create mode 100644 test/karlcow/blockquote-added-markup.md create mode 100644 test/karlcow/blockquote-line-2-paragraphs.html create mode 100644 test/karlcow/blockquote-line-2-paragraphs.md create mode 100644 test/karlcow/blockquote-line.html create mode 100644 test/karlcow/blockquote-line.md create mode 100644 test/karlcow/blockquote-multiline-1-space-begin.html create mode 100644 test/karlcow/blockquote-multiline-1-space-begin.md create mode 100644 test/karlcow/blockquote-multiline-1-space-end.html create mode 100644 test/karlcow/blockquote-multiline-1-space-end.md create mode 100644 test/karlcow/blockquote-multiline-2-paragraphs.html create mode 100644 test/karlcow/blockquote-multiline-2-paragraphs.md create mode 100644 test/karlcow/blockquote-multiline.html create mode 100644 test/karlcow/blockquote-multiline.md create mode 100644 test/karlcow/blockquote-nested-multiplereturn-level1.html create mode 100644 test/karlcow/blockquote-nested-multiplereturn-level1.md create mode 100644 test/karlcow/blockquote-nested-multiplereturn.html create mode 100644 test/karlcow/blockquote-nested-multiplereturn.md create mode 100644 test/karlcow/blockquote-nested-return-level1.html create mode 100644 test/karlcow/blockquote-nested-return-level1.md create mode 100644 test/karlcow/blockquote-nested.html create mode 100644 test/karlcow/blockquote-nested.md create mode 100644 test/karlcow/code-1-tab.html create mode 100644 test/karlcow/code-1-tab.md create mode 100644 test/karlcow/code-4-spaces-escaping.html create mode 100644 test/karlcow/code-4-spaces-escaping.md create mode 100644 test/karlcow/code-4-spaces.html create mode 100644 test/karlcow/code-4-spaces.md create mode 100644 test/karlcow/em-middle-word.html create mode 100644 test/karlcow/em-middle-word.md create mode 100644 test/karlcow/em-star.html create mode 100644 test/karlcow/em-star.md create mode 100644 test/karlcow/em-underscore.html create mode 100644 test/karlcow/em-underscore.md create mode 100644 test/karlcow/entities-text-flow.html create mode 100644 test/karlcow/entities-text-flow.md create mode 100644 test/karlcow/header-level1-equal-underlined.html create mode 100644 test/karlcow/header-level1-equal-underlined.md create mode 100644 test/karlcow/header-level1-hash-sign-closed.html create mode 100644 test/karlcow/header-level1-hash-sign-closed.md create mode 100644 test/karlcow/header-level1-hash-sign-trailing-1-space.html create mode 100644 test/karlcow/header-level1-hash-sign-trailing-1-space.md create mode 100644 test/karlcow/header-level1-hash-sign-trailing-2-spaces.html create mode 100644 test/karlcow/header-level1-hash-sign-trailing-2-spaces.md create mode 100644 test/karlcow/header-level1-hash-sign.html create mode 100644 test/karlcow/header-level1-hash-sign.md create mode 100644 test/karlcow/header-level2-dash-underlined.html create mode 100644 test/karlcow/header-level2-dash-underlined.md create mode 100644 test/karlcow/header-level2-hash-sign-closed.html create mode 100644 test/karlcow/header-level2-hash-sign-closed.md create mode 100644 test/karlcow/header-level2-hash-sign.html create mode 100644 test/karlcow/header-level2-hash-sign.md create mode 100644 test/karlcow/header-level3-hash-sign-closed.html create mode 100644 test/karlcow/header-level3-hash-sign-closed.md create mode 100644 test/karlcow/header-level3-hash-sign.html create mode 100644 test/karlcow/header-level3-hash-sign.md create mode 100644 test/karlcow/header-level4-hash-sign-closed.html create mode 100644 test/karlcow/header-level4-hash-sign-closed.md create mode 100644 test/karlcow/header-level4-hash-sign.html create mode 100644 test/karlcow/header-level4-hash-sign.md create mode 100644 test/karlcow/header-level5-hash-sign-closed.html create mode 100644 test/karlcow/header-level5-hash-sign-closed.md create mode 100644 test/karlcow/header-level5-hash-sign.html create mode 100644 test/karlcow/header-level5-hash-sign.md create mode 100644 test/karlcow/header-level6-hash-sign-closed.html create mode 100644 test/karlcow/header-level6-hash-sign-closed.md create mode 100644 test/karlcow/header-level6-hash-sign.html create mode 100644 test/karlcow/header-level6-hash-sign.md create mode 100644 test/karlcow/horizontal-rule-3-dashes-spaces.html create mode 100644 test/karlcow/horizontal-rule-3-dashes-spaces.md create mode 100644 test/karlcow/horizontal-rule-3-dashes.html create mode 100644 test/karlcow/horizontal-rule-3-dashes.md create mode 100644 test/karlcow/horizontal-rule-3-stars.html create mode 100644 test/karlcow/horizontal-rule-3-stars.md create mode 100644 test/karlcow/horizontal-rule-3-underscores.html create mode 100644 test/karlcow/horizontal-rule-3-underscores.md create mode 100644 test/karlcow/horizontal-rule-7-dashes.html create mode 100644 test/karlcow/horizontal-rule-7-dashes.md create mode 100644 test/karlcow/img-idref-title.html create mode 100644 test/karlcow/img-idref-title.md create mode 100644 test/karlcow/img-idref.html create mode 100644 test/karlcow/img-idref.md create mode 100644 test/karlcow/img-title.html create mode 100644 test/karlcow/img-title.md create mode 100644 test/karlcow/img.html create mode 100644 test/karlcow/img.md create mode 100644 test/karlcow/inline-code-escaping-entities.html create mode 100644 test/karlcow/inline-code-escaping-entities.md create mode 100644 test/karlcow/inline-code-with-visible-backtick.html create mode 100644 test/karlcow/inline-code-with-visible-backtick.md create mode 100644 test/karlcow/inline-code.html create mode 100644 test/karlcow/inline-code.md create mode 100644 test/karlcow/line-break-2-spaces.html create mode 100644 test/karlcow/line-break-2-spaces.md create mode 100644 test/karlcow/line-break-5-spaces.html create mode 100644 test/karlcow/line-break-5-spaces.md create mode 100644 test/karlcow/link-automatic.html create mode 100644 test/karlcow/link-automatic.md create mode 100644 test/karlcow/link-bracket-paranthesis-title.html create mode 100644 test/karlcow/link-bracket-paranthesis-title.md create mode 100644 test/karlcow/link-bracket-paranthesis.html create mode 100644 test/karlcow/link-bracket-paranthesis.md create mode 100644 test/karlcow/link-idref-angle-bracket.html create mode 100644 test/karlcow/link-idref-angle-bracket.md create mode 100644 test/karlcow/link-idref-implicit-spaces.html create mode 100644 test/karlcow/link-idref-implicit-spaces.md create mode 100644 test/karlcow/link-idref-implicit.html create mode 100644 test/karlcow/link-idref-implicit.md create mode 100644 test/karlcow/link-idref-space.html create mode 100644 test/karlcow/link-idref-space.md create mode 100644 test/karlcow/link-idref-title-next-line.html create mode 100644 test/karlcow/link-idref-title-next-line.md create mode 100644 test/karlcow/link-idref-title-paranthesis.html create mode 100644 test/karlcow/link-idref-title-paranthesis.md create mode 100644 test/karlcow/link-idref-title-single-quote.html create mode 100644 test/karlcow/link-idref-title-single-quote.md create mode 100644 test/karlcow/link-idref-title.html create mode 100644 test/karlcow/link-idref-title.md create mode 100644 test/karlcow/link-idref.html create mode 100644 test/karlcow/link-idref.md create mode 100644 test/karlcow/list-blockquote.html create mode 100644 test/karlcow/list-blockquote.md create mode 100644 test/karlcow/list-code.html create mode 100644 test/karlcow/list-code.md create mode 100644 test/karlcow/list-multiparagraphs-tab.html create mode 100644 test/karlcow/list-multiparagraphs-tab.md create mode 100644 test/karlcow/list-multiparagraphs.html create mode 100644 test/karlcow/list-multiparagraphs.md create mode 100644 test/karlcow/ordered-list-escaped.html create mode 100644 test/karlcow/ordered-list-escaped.md create mode 100644 test/karlcow/ordered-list-inner-par-list.html create mode 100644 test/karlcow/ordered-list-inner-par-list.md create mode 100644 test/karlcow/ordered-list-items-random-number.html create mode 100644 test/karlcow/ordered-list-items-random-number.md create mode 100644 test/karlcow/ordered-list-items.html create mode 100644 test/karlcow/ordered-list-items.md create mode 100644 test/karlcow/paragraph-hard-return.html create mode 100644 test/karlcow/paragraph-hard-return.md create mode 100644 test/karlcow/paragraph-line.html create mode 100644 test/karlcow/paragraph-line.md create mode 100644 test/karlcow/paragraph-trailing-leading-spaces.html create mode 100644 test/karlcow/paragraph-trailing-leading-spaces.md create mode 100644 test/karlcow/paragraph-trailing-tab.html create mode 100644 test/karlcow/paragraph-trailing-tab.md create mode 100644 test/karlcow/paragraphs-2-leading-spaces.html create mode 100644 test/karlcow/paragraphs-2-leading-spaces.md create mode 100644 test/karlcow/paragraphs-3-leading-spaces.html create mode 100644 test/karlcow/paragraphs-3-leading-spaces.md create mode 100644 test/karlcow/paragraphs-leading-space.html create mode 100644 test/karlcow/paragraphs-leading-space.md create mode 100644 test/karlcow/paragraphs-trailing-spaces.html create mode 100644 test/karlcow/paragraphs-trailing-spaces.md create mode 100644 test/karlcow/strong-middle-word.html create mode 100644 test/karlcow/strong-middle-word.md create mode 100644 test/karlcow/strong-star.html create mode 100644 test/karlcow/strong-star.md create mode 100644 test/karlcow/strong-underscore.html create mode 100644 test/karlcow/strong-underscore.md create mode 100644 test/karlcow/unordered-list-items-asterisk.html create mode 100644 test/karlcow/unordered-list-items-asterisk.md create mode 100644 test/karlcow/unordered-list-items-dashsign.html create mode 100644 test/karlcow/unordered-list-items-dashsign.md create mode 100644 test/karlcow/unordered-list-items-leading-1space.html create mode 100644 test/karlcow/unordered-list-items-leading-1space.md create mode 100644 test/karlcow/unordered-list-items-leading-2spaces.html create mode 100644 test/karlcow/unordered-list-items-leading-2spaces.md create mode 100644 test/karlcow/unordered-list-items-leading-3spaces.html create mode 100644 test/karlcow/unordered-list-items-leading-3spaces.md create mode 100644 test/karlcow/unordered-list-items-plussign.html create mode 100644 test/karlcow/unordered-list-items-plussign.md create mode 100644 test/karlcow/unordered-list-paragraphs.html create mode 100644 test/karlcow/unordered-list-paragraphs.md create mode 100644 test/karlcow/unordered-list-unindented-content.html create mode 100644 test/karlcow/unordered-list-unindented-content.md create mode 100644 test/karlcow/unordered-list-with-indented-content.html create mode 100644 test/karlcow/unordered-list-with-indented-content.md create mode 100644 test/node/testsuite.issues.js create mode 100644 test/node/testsuite.karlcow.js create mode 100644 test/node/testsuite.standard.js diff --git a/Gruntfile.js b/Gruntfile.js index 4c093a4..3eab436 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -95,6 +95,15 @@ module.exports = function (grunt) { reporter: 'spec' } }, + karlcow: { + src: 'test/node/testsuite.karlcow.js', + options: { + globals: ['should'], + timeout: 3000, + ignoreLeaks: false, + reporter: 'spec' + } + }, browser: { src: 'test/browser/**/*.js', options: { diff --git a/dist/showdown.js b/dist/showdown.js index 7f8269c..cf41fdd 100644 --- a/dist/showdown.js +++ b/dist/showdown.js @@ -1,4 +1,4 @@ -;/*! showdown 08-06-2015 */ +;/*! showdown 11-06-2015 */ (function(){ /** * Created by Tivie on 06-01-2015. @@ -1543,7 +1543,7 @@ showdown.subParser('images', function (text, options, globals) { url = showdown.helper.escapeCharacters(url, '*_', false); var result = '' + altText + '' : 'Error in unnamed extension',\n ret = {\n valid: true,\n error: ''\n };\n\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n\n for (var i = 0; i < extension.length; ++i) {\n var baseMsg = errMsg + 'sub-extension ' + i + ': ',\n ext = extension[i];\n if (typeof ext !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';\n return ret;\n }\n\n if (!showdown.helper.isString(ext.type)) {\n ret.valid = false;\n ret.error = baseMsg + 'property \"type\" must be a string, but ' + typeof ext.type + ' given';\n return ret;\n }\n\n var type = ext.type = ext.type.toLowerCase();\n\n // normalize extension type\n if (type === 'language') {\n type = ext.type = 'lang';\n }\n\n if (type === 'html') {\n type = ext.type = 'output';\n }\n\n if (type !== 'lang' && type !== 'output') {\n ret.valid = false;\n ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: \"lang\" or \"output\"';\n return ret;\n }\n\n if (ext.filter) {\n if (typeof ext.filter !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"filter\" must be a function, but ' + typeof ext.filter + ' given';\n return ret;\n }\n\n } else if (ext.regex) {\n if (showdown.helper.isString(ext.regex)) {\n ext.regex = new RegExp(ext.regex, 'g');\n }\n if (!ext.regex instanceof RegExp) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" property must either be a string or a RegExp object, but ' +\n typeof ext.regex + ' given';\n return ret;\n }\n if (showdown.helper.isUndefined(ext.replace)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" extensions must implement a replace string or function';\n return ret;\n }\n\n } else {\n ret.valid = false;\n ret.error = baseMsg + 'extensions must define either a \"regex\" property or a \"filter\" method';\n return ret;\n }\n\n if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {\n ret.valid = false;\n ret.error = baseMsg + 'output extensions must define a filter property';\n return ret;\n }\n }\n return ret;\n}\n\n/**\n * Validate extension\n * @param {object} ext\n * @returns {boolean}\n */\nshowdown.validateExtension = function (ext) {\n 'use strict';\n\n var validateExtension = validate(ext, null);\n if (!validateExtension.valid) {\n console.warn(validateExtension.error);\n return false;\n }\n return true;\n};\n","/**\r\n * showdownjs helper functions\r\n */\r\n\r\nif (!showdown.hasOwnProperty('helper')) {\r\n showdown.helper = {};\r\n}\r\n\r\n/**\r\n * Check if var is string\r\n * @static\r\n * @param {string} a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isString = function isString(a) {\r\n 'use strict';\r\n return (typeof a === 'string' || a instanceof String);\r\n};\r\n\r\n/**\r\n * ForEach helper function\r\n * @static\r\n * @param {*} obj\r\n * @param {function} callback\r\n */\r\nshowdown.helper.forEach = function forEach(obj, callback) {\r\n 'use strict';\r\n if (typeof obj.forEach === 'function') {\r\n obj.forEach(callback);\r\n } else {\r\n for (var i = 0; i < obj.length; i++) {\r\n callback(obj[i], i, obj);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * isArray helper function\r\n * @static\r\n * @param {*} a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isArray = function isArray(a) {\r\n 'use strict';\r\n return a.constructor === Array;\r\n};\r\n\r\n/**\r\n * Check if value is undefined\r\n * @static\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\r\n */\r\nshowdown.helper.isUndefined = function isUndefined(value) {\r\n 'use strict';\r\n return typeof value === 'undefined';\r\n};\r\n\r\n/**\r\n * Standardidize extension name\r\n * @static\r\n * @param {string} s extension name\r\n * @returns {string}\r\n */\r\nshowdown.helper.stdExtName = function (s) {\r\n 'use strict';\r\n return s.replace(/[_-]||\\s/g, '').toLowerCase();\r\n};\r\n\r\nfunction escapeCharactersCallback(wholeMatch, m1) {\r\n 'use strict';\r\n var charCodeToEscape = m1.charCodeAt(0);\r\n return '~E' + charCodeToEscape + 'E';\r\n}\r\n\r\n/**\r\n * Callback used to escape characters when passing through String.replace\r\n * @static\r\n * @param {string} wholeMatch\r\n * @param {string} m1\r\n * @returns {string}\r\n */\r\nshowdown.helper.escapeCharactersCallback = escapeCharactersCallback;\r\n\r\n/**\r\n * Escape characters in a string\r\n * @static\r\n * @param {string} text\r\n * @param {string} charsToEscape\r\n * @param {boolean} afterBackslash\r\n * @returns {XML|string|void|*}\r\n */\r\nshowdown.helper.escapeCharacters = function escapeCharacters(text, charsToEscape, afterBackslash) {\r\n 'use strict';\r\n // First we have to escape the escape characters so that\r\n // we can build a character class out of them\r\n var regexString = '([' + charsToEscape.replace(/([\\[\\]\\\\])/g, '\\\\$1') + '])';\r\n\r\n if (afterBackslash) {\r\n regexString = '\\\\\\\\' + regexString;\r\n }\r\n\r\n var regex = new RegExp(regexString, 'g');\r\n text = text.replace(regex, escapeCharactersCallback);\r\n\r\n return text;\r\n};\r\n\r\n/**\r\n * POLYFILLS\r\n */\r\nif (showdown.helper.isUndefined(console)) {\r\n console = {\r\n warn: function (msg) {\r\n 'use strict';\r\n alert(msg);\r\n },\r\n log: function (msg) {\r\n 'use strict';\r\n alert(msg);\r\n }\r\n };\r\n}\r\n","/**\n * Created by Estevao on 31-05-2015.\n */\n\n/**\n * Showdown Converter class\n * @class\n * @param {object} [converterOptions]\n * @returns {\n * {makeHtml: Function},\n * {setOption: Function},\n * {getOption: Function},\n * {getOptions: Function}\n * }\n */\nshowdown.Converter = function (converterOptions) {\n 'use strict';\n\n var\n /**\n * Options used by this converter\n * @private\n * @type {{}}\n */\n options = {\n omitExtraWLInCodeBlocks: false,\n prefixHeaderId: false,\n noHeaderId: false\n },\n\n /**\n * Language extensions used by this converter\n * @private\n * @type {Array}\n */\n langExtensions = [],\n\n /**\n * Output modifiers extensions used by this converter\n * @private\n * @type {Array}\n */\n outputModifiers = [],\n\n /**\n * The parser Order\n * @private\n * @type {string[]}\n */\n parserOrder = [\n 'githubCodeBlocks',\n 'hashHTMLBlocks',\n 'stripLinkDefinitions',\n 'blockGamut',\n 'unescapeSpecialChars'\n ];\n\n _constructor();\n\n /**\n * Converter constructor\n * @private\n */\n function _constructor() {\n converterOptions = converterOptions || {};\n\n for (var gOpt in globalOptions) {\n if (globalOptions.hasOwnProperty(gOpt)) {\n options[gOpt] = globalOptions[gOpt];\n }\n }\n\n // Merge options\n if (typeof converterOptions === 'object') {\n for (var opt in converterOptions) {\n if (converterOptions.hasOwnProperty(opt)) {\n options[opt] = converterOptions[opt];\n }\n }\n } else {\n throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions +\n ' was passed instead.');\n }\n\n if (options.extensions) {\n showdown.helper.forEach(options.extensions, _parseExtension);\n }\n }\n\n /**\n * Parse extension\n * @param {*} ext\n * @private\n */\n function _parseExtension(ext) {\n\n // If it's a string, the extension was previously loaded\n if (showdown.helper.isString(ext)) {\n ext = showdown.helper.stdExtName(ext);\n\n // LEGACY_SUPPORT CODE\n if (showdown.extensions[ext]) {\n console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' +\n 'Please inform the developer that the extension should be updated!');\n legacyExtensionLoading(showdown.extensions[ext], ext);\n return;\n // END LEGACY SUPPORT CODE\n\n } else if (!showdown.helper.isUndefined(extensions[ext])) {\n ext = extensions[ext];\n\n } else {\n throw Error('Extension \"' + ext + '\" could not be loaded. It was either not found or is not a valid extension.');\n }\n }\n\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n if (!showdown.validateExtension(ext)) {\n return;\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n\n default:\n // should never reach here\n throw Error('Extension loader error: Type unrecognized!!!');\n }\n }\n }\n\n /**\n * LEGACY_SUPPORT\n * @param {*} ext\n * @param {string} name\n */\n function legacyExtensionLoading(ext, name) {\n if (typeof ext === 'function') {\n ext = ext(new showdown.Converter());\n }\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n var valid = validate(ext, name);\n\n if (!valid.valid) {\n throw Error(valid.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n default:// should never reach here\n throw Error('Extension loader error: Type unrecognized!!!');\n }\n }\n }\n\n /**\n * Converts a markdown string into HTML\n * @param {string} text\n * @returns {*}\n */\n this.makeHtml = function (text) {\n //check if text is not falsy\n if (!text) {\n return text;\n }\n\n var globals = {\n gHtmlBlocks: [],\n gUrls: {},\n gTitles: {},\n gListLevel: 0,\n hashLinkCounts: {},\n langExtensions: langExtensions,\n outputModifiers: outputModifiers,\n converter: this\n };\n\n // attacklab: Replace ~ with ~T\n // This lets us use tilde as an escape char to avoid md5 hashes\n // The choice of character is arbitrary; anything that isn't\n // magic in Markdown will work.\n text = text.replace(/~/g, '~T');\n\n // attacklab: Replace $ with ~D\n // RegExp interprets $ as a special character\n // when it's in a replacement string\n text = text.replace(/\\$/g, '~D');\n\n // Standardize line endings\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\n\n // Make sure text begins and ends with a couple of newlines:\n text = '\\n\\n' + text + '\\n\\n';\n\n // detab\n text = showdown.subParser('detab')(text, options, globals);\n\n // stripBlankLines\n text = showdown.subParser('stripBlankLines')(text, options, globals);\n\n //run languageExtensions\n showdown.helper.forEach(langExtensions, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // Run all registered parsers\n for (var i = 0; i < parserOrder.length; ++i) {\n var name = parserOrder[i];\n text = parsers[name](text, options, globals);\n }\n\n // attacklab: Restore dollar signs\n text = text.replace(/~D/g, '$$');\n\n // attacklab: Restore tildes\n text = text.replace(/~T/g, '~');\n\n // Run output modifiers\n showdown.helper.forEach(outputModifiers, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n return text;\n };\n\n /**\n * Set an option of this Converter instance\n * @param {string} key\n * @param {*} value\n */\n this.setOption = function (key, value) {\n options[key] = value;\n };\n\n /**\n * Get the option of this Converter instance\n * @param {string} key\n * @returns {*}\n */\n this.getOption = function (key) {\n return options[key];\n };\n\n /**\n * Get the options of this Converter instance\n * @returns {{}}\n */\n this.getOptions = function () {\n return options;\n };\n\n /**\n * Add extension to THIS converter\n * @param {{}} extension\n */\n this.addExtension = function (extension) {\n _parseExtension(extension);\n };\n\n /**\n * Use a global registered extension with THIS converter\n * @param {string} extensionName Name of the previously registered extension\n */\n this.useExtension = function (extensionName) {\n _parseExtension(extensionName);\n };\n\n /**\n * Remove an extension from THIS converter.\n * Note: This is a costly operation. It's better to initialize a new converter\n * and specify the extensions you wish to use\n * @param {Array} extension\n */\n this.removeExtension = function (extension) {\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n for (var a = 0; a < extension.length; ++a) {\n var ext = extension[a];\n for (var i = 0; i < langExtensions.length; ++i) {\n if (langExtensions[i] === ext) {\n langExtensions[i].splice(i, 1);\n }\n }\n for (var ii = 0; ii < outputModifiers.length; ++i) {\n if (outputModifiers[ii] === ext) {\n outputModifiers[ii].splice(i, 1);\n }\n }\n }\n };\n\n /**\n * Get all extension of THIS converter\n * @returns {{language: Array, output: Array}}\n */\n this.getAllExtensions = function () {\n return {\n language: langExtensions,\n output: outputModifiers\n };\n };\n};\n","/**\r\n * Turn Markdown link shortcuts into XHTML tags.\r\n */\r\nshowdown.subParser('anchors', function (text, config, globals) {\r\n 'use strict';\r\n\r\n var writeAnchorTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n if (showdown.helper.isUndefined(m7)) {\r\n m7 = '';\r\n }\r\n wholeMatch = m1;\r\n var linkText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7;\r\n\r\n if (!url) {\r\n if (!linkId) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = linkText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {\r\n url = globals.gUrls[linkId];\r\n if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {\r\n title = globals.gTitles[linkId];\r\n }\r\n } else {\r\n if (wholeMatch.search(/\\(\\s*\\)$/m) > -1) {\r\n // Special case for explicit empty url\r\n url = '';\r\n } else {\r\n return wholeMatch;\r\n }\r\n }\r\n }\r\n\r\n url = showdown.helper.escapeCharacters(url, '*_', false);\r\n var result = '';\r\n\r\n return result;\r\n };\r\n\r\n // First, handle reference-style links: [link text] [id]\r\n /*\r\n text = text.replace(/\r\n (\t\t\t\t\t\t\t// wrap whole match in $1\r\n \\[\r\n (\r\n (?:\r\n \\[[^\\]]*\\]\t\t// allow brackets nested one level\r\n |\r\n [^\\[]\t\t\t// or anything else\r\n )*\r\n )\r\n \\]\r\n\r\n [ ]?\t\t\t\t\t// one optional space\r\n (?:\\n[ ]*)?\t\t\t\t// one optional newline followed by spaces\r\n\r\n \\[\r\n (.*?)\t\t\t\t\t// id = $3\r\n \\]\r\n )()()()()\t\t\t\t\t// pad remaining backreferences\r\n /g,_DoAnchors_callback);\r\n */\r\n text = text.replace(/(\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\][ ]?(?:\\n[ ]*)?\\[(.*?)\\])()()()()/g, writeAnchorTag);\r\n\r\n //\r\n // Next, inline-style links: [link text](url \"optional title\")\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n (\t\t\t\t\t\t// wrap whole match in $1\r\n \\[\r\n (\r\n (?:\r\n \\[[^\\]]*\\]\t// allow brackets nested one level\r\n |\r\n [^\\[\\]]\t\t\t// or anything else\r\n )\r\n )\r\n \\]\r\n \\(\t\t\t\t\t\t// literal paren\r\n [ \\t]*\r\n ()\t\t\t\t\t\t// no id, so leave $3 empty\r\n ?\t\t\t\t// href = $4\r\n [ \\t]*\r\n (\t\t\t\t\t\t// $5\r\n (['\"])\t\t\t\t// quote char = $6\r\n (.*?)\t\t\t\t// Title = $7\r\n \\6\t\t\t\t\t// matching quote\r\n [ \\t]*\t\t\t\t// ignore any spaces/tabs between closing quote and )\r\n )?\t\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeAnchorTag);\r\n */\r\n text = text.replace(/(\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g,\r\n writeAnchorTag);\r\n\r\n //\r\n // Last, handle reference-style shortcuts: [link text]\r\n // These must come last in case you've also got [link test][1]\r\n // or [link test](/foo)\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ( // wrap whole match in $1\r\n \\[\r\n ([^\\[\\]]+) // link text = $2; can't contain '[' or ']'\r\n \\]\r\n )()()()()() // pad rest of backreferences\r\n /g, writeAnchorTag);\r\n */\r\n text = text.replace(/(\\[([^\\[\\]]+)\\])()()()()()/g, writeAnchorTag);\r\n\r\n return text;\r\n\r\n});\r\n","showdown.subParser('autoLinks', function (text) {\r\n 'use strict';\r\n\r\n text = text.replace(/<((https?|ftp|dict):[^'\">\\s]+)>/gi, '$1');\r\n\r\n // Email addresses: \r\n\r\n /*\r\n text = text.replace(/\r\n <\r\n (?:mailto:)?\r\n (\r\n [-.\\w]+\r\n \\@\r\n [-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+\r\n )\r\n >\r\n /gi);\r\n */\r\n var pattern = /<(?:mailto:)?([-.\\w]+\\@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi;\r\n text = text.replace(pattern, function (wholeMatch, m1) {\r\n var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1);\r\n return showdown.subParser('encodeEmailAddress')(unescapedStr);\r\n });\r\n\r\n return text;\r\n\r\n});\r\n","/**\r\n * These are all the transformations that form block-level\r\n * tags like paragraphs, headers, and list items.\r\n */\r\nshowdown.subParser('blockGamut', function (text, options, globals) {\r\n 'use strict';\r\n\r\n text = showdown.subParser('headers')(text, options, globals);\r\n\r\n // Do Horizontal Rules:\r\n var key = showdown.subParser('hashBlock')('
', options, globals);\r\n text = text.replace(/^[ ]{0,2}([ ]?\\*[ ]?){3,}[ \\t]*$/gm, key);\r\n text = text.replace(/^[ ]{0,2}([ ]?\\-[ ]?){3,}[ \\t]*$/gm, key);\r\n text = text.replace(/^[ ]{0,2}([ ]?\\_[ ]?){3,}[ \\t]*$/gm, key);\r\n\r\n text = showdown.subParser('lists')(text, options, globals);\r\n text = showdown.subParser('codeBlocks')(text, options, globals);\r\n text = showdown.subParser('blockQuotes')(text, options, globals);\r\n\r\n // We already ran _HashHTMLBlocks() before, in Markdown(), but that\r\n // was to escape raw HTML in the original Markdown source. This time,\r\n // we're escaping the markup we've just created, so that we don't wrap\r\n //

tags around block-level tags.\r\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\r\n text = showdown.subParser('paragraphs')(text, options, globals);\r\n\r\n return text;\r\n\r\n});\r\n","showdown.subParser('blockQuotes', function (text, options, globals) {\r\n 'use strict';\r\n\r\n /*\r\n text = text.replace(/\r\n (\t\t\t\t\t\t\t\t// Wrap whole match in $1\r\n (\r\n ^[ \\t]*>[ \\t]?\t\t\t// '>' at the start of a line\r\n .+\\n\t\t\t\t\t// rest of the first line\r\n (.+\\n)*\t\t\t\t\t// subsequent consecutive lines\r\n \\n*\t\t\t\t\t\t// blanks\r\n )+\r\n )\r\n /gm, function(){...});\r\n */\r\n\r\n text = text.replace(/((^[ \\t]*>[ \\t]?.+\\n(.+\\n)*\\n*)+)/gm, function (wholeMatch, m1) {\r\n var bq = m1;\r\n\r\n // attacklab: hack around Konqueror 3.5.4 bug:\r\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\r\n bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, '~0'); // trim one level of quoting\r\n\r\n // attacklab: clean up hack\r\n bq = bq.replace(/~0/g, '');\r\n\r\n bq = bq.replace(/^[ \\t]+$/gm, ''); // trim whitespace-only lines\r\n bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse\r\n\r\n bq = bq.replace(/(^|\\n)/g, '$1 ');\r\n // These leading spaces screw with

 content, so we need to fix that:\r\n    bq = bq.replace(/(\\s*
[^\\r]+?<\\/pre>)/gm, function (wholeMatch, m1) {\r\n      var pre = m1;\r\n      // attacklab: hack around Konqueror 3.5.4 bug:\r\n      pre = pre.replace(/^  /mg, '~0');\r\n      pre = pre.replace(/~0/g, '');\r\n      return pre;\r\n    });\r\n\r\n    return showdown.subParser('hashBlock')('
\\n' + bq + '\\n
', options, globals);\r\n });\r\n return text;\r\n});\r\n","/**\r\n * Process Markdown `
` blocks.\r\n */\r\nshowdown.subParser('codeBlocks', function (text, options, globals) {\r\n  'use strict';\r\n\r\n  /*\r\n   text = text.replace(text,\r\n   /(?:\\n\\n|^)\r\n   (\t\t\t\t\t\t\t\t// $1 = the code block -- one or more lines, starting with a space/tab\r\n   (?:\r\n   (?:[ ]{4}|\\t)\t\t\t// Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width\r\n   .*\\n+\r\n   )+\r\n   )\r\n   (\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))\t// attacklab: g_tab_width\r\n   /g,function(){...});\r\n   */\r\n\r\n  // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n  text += '~0';\r\n\r\n  var pattern = /(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))/g;\r\n  text = text.replace(pattern, function (wholeMatch, m1, m2) {\r\n    var codeblock = m1,\r\n        nextChar = m2,\r\n        end = '\\n';\r\n\r\n    codeblock = showdown.subParser('outdent')(codeblock);\r\n    codeblock = showdown.subParser('encodeCode')(codeblock);\r\n    codeblock = showdown.subParser('detab')(codeblock);\r\n    codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\r\n    codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing newlines\r\n\r\n    if (options.omitExtraWLInCodeBlocks) {\r\n      end = '';\r\n    }\r\n\r\n    codeblock = '
' + codeblock + end + '
';\r\n\r\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\r\n });\r\n\r\n // attacklab: strip sentinel\r\n text = text.replace(/~0/, '');\r\n\r\n return text;\r\n});\r\n","/**\r\n *\r\n * * Backtick quotes are used for spans.\r\n *\r\n * * You can use multiple backticks as the delimiters if you want to\r\n * include literal backticks in the code span. So, this input:\r\n *\r\n * Just type ``foo `bar` baz`` at the prompt.\r\n *\r\n * Will translate to:\r\n *\r\n *

Just type foo `bar` baz at the prompt.

\r\n *\r\n * There's no arbitrary limit to the number of backticks you\r\n * can use as delimters. If you need three consecutive backticks\r\n * in your code, use four for delimiters, etc.\r\n *\r\n * * You can use spaces to get literal backticks at the edges:\r\n *\r\n * ... type `` `bar` `` ...\r\n *\r\n * Turns to:\r\n *\r\n * ... type `bar` ...\r\n */\r\nshowdown.subParser('codeSpans', function (text) {\r\n 'use strict';\r\n\r\n /*\r\n text = text.replace(/\r\n (^|[^\\\\])\t\t\t\t\t// Character before opening ` can't be a backslash\r\n (`+)\t\t\t\t\t\t// $2 = Opening run of `\r\n (\t\t\t\t\t\t\t// $3 = The code block\r\n [^\\r]*?\r\n [^`]\t\t\t\t\t// attacklab: work around lack of lookbehind\r\n )\r\n \\2\t\t\t\t\t\t\t// Matching closer\r\n (?!`)\r\n /gm, function(){...});\r\n */\r\n\r\n text = text.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm, function (wholeMatch, m1, m2, m3) {\r\n var c = m3;\r\n c = c.replace(/^([ \\t]*)/g, '');\t// leading whitespace\r\n c = c.replace(/[ \\t]*$/g, '');\t// trailing whitespace\r\n c = showdown.subParser('encodeCode')(c);\r\n return m1 + '' + c + '';\r\n });\r\n\r\n return text;\r\n\r\n});\r\n","/**\r\n * Convert all tabs to spaces\r\n */\r\nshowdown.subParser('detab', function (text) {\r\n 'use strict';\r\n\r\n // expand first n-1 tabs\r\n text = text.replace(/\\t(?=\\t)/g, ' '); // g_tab_width\r\n\r\n // replace the nth with two sentinels\r\n text = text.replace(/\\t/g, '~A~B');\r\n\r\n // use the sentinel to anchor our regex so it doesn't explode\r\n text = text.replace(/~B(.+?)~A/g, function (wholeMatch, m1) {\r\n var leadingText = m1,\r\n numSpaces = 4 - leadingText.length % 4; // g_tab_width\r\n\r\n // there *must* be a better way to do this:\r\n for (var i = 0; i < numSpaces; i++) {\r\n leadingText += ' ';\r\n }\r\n\r\n return leadingText;\r\n });\r\n\r\n // clean up sentinels\r\n text = text.replace(/~A/g, ' '); // g_tab_width\r\n text = text.replace(/~B/g, '');\r\n\r\n return text;\r\n\r\n});\r\n","/**\r\n * Smart processing for ampersands and angle brackets that need to be encoded.\r\n */\r\nshowdown.subParser('encodeAmpsAndAngles', function (text) {\r\n 'use strict';\r\n // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\r\n // http://bumppo.net/projects/amputator/\r\n text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, '&');\r\n\r\n // Encode naked <'s\r\n text = text.replace(/<(?![a-z\\/?\\$!])/gi, '<');\r\n\r\n return text;\r\n});\r\n","/**\r\n * Returns the string, with after processing the following backslash escape sequences.\r\n *\r\n * attacklab: The polite way to do this is with the new escapeCharacters() function:\r\n *\r\n * text = escapeCharacters(text,\"\\\\\",true);\r\n * text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\r\n *\r\n * ...but we're sidestepping its use of the (slow) RegExp constructor\r\n * as an optimization for Firefox. This function gets called a LOT.\r\n */\r\nshowdown.subParser('encodeBackslashEscapes', function (text) {\r\n 'use strict';\r\n text = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\r\n text = text.replace(/\\\\([`*_{}\\[\\]()>#+-.!])/g, showdown.helper.escapeCharactersCallback);\r\n return text;\r\n});\r\n","/**\r\n * Encode/escape certain characters inside Markdown code runs.\r\n * The point is that in code, these characters are literals,\r\n * and lose their special Markdown meanings.\r\n */\r\nshowdown.subParser('encodeCode', function (text) {\r\n 'use strict';\r\n\r\n // Encode all ampersands; HTML entities are not\r\n // entities within a Markdown code span.\r\n text = text.replace(/&/g, '&');\r\n\r\n // Do the angle bracket song and dance:\r\n text = text.replace(//g, '>');\r\n\r\n // Now, escape characters that are magic in Markdown:\r\n text = showdown.helper.escapeCharacters(text, '*_{}[]\\\\', false);\r\n\r\n // jj the line above breaks this:\r\n //---\r\n //* Item\r\n // 1. Subitem\r\n // special char: *\r\n // ---\r\n\r\n return text;\r\n});\r\n","/**\r\n * Input: an email address, e.g. \"foo@example.com\"\r\n *\r\n * Output: the email address as a mailto link, with each character\r\n * of the address encoded as either a decimal or hex entity, in\r\n * the hopes of foiling most address harvesting spam bots. E.g.:\r\n *\r\n * foo\r\n * @example.com\r\n *\r\n * Based on a filter by Matthew Wickline, posted to the BBEdit-Talk\r\n * mailing list: \r\n *\r\n */\r\nshowdown.subParser('encodeEmailAddress', function (addr) {\r\n 'use strict';\r\n\r\n var encode = [\r\n function (ch) {\r\n return '&#' + ch.charCodeAt(0) + ';';\r\n },\r\n function (ch) {\r\n return '&#x' + ch.charCodeAt(0).toString(16) + ';';\r\n },\r\n function (ch) {\r\n return ch;\r\n }\r\n ];\r\n\r\n addr = 'mailto:' + addr;\r\n\r\n addr = addr.replace(/./g, function (ch) {\r\n if (ch === '@') {\r\n // this *must* be encoded. I insist.\r\n ch = encode[Math.floor(Math.random() * 2)](ch);\r\n } else if (ch !== ':') {\r\n // leave ':' alone (to spot mailto: later)\r\n var r = Math.random();\r\n // roughly 10% raw, 45% hex, 45% dec\r\n ch = (\r\n r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)\r\n );\r\n }\r\n return ch;\r\n });\r\n\r\n addr = '' + addr + '';\r\n addr = addr.replace(/\">.+:/g, '\">'); // strip the mailto: from the visible part\r\n\r\n return addr;\r\n});\r\n","/**\r\n * Within tags -- meaning between < and > -- encode [\\ ` * _] so they\r\n * don't conflict with their use in Markdown for code, italics and strong.\r\n */\r\nshowdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text) {\r\n 'use strict';\r\n\r\n // Build a regex to find HTML tags and comments. See Friedl's\r\n // \"Mastering Regular Expressions\", 2nd Ed., pp. 200-201.\r\n var regex = /(<[a-z\\/!$](\"[^\"]*\"|'[^']*'|[^'\">])*>|)/gi;\r\n\r\n text = text.replace(regex, function (wholeMatch) {\r\n var tag = wholeMatch.replace(/(.)<\\/?code>(?=.)/g, '$1`');\r\n tag = showdown.helper.escapeCharacters(tag, '\\\\`*_', false);\r\n return tag;\r\n });\r\n\r\n return text;\r\n});\r\n","/**\r\n * Handle github codeblocks prior to running HashHTML so that\r\n * HTML contained within the codeblock gets escaped properly\r\n * Example:\r\n * ```ruby\r\n * def hello_world(x)\r\n * puts \"Hello, #{x}\"\r\n * end\r\n * ```\r\n */\r\nshowdown.subParser('githubCodeBlocks', function (text, options, globals) {\r\n 'use strict';\r\n\r\n text += '~0';\r\n\r\n text = text.replace(/(?:^|\\n)```(.*)\\n([\\s\\S]*?)\\n```/g, function (wholeMatch, m1, m2) {\r\n var language = m1,\r\n codeblock = m2,\r\n end = '\\n';\r\n\r\n if (options.omitExtraWLInCodeBlocks) {\r\n end = '';\r\n }\r\n\r\n codeblock = showdown.subParser('encodeCode')(codeblock);\r\n codeblock = showdown.subParser('detab')(codeblock);\r\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\r\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing whitespace\r\n\r\n codeblock = '
' + codeblock + end + '
';\r\n\r\n return showdown.subParser('hashBlock')(codeblock, options, globals);\r\n });\r\n\r\n // attacklab: strip sentinel\r\n text = text.replace(/~0/, '');\r\n\r\n return text;\r\n\r\n});\r\n","showdown.subParser('hashBlock', function (text, options, globals) {\r\n 'use strict';\r\n text = text.replace(/(^\\n+|\\n+$)/g, '');\r\n return '\\n\\n~K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\\n\\n';\r\n});\r\n","showdown.subParser('hashElement', function (text, options, globals) {\r\n 'use strict';\r\n\r\n return function (wholeMatch, m1) {\r\n var blockText = m1;\r\n\r\n // Undo double lines\r\n blockText = blockText.replace(/\\n\\n/g, '\\n');\r\n blockText = blockText.replace(/^\\n/, '');\r\n\r\n // strip trailing blank lines\r\n blockText = blockText.replace(/\\n+$/g, '');\r\n\r\n // Replace the element text with a marker (\"~KxK\" where x is its key)\r\n blockText = '\\n\\n~K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\\n\\n';\r\n\r\n return blockText;\r\n };\r\n});\r\n","showdown.subParser('hashHTMLBlocks', function (text, options, globals) {\r\n 'use strict';\r\n\r\n // attacklab: Double up blank lines to reduce lookaround\r\n text = text.replace(/\\n/g, '\\n\\n');\r\n\r\n // Hashify HTML blocks:\r\n // We only want to do this for block-level HTML tags, such as headers,\r\n // lists, and tables. That's because we still want to wrap

s around\r\n // \"paragraphs\" that are wrapped in non-block-level tags, such as anchors,\r\n // phrase emphasis, and spans. The list of tags we're looking for is\r\n // hard-coded:\r\n //var block_tags_a =\r\n // 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del|style|section|header|footer|nav|article|aside';\r\n // var block_tags_b =\r\n // 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|style|section|header|footer|nav|article|aside';\r\n\r\n // First, look for nested blocks, e.g.:\r\n //

\r\n //
\r\n // tags for inner block must be indented.\r\n //
\r\n //
\r\n //\r\n // The outermost tags must start at the left margin for this to match, and\r\n // the inner nested divs must be indented.\r\n // We need to do this before the next, more liberal match, because the next\r\n // match will start at the first `
` and stop at the first `
`.\r\n\r\n // attacklab: This regex can be expensive when it fails.\r\n /*\r\n var text = text.replace(/\r\n (\t\t\t\t\t\t// save in $1\r\n ^\t\t\t\t\t// start of line (with /m)\r\n <($block_tags_a)\t// start tag = $2\r\n \\b\t\t\t\t\t// word break\r\n // attacklab: hack around khtml/pcre bug...\r\n [^\\r]*?\\n\t\t\t// any number of lines, minimally matching\r\n \t\t\t\t// the matching end tag\r\n [ \\t]*\t\t\t\t// trailing spaces/tabs\r\n (?=\\n+)\t\t\t\t// followed by a newline\r\n )\t\t\t\t\t\t// attacklab: there are sentinel newlines at end of document\r\n /gm,function(){...}};\r\n */\r\n text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\\b[^\\r]*?\\n<\\/\\2>[ \\t]*(?=\\n+))/gm,\r\n showdown.subParser('hashElement')(text, options, globals));\r\n\r\n //\r\n // Now match more liberally, simply from `\\n` to `\\n`\r\n //\r\n\r\n /*\r\n var text = text.replace(/\r\n (\t\t\t\t\t\t// save in $1\r\n ^\t\t\t\t\t// start of line (with /m)\r\n <($block_tags_b)\t// start tag = $2\r\n \\b\t\t\t\t\t// word break\r\n // attacklab: hack around khtml/pcre bug...\r\n [^\\r]*?\t\t\t\t// any number of lines, minimally matching\r\n \t\t\t\t// the matching end tag\r\n [ \\t]*\t\t\t\t// trailing spaces/tabs\r\n (?=\\n+)\t\t\t\t// followed by a newline\r\n )\t\t\t\t\t\t// attacklab: there are sentinel newlines at end of document\r\n /gm,function(){...}};\r\n */\r\n text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|style|section|header|footer|nav|article|aside|address|audio|canvas|figure|hgroup|output|video)\\b[^\\r]*?<\\/\\2>[ \\t]*(?=\\n+)\\n)/gm,\r\n showdown.subParser('hashElement')(text, options, globals));\r\n\r\n // Special case just for
. It was easier to make a special case than\r\n // to make the other regex more complicated.\r\n\r\n /*\r\n text = text.replace(/\r\n (\t\t\t\t\t\t// save in $1\r\n \\n\\n\t\t\t\t// Starting after a blank line\r\n [ ]{0,3}\r\n (<(hr)\t\t\t\t// start tag = $2\r\n \\b\t\t\t\t\t// word break\r\n ([^<>])*?\t\t\t//\r\n \\/?>)\t\t\t\t// the matching end tag\r\n [ \\t]*\r\n (?=\\n{2,})\t\t\t// followed by a blank line\r\n )\r\n /g,showdown.subParser('hashElement')(text, options, globals));\r\n */\r\n text = text.replace(/(\\n[ ]{0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,\r\n showdown.subParser('hashElement')(text, options, globals));\r\n\r\n // Special case for standalone HTML comments:\r\n\r\n /*\r\n text = text.replace(/\r\n (\t\t\t\t\t\t// save in $1\r\n \\n\\n\t\t\t\t// Starting after a blank line\r\n [ ]{0,3}\t\t\t// attacklab: g_tab_width - 1\r\n \r\n [ \\t]*\r\n (?=\\n{2,})\t\t\t// followed by a blank line\r\n )\r\n /g,showdown.subParser('hashElement')(text, options, globals));\r\n */\r\n text = text.replace(/(\\n\\n[ ]{0,3}[ \\t]*(?=\\n{2,}))/g,\r\n showdown.subParser('hashElement')(text, options, globals));\r\n\r\n // PHP and ASP-style processor instructions ( and <%...%>)\r\n\r\n /*\r\n text = text.replace(/\r\n (?:\r\n \\n\\n\t\t\t\t// Starting after a blank line\r\n )\r\n (\t\t\t\t\t\t// save in $1\r\n [ ]{0,3}\t\t\t// attacklab: g_tab_width - 1\r\n (?:\r\n <([?%])\t\t\t// $2\r\n [^\\r]*?\r\n \\2>\r\n )\r\n [ \\t]*\r\n (?=\\n{2,})\t\t\t// followed by a blank line\r\n )\r\n /g,showdown.subParser('hashElement')(text, options, globals));\r\n */\r\n text = text.replace(/(?:\\n\\n)([ ]{0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,\r\n showdown.subParser('hashElement')(text, options, globals));\r\n\r\n // attacklab: Undo double lines (see comment at top of this function)\r\n text = text.replace(/\\n\\n/g, '\\n');\r\n return text;\r\n\r\n});\r\n","showdown.subParser('headers', function (text, options, globals) {\n 'use strict';\n\n var prefixHeader = options.prefixHeaderId;\n\n // Set text-style headers:\n //\tHeader 1\n //\t========\n //\n //\tHeader 2\n //\t--------\n //\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm, function (wholeMatch, m1) {\n\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hashBlock = '' + spanGamut + '';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm, function (matchFound, m1) {\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hashBlock = '' + spanGamut + '';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n // atx-style headers:\n // # Header 1\n // ## Header 2\n // ## Header 2 with closing hashes ##\n // ...\n // ###### Header 6\n //\n\n /*\n text = text.replace(/\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\n [ \\t]*\n (.+?)\t\t\t\t\t// $2 = Header text\n [ \\t]*\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\n \\n+\n /gm, function() {...});\n */\n\n text = text.replace(/^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm, function (wholeMatch, m1, m2) {\n var span = showdown.subParser('spanGamut')(m2, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m2) + '\"',\n header = '' + span + '';\n\n return showdown.subParser('hashBlock')(header, options, globals);\n });\n\n function headerId(m) {\n var title, escapedId = m.replace(/[^\\w]/g, '').toLowerCase();\n\n if (globals.hashLinkCounts[escapedId]) {\n title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);\n } else {\n title = escapedId;\n globals.hashLinkCounts[escapedId] = 1;\n }\n\n // Prefix id to prevent causing inadvertent pre-existing style matches.\n if (prefixHeader === true) {\n prefixHeader = 'section';\n }\n\n if (showdown.helper.isString(prefixHeader)) {\n return prefixHeader + title;\n }\n return title;\n }\n\n return text;\n});\n","/**\n * Turn Markdown image shortcuts into tags.\n */\nshowdown.subParser('images', function (text, options, globals) {\n 'use strict';\n\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\n\n wholeMatch = m1;\n var altText = m2,\n linkId = m3.toLowerCase(),\n url = m4,\n title = m7,\n gUrls = globals.gUrls,\n gTitles = globals.gTitles;\n\n if (!title) {\n title = '';\n }\n\n if (url === '' || url === null) {\n if (linkId === '' || linkId === null) {\n // lower-case and turn embedded newlines into spaces\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (typeof gUrls[linkId] !== 'undefined') {\n url = gUrls[linkId];\n if (typeof gTitles[linkId] !== 'undefined') {\n title = gTitles[linkId];\n }\n } else {\n return wholeMatch;\n }\n }\n\n altText = altText.replace(/\"/g, '"');\n url = showdown.helper.escapeCharacters(url, '*_', false);\n var result = '\"'?\t\t\t// src url = $4\n [ \\t]*\n (\t\t\t\t\t// $5\n (['\"])\t\t\t// quote char = $6\n (.*?)\t\t\t// title = $7\n \\6\t\t\t\t// matching quote\n [ \\t]*\n )?\t\t\t\t\t// title is optional\n \\)\n )\n /g,writeImageTag);\n */\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\n\n return text;\n});\n","showdown.subParser('italicsAndBold', function (text) {\r\n 'use strict';\r\n // must go first:\r\n text = text.replace(/(\\*\\*|__)(?=\\S)([^\\r]*?\\S[*_]*)\\1/g, '$2');\r\n\r\n text = text.replace(/(\\*|_)(?=\\S)([^\\r]*?\\S)\\1/g, '$2');\r\n\r\n return text;\r\n});\r\n","/**\r\n * Form HTML ordered (numbered) and unordered (bulleted) lists.\r\n */\r\nshowdown.subParser('lists', function (text, options, globals) {\r\n 'use strict';\r\n\r\n /**\r\n * Process the contents of a single ordered or unordered list, splitting it\r\n * into individual list items.\r\n * @param {string} listStr\r\n * @returns {string|*}\r\n */\r\n var processListItems = function (listStr) {\r\n // The $g_list_level global keeps track of when we're inside a list.\r\n // Each time we enter a list, we increment it; when we leave a list,\r\n // we decrement. If it's zero, we're not in a list anymore.\r\n //\r\n // We do this because when we're not inside a list, we want to treat\r\n // something like this:\r\n //\r\n // I recommend upgrading to version\r\n // 8. Oops, now this line is treated\r\n // as a sub-list.\r\n //\r\n // As a single paragraph, despite the fact that the second line starts\r\n // with a digit-period-space sequence.\r\n //\r\n // Whereas when we're inside a list (or sub-list), that line will be\r\n // treated as the start of a sub-list. What a kludge, huh? This is\r\n // an aspect of Markdown's syntax that's hard to parse perfectly\r\n // without resorting to mind-reading. Perhaps the solution is to\r\n // change the syntax rules such that sub-lists must start with a\r\n // starting cardinal number; e.g. \"1.\" or \"a.\".\r\n\r\n globals.gListLevel++;\r\n\r\n // trim trailing blank lines:\r\n listStr = listStr.replace(/\\n{2,}$/, '\\n');\r\n\r\n // attacklab: add sentinel to emulate \\z\r\n listStr += '~0';\r\n\r\n /*\r\n list_str = list_str.replace(/\r\n (\\n)?\t\t\t\t\t\t\t// leading line = $1\r\n (^[ \\t]*)\t\t\t\t\t\t// leading whitespace = $2\r\n ([*+-]|\\d+[.]) [ \\t]+\t\t\t// list marker = $3\r\n ([^\\r]+?\t\t\t\t\t\t// list item text = $4\r\n (\\n{1,2}))\r\n (?= \\n* (~0 | \\2 ([*+-]|\\d+[.]) [ \\t]+))\r\n /gm, function(){...});\r\n */\r\n listStr = listStr.replace(/(\\n)?(^[ \\t]*)([*+-]|\\d+[.])[ \\t]+([^\\r]+?(\\n{1,2}))(?=\\n*(~0|\\2([*+-]|\\d+[.])[ \\t]+))/gm,\r\n function (wholeMatch, m1, m2, m3, m4) {\r\n var item = showdown.subParser('outdent')(m4, options, globals);\r\n //m1 - LeadingLine\r\n\r\n if (m1 || (item.search(/\\n{2,}/) > -1)) {\r\n item = showdown.subParser('blockGamut')(item, options, globals);\r\n } else {\r\n // Recursion for sub-lists:\r\n item = showdown.subParser('lists')(item, options, globals);\r\n item = item.replace(/\\n$/, ''); // chomp(item)\r\n item = showdown.subParser('spanGamut')(item, options, globals);\r\n }\r\n\r\n return '
  • ' + item + '
  • \\n';\r\n });\r\n\r\n // attacklab: strip sentinel\r\n listStr = listStr.replace(/~0/g, '');\r\n\r\n globals.gListLevel--;\r\n return listStr;\r\n };\r\n\r\n // attacklab: add sentinel to hack around khtml/safari bug:\r\n // http://bugs.webkit.org/show_bug.cgi?id=11231\r\n text += '~0';\r\n\r\n // Re-usable pattern to match any entirel ul or ol list:\r\n\r\n /*\r\n var whole_list = /\r\n (\t\t\t\t\t\t\t\t\t// $1 = whole list\r\n (\t\t\t\t\t\t\t\t// $2\r\n [ ]{0,3}\t\t\t\t\t// attacklab: g_tab_width - 1\r\n ([*+-]|\\d+[.])\t\t\t\t// $3 = first list item marker\r\n [ \\t]+\r\n )\r\n [^\\r]+?\r\n (\t\t\t\t\t\t\t\t// $4\r\n ~0\t\t\t\t\t\t\t// sentinel for workaround; should be $\r\n |\r\n \\n{2,}\r\n (?=\\S)\r\n (?!\t\t\t\t\t\t\t// Negative lookahead for another list item marker\r\n [ \\t]*\r\n (?:[*+-]|\\d+[.])[ \\t]+\r\n )\r\n )\r\n )/g\r\n */\r\n var wholeList = /^(([ ]{0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(~0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm;\r\n\r\n if (globals.gListLevel) {\r\n text = text.replace(wholeList, function (wholeMatch, m1, m2) {\r\n var list = m1,\r\n listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\r\n\r\n // Turn double returns into triple returns, so that we can make a\r\n // paragraph for the last item in a list, if necessary:\r\n list = list.replace(/\\n{2,}/g, '\\n\\n\\n');\r\n\r\n var result = processListItems(list);\r\n\r\n // Trim any trailing whitespace, to put the closing ``\r\n // up on the preceding line, to get it past the current stupid\r\n // HTML block parser. This is a hack to work around the terrible\r\n // hack that is the HTML block parser.\r\n result = result.replace(/\\s+$/, '');\r\n result = '<' + listType + '>' + result + '\\n';\r\n return result;\r\n });\r\n } else {\r\n wholeList = /(\\n\\n|^\\n?)(([ ]{0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(~0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/g;\r\n\r\n text = text.replace(wholeList, function (wholeMatch, m1, m2, m3) {\r\n\r\n // Turn double returns into triple returns, so that we can make a\r\n // paragraph for the last item in a list, if necessary:\r\n var list = m2.replace(/\\n{2,}/g, '\\n\\n\\n'),\r\n listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol',\r\n result = processListItems(list);\r\n\r\n return m1 + '<' + listType + '>\\n' + result + '\\n';\r\n });\r\n }\r\n\r\n // attacklab: strip sentinel\r\n text = text.replace(/~0/, '');\r\n\r\n return text;\r\n});\r\n","/**\r\n * Remove one level of line-leading tabs or spaces\r\n */\r\nshowdown.subParser('outdent', function (text) {\r\n 'use strict';\r\n\r\n // attacklab: hack around Konqueror 3.5.4 bug:\r\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\r\n text = text.replace(/^(\\t|[ ]{1,4})/gm, '~0'); // attacklab: g_tab_width\r\n\r\n // attacklab: clean up hack\r\n text = text.replace(/~0/g, '');\r\n\r\n return text;\r\n});\r\n","/**\r\n *\r\n */\r\nshowdown.subParser('paragraphs', function (text, options, globals) {\r\n 'use strict';\r\n\r\n // Strip leading and trailing lines:\r\n text = text.replace(/^\\n+/g, '');\r\n text = text.replace(/\\n+$/g, '');\r\n\r\n var grafs = text.split(/\\n{2,}/g),\r\n grafsOut = [],\r\n end = grafs.length; // Wrap

    tags\r\n\r\n for (var i = 0; i < end; i++) {\r\n var str = grafs[i];\r\n\r\n // if this is an HTML marker, copy it\r\n if (str.search(/~K(\\d+)K/g) >= 0) {\r\n grafsOut.push(str);\r\n } else if (str.search(/\\S/) >= 0) {\r\n str = showdown.subParser('spanGamut')(str, options, globals);\r\n str = str.replace(/^([ \\t]*)/g, '

    ');\r\n str += '

    ';\r\n grafsOut.push(str);\r\n }\r\n }\r\n\r\n /** Unhashify HTML blocks */\r\n end = grafsOut.length;\r\n for (i = 0; i < end; i++) {\r\n // if this is a marker for an html block...\r\n while (grafsOut[i].search(/~K(\\d+)K/) >= 0) {\r\n var blockText = globals.gHtmlBlocks[RegExp.$1];\r\n blockText = blockText.replace(/\\$/g, '$$$$'); // Escape any dollar signs\r\n grafsOut[i] = grafsOut[i].replace(/~K\\d+K/, blockText);\r\n }\r\n }\r\n\r\n return grafsOut.join('\\n\\n');\r\n});\r\n","/**\r\n * Run extension\r\n */\r\nshowdown.subParser('runExtension', function (ext, text, options, globals) {\r\n 'use strict';\r\n\r\n if (ext.filter) {\r\n text = ext.filter(text, globals.converter, options);\r\n\r\n } else if (ext.regex) {\r\n // TODO remove this when old extension loading mechanism is deprecated\r\n var re = ext.regex;\r\n if (!re instanceof RegExp) {\r\n re = new RegExp(re, 'g');\r\n }\r\n text = text.replace(re, ext.replace);\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * These are all the transformations that occur *within* block-level\r\n * tags like paragraphs, headers, and list items.\r\n */\r\nshowdown.subParser('spanGamut', function (text, options, globals) {\r\n 'use strict';\r\n\r\n text = showdown.subParser('codeSpans')(text, options, globals);\r\n text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals);\r\n text = showdown.subParser('encodeBackslashEscapes')(text, options, globals);\r\n\r\n // Process anchor and image tags. Images must come first,\r\n // because ![foo][f] looks like an anchor.\r\n text = showdown.subParser('images')(text, options, globals);\r\n text = showdown.subParser('anchors')(text, options, globals);\r\n\r\n // Make links out of things like ``\r\n // Must come after _DoAnchors(), because you can use < and >\r\n // delimiters in inline links like [this]().\r\n text = showdown.subParser('autoLinks')(text, options, globals);\r\n text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals);\r\n text = showdown.subParser('italicsAndBold')(text, options, globals);\r\n\r\n // Do hard breaks:\r\n text = text.replace(/ +\\n/g, '
    \\n');\r\n\r\n return text;\r\n\r\n});\r\n","/**\r\n * Strip any lines consisting only of spaces and tabs.\r\n * This makes subsequent regexs easier to write, because we can\r\n * match consecutive blank lines with /\\n+/ instead of something\r\n * contorted like /[ \\t]*\\n+/\r\n */\r\nshowdown.subParser('stripBlankLines', function (text) {\r\n 'use strict';\r\n return text.replace(/^[ \\t]+$/mg, '');\r\n});\r\n","/**\n * Strips link definitions from text, stores the URLs and titles in\n * hash references.\n * Link defs are in the form: ^[id]: url \"optional title\"\n *\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\n * [ \\t]*\n * \\n? // maybe *one* newline\n * [ \\t]*\n * ? // url = $2\n * [ \\t]*\n * \\n? // maybe one newline\n * [ \\t]*\n * (?:\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\n * [\"(]\n * (.+?) // title = $4\n * [\")]\n * [ \\t]*\n * )? // title is optional\n * (?:\\n+|$)\n * /gm,\n * function(){...});\n *\n */\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\n 'use strict';\n\n var regex = /^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n+|(?=~0))/gm;\n\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '~0';\n\n text = text.replace(regex, function (wholeMatch, m1, m2, m3, m4) {\n m1 = m1.toLowerCase();\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\n if (m3) {\n // Oops, found blank lines, so it's not a title.\n // Put back the parenthetical statement we stole.\n return m3 + m4;\n\n } else if (m4) {\n globals.gTitles[m1] = m4.replace(/\"|'/g, '"');\n }\n\n // Completely remove the definition from the text\n return '';\n });\n\n // attacklab: strip sentinel\n text = text.replace(/~0/, '');\n\n return text;\n});\n","/**\r\n * Swap back in all the special characters we've hidden.\r\n */\r\nshowdown.subParser('unescapeSpecialChars', function (text) {\r\n 'use strict';\r\n\r\n text = text.replace(/~E(\\d+)E/g, function (wholeMatch, m1) {\r\n var charCodeToReplace = parseInt(m1);\r\n return String.fromCharCode(charCodeToReplace);\r\n });\r\n return text;\r\n});\r\n","var root = this;\r\n\r\n// CommonJS/nodeJS Loader\r\nif (typeof module !== 'undefined' && module.exports) {\r\n module.exports = showdown;\r\n\r\n// AMD Loader\r\n} else if (typeof define === 'function' && define.amd) {\r\n define('showdown', function () {\r\n 'use strict';\r\n return showdown;\r\n });\r\n\r\n// Regular Browser loader\r\n} else {\r\n root.showdown = showdown;\r\n}\r\n"]} \ No newline at end of file +{"version":3,"sources":["../src/showdown.js","../src/helpers.js","../src/converter.js","../src/subParsers/anchors.js","../src/subParsers/autoLinks.js","../src/subParsers/blockGamut.js","../src/subParsers/blockQuotes.js","../src/subParsers/codeBlocks.js","../src/subParsers/codeSpans.js","../src/subParsers/detab.js","../src/subParsers/encodeAmpsAndAngles.js","../src/subParsers/encodeBackslashEscapes.js","../src/subParsers/encodeCode.js","../src/subParsers/encodeEmailAddress.js","../src/subParsers/escapeSpecialCharsWithinTagAttributes.js","../src/subParsers/githubCodeBlocks.js","../src/subParsers/hashBlock.js","../src/subParsers/hashElement.js","../src/subParsers/hashHTMLBlocks.js","../src/subParsers/headers.js","../src/subParsers/images.js","../src/subParsers/italicsAndBold.js","../src/subParsers/lists.js","../src/subParsers/outdent.js","../src/subParsers/paragraphs.js","../src/subParsers/runExtension.js","../src/subParsers/spanGamut.js","../src/subParsers/stripBlankLines.js","../src/subParsers/stripLinkDefinitions.js","../src/subParsers/unescapeSpecialChars.js","../src/loader.js"],"names":[],"mappings":"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","file":"showdown.js","sourcesContent":["/**\n * Created by Tivie on 06-01-2015.\n */\n\n// Private properties\nvar showdown = {},\n parsers = {},\n extensions = {},\n defaultOptions = {\n omitExtraWLInCodeBlocks: false,\n prefixHeaderId: false,\n noHeaderId: false\n },\n globalOptions = JSON.parse(JSON.stringify(defaultOptions)); //clone default options out of laziness =P\n\n/**\n * helper namespace\n * @type {{}}\n */\nshowdown.helper = {};\n\n/**\n * TODO LEGACY SUPPORT CODE\n * @type {{}}\n */\nshowdown.extensions = {};\n\n/**\n * Set a global option\n * @static\n * @param {string} key\n * @param {*} value\n * @returns {showdown}\n */\nshowdown.setOption = function (key, value) {\n 'use strict';\n globalOptions[key] = value;\n return this;\n};\n\n/**\n * Get a global option\n * @static\n * @param {string} key\n * @returns {*}\n */\nshowdown.getOption = function (key) {\n 'use strict';\n return globalOptions[key];\n};\n\n/**\n * Get the global options\n * @static\n * @returns {{omitExtraWLInCodeBlocks: boolean, prefixHeaderId: boolean}}\n */\nshowdown.getOptions = function () {\n 'use strict';\n return globalOptions;\n};\n\nshowdown.resetOptions = function () {\n 'use strict';\n globalOptions = JSON.parse(JSON.stringify(defaultOptions));\n};\n\n/**\n * Get or set a subParser\n *\n * subParser(name) - Get a registered subParser\n * subParser(name, func) - Register a subParser\n * @static\n * @param {string} name\n * @param {function} [func]\n * @returns {*}\n */\nshowdown.subParser = function (name, func) {\n 'use strict';\n if (showdown.helper.isString(name)) {\n if (typeof func !== 'undefined') {\n parsers[name] = func;\n } else {\n if (parsers.hasOwnProperty(name)) {\n return parsers[name];\n } else {\n throw Error('SubParser named ' + name + ' not registered!');\n }\n }\n }\n};\n\n/**\n * Gets or registers an extension\n * @static\n * @param {string} name\n * @param {object|function=} ext\n * @returns {*}\n */\nshowdown.extension = function (name, ext) {\n 'use strict';\n\n if (!showdown.helper.isString(name)) {\n throw Error('Extension \\'name\\' must be a string');\n }\n\n name = showdown.helper.stdExtName(name);\n\n // Getter\n if (showdown.helper.isUndefined(ext)) {\n if (!extensions.hasOwnProperty(name)) {\n throw Error('Extension named ' + name + ' is not registered!');\n }\n return extensions[name];\n\n // Setter\n } else {\n // Expand extension if it's wrapped in a function\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n // Ensure extension is an array\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExtension = validate(ext, name);\n\n if (validExtension.valid) {\n extensions[name] = ext;\n } else {\n throw Error(validExtension.error);\n }\n }\n};\n\n/**\n * Gets all extensions registered\n * @returns {{}}\n */\nshowdown.getAllExtensions = function () {\n 'use strict';\n return extensions;\n};\n\n/**\n * Remove an extension\n * @param {string} name\n */\nshowdown.removeExtension = function (name) {\n 'use strict';\n delete extensions[name];\n};\n\n/**\n * Removes all extensions\n */\nshowdown.resetExtensions = function () {\n 'use strict';\n extensions = {};\n};\n\n/**\n * Validate extension\n * @param {array} extension\n * @param {string} name\n * @returns {{valid: boolean, error: string}}\n */\nfunction validate(extension, name) {\n 'use strict';\n\n var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension',\n ret = {\n valid: true,\n error: ''\n };\n\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n\n for (var i = 0; i < extension.length; ++i) {\n var baseMsg = errMsg + 'sub-extension ' + i + ': ',\n ext = extension[i];\n if (typeof ext !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';\n return ret;\n }\n\n if (!showdown.helper.isString(ext.type)) {\n ret.valid = false;\n ret.error = baseMsg + 'property \"type\" must be a string, but ' + typeof ext.type + ' given';\n return ret;\n }\n\n var type = ext.type = ext.type.toLowerCase();\n\n // normalize extension type\n if (type === 'language') {\n type = ext.type = 'lang';\n }\n\n if (type === 'html') {\n type = ext.type = 'output';\n }\n\n if (type !== 'lang' && type !== 'output') {\n ret.valid = false;\n ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: \"lang\" or \"output\"';\n return ret;\n }\n\n if (ext.filter) {\n if (typeof ext.filter !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"filter\" must be a function, but ' + typeof ext.filter + ' given';\n return ret;\n }\n\n } else if (ext.regex) {\n if (showdown.helper.isString(ext.regex)) {\n ext.regex = new RegExp(ext.regex, 'g');\n }\n if (!ext.regex instanceof RegExp) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" property must either be a string or a RegExp object, but ' +\n typeof ext.regex + ' given';\n return ret;\n }\n if (showdown.helper.isUndefined(ext.replace)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" extensions must implement a replace string or function';\n return ret;\n }\n\n } else {\n ret.valid = false;\n ret.error = baseMsg + 'extensions must define either a \"regex\" property or a \"filter\" method';\n return ret;\n }\n\n if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {\n ret.valid = false;\n ret.error = baseMsg + 'output extensions must define a filter property';\n return ret;\n }\n }\n return ret;\n}\n\n/**\n * Validate extension\n * @param {object} ext\n * @returns {boolean}\n */\nshowdown.validateExtension = function (ext) {\n 'use strict';\n\n var validateExtension = validate(ext, null);\n if (!validateExtension.valid) {\n console.warn(validateExtension.error);\n return false;\n }\n return true;\n};\n","/**\r\n * showdownjs helper functions\r\n */\r\n\r\nif (!showdown.hasOwnProperty('helper')) {\r\n showdown.helper = {};\r\n}\r\n\r\n/**\r\n * Check if var is string\r\n * @static\r\n * @param {string} a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isString = function isString(a) {\r\n 'use strict';\r\n return (typeof a === 'string' || a instanceof String);\r\n};\r\n\r\n/**\r\n * ForEach helper function\r\n * @static\r\n * @param {*} obj\r\n * @param {function} callback\r\n */\r\nshowdown.helper.forEach = function forEach(obj, callback) {\r\n 'use strict';\r\n if (typeof obj.forEach === 'function') {\r\n obj.forEach(callback);\r\n } else {\r\n for (var i = 0; i < obj.length; i++) {\r\n callback(obj[i], i, obj);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * isArray helper function\r\n * @static\r\n * @param {*} a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isArray = function isArray(a) {\r\n 'use strict';\r\n return a.constructor === Array;\r\n};\r\n\r\n/**\r\n * Check if value is undefined\r\n * @static\r\n * @param {*} value The value to check.\r\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\r\n */\r\nshowdown.helper.isUndefined = function isUndefined(value) {\r\n 'use strict';\r\n return typeof value === 'undefined';\r\n};\r\n\r\n/**\r\n * Standardidize extension name\r\n * @static\r\n * @param {string} s extension name\r\n * @returns {string}\r\n */\r\nshowdown.helper.stdExtName = function (s) {\r\n 'use strict';\r\n return s.replace(/[_-]||\\s/g, '').toLowerCase();\r\n};\r\n\r\nfunction escapeCharactersCallback(wholeMatch, m1) {\r\n 'use strict';\r\n var charCodeToEscape = m1.charCodeAt(0);\r\n return '~E' + charCodeToEscape + 'E';\r\n}\r\n\r\n/**\r\n * Callback used to escape characters when passing through String.replace\r\n * @static\r\n * @param {string} wholeMatch\r\n * @param {string} m1\r\n * @returns {string}\r\n */\r\nshowdown.helper.escapeCharactersCallback = escapeCharactersCallback;\r\n\r\n/**\r\n * Escape characters in a string\r\n * @static\r\n * @param {string} text\r\n * @param {string} charsToEscape\r\n * @param {boolean} afterBackslash\r\n * @returns {XML|string|void|*}\r\n */\r\nshowdown.helper.escapeCharacters = function escapeCharacters(text, charsToEscape, afterBackslash) {\r\n 'use strict';\r\n // First we have to escape the escape characters so that\r\n // we can build a character class out of them\r\n var regexString = '([' + charsToEscape.replace(/([\\[\\]\\\\])/g, '\\\\$1') + '])';\r\n\r\n if (afterBackslash) {\r\n regexString = '\\\\\\\\' + regexString;\r\n }\r\n\r\n var regex = new RegExp(regexString, 'g');\r\n text = text.replace(regex, escapeCharactersCallback);\r\n\r\n return text;\r\n};\r\n\r\n/**\r\n * POLYFILLS\r\n */\r\nif (showdown.helper.isUndefined(console)) {\r\n console = {\r\n warn: function (msg) {\r\n 'use strict';\r\n alert(msg);\r\n },\r\n log: function (msg) {\r\n 'use strict';\r\n alert(msg);\r\n }\r\n };\r\n}\r\n","/**\n * Created by Estevao on 31-05-2015.\n */\n\n/**\n * Showdown Converter class\n * @class\n * @param {object} [converterOptions]\n * @returns {\n * {makeHtml: Function},\n * {setOption: Function},\n * {getOption: Function},\n * {getOptions: Function}\n * }\n */\nshowdown.Converter = function (converterOptions) {\n 'use strict';\n\n var\n /**\n * Options used by this converter\n * @private\n * @type {{}}\n */\n options = {\n omitExtraWLInCodeBlocks: false,\n prefixHeaderId: false,\n noHeaderId: false\n },\n\n /**\n * Language extensions used by this converter\n * @private\n * @type {Array}\n */\n langExtensions = [],\n\n /**\n * Output modifiers extensions used by this converter\n * @private\n * @type {Array}\n */\n outputModifiers = [],\n\n /**\n * The parser Order\n * @private\n * @type {string[]}\n */\n parserOrder = [\n 'githubCodeBlocks',\n 'hashHTMLBlocks',\n 'stripLinkDefinitions',\n 'blockGamut',\n 'unescapeSpecialChars'\n ];\n\n _constructor();\n\n /**\n * Converter constructor\n * @private\n */\n function _constructor() {\n converterOptions = converterOptions || {};\n\n for (var gOpt in globalOptions) {\n if (globalOptions.hasOwnProperty(gOpt)) {\n options[gOpt] = globalOptions[gOpt];\n }\n }\n\n // Merge options\n if (typeof converterOptions === 'object') {\n for (var opt in converterOptions) {\n if (converterOptions.hasOwnProperty(opt)) {\n options[opt] = converterOptions[opt];\n }\n }\n } else {\n throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions +\n ' was passed instead.');\n }\n\n if (options.extensions) {\n showdown.helper.forEach(options.extensions, _parseExtension);\n }\n }\n\n /**\n * Parse extension\n * @param {*} ext\n * @private\n */\n function _parseExtension(ext) {\n\n // If it's a string, the extension was previously loaded\n if (showdown.helper.isString(ext)) {\n ext = showdown.helper.stdExtName(ext);\n\n // LEGACY_SUPPORT CODE\n if (showdown.extensions[ext]) {\n console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' +\n 'Please inform the developer that the extension should be updated!');\n legacyExtensionLoading(showdown.extensions[ext], ext);\n return;\n // END LEGACY SUPPORT CODE\n\n } else if (!showdown.helper.isUndefined(extensions[ext])) {\n ext = extensions[ext];\n\n } else {\n throw Error('Extension \"' + ext + '\" could not be loaded. It was either not found or is not a valid extension.');\n }\n }\n\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n if (!showdown.validateExtension(ext)) {\n return;\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n\n default:\n // should never reach here\n throw Error('Extension loader error: Type unrecognized!!!');\n }\n }\n }\n\n /**\n * LEGACY_SUPPORT\n * @param {*} ext\n * @param {string} name\n */\n function legacyExtensionLoading(ext, name) {\n if (typeof ext === 'function') {\n ext = ext(new showdown.Converter());\n }\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n var valid = validate(ext, name);\n\n if (!valid.valid) {\n throw Error(valid.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n default:// should never reach here\n throw Error('Extension loader error: Type unrecognized!!!');\n }\n }\n }\n\n /**\n * Converts a markdown string into HTML\n * @param {string} text\n * @returns {*}\n */\n this.makeHtml = function (text) {\n //check if text is not falsy\n if (!text) {\n return text;\n }\n\n var globals = {\n gHtmlBlocks: [],\n gUrls: {},\n gTitles: {},\n gListLevel: 0,\n hashLinkCounts: {},\n langExtensions: langExtensions,\n outputModifiers: outputModifiers,\n converter: this\n };\n\n // attacklab: Replace ~ with ~T\n // This lets us use tilde as an escape char to avoid md5 hashes\n // The choice of character is arbitrary; anything that isn't\n // magic in Markdown will work.\n text = text.replace(/~/g, '~T');\n\n // attacklab: Replace $ with ~D\n // RegExp interprets $ as a special character\n // when it's in a replacement string\n text = text.replace(/\\$/g, '~D');\n\n // Standardize line endings\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\n\n // Make sure text begins and ends with a couple of newlines:\n text = '\\n\\n' + text + '\\n\\n';\n\n // detab\n text = showdown.subParser('detab')(text, options, globals);\n\n // stripBlankLines\n text = showdown.subParser('stripBlankLines')(text, options, globals);\n\n //run languageExtensions\n showdown.helper.forEach(langExtensions, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // Run all registered parsers\n for (var i = 0; i < parserOrder.length; ++i) {\n var name = parserOrder[i];\n text = parsers[name](text, options, globals);\n }\n\n // attacklab: Restore dollar signs\n text = text.replace(/~D/g, '$$');\n\n // attacklab: Restore tildes\n text = text.replace(/~T/g, '~');\n\n // Run output modifiers\n showdown.helper.forEach(outputModifiers, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n return text;\n };\n\n /**\n * Set an option of this Converter instance\n * @param {string} key\n * @param {*} value\n */\n this.setOption = function (key, value) {\n options[key] = value;\n };\n\n /**\n * Get the option of this Converter instance\n * @param {string} key\n * @returns {*}\n */\n this.getOption = function (key) {\n return options[key];\n };\n\n /**\n * Get the options of this Converter instance\n * @returns {{}}\n */\n this.getOptions = function () {\n return options;\n };\n\n /**\n * Add extension to THIS converter\n * @param {{}} extension\n */\n this.addExtension = function (extension) {\n _parseExtension(extension);\n };\n\n /**\n * Use a global registered extension with THIS converter\n * @param {string} extensionName Name of the previously registered extension\n */\n this.useExtension = function (extensionName) {\n _parseExtension(extensionName);\n };\n\n /**\n * Remove an extension from THIS converter.\n * Note: This is a costly operation. It's better to initialize a new converter\n * and specify the extensions you wish to use\n * @param {Array} extension\n */\n this.removeExtension = function (extension) {\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n for (var a = 0; a < extension.length; ++a) {\n var ext = extension[a];\n for (var i = 0; i < langExtensions.length; ++i) {\n if (langExtensions[i] === ext) {\n langExtensions[i].splice(i, 1);\n }\n }\n for (var ii = 0; ii < outputModifiers.length; ++i) {\n if (outputModifiers[ii] === ext) {\n outputModifiers[ii].splice(i, 1);\n }\n }\n }\n };\n\n /**\n * Get all extension of THIS converter\n * @returns {{language: Array, output: Array}}\n */\n this.getAllExtensions = function () {\n return {\n language: langExtensions,\n output: outputModifiers\n };\n };\n};\n","/**\r\n * Turn Markdown link shortcuts into XHTML tags.\r\n */\r\nshowdown.subParser('anchors', function (text, config, globals) {\r\n 'use strict';\r\n\r\n var writeAnchorTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n if (showdown.helper.isUndefined(m7)) {\r\n m7 = '';\r\n }\r\n wholeMatch = m1;\r\n var linkText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7;\r\n\r\n if (!url) {\r\n if (!linkId) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = linkText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {\r\n url = globals.gUrls[linkId];\r\n if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {\r\n title = globals.gTitles[linkId];\r\n }\r\n } else {\r\n if (wholeMatch.search(/\\(\\s*\\)$/m) > -1) {\r\n // Special case for explicit empty url\r\n url = '';\r\n } else {\r\n return wholeMatch;\r\n }\r\n }\r\n }\r\n\r\n url = showdown.helper.escapeCharacters(url, '*_', false);\r\n var result = '';\r\n\r\n return result;\r\n };\r\n\r\n // First, handle reference-style links: [link text] [id]\r\n /*\r\n text = text.replace(/\r\n (\t\t\t\t\t\t\t// wrap whole match in $1\r\n \\[\r\n (\r\n (?:\r\n \\[[^\\]]*\\]\t\t// allow brackets nested one level\r\n |\r\n [^\\[]\t\t\t// or anything else\r\n )*\r\n )\r\n \\]\r\n\r\n [ ]?\t\t\t\t\t// one optional space\r\n (?:\\n[ ]*)?\t\t\t\t// one optional newline followed by spaces\r\n\r\n \\[\r\n (.*?)\t\t\t\t\t// id = $3\r\n \\]\r\n )()()()()\t\t\t\t\t// pad remaining backreferences\r\n /g,_DoAnchors_callback);\r\n */\r\n text = text.replace(/(\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\][ ]?(?:\\n[ ]*)?\\[(.*?)\\])()()()()/g, writeAnchorTag);\r\n\r\n //\r\n // Next, inline-style links: [link text](url \"optional title\")\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n (\t\t\t\t\t\t// wrap whole match in $1\r\n \\[\r\n (\r\n (?:\r\n \\[[^\\]]*\\]\t// allow brackets nested one level\r\n |\r\n [^\\[\\]]\t\t\t// or anything else\r\n )\r\n )\r\n \\]\r\n \\(\t\t\t\t\t\t// literal paren\r\n [ \\t]*\r\n ()\t\t\t\t\t\t// no id, so leave $3 empty\r\n ?\t\t\t\t// href = $4\r\n [ \\t]*\r\n (\t\t\t\t\t\t// $5\r\n (['\"])\t\t\t\t// quote char = $6\r\n (.*?)\t\t\t\t// Title = $7\r\n \\6\t\t\t\t\t// matching quote\r\n [ \\t]*\t\t\t\t// ignore any spaces/tabs between closing quote and )\r\n )?\t\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeAnchorTag);\r\n */\r\n text = text.replace(/(\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g,\r\n writeAnchorTag);\r\n\r\n //\r\n // Last, handle reference-style shortcuts: [link text]\r\n // These must come last in case you've also got [link test][1]\r\n // or [link test](/foo)\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ( // wrap whole match in $1\r\n \\[\r\n ([^\\[\\]]+) // link text = $2; can't contain '[' or ']'\r\n \\]\r\n )()()()()() // pad rest of backreferences\r\n /g, writeAnchorTag);\r\n */\r\n text = text.replace(/(\\[([^\\[\\]]+)\\])()()()()()/g, writeAnchorTag);\r\n\r\n return text;\r\n\r\n});\r\n","showdown.subParser('autoLinks', function (text) {\r\n 'use strict';\r\n\r\n text = text.replace(/<((https?|ftp|dict):[^'\">\\s]+)>/gi, '$1');\r\n\r\n // Email addresses: \r\n\r\n /*\r\n text = text.replace(/\r\n <\r\n (?:mailto:)?\r\n (\r\n [-.\\w]+\r\n \\@\r\n [-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+\r\n )\r\n >\r\n /gi);\r\n */\r\n var pattern = /<(?:mailto:)?([-.\\w]+\\@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi;\r\n text = text.replace(pattern, function (wholeMatch, m1) {\r\n var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1);\r\n return showdown.subParser('encodeEmailAddress')(unescapedStr);\r\n });\r\n\r\n return text;\r\n\r\n});\r\n","/**\r\n * These are all the transformations that form block-level\r\n * tags like paragraphs, headers, and list items.\r\n */\r\nshowdown.subParser('blockGamut', function (text, options, globals) {\r\n 'use strict';\r\n\r\n text = showdown.subParser('headers')(text, options, globals);\r\n\r\n // Do Horizontal Rules:\r\n var key = showdown.subParser('hashBlock')('
    ', options, globals);\r\n text = text.replace(/^[ ]{0,2}([ ]?\\*[ ]?){3,}[ \\t]*$/gm, key);\r\n text = text.replace(/^[ ]{0,2}([ ]?\\-[ ]?){3,}[ \\t]*$/gm, key);\r\n text = text.replace(/^[ ]{0,2}([ ]?\\_[ ]?){3,}[ \\t]*$/gm, key);\r\n\r\n text = showdown.subParser('lists')(text, options, globals);\r\n text = showdown.subParser('codeBlocks')(text, options, globals);\r\n text = showdown.subParser('blockQuotes')(text, options, globals);\r\n\r\n // We already ran _HashHTMLBlocks() before, in Markdown(), but that\r\n // was to escape raw HTML in the original Markdown source. This time,\r\n // we're escaping the markup we've just created, so that we don't wrap\r\n //

    tags around block-level tags.\r\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\r\n text = showdown.subParser('paragraphs')(text, options, globals);\r\n\r\n return text;\r\n\r\n});\r\n","showdown.subParser('blockQuotes', function (text, options, globals) {\r\n 'use strict';\r\n\r\n /*\r\n text = text.replace(/\r\n (\t\t\t\t\t\t\t\t// Wrap whole match in $1\r\n (\r\n ^[ \\t]*>[ \\t]?\t\t\t// '>' at the start of a line\r\n .+\\n\t\t\t\t\t// rest of the first line\r\n (.+\\n)*\t\t\t\t\t// subsequent consecutive lines\r\n \\n*\t\t\t\t\t\t// blanks\r\n )+\r\n )\r\n /gm, function(){...});\r\n */\r\n\r\n text = text.replace(/((^[ \\t]*>[ \\t]?.+\\n(.+\\n)*\\n*)+)/gm, function (wholeMatch, m1) {\r\n var bq = m1;\r\n\r\n // attacklab: hack around Konqueror 3.5.4 bug:\r\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\r\n bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, '~0'); // trim one level of quoting\r\n\r\n // attacklab: clean up hack\r\n bq = bq.replace(/~0/g, '');\r\n\r\n bq = bq.replace(/^[ \\t]+$/gm, ''); // trim whitespace-only lines\r\n bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse\r\n\r\n bq = bq.replace(/(^|\\n)/g, '$1 ');\r\n // These leading spaces screw with

     content, so we need to fix that:\r\n    bq = bq.replace(/(\\s*
    [^\\r]+?<\\/pre>)/gm, function (wholeMatch, m1) {\r\n      var pre = m1;\r\n      // attacklab: hack around Konqueror 3.5.4 bug:\r\n      pre = pre.replace(/^  /mg, '~0');\r\n      pre = pre.replace(/~0/g, '');\r\n      return pre;\r\n    });\r\n\r\n    return showdown.subParser('hashBlock')('
    \\n' + bq + '\\n
    ', options, globals);\r\n });\r\n return text;\r\n});\r\n","/**\r\n * Process Markdown `
    ` blocks.\r\n */\r\nshowdown.subParser('codeBlocks', function (text, options, globals) {\r\n  'use strict';\r\n\r\n  /*\r\n   text = text.replace(text,\r\n   /(?:\\n\\n|^)\r\n   (\t\t\t\t\t\t\t\t// $1 = the code block -- one or more lines, starting with a space/tab\r\n   (?:\r\n   (?:[ ]{4}|\\t)\t\t\t// Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width\r\n   .*\\n+\r\n   )+\r\n   )\r\n   (\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))\t// attacklab: g_tab_width\r\n   /g,function(){...});\r\n   */\r\n\r\n  // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n  text += '~0';\r\n\r\n  var pattern = /(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))/g;\r\n  text = text.replace(pattern, function (wholeMatch, m1, m2) {\r\n    var codeblock = m1,\r\n        nextChar = m2,\r\n        end = '\\n';\r\n\r\n    codeblock = showdown.subParser('outdent')(codeblock);\r\n    codeblock = showdown.subParser('encodeCode')(codeblock);\r\n    codeblock = showdown.subParser('detab')(codeblock);\r\n    codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\r\n    codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing newlines\r\n\r\n    if (options.omitExtraWLInCodeBlocks) {\r\n      end = '';\r\n    }\r\n\r\n    codeblock = '
    ' + codeblock + end + '
    ';\r\n\r\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\r\n });\r\n\r\n // attacklab: strip sentinel\r\n text = text.replace(/~0/, '');\r\n\r\n return text;\r\n});\r\n","/**\r\n *\r\n * * Backtick quotes are used for spans.\r\n *\r\n * * You can use multiple backticks as the delimiters if you want to\r\n * include literal backticks in the code span. So, this input:\r\n *\r\n * Just type ``foo `bar` baz`` at the prompt.\r\n *\r\n * Will translate to:\r\n *\r\n *

    Just type foo `bar` baz at the prompt.

    \r\n *\r\n * There's no arbitrary limit to the number of backticks you\r\n * can use as delimters. If you need three consecutive backticks\r\n * in your code, use four for delimiters, etc.\r\n *\r\n * * You can use spaces to get literal backticks at the edges:\r\n *\r\n * ... type `` `bar` `` ...\r\n *\r\n * Turns to:\r\n *\r\n * ... type `bar` ...\r\n */\r\nshowdown.subParser('codeSpans', function (text) {\r\n 'use strict';\r\n\r\n /*\r\n text = text.replace(/\r\n (^|[^\\\\])\t\t\t\t\t// Character before opening ` can't be a backslash\r\n (`+)\t\t\t\t\t\t// $2 = Opening run of `\r\n (\t\t\t\t\t\t\t// $3 = The code block\r\n [^\\r]*?\r\n [^`]\t\t\t\t\t// attacklab: work around lack of lookbehind\r\n )\r\n \\2\t\t\t\t\t\t\t// Matching closer\r\n (?!`)\r\n /gm, function(){...});\r\n */\r\n\r\n text = text.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm, function (wholeMatch, m1, m2, m3) {\r\n var c = m3;\r\n c = c.replace(/^([ \\t]*)/g, '');\t// leading whitespace\r\n c = c.replace(/[ \\t]*$/g, '');\t// trailing whitespace\r\n c = showdown.subParser('encodeCode')(c);\r\n return m1 + '' + c + '';\r\n });\r\n\r\n return text;\r\n\r\n});\r\n","/**\r\n * Convert all tabs to spaces\r\n */\r\nshowdown.subParser('detab', function (text) {\r\n 'use strict';\r\n\r\n // expand first n-1 tabs\r\n text = text.replace(/\\t(?=\\t)/g, ' '); // g_tab_width\r\n\r\n // replace the nth with two sentinels\r\n text = text.replace(/\\t/g, '~A~B');\r\n\r\n // use the sentinel to anchor our regex so it doesn't explode\r\n text = text.replace(/~B(.+?)~A/g, function (wholeMatch, m1) {\r\n var leadingText = m1,\r\n numSpaces = 4 - leadingText.length % 4; // g_tab_width\r\n\r\n // there *must* be a better way to do this:\r\n for (var i = 0; i < numSpaces; i++) {\r\n leadingText += ' ';\r\n }\r\n\r\n return leadingText;\r\n });\r\n\r\n // clean up sentinels\r\n text = text.replace(/~A/g, ' '); // g_tab_width\r\n text = text.replace(/~B/g, '');\r\n\r\n return text;\r\n\r\n});\r\n","/**\r\n * Smart processing for ampersands and angle brackets that need to be encoded.\r\n */\r\nshowdown.subParser('encodeAmpsAndAngles', function (text) {\r\n 'use strict';\r\n // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\r\n // http://bumppo.net/projects/amputator/\r\n text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, '&');\r\n\r\n // Encode naked <'s\r\n text = text.replace(/<(?![a-z\\/?\\$!])/gi, '<');\r\n\r\n return text;\r\n});\r\n","/**\r\n * Returns the string, with after processing the following backslash escape sequences.\r\n *\r\n * attacklab: The polite way to do this is with the new escapeCharacters() function:\r\n *\r\n * text = escapeCharacters(text,\"\\\\\",true);\r\n * text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\r\n *\r\n * ...but we're sidestepping its use of the (slow) RegExp constructor\r\n * as an optimization for Firefox. This function gets called a LOT.\r\n */\r\nshowdown.subParser('encodeBackslashEscapes', function (text) {\r\n 'use strict';\r\n text = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\r\n text = text.replace(/\\\\([`*_{}\\[\\]()>#+-.!])/g, showdown.helper.escapeCharactersCallback);\r\n return text;\r\n});\r\n","/**\r\n * Encode/escape certain characters inside Markdown code runs.\r\n * The point is that in code, these characters are literals,\r\n * and lose their special Markdown meanings.\r\n */\r\nshowdown.subParser('encodeCode', function (text) {\r\n 'use strict';\r\n\r\n // Encode all ampersands; HTML entities are not\r\n // entities within a Markdown code span.\r\n text = text.replace(/&/g, '&');\r\n\r\n // Do the angle bracket song and dance:\r\n text = text.replace(//g, '>');\r\n\r\n // Now, escape characters that are magic in Markdown:\r\n text = showdown.helper.escapeCharacters(text, '*_{}[]\\\\', false);\r\n\r\n // jj the line above breaks this:\r\n //---\r\n //* Item\r\n // 1. Subitem\r\n // special char: *\r\n // ---\r\n\r\n return text;\r\n});\r\n","/**\r\n * Input: an email address, e.g. \"foo@example.com\"\r\n *\r\n * Output: the email address as a mailto link, with each character\r\n * of the address encoded as either a decimal or hex entity, in\r\n * the hopes of foiling most address harvesting spam bots. E.g.:\r\n *\r\n * foo\r\n * @example.com\r\n *\r\n * Based on a filter by Matthew Wickline, posted to the BBEdit-Talk\r\n * mailing list: \r\n *\r\n */\r\nshowdown.subParser('encodeEmailAddress', function (addr) {\r\n 'use strict';\r\n\r\n var encode = [\r\n function (ch) {\r\n return '&#' + ch.charCodeAt(0) + ';';\r\n },\r\n function (ch) {\r\n return '&#x' + ch.charCodeAt(0).toString(16) + ';';\r\n },\r\n function (ch) {\r\n return ch;\r\n }\r\n ];\r\n\r\n addr = 'mailto:' + addr;\r\n\r\n addr = addr.replace(/./g, function (ch) {\r\n if (ch === '@') {\r\n // this *must* be encoded. I insist.\r\n ch = encode[Math.floor(Math.random() * 2)](ch);\r\n } else if (ch !== ':') {\r\n // leave ':' alone (to spot mailto: later)\r\n var r = Math.random();\r\n // roughly 10% raw, 45% hex, 45% dec\r\n ch = (\r\n r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)\r\n );\r\n }\r\n return ch;\r\n });\r\n\r\n addr = '' + addr + '';\r\n addr = addr.replace(/\">.+:/g, '\">'); // strip the mailto: from the visible part\r\n\r\n return addr;\r\n});\r\n","/**\r\n * Within tags -- meaning between < and > -- encode [\\ ` * _] so they\r\n * don't conflict with their use in Markdown for code, italics and strong.\r\n */\r\nshowdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text) {\r\n 'use strict';\r\n\r\n // Build a regex to find HTML tags and comments. See Friedl's\r\n // \"Mastering Regular Expressions\", 2nd Ed., pp. 200-201.\r\n var regex = /(<[a-z\\/!$](\"[^\"]*\"|'[^']*'|[^'\">])*>|)/gi;\r\n\r\n text = text.replace(regex, function (wholeMatch) {\r\n var tag = wholeMatch.replace(/(.)<\\/?code>(?=.)/g, '$1`');\r\n tag = showdown.helper.escapeCharacters(tag, '\\\\`*_', false);\r\n return tag;\r\n });\r\n\r\n return text;\r\n});\r\n","/**\r\n * Handle github codeblocks prior to running HashHTML so that\r\n * HTML contained within the codeblock gets escaped properly\r\n * Example:\r\n * ```ruby\r\n * def hello_world(x)\r\n * puts \"Hello, #{x}\"\r\n * end\r\n * ```\r\n */\r\nshowdown.subParser('githubCodeBlocks', function (text, options, globals) {\r\n 'use strict';\r\n\r\n text += '~0';\r\n\r\n text = text.replace(/(?:^|\\n)```(.*)\\n([\\s\\S]*?)\\n```/g, function (wholeMatch, m1, m2) {\r\n var language = m1,\r\n codeblock = m2,\r\n end = '\\n';\r\n\r\n if (options.omitExtraWLInCodeBlocks) {\r\n end = '';\r\n }\r\n\r\n codeblock = showdown.subParser('encodeCode')(codeblock);\r\n codeblock = showdown.subParser('detab')(codeblock);\r\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\r\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing whitespace\r\n\r\n codeblock = '
    ' + codeblock + end + '
    ';\r\n\r\n return showdown.subParser('hashBlock')(codeblock, options, globals);\r\n });\r\n\r\n // attacklab: strip sentinel\r\n text = text.replace(/~0/, '');\r\n\r\n return text;\r\n\r\n});\r\n","showdown.subParser('hashBlock', function (text, options, globals) {\r\n 'use strict';\r\n text = text.replace(/(^\\n+|\\n+$)/g, '');\r\n return '\\n\\n~K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\\n\\n';\r\n});\r\n","showdown.subParser('hashElement', function (text, options, globals) {\r\n 'use strict';\r\n\r\n return function (wholeMatch, m1) {\r\n var blockText = m1;\r\n\r\n // Undo double lines\r\n blockText = blockText.replace(/\\n\\n/g, '\\n');\r\n blockText = blockText.replace(/^\\n/, '');\r\n\r\n // strip trailing blank lines\r\n blockText = blockText.replace(/\\n+$/g, '');\r\n\r\n // Replace the element text with a marker (\"~KxK\" where x is its key)\r\n blockText = '\\n\\n~K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\\n\\n';\r\n\r\n return blockText;\r\n };\r\n});\r\n","showdown.subParser('hashHTMLBlocks', function (text, options, globals) {\r\n 'use strict';\r\n\r\n // attacklab: Double up blank lines to reduce lookaround\r\n text = text.replace(/\\n/g, '\\n\\n');\r\n\r\n // Hashify HTML blocks:\r\n // We only want to do this for block-level HTML tags, such as headers,\r\n // lists, and tables. That's because we still want to wrap

    s around\r\n // \"paragraphs\" that are wrapped in non-block-level tags, such as anchors,\r\n // phrase emphasis, and spans. The list of tags we're looking for is\r\n // hard-coded:\r\n //var block_tags_a =\r\n // 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del|style|section|header|footer|nav|article|aside';\r\n // var block_tags_b =\r\n // 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|style|section|header|footer|nav|article|aside';\r\n\r\n // First, look for nested blocks, e.g.:\r\n //

    \r\n //
    \r\n // tags for inner block must be indented.\r\n //
    \r\n //
    \r\n //\r\n // The outermost tags must start at the left margin for this to match, and\r\n // the inner nested divs must be indented.\r\n // We need to do this before the next, more liberal match, because the next\r\n // match will start at the first `
    ` and stop at the first `
    `.\r\n\r\n // attacklab: This regex can be expensive when it fails.\r\n /*\r\n var text = text.replace(/\r\n (\t\t\t\t\t\t// save in $1\r\n ^\t\t\t\t\t// start of line (with /m)\r\n <($block_tags_a)\t// start tag = $2\r\n \\b\t\t\t\t\t// word break\r\n // attacklab: hack around khtml/pcre bug...\r\n [^\\r]*?\\n\t\t\t// any number of lines, minimally matching\r\n \t\t\t\t// the matching end tag\r\n [ \\t]*\t\t\t\t// trailing spaces/tabs\r\n (?=\\n+)\t\t\t\t// followed by a newline\r\n )\t\t\t\t\t\t// attacklab: there are sentinel newlines at end of document\r\n /gm,function(){...}};\r\n */\r\n text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\\b[^\\r]*?\\n<\\/\\2>[ \\t]*(?=\\n+))/gm,\r\n showdown.subParser('hashElement')(text, options, globals));\r\n\r\n //\r\n // Now match more liberally, simply from `\\n` to `\\n`\r\n //\r\n\r\n /*\r\n var text = text.replace(/\r\n (\t\t\t\t\t\t// save in $1\r\n ^\t\t\t\t\t// start of line (with /m)\r\n <($block_tags_b)\t// start tag = $2\r\n \\b\t\t\t\t\t// word break\r\n // attacklab: hack around khtml/pcre bug...\r\n [^\\r]*?\t\t\t\t// any number of lines, minimally matching\r\n \t\t\t\t// the matching end tag\r\n [ \\t]*\t\t\t\t// trailing spaces/tabs\r\n (?=\\n+)\t\t\t\t// followed by a newline\r\n )\t\t\t\t\t\t// attacklab: there are sentinel newlines at end of document\r\n /gm,function(){...}};\r\n */\r\n text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|style|section|header|footer|nav|article|aside|address|audio|canvas|figure|hgroup|output|video)\\b[^\\r]*?<\\/\\2>[ \\t]*(?=\\n+)\\n)/gm,\r\n showdown.subParser('hashElement')(text, options, globals));\r\n\r\n // Special case just for
    . It was easier to make a special case than\r\n // to make the other regex more complicated.\r\n\r\n /*\r\n text = text.replace(/\r\n (\t\t\t\t\t\t// save in $1\r\n \\n\\n\t\t\t\t// Starting after a blank line\r\n [ ]{0,3}\r\n (<(hr)\t\t\t\t// start tag = $2\r\n \\b\t\t\t\t\t// word break\r\n ([^<>])*?\t\t\t//\r\n \\/?>)\t\t\t\t// the matching end tag\r\n [ \\t]*\r\n (?=\\n{2,})\t\t\t// followed by a blank line\r\n )\r\n /g,showdown.subParser('hashElement')(text, options, globals));\r\n */\r\n text = text.replace(/(\\n[ ]{0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,\r\n showdown.subParser('hashElement')(text, options, globals));\r\n\r\n // Special case for standalone HTML comments:\r\n\r\n /*\r\n text = text.replace(/\r\n (\t\t\t\t\t\t// save in $1\r\n \\n\\n\t\t\t\t// Starting after a blank line\r\n [ ]{0,3}\t\t\t// attacklab: g_tab_width - 1\r\n \r\n [ \\t]*\r\n (?=\\n{2,})\t\t\t// followed by a blank line\r\n )\r\n /g,showdown.subParser('hashElement')(text, options, globals));\r\n */\r\n text = text.replace(/(\\n\\n[ ]{0,3}[ \\t]*(?=\\n{2,}))/g,\r\n showdown.subParser('hashElement')(text, options, globals));\r\n\r\n // PHP and ASP-style processor instructions ( and <%...%>)\r\n\r\n /*\r\n text = text.replace(/\r\n (?:\r\n \\n\\n\t\t\t\t// Starting after a blank line\r\n )\r\n (\t\t\t\t\t\t// save in $1\r\n [ ]{0,3}\t\t\t// attacklab: g_tab_width - 1\r\n (?:\r\n <([?%])\t\t\t// $2\r\n [^\\r]*?\r\n \\2>\r\n )\r\n [ \\t]*\r\n (?=\\n{2,})\t\t\t// followed by a blank line\r\n )\r\n /g,showdown.subParser('hashElement')(text, options, globals));\r\n */\r\n text = text.replace(/(?:\\n\\n)([ ]{0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,\r\n showdown.subParser('hashElement')(text, options, globals));\r\n\r\n // attacklab: Undo double lines (see comment at top of this function)\r\n text = text.replace(/\\n\\n/g, '\\n');\r\n return text;\r\n\r\n});\r\n","showdown.subParser('headers', function (text, options, globals) {\n 'use strict';\n\n var prefixHeader = options.prefixHeaderId;\n\n // Set text-style headers:\n //\tHeader 1\n //\t========\n //\n //\tHeader 2\n //\t--------\n //\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm, function (wholeMatch, m1) {\n\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hashBlock = '' + spanGamut + '';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm, function (matchFound, m1) {\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hashBlock = '' + spanGamut + '';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n // atx-style headers:\n // # Header 1\n // ## Header 2\n // ## Header 2 with closing hashes ##\n // ...\n // ###### Header 6\n //\n\n /*\n text = text.replace(/\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\n [ \\t]*\n (.+?)\t\t\t\t\t// $2 = Header text\n [ \\t]*\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\n \\n+\n /gm, function() {...});\n */\n\n text = text.replace(/^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm, function (wholeMatch, m1, m2) {\n var span = showdown.subParser('spanGamut')(m2, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m2) + '\"',\n header = '' + span + '';\n\n return showdown.subParser('hashBlock')(header, options, globals);\n });\n\n function headerId(m) {\n var title, escapedId = m.replace(/[^\\w]/g, '').toLowerCase();\n\n if (globals.hashLinkCounts[escapedId]) {\n title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);\n } else {\n title = escapedId;\n globals.hashLinkCounts[escapedId] = 1;\n }\n\n // Prefix id to prevent causing inadvertent pre-existing style matches.\n if (prefixHeader === true) {\n prefixHeader = 'section';\n }\n\n if (showdown.helper.isString(prefixHeader)) {\n return prefixHeader + title;\n }\n return title;\n }\n\n return text;\n});\n","/**\n * Turn Markdown image shortcuts into tags.\n */\nshowdown.subParser('images', function (text, options, globals) {\n 'use strict';\n\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\n\n wholeMatch = m1;\n var altText = m2,\n linkId = m3.toLowerCase(),\n url = m4,\n title = m7,\n gUrls = globals.gUrls,\n gTitles = globals.gTitles;\n\n if (!title) {\n title = '';\n }\n\n if (url === '' || url === null) {\n if (linkId === '' || linkId === null) {\n // lower-case and turn embedded newlines into spaces\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (typeof gUrls[linkId] !== 'undefined') {\n url = gUrls[linkId];\n if (typeof gTitles[linkId] !== 'undefined') {\n title = gTitles[linkId];\n }\n } else {\n return wholeMatch;\n }\n }\n\n altText = altText.replace(/\"/g, '"');\n url = showdown.helper.escapeCharacters(url, '*_', false);\n var result = '\"'?\t\t\t// src url = $4\n [ \\t]*\n (\t\t\t\t\t// $5\n (['\"])\t\t\t// quote char = $6\n (.*?)\t\t\t// title = $7\n \\6\t\t\t\t// matching quote\n [ \\t]*\n )?\t\t\t\t\t// title is optional\n \\)\n )\n /g,writeImageTag);\n */\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\n\n return text;\n});\n","showdown.subParser('italicsAndBold', function (text) {\r\n 'use strict';\r\n // must go first:\r\n text = text.replace(/(\\*\\*|__)(?=\\S)([^\\r]*?\\S[*_]*)\\1/g, '$2');\r\n\r\n text = text.replace(/(\\*|_)(?=\\S)([^\\r]*?\\S)\\1/g, '$2');\r\n\r\n return text;\r\n});\r\n","/**\r\n * Form HTML ordered (numbered) and unordered (bulleted) lists.\r\n */\r\nshowdown.subParser('lists', function (text, options, globals) {\r\n 'use strict';\r\n\r\n /**\r\n * Process the contents of a single ordered or unordered list, splitting it\r\n * into individual list items.\r\n * @param {string} listStr\r\n * @returns {string|*}\r\n */\r\n var processListItems = function (listStr) {\r\n // The $g_list_level global keeps track of when we're inside a list.\r\n // Each time we enter a list, we increment it; when we leave a list,\r\n // we decrement. If it's zero, we're not in a list anymore.\r\n //\r\n // We do this because when we're not inside a list, we want to treat\r\n // something like this:\r\n //\r\n // I recommend upgrading to version\r\n // 8. Oops, now this line is treated\r\n // as a sub-list.\r\n //\r\n // As a single paragraph, despite the fact that the second line starts\r\n // with a digit-period-space sequence.\r\n //\r\n // Whereas when we're inside a list (or sub-list), that line will be\r\n // treated as the start of a sub-list. What a kludge, huh? This is\r\n // an aspect of Markdown's syntax that's hard to parse perfectly\r\n // without resorting to mind-reading. Perhaps the solution is to\r\n // change the syntax rules such that sub-lists must start with a\r\n // starting cardinal number; e.g. \"1.\" or \"a.\".\r\n\r\n globals.gListLevel++;\r\n\r\n // trim trailing blank lines:\r\n listStr = listStr.replace(/\\n{2,}$/, '\\n');\r\n\r\n // attacklab: add sentinel to emulate \\z\r\n listStr += '~0';\r\n\r\n /*\r\n list_str = list_str.replace(/\r\n (\\n)?\t\t\t\t\t\t\t// leading line = $1\r\n (^[ \\t]*)\t\t\t\t\t\t// leading whitespace = $2\r\n ([*+-]|\\d+[.]) [ \\t]+\t\t\t// list marker = $3\r\n ([^\\r]+?\t\t\t\t\t\t// list item text = $4\r\n (\\n{1,2}))\r\n (?= \\n* (~0 | \\2 ([*+-]|\\d+[.]) [ \\t]+))\r\n /gm, function(){...});\r\n */\r\n listStr = listStr.replace(/(\\n)?(^[ \\t]*)([*+-]|\\d+[.])[ \\t]+([^\\r]+?(\\n{1,2}))(?=\\n*(~0|\\2([*+-]|\\d+[.])[ \\t]+))/gm,\r\n function (wholeMatch, m1, m2, m3, m4) {\r\n var item = showdown.subParser('outdent')(m4, options, globals);\r\n //m1 - LeadingLine\r\n\r\n if (m1 || (item.search(/\\n{2,}/) > -1)) {\r\n item = showdown.subParser('blockGamut')(item, options, globals);\r\n } else {\r\n // Recursion for sub-lists:\r\n item = showdown.subParser('lists')(item, options, globals);\r\n item = item.replace(/\\n$/, ''); // chomp(item)\r\n item = showdown.subParser('spanGamut')(item, options, globals);\r\n }\r\n\r\n return '
  • ' + item + '
  • \\n';\r\n });\r\n\r\n // attacklab: strip sentinel\r\n listStr = listStr.replace(/~0/g, '');\r\n\r\n globals.gListLevel--;\r\n return listStr;\r\n };\r\n\r\n // attacklab: add sentinel to hack around khtml/safari bug:\r\n // http://bugs.webkit.org/show_bug.cgi?id=11231\r\n text += '~0';\r\n\r\n // Re-usable pattern to match any entirel ul or ol list:\r\n\r\n /*\r\n var whole_list = /\r\n (\t\t\t\t\t\t\t\t\t// $1 = whole list\r\n (\t\t\t\t\t\t\t\t// $2\r\n [ ]{0,3}\t\t\t\t\t// attacklab: g_tab_width - 1\r\n ([*+-]|\\d+[.])\t\t\t\t// $3 = first list item marker\r\n [ \\t]+\r\n )\r\n [^\\r]+?\r\n (\t\t\t\t\t\t\t\t// $4\r\n ~0\t\t\t\t\t\t\t// sentinel for workaround; should be $\r\n |\r\n \\n{2,}\r\n (?=\\S)\r\n (?!\t\t\t\t\t\t\t// Negative lookahead for another list item marker\r\n [ \\t]*\r\n (?:[*+-]|\\d+[.])[ \\t]+\r\n )\r\n )\r\n )/g\r\n */\r\n var wholeList = /^(([ ]{0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(~0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm;\r\n\r\n if (globals.gListLevel) {\r\n text = text.replace(wholeList, function (wholeMatch, m1, m2) {\r\n var list = m1,\r\n listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\r\n\r\n // Turn double returns into triple returns, so that we can make a\r\n // paragraph for the last item in a list, if necessary:\r\n list = list.replace(/\\n{2,}/g, '\\n\\n\\n');\r\n\r\n var result = processListItems(list);\r\n\r\n // Trim any trailing whitespace, to put the closing ``\r\n // up on the preceding line, to get it past the current stupid\r\n // HTML block parser. This is a hack to work around the terrible\r\n // hack that is the HTML block parser.\r\n result = result.replace(/\\s+$/, '');\r\n result = '<' + listType + '>' + result + '\\n';\r\n return result;\r\n });\r\n } else {\r\n wholeList = /(\\n\\n|^\\n?)(([ ]{0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(~0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/g;\r\n\r\n text = text.replace(wholeList, function (wholeMatch, m1, m2, m3) {\r\n\r\n // Turn double returns into triple returns, so that we can make a\r\n // paragraph for the last item in a list, if necessary:\r\n var list = m2.replace(/\\n{2,}/g, '\\n\\n\\n'),\r\n listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol',\r\n result = processListItems(list);\r\n\r\n return m1 + '<' + listType + '>\\n' + result + '\\n';\r\n });\r\n }\r\n\r\n // attacklab: strip sentinel\r\n text = text.replace(/~0/, '');\r\n\r\n return text;\r\n});\r\n","/**\r\n * Remove one level of line-leading tabs or spaces\r\n */\r\nshowdown.subParser('outdent', function (text) {\r\n 'use strict';\r\n\r\n // attacklab: hack around Konqueror 3.5.4 bug:\r\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\r\n text = text.replace(/^(\\t|[ ]{1,4})/gm, '~0'); // attacklab: g_tab_width\r\n\r\n // attacklab: clean up hack\r\n text = text.replace(/~0/g, '');\r\n\r\n return text;\r\n});\r\n","/**\r\n *\r\n */\r\nshowdown.subParser('paragraphs', function (text, options, globals) {\r\n 'use strict';\r\n\r\n // Strip leading and trailing lines:\r\n text = text.replace(/^\\n+/g, '');\r\n text = text.replace(/\\n+$/g, '');\r\n\r\n var grafs = text.split(/\\n{2,}/g),\r\n grafsOut = [],\r\n end = grafs.length; // Wrap

    tags\r\n\r\n for (var i = 0; i < end; i++) {\r\n var str = grafs[i];\r\n\r\n // if this is an HTML marker, copy it\r\n if (str.search(/~K(\\d+)K/g) >= 0) {\r\n grafsOut.push(str);\r\n } else if (str.search(/\\S/) >= 0) {\r\n str = showdown.subParser('spanGamut')(str, options, globals);\r\n str = str.replace(/^([ \\t]*)/g, '

    ');\r\n str += '

    ';\r\n grafsOut.push(str);\r\n }\r\n }\r\n\r\n /** Unhashify HTML blocks */\r\n end = grafsOut.length;\r\n for (i = 0; i < end; i++) {\r\n // if this is a marker for an html block...\r\n while (grafsOut[i].search(/~K(\\d+)K/) >= 0) {\r\n var blockText = globals.gHtmlBlocks[RegExp.$1];\r\n blockText = blockText.replace(/\\$/g, '$$$$'); // Escape any dollar signs\r\n grafsOut[i] = grafsOut[i].replace(/~K\\d+K/, blockText);\r\n }\r\n }\r\n\r\n return grafsOut.join('\\n\\n');\r\n});\r\n","/**\r\n * Run extension\r\n */\r\nshowdown.subParser('runExtension', function (ext, text, options, globals) {\r\n 'use strict';\r\n\r\n if (ext.filter) {\r\n text = ext.filter(text, globals.converter, options);\r\n\r\n } else if (ext.regex) {\r\n // TODO remove this when old extension loading mechanism is deprecated\r\n var re = ext.regex;\r\n if (!re instanceof RegExp) {\r\n re = new RegExp(re, 'g');\r\n }\r\n text = text.replace(re, ext.replace);\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * These are all the transformations that occur *within* block-level\r\n * tags like paragraphs, headers, and list items.\r\n */\r\nshowdown.subParser('spanGamut', function (text, options, globals) {\r\n 'use strict';\r\n\r\n text = showdown.subParser('codeSpans')(text, options, globals);\r\n text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals);\r\n text = showdown.subParser('encodeBackslashEscapes')(text, options, globals);\r\n\r\n // Process anchor and image tags. Images must come first,\r\n // because ![foo][f] looks like an anchor.\r\n text = showdown.subParser('images')(text, options, globals);\r\n text = showdown.subParser('anchors')(text, options, globals);\r\n\r\n // Make links out of things like ``\r\n // Must come after _DoAnchors(), because you can use < and >\r\n // delimiters in inline links like [this]().\r\n text = showdown.subParser('autoLinks')(text, options, globals);\r\n text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals);\r\n text = showdown.subParser('italicsAndBold')(text, options, globals);\r\n\r\n // Do hard breaks:\r\n text = text.replace(/ +\\n/g, '
    \\n');\r\n\r\n return text;\r\n\r\n});\r\n","/**\r\n * Strip any lines consisting only of spaces and tabs.\r\n * This makes subsequent regexs easier to write, because we can\r\n * match consecutive blank lines with /\\n+/ instead of something\r\n * contorted like /[ \\t]*\\n+/\r\n */\r\nshowdown.subParser('stripBlankLines', function (text) {\r\n 'use strict';\r\n return text.replace(/^[ \\t]+$/mg, '');\r\n});\r\n","/**\n * Strips link definitions from text, stores the URLs and titles in\n * hash references.\n * Link defs are in the form: ^[id]: url \"optional title\"\n *\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\n * [ \\t]*\n * \\n? // maybe *one* newline\n * [ \\t]*\n * ? // url = $2\n * [ \\t]*\n * \\n? // maybe one newline\n * [ \\t]*\n * (?:\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\n * [\"(]\n * (.+?) // title = $4\n * [\")]\n * [ \\t]*\n * )? // title is optional\n * (?:\\n+|$)\n * /gm,\n * function(){...});\n *\n */\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\n 'use strict';\n\n var regex = /^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n+|(?=~0))/gm;\n\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '~0';\n\n text = text.replace(regex, function (wholeMatch, m1, m2, m3, m4) {\n m1 = m1.toLowerCase();\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\n if (m3) {\n // Oops, found blank lines, so it's not a title.\n // Put back the parenthetical statement we stole.\n return m3 + m4;\n\n } else if (m4) {\n globals.gTitles[m1] = m4.replace(/\"|'/g, '"');\n }\n\n // Completely remove the definition from the text\n return '';\n });\n\n // attacklab: strip sentinel\n text = text.replace(/~0/, '');\n\n return text;\n});\n","/**\r\n * Swap back in all the special characters we've hidden.\r\n */\r\nshowdown.subParser('unescapeSpecialChars', function (text) {\r\n 'use strict';\r\n\r\n text = text.replace(/~E(\\d+)E/g, function (wholeMatch, m1) {\r\n var charCodeToReplace = parseInt(m1);\r\n return String.fromCharCode(charCodeToReplace);\r\n });\r\n return text;\r\n});\r\n","var root = this;\r\n\r\n// CommonJS/nodeJS Loader\r\nif (typeof module !== 'undefined' && module.exports) {\r\n module.exports = showdown;\r\n\r\n// AMD Loader\r\n} else if (typeof define === 'function' && define.amd) {\r\n define('showdown', function () {\r\n 'use strict';\r\n return showdown;\r\n });\r\n\r\n// Regular Browser loader\r\n} else {\r\n root.showdown = showdown;\r\n}\r\n"]} \ No newline at end of file diff --git a/dist/showdown.min.js b/dist/showdown.min.js index aea8455..b7a711f 100644 --- a/dist/showdown.min.js +++ b/dist/showdown.min.js @@ -1,4 +1,4 @@ -/*! showdown 08-06-2015 */ +/*! showdown 11-06-2015 */ -(function(){function a(a,b){"use strict";var d=b?"Error in "+b+" extension->":"Error in unnamed extension",e={valid:!0,error:""};c.helper.isArray(a)||(a=[a]);for(var f=0;f-1))return a;m=""}else m=d.gUrls[l],c.helper.isUndefined(d.gTitles[l])||(n=d.gTitles[l]);m=c.helper.escapeCharacters(m,"*_",!1);var o='"};return a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,e),a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,e),a=a.replace(/(\[([^\[\]]+)\])()()()()()/g,e)}),c.subParser("autoLinks",function(a){"use strict";a=a.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'$1');var b=/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi;return a=a.replace(b,function(a,b){var d=c.subParser("unescapeSpecialChars")(b);return c.subParser("encodeEmailAddress")(d)})}),c.subParser("blockGamut",function(a,b,d){"use strict";a=c.subParser("headers")(a,b,d);var e=c.subParser("hashBlock")("
    ",b,d);return a=a.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,e),a=a.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,e),a=a.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,e),a=c.subParser("lists")(a,b,d),a=c.subParser("codeBlocks")(a,b,d),a=c.subParser("blockQuotes")(a,b,d),a=c.subParser("hashHTMLBlocks")(a,b,d),a=c.subParser("paragraphs")(a,b,d)}),c.subParser("blockQuotes",function(a,b,d){"use strict";return a=a.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(a,e){var f=e;return f=f.replace(/^[ \t]*>[ \t]?/gm,"~0"),f=f.replace(/~0/g,""),f=f.replace(/^[ \t]+$/gm,""),f=c.subParser("blockGamut")(f,b,d),f=f.replace(/(^|\n)/g,"$1 "),f=f.replace(/(\s*
    [^\r]+?<\/pre>)/gm,function(a,b){var c=b;return c=c.replace(/^  /gm,"~0"),c=c.replace(/~0/g,"")}),c.subParser("hashBlock")("
    \n"+f+"\n
    ",b,d)})}),c.subParser("codeBlocks",function(a,b,d){"use strict";a+="~0";var e=/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g;return a=a.replace(e,function(a,e,f){var g=e,h=f,i="\n";return g=c.subParser("outdent")(g),g=c.subParser("encodeCode")(g),g=c.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),b.omitExtraWLInCodeBlocks&&(i=""),g="
    "+g+i+"
    ",c.subParser("hashBlock")(g,b,d)+h}),a=a.replace(/~0/,"")}),c.subParser("codeSpans",function(a){"use strict";return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,d,e){var f=e;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=c.subParser("encodeCode")(f),b+""+f+""})}),c.subParser("detab",function(a){"use strict";return a=a.replace(/\t(?=\t)/g," "),a=a.replace(/\t/g,"~A~B"),a=a.replace(/~B(.+?)~A/g,function(a,b){for(var c=b,d=4-c.length%4,e=0;d>e;e++)c+=" ";return c}),a=a.replace(/~A/g," "),a=a.replace(/~B/g,"")}),c.subParser("encodeAmpsAndAngles",function(a){"use strict";return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),c.subParser("encodeBackslashEscapes",function(a){"use strict";return a=a.replace(/\\(\\)/g,c.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,c.helper.escapeCharactersCallback)}),c.subParser("encodeCode",function(a){"use strict";return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=c.helper.escapeCharacters(a,"*_{}[]\\",!1)}),c.subParser("encodeEmailAddress",function(a){"use strict";var b=[function(a){return"&#"+a.charCodeAt(0)+";"},function(a){return"&#x"+a.charCodeAt(0).toString(16)+";"},function(a){return a}];return a="mailto:"+a,a=a.replace(/./g,function(a){if("@"===a)a=b[Math.floor(2*Math.random())](a);else if(":"!==a){var c=Math.random();a=c>.9?b[2](a):c>.45?b[1](a):b[0](a)}return a}),a=''+a+"",a=a.replace(/">.+:/g,'">')}),c.subParser("escapeSpecialCharsWithinTagAttributes",function(a){"use strict";var b=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;return a=a.replace(b,function(a){var b=a.replace(/(.)<\/?code>(?=.)/g,"$1`");return b=c.helper.escapeCharacters(b,"\\`*_",!1)})}),c.subParser("githubCodeBlocks",function(a,b,d){"use strict";return a+="~0",a=a.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,function(a,e,f){var g=e,h=f,i="\n";return b.omitExtraWLInCodeBlocks&&(i=""),h=c.subParser("encodeCode")(h),h=c.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",c.subParser("hashBlock")(h,b,d)}),a=a.replace(/~0/,"")}),c.subParser("hashBlock",function(a,b,c){"use strict";return a=a.replace(/(^\n+|\n+$)/g,""),"\n\n~K"+(c.gHtmlBlocks.push(a)-1)+"K\n\n"}),c.subParser("hashElement",function(a,b,c){"use strict";return function(a,b){var d=b;return d=d.replace(/\n\n/g,"\n"),d=d.replace(/^\n/,""),d=d.replace(/\n+$/g,""),d="\n\n~K"+(c.gHtmlBlocks.push(d)-1)+"K\n\n"}}),c.subParser("hashHTMLBlocks",function(a,b,d){"use strict";return a=a.replace(/\n/g,"\n\n"),a=a.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm,c.subParser("hashElement")(a,b,d)),a=a.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|style|section|header|footer|nav|article|aside|address|audio|canvas|figure|hgroup|output|video)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,c.subParser("hashElement")(a,b,d)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,c.subParser("hashElement")(a,b,d)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,c.subParser("hashElement")(a,b,d)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,c.subParser("hashElement")(a,b,d)),a=a.replace(/\n\n/g,"\n")}),c.subParser("headers",function(a,b,d){"use strict";function e(a){var b,e=a.replace(/[^\w]/g,"").toLowerCase();return d.hashLinkCounts[e]?b=e+"-"+d.hashLinkCounts[e]++:(b=e,d.hashLinkCounts[e]=1),f===!0&&(f="section"),c.helper.isString(f)?f+b:b}var f=b.prefixHeaderId;return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){var g=c.subParser("spanGamut")(f,b,d),h=b.noHeaderId?"":' id="'+e(f)+'"',i=""+g+"";return c.subParser("hashBlock")(i,b,d)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){var g=c.subParser("spanGamut")(f,b,d),h=b.noHeaderId?"":' id="'+e(f)+'"',i=""+g+"";return c.subParser("hashBlock")(i,b,d)}),a=a.replace(/^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm,function(a,f,g){var h=c.subParser("spanGamut")(g,b,d),i=b.noHeaderId?"":' id="'+e(g)+'"',j=""+h+"";return c.subParser("hashBlock")(j,b,d)})}),c.subParser("images",function(a,b,d){"use strict";var e=function(a,b,e,f,g,h,i,j){a=b;var k=e,l=f.toLowerCase(),m=g,n=j,o=d.gUrls,p=d.gTitles;if(n||(n=""),""===m||null===m){if((""===l||null===l)&&(l=k.toLowerCase().replace(/ ?\n/g," ")),m="#"+l,"undefined"==typeof o[l])return a;m=o[l],"undefined"!=typeof p[l]&&(n=p[l])}k=k.replace(/"/g,"""),m=c.helper.escapeCharacters(m,"*_",!1);var q=''+k+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,e)}),c.subParser("italicsAndBold",function(a){"use strict";return a=a.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"$2"),a=a.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"$2")}),c.subParser("lists",function(a,b,d){"use strict";var e=function(a){return d.gListLevel++,a=a.replace(/\n{2,}$/,"\n"),a+="~0",a=a.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm,function(a,e,f,g,h){var i=c.subParser("outdent")(h,b,d);return e||i.search(/\n{2,}/)>-1?i=c.subParser("blockGamut")(i,b,d):(i=c.subParser("lists")(i,b,d),i=i.replace(/\n$/,""),i=c.subParser("spanGamut")(i,b,d)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),d.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return d.gListLevel?a=a.replace(f,function(a,b,c){var d=b,f=c.search(/[*+-]/g)>-1?"ul":"ol";d=d.replace(/\n{2,}/g,"\n\n\n");var g=e(d);return g=g.replace(/\s+$/,""),g="<"+f+">"+g+"\n"}):(f=/(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g,a=a.replace(f,function(a,b,c,d){var f=c.replace(/\n{2,}/g,"\n\n\n"),g=d.search(/[*+-]/g)>-1?"ul":"ol",h=e(f);return b+"<"+g+">\n"+h+"\n"})),a=a.replace(/~0/,"")}),c.subParser("outdent",function(a){"use strict";return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),c.subParser("paragraphs",function(a,b,d){"use strict";a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,"");for(var e=a.split(/\n{2,}/g),f=[],g=e.length,h=0;g>h;h++){var i=e[h];i.search(/~K(\d+)K/g)>=0?f.push(i):i.search(/\S/)>=0&&(i=c.subParser("spanGamut")(i,b,d),i=i.replace(/^([ \t]*)/g,"

    "),i+="

    ",f.push(i))}for(g=f.length,h=0;g>h;h++)for(;f[h].search(/~K(\d+)K/)>=0;){var j=d.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),c.subParser("runExtension",function(a,b,c,d){"use strict";if(a.filter)b=a.filter(b,d.converter,c);else if(a.regex){var e=a.regex;!e instanceof RegExp&&(e=new RegExp(e,"g")),b=b.replace(e,a.replace)}return b}),c.subParser("spanGamut",function(a,b,d){"use strict";return a=c.subParser("codeSpans")(a,b,d),a=c.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,d),a=c.subParser("encodeBackslashEscapes")(a,b,d),a=c.subParser("images")(a,b,d),a=c.subParser("anchors")(a,b,d),a=c.subParser("autoLinks")(a,b,d),a=c.subParser("encodeAmpsAndAngles")(a,b,d),a=c.subParser("italicsAndBold")(a,b,d),a=a.replace(/ +\n/g,"
    \n")}),c.subParser("stripBlankLines",function(a){"use strict";return a.replace(/^[ \t]+$/gm,"")}),c.subParser("stripLinkDefinitions",function(a,b,d){"use strict";var e=/^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=~0))/gm;return a+="~0",a=a.replace(e,function(a,b,e,f,g){return b=b.toLowerCase(),d.gUrls[b]=c.subParser("encodeAmpsAndAngles")(e),f?f+g:(g&&(d.gTitles[b]=g.replace(/"|'/g,""")),"")}),a=a.replace(/~0/,"")}),c.subParser("unescapeSpecialChars",function(a){"use strict";return a=a.replace(/~E(\d+)E/g,function(a,b){var c=parseInt(b);return String.fromCharCode(c)})});var h=this;"undefined"!=typeof module&&module.exports?module.exports=c:"function"==typeof define&&define.amd?define("showdown",function(){"use strict";return c}):h.showdown=c}).call(this); +(function(){function a(a,b){"use strict";var d=b?"Error in "+b+" extension->":"Error in unnamed extension",e={valid:!0,error:""};c.helper.isArray(a)||(a=[a]);for(var f=0;f-1))return a;m=""}else m=d.gUrls[l],c.helper.isUndefined(d.gTitles[l])||(n=d.gTitles[l]);m=c.helper.escapeCharacters(m,"*_",!1);var o='"};return a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,e),a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,e),a=a.replace(/(\[([^\[\]]+)\])()()()()()/g,e)}),c.subParser("autoLinks",function(a){"use strict";a=a.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'$1');var b=/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi;return a=a.replace(b,function(a,b){var d=c.subParser("unescapeSpecialChars")(b);return c.subParser("encodeEmailAddress")(d)})}),c.subParser("blockGamut",function(a,b,d){"use strict";a=c.subParser("headers")(a,b,d);var e=c.subParser("hashBlock")("
    ",b,d);return a=a.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,e),a=a.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,e),a=a.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,e),a=c.subParser("lists")(a,b,d),a=c.subParser("codeBlocks")(a,b,d),a=c.subParser("blockQuotes")(a,b,d),a=c.subParser("hashHTMLBlocks")(a,b,d),a=c.subParser("paragraphs")(a,b,d)}),c.subParser("blockQuotes",function(a,b,d){"use strict";return a=a.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(a,e){var f=e;return f=f.replace(/^[ \t]*>[ \t]?/gm,"~0"),f=f.replace(/~0/g,""),f=f.replace(/^[ \t]+$/gm,""),f=c.subParser("blockGamut")(f,b,d),f=f.replace(/(^|\n)/g,"$1 "),f=f.replace(/(\s*
    [^\r]+?<\/pre>)/gm,function(a,b){var c=b;return c=c.replace(/^  /gm,"~0"),c=c.replace(/~0/g,"")}),c.subParser("hashBlock")("
    \n"+f+"\n
    ",b,d)})}),c.subParser("codeBlocks",function(a,b,d){"use strict";a+="~0";var e=/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g;return a=a.replace(e,function(a,e,f){var g=e,h=f,i="\n";return g=c.subParser("outdent")(g),g=c.subParser("encodeCode")(g),g=c.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),b.omitExtraWLInCodeBlocks&&(i=""),g="
    "+g+i+"
    ",c.subParser("hashBlock")(g,b,d)+h}),a=a.replace(/~0/,"")}),c.subParser("codeSpans",function(a){"use strict";return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,d,e){var f=e;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=c.subParser("encodeCode")(f),b+""+f+""})}),c.subParser("detab",function(a){"use strict";return a=a.replace(/\t(?=\t)/g," "),a=a.replace(/\t/g,"~A~B"),a=a.replace(/~B(.+?)~A/g,function(a,b){for(var c=b,d=4-c.length%4,e=0;d>e;e++)c+=" ";return c}),a=a.replace(/~A/g," "),a=a.replace(/~B/g,"")}),c.subParser("encodeAmpsAndAngles",function(a){"use strict";return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),c.subParser("encodeBackslashEscapes",function(a){"use strict";return a=a.replace(/\\(\\)/g,c.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,c.helper.escapeCharactersCallback)}),c.subParser("encodeCode",function(a){"use strict";return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=c.helper.escapeCharacters(a,"*_{}[]\\",!1)}),c.subParser("encodeEmailAddress",function(a){"use strict";var b=[function(a){return"&#"+a.charCodeAt(0)+";"},function(a){return"&#x"+a.charCodeAt(0).toString(16)+";"},function(a){return a}];return a="mailto:"+a,a=a.replace(/./g,function(a){if("@"===a)a=b[Math.floor(2*Math.random())](a);else if(":"!==a){var c=Math.random();a=c>.9?b[2](a):c>.45?b[1](a):b[0](a)}return a}),a=''+a+"",a=a.replace(/">.+:/g,'">')}),c.subParser("escapeSpecialCharsWithinTagAttributes",function(a){"use strict";var b=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;return a=a.replace(b,function(a){var b=a.replace(/(.)<\/?code>(?=.)/g,"$1`");return b=c.helper.escapeCharacters(b,"\\`*_",!1)})}),c.subParser("githubCodeBlocks",function(a,b,d){"use strict";return a+="~0",a=a.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,function(a,e,f){var g=e,h=f,i="\n";return b.omitExtraWLInCodeBlocks&&(i=""),h=c.subParser("encodeCode")(h),h=c.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",c.subParser("hashBlock")(h,b,d)}),a=a.replace(/~0/,"")}),c.subParser("hashBlock",function(a,b,c){"use strict";return a=a.replace(/(^\n+|\n+$)/g,""),"\n\n~K"+(c.gHtmlBlocks.push(a)-1)+"K\n\n"}),c.subParser("hashElement",function(a,b,c){"use strict";return function(a,b){var d=b;return d=d.replace(/\n\n/g,"\n"),d=d.replace(/^\n/,""),d=d.replace(/\n+$/g,""),d="\n\n~K"+(c.gHtmlBlocks.push(d)-1)+"K\n\n"}}),c.subParser("hashHTMLBlocks",function(a,b,d){"use strict";return a=a.replace(/\n/g,"\n\n"),a=a.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm,c.subParser("hashElement")(a,b,d)),a=a.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|style|section|header|footer|nav|article|aside|address|audio|canvas|figure|hgroup|output|video)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,c.subParser("hashElement")(a,b,d)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,c.subParser("hashElement")(a,b,d)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,c.subParser("hashElement")(a,b,d)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,c.subParser("hashElement")(a,b,d)),a=a.replace(/\n\n/g,"\n")}),c.subParser("headers",function(a,b,d){"use strict";function e(a){var b,e=a.replace(/[^\w]/g,"").toLowerCase();return d.hashLinkCounts[e]?b=e+"-"+d.hashLinkCounts[e]++:(b=e,d.hashLinkCounts[e]=1),f===!0&&(f="section"),c.helper.isString(f)?f+b:b}var f=b.prefixHeaderId;return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){var g=c.subParser("spanGamut")(f,b,d),h=b.noHeaderId?"":' id="'+e(f)+'"',i=""+g+"";return c.subParser("hashBlock")(i,b,d)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){var g=c.subParser("spanGamut")(f,b,d),h=b.noHeaderId?"":' id="'+e(f)+'"',i=""+g+"";return c.subParser("hashBlock")(i,b,d)}),a=a.replace(/^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm,function(a,f,g){var h=c.subParser("spanGamut")(g,b,d),i=b.noHeaderId?"":' id="'+e(g)+'"',j=""+h+"";return c.subParser("hashBlock")(j,b,d)})}),c.subParser("images",function(a,b,d){"use strict";var e=function(a,b,e,f,g,h,i,j){a=b;var k=e,l=f.toLowerCase(),m=g,n=j,o=d.gUrls,p=d.gTitles;if(n||(n=""),""===m||null===m){if((""===l||null===l)&&(l=k.toLowerCase().replace(/ ?\n/g," ")),m="#"+l,"undefined"==typeof o[l])return a;m=o[l],"undefined"!=typeof p[l]&&(n=p[l])}k=k.replace(/"/g,"""),m=c.helper.escapeCharacters(m,"*_",!1);var q=''+k+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,e)}),c.subParser("italicsAndBold",function(a){"use strict";return a=a.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"$2"),a=a.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"$2")}),c.subParser("lists",function(a,b,d){"use strict";var e=function(a){return d.gListLevel++,a=a.replace(/\n{2,}$/,"\n"),a+="~0",a=a.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm,function(a,e,f,g,h){var i=c.subParser("outdent")(h,b,d);return e||i.search(/\n{2,}/)>-1?i=c.subParser("blockGamut")(i,b,d):(i=c.subParser("lists")(i,b,d),i=i.replace(/\n$/,""),i=c.subParser("spanGamut")(i,b,d)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),d.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return d.gListLevel?a=a.replace(f,function(a,b,c){var d=b,f=c.search(/[*+-]/g)>-1?"ul":"ol";d=d.replace(/\n{2,}/g,"\n\n\n");var g=e(d);return g=g.replace(/\s+$/,""),g="<"+f+">"+g+"\n"}):(f=/(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g,a=a.replace(f,function(a,b,c,d){var f=c.replace(/\n{2,}/g,"\n\n\n"),g=d.search(/[*+-]/g)>-1?"ul":"ol",h=e(f);return b+"<"+g+">\n"+h+"\n"})),a=a.replace(/~0/,"")}),c.subParser("outdent",function(a){"use strict";return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),c.subParser("paragraphs",function(a,b,d){"use strict";a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,"");for(var e=a.split(/\n{2,}/g),f=[],g=e.length,h=0;g>h;h++){var i=e[h];i.search(/~K(\d+)K/g)>=0?f.push(i):i.search(/\S/)>=0&&(i=c.subParser("spanGamut")(i,b,d),i=i.replace(/^([ \t]*)/g,"

    "),i+="

    ",f.push(i))}for(g=f.length,h=0;g>h;h++)for(;f[h].search(/~K(\d+)K/)>=0;){var j=d.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),c.subParser("runExtension",function(a,b,c,d){"use strict";if(a.filter)b=a.filter(b,d.converter,c);else if(a.regex){var e=a.regex;!e instanceof RegExp&&(e=new RegExp(e,"g")),b=b.replace(e,a.replace)}return b}),c.subParser("spanGamut",function(a,b,d){"use strict";return a=c.subParser("codeSpans")(a,b,d),a=c.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,d),a=c.subParser("encodeBackslashEscapes")(a,b,d),a=c.subParser("images")(a,b,d),a=c.subParser("anchors")(a,b,d),a=c.subParser("autoLinks")(a,b,d),a=c.subParser("encodeAmpsAndAngles")(a,b,d),a=c.subParser("italicsAndBold")(a,b,d),a=a.replace(/ +\n/g,"
    \n")}),c.subParser("stripBlankLines",function(a){"use strict";return a.replace(/^[ \t]+$/gm,"")}),c.subParser("stripLinkDefinitions",function(a,b,d){"use strict";var e=/^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=~0))/gm;return a+="~0",a=a.replace(e,function(a,b,e,f,g){return b=b.toLowerCase(),d.gUrls[b]=c.subParser("encodeAmpsAndAngles")(e),f?f+g:(g&&(d.gTitles[b]=g.replace(/"|'/g,""")),"")}),a=a.replace(/~0/,"")}),c.subParser("unescapeSpecialChars",function(a){"use strict";return a=a.replace(/~E(\d+)E/g,function(a,b){var c=parseInt(b);return String.fromCharCode(c)})});var h=this;"undefined"!=typeof module&&module.exports?module.exports=c:"function"==typeof define&&define.amd?define("showdown",function(){"use strict";return c}):h.showdown=c}).call(this); //# sourceMappingURL=showdown.min.js.map \ No newline at end of file diff --git a/dist/showdown.min.js.map b/dist/showdown.min.js.map index 0f4c21c..7e23917 100644 --- a/dist/showdown.min.js.map +++ b/dist/showdown.min.js.map @@ -1 +1 @@ -{"version":3,"file":"showdown.min.js","sources":["showdown.js"],"names":["validate","extension","name","errMsg","ret","valid","error","showdown","helper","isArray","i","length","baseMsg","ext","isString","type","toLowerCase","filter","regex","RegExp","isUndefined","replace","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","parsers","extensions","defaultOptions","omitExtraWLInCodeBlocks","prefixHeaderId","noHeaderId","globalOptions","JSON","parse","stringify","setOption","key","value","this","getOption","getOptions","resetOptions","subParser","func","hasOwnProperty","Error","stdExtName","validExtension","getAllExtensions","removeExtension","resetExtensions","validateExtension","console","warn","a","String","forEach","obj","callback","constructor","Array","s","escapeCharacters","text","charsToEscape","afterBackslash","regexString","msg","alert","log","Converter","converterOptions","_constructor","gOpt","options","opt","_parseExtension","legacyExtensionLoading","langExtensions","push","outputModifiers","parserOrder","makeHtml","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","hashLinkCounts","converter","addExtension","useExtension","extensionName","splice","ii","language","output","config","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","url","title","search","result","pattern","unescapedStr","bq","pre","codeblock","nextChar","end","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","blockText","headerId","m","escapedId","prefixHeader","spanGamut","hID","hashBlock","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","split","grafsOut","str","$1","join","re","charCodeToReplace","parseInt","fromCharCode","root","module","exports","define","amd","call"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"showdown.min.js","sources":["showdown.js"],"names":["validate","extension","name","errMsg","ret","valid","error","showdown","helper","isArray","i","length","baseMsg","ext","isString","type","toLowerCase","filter","regex","RegExp","isUndefined","replace","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","parsers","extensions","defaultOptions","omitExtraWLInCodeBlocks","prefixHeaderId","noHeaderId","globalOptions","JSON","parse","stringify","setOption","key","value","this","getOption","getOptions","resetOptions","subParser","func","hasOwnProperty","Error","stdExtName","validExtension","getAllExtensions","removeExtension","resetExtensions","validateExtension","console","warn","a","String","forEach","obj","callback","constructor","Array","s","escapeCharacters","text","charsToEscape","afterBackslash","regexString","msg","alert","log","Converter","converterOptions","_constructor","gOpt","options","opt","_parseExtension","legacyExtensionLoading","langExtensions","push","outputModifiers","parserOrder","makeHtml","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","hashLinkCounts","converter","addExtension","useExtension","extensionName","splice","ii","language","output","config","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","url","title","search","result","pattern","unescapedStr","bq","pre","codeblock","nextChar","end","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","blockText","headerId","m","escapedId","prefixHeader","spanGamut","hID","hashBlock","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","split","grafsOut","str","$1","join","re","charCodeToReplace","parseInt","fromCharCode","root","module","exports","define","amd","call"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 910a834..c420360 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "grunt-conventional-changelog": "^1.1.0", "grunt-jscs": "^1.2.0", "grunt-simple-mocha": "^0.4.0", + "js-beautify": "^1.5.6", "jscs": "^1.10.0", "load-grunt-tasks": "^3.2.0", "mocha": "*", diff --git a/src/subParsers/images.js b/src/subParsers/images.js index 26d964f..9e66f11 100644 --- a/src/subParsers/images.js +++ b/src/subParsers/images.js @@ -39,7 +39,7 @@ showdown.subParser('images', function (text, options, globals) { url = showdown.helper.escapeCharacters(url, '*_', false); var result = '' + altText + 'This is a first paragraph, +on multiple lines.

    + +

    This is a second paragraph. +There are spaces in between the two.

    \ No newline at end of file diff --git a/test/karlcow/2-paragraphs-hard-return-spaces.md b/test/karlcow/2-paragraphs-hard-return-spaces.md new file mode 100644 index 0000000..77ecf1e --- /dev/null +++ b/test/karlcow/2-paragraphs-hard-return-spaces.md @@ -0,0 +1,5 @@ +This is a first paragraph, +on multiple lines. + +This is a second paragraph. +There are spaces in between the two. \ No newline at end of file diff --git a/test/karlcow/2-paragraphs-hard-return.html b/test/karlcow/2-paragraphs-hard-return.html new file mode 100644 index 0000000..5da1c69 --- /dev/null +++ b/test/karlcow/2-paragraphs-hard-return.html @@ -0,0 +1,5 @@ +

    This is a first paragraph, +on multiple lines.

    + +

    This is a second paragraph +which has multiple lines too.

    \ No newline at end of file diff --git a/test/karlcow/2-paragraphs-hard-return.md b/test/karlcow/2-paragraphs-hard-return.md new file mode 100644 index 0000000..7e103ad --- /dev/null +++ b/test/karlcow/2-paragraphs-hard-return.md @@ -0,0 +1,5 @@ +This is a first paragraph, +on multiple lines. + +This is a second paragraph +which has multiple lines too. \ No newline at end of file diff --git a/test/karlcow/2-paragraphs-line-returns.html b/test/karlcow/2-paragraphs-line-returns.html new file mode 100644 index 0000000..89f0e94 --- /dev/null +++ b/test/karlcow/2-paragraphs-line-returns.html @@ -0,0 +1,3 @@ +

    A first paragraph.

    + +

    A second paragraph after 3 CR (carriage return).

    \ No newline at end of file diff --git a/test/karlcow/2-paragraphs-line-returns.md b/test/karlcow/2-paragraphs-line-returns.md new file mode 100644 index 0000000..6eefed1 --- /dev/null +++ b/test/karlcow/2-paragraphs-line-returns.md @@ -0,0 +1,5 @@ +A first paragraph. + + + +A second paragraph after 3 CR (carriage return). \ No newline at end of file diff --git a/test/karlcow/2-paragraphs-line-spaces.html b/test/karlcow/2-paragraphs-line-spaces.html new file mode 100644 index 0000000..39270cc --- /dev/null +++ b/test/karlcow/2-paragraphs-line-spaces.html @@ -0,0 +1,3 @@ +

    This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph on 1 line.

    + +

    A few spaces and a new long long long long long long long long long long long long long long long long paragraph on 1 line.

    \ No newline at end of file diff --git a/test/karlcow/2-paragraphs-line-spaces.md b/test/karlcow/2-paragraphs-line-spaces.md new file mode 100644 index 0000000..59b9c3c --- /dev/null +++ b/test/karlcow/2-paragraphs-line-spaces.md @@ -0,0 +1,3 @@ +This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph on 1 line. + +A few spaces and a new long long long long long long long long long long long long long long long long paragraph on 1 line. \ No newline at end of file diff --git a/test/karlcow/2-paragraphs-line-tab.html b/test/karlcow/2-paragraphs-line-tab.html new file mode 100644 index 0000000..6ba5a11 --- /dev/null +++ b/test/karlcow/2-paragraphs-line-tab.html @@ -0,0 +1,3 @@ +

    This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph on 1 line.

    + +

    1 tab to separate them and a new long long long long long long long long long long long long long long long long paragraph on 1 line.

    \ No newline at end of file diff --git a/test/karlcow/2-paragraphs-line-tab.md b/test/karlcow/2-paragraphs-line-tab.md new file mode 100644 index 0000000..9dcc229 --- /dev/null +++ b/test/karlcow/2-paragraphs-line-tab.md @@ -0,0 +1,3 @@ +This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph on 1 line. + +1 tab to separate them and a new long long long long long long long long long long long long long long long long paragraph on 1 line. \ No newline at end of file diff --git a/test/karlcow/2-paragraphs-line.html b/test/karlcow/2-paragraphs-line.html new file mode 100644 index 0000000..8812518 --- /dev/null +++ b/test/karlcow/2-paragraphs-line.html @@ -0,0 +1,3 @@ +

    This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph on 1 line.

    + +

    A new long long long long long long long long long long long long long long long long paragraph on 1 line.

    \ No newline at end of file diff --git a/test/karlcow/2-paragraphs-line.md b/test/karlcow/2-paragraphs-line.md new file mode 100644 index 0000000..4cff3ed --- /dev/null +++ b/test/karlcow/2-paragraphs-line.md @@ -0,0 +1,3 @@ +This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph on 1 line. + +A new long long long long long long long long long long long long long long long long paragraph on 1 line. \ No newline at end of file diff --git a/test/karlcow/EOL-CR+LF.html b/test/karlcow/EOL-CR+LF.html new file mode 100644 index 0000000..c236b1d --- /dev/null +++ b/test/karlcow/EOL-CR+LF.html @@ -0,0 +1,5 @@ +

    These lines all end with end of line (EOL) sequences.

    + +

    Seriously, they really do.

    + +

    If you don't believe me: HEX EDIT!

    \ No newline at end of file diff --git a/test/karlcow/EOL-CR+LF.md b/test/karlcow/EOL-CR+LF.md new file mode 100644 index 0000000..15cb86e --- /dev/null +++ b/test/karlcow/EOL-CR+LF.md @@ -0,0 +1,6 @@ +These lines all end with end of line (EOL) sequences. + +Seriously, they really do. + +If you don't believe me: HEX EDIT! + diff --git a/test/karlcow/EOL-CR.html b/test/karlcow/EOL-CR.html new file mode 100644 index 0000000..36a489b --- /dev/null +++ b/test/karlcow/EOL-CR.html @@ -0,0 +1 @@ +

    These lines all end with end of line (EOL) sequences.

    Seriously, they really do.

    If you don't believe me: HEX EDIT!

    \ No newline at end of file diff --git a/test/karlcow/EOL-CR.md b/test/karlcow/EOL-CR.md new file mode 100644 index 0000000..f0a17c8 --- /dev/null +++ b/test/karlcow/EOL-CR.md @@ -0,0 +1 @@ +These lines all end with end of line (EOL) sequences. Seriously, they really do. If you don't believe me: HEX EDIT! \ No newline at end of file diff --git a/test/karlcow/EOL-LF.html b/test/karlcow/EOL-LF.html new file mode 100644 index 0000000..c236b1d --- /dev/null +++ b/test/karlcow/EOL-LF.html @@ -0,0 +1,5 @@ +

    These lines all end with end of line (EOL) sequences.

    + +

    Seriously, they really do.

    + +

    If you don't believe me: HEX EDIT!

    \ No newline at end of file diff --git a/test/karlcow/EOL-LF.md b/test/karlcow/EOL-LF.md new file mode 100644 index 0000000..15cb86e --- /dev/null +++ b/test/karlcow/EOL-LF.md @@ -0,0 +1,6 @@ +These lines all end with end of line (EOL) sequences. + +Seriously, they really do. + +If you don't believe me: HEX EDIT! + diff --git a/test/karlcow/ampersand-text-flow.html b/test/karlcow/ampersand-text-flow.html new file mode 100644 index 0000000..0f2eaf3 --- /dev/null +++ b/test/karlcow/ampersand-text-flow.html @@ -0,0 +1 @@ +

    An ampersand & in the text flow is escaped as an html entity.

    \ No newline at end of file diff --git a/test/karlcow/ampersand-text-flow.md b/test/karlcow/ampersand-text-flow.md new file mode 100644 index 0000000..fb83563 --- /dev/null +++ b/test/karlcow/ampersand-text-flow.md @@ -0,0 +1 @@ +An ampersand & in the text flow is escaped as an html entity. \ No newline at end of file diff --git a/test/karlcow/ampersand-uri.html b/test/karlcow/ampersand-uri.html new file mode 100644 index 0000000..de4b210 --- /dev/null +++ b/test/karlcow/ampersand-uri.html @@ -0,0 +1 @@ +

    There is an ampersand in the URI.

    \ No newline at end of file diff --git a/test/karlcow/ampersand-uri.md b/test/karlcow/ampersand-uri.md new file mode 100644 index 0000000..499635e --- /dev/null +++ b/test/karlcow/ampersand-uri.md @@ -0,0 +1 @@ +There is an [ampersand](http://validator.w3.org/check?uri=http://www.w3.org/&verbose=1) in the URI. \ No newline at end of file diff --git a/test/karlcow/asterisk-near-text.html b/test/karlcow/asterisk-near-text.html new file mode 100644 index 0000000..aa442c3 --- /dev/null +++ b/test/karlcow/asterisk-near-text.html @@ -0,0 +1 @@ +

    This is *an asterisk which should stay as is.

    \ No newline at end of file diff --git a/test/karlcow/asterisk-near-text.md b/test/karlcow/asterisk-near-text.md new file mode 100644 index 0000000..b27634d --- /dev/null +++ b/test/karlcow/asterisk-near-text.md @@ -0,0 +1 @@ +This is \*an asterisk which should stay as is. \ No newline at end of file diff --git a/test/karlcow/asterisk.html b/test/karlcow/asterisk.html new file mode 100644 index 0000000..b6c93a8 --- /dev/null +++ b/test/karlcow/asterisk.html @@ -0,0 +1 @@ +

    This is * an asterisk which should stay as is.

    \ No newline at end of file diff --git a/test/karlcow/asterisk.md b/test/karlcow/asterisk.md new file mode 100644 index 0000000..ccbbc23 --- /dev/null +++ b/test/karlcow/asterisk.md @@ -0,0 +1 @@ +This is * an asterisk which should stay as is. \ No newline at end of file diff --git a/test/karlcow/backslash-escape.html b/test/karlcow/backslash-escape.html new file mode 100644 index 0000000..d69d385 --- /dev/null +++ b/test/karlcow/backslash-escape.html @@ -0,0 +1,12 @@ +

    \ backslash +` backtick +* asterisk +_ underscore +{} curly braces +[] square brackets +() parentheses +# hash mark ++ plus sign +- minus sign (hyphen) +. dot +! exclamation mark

    \ No newline at end of file diff --git a/test/karlcow/backslash-escape.md b/test/karlcow/backslash-escape.md new file mode 100644 index 0000000..306aca2 --- /dev/null +++ b/test/karlcow/backslash-escape.md @@ -0,0 +1,12 @@ +\\ backslash +\` backtick +\* asterisk +\_ underscore +\{\} curly braces +\[\] square brackets +\(\) parentheses +\# hash mark +\+ plus sign +\- minus sign (hyphen) +\. dot +\! exclamation mark \ No newline at end of file diff --git a/test/karlcow/blockquote-added-markup.html b/test/karlcow/blockquote-added-markup.html new file mode 100644 index 0000000..375dbe8 --- /dev/null +++ b/test/karlcow/blockquote-added-markup.html @@ -0,0 +1,5 @@ +
    +

    heading level 1

    + +

    paragraph

    +
    diff --git a/test/karlcow/blockquote-added-markup.md b/test/karlcow/blockquote-added-markup.md new file mode 100644 index 0000000..b60a049 --- /dev/null +++ b/test/karlcow/blockquote-added-markup.md @@ -0,0 +1,3 @@ +> # heading level 1 +> +> paragraph \ No newline at end of file diff --git a/test/karlcow/blockquote-line-2-paragraphs.html b/test/karlcow/blockquote-line-2-paragraphs.html new file mode 100644 index 0000000..9cb7059 --- /dev/null +++ b/test/karlcow/blockquote-line-2-paragraphs.html @@ -0,0 +1,5 @@ +
    +

    A blockquote with a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long line.

    + +

    and a second very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long line.

    +
    \ No newline at end of file diff --git a/test/karlcow/blockquote-line-2-paragraphs.md b/test/karlcow/blockquote-line-2-paragraphs.md new file mode 100644 index 0000000..46358c0 --- /dev/null +++ b/test/karlcow/blockquote-line-2-paragraphs.md @@ -0,0 +1,3 @@ +>A blockquote with a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long line. + +>and a second very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long line. \ No newline at end of file diff --git a/test/karlcow/blockquote-line.html b/test/karlcow/blockquote-line.html new file mode 100644 index 0000000..41451af --- /dev/null +++ b/test/karlcow/blockquote-line.html @@ -0,0 +1,3 @@ +
    +

    This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph in a blockquote.

    +
    \ No newline at end of file diff --git a/test/karlcow/blockquote-line.md b/test/karlcow/blockquote-line.md new file mode 100644 index 0000000..23990a3 --- /dev/null +++ b/test/karlcow/blockquote-line.md @@ -0,0 +1 @@ +>This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph in a blockquote. \ No newline at end of file diff --git a/test/karlcow/blockquote-multiline-1-space-begin.html b/test/karlcow/blockquote-multiline-1-space-begin.html new file mode 100644 index 0000000..6282d21 --- /dev/null +++ b/test/karlcow/blockquote-multiline-1-space-begin.html @@ -0,0 +1,5 @@ +
    +

    A blockquote +on multiple lines +like this.

    +
    \ No newline at end of file diff --git a/test/karlcow/blockquote-multiline-1-space-begin.md b/test/karlcow/blockquote-multiline-1-space-begin.md new file mode 100644 index 0000000..eafd549 --- /dev/null +++ b/test/karlcow/blockquote-multiline-1-space-begin.md @@ -0,0 +1,3 @@ +> A blockquote +> on multiple lines +> like this. \ No newline at end of file diff --git a/test/karlcow/blockquote-multiline-1-space-end.html b/test/karlcow/blockquote-multiline-1-space-end.html new file mode 100644 index 0000000..82907e2 --- /dev/null +++ b/test/karlcow/blockquote-multiline-1-space-end.html @@ -0,0 +1,5 @@ +
    +

    A blockquote +on multiple lines +like this.

    +
    \ No newline at end of file diff --git a/test/karlcow/blockquote-multiline-1-space-end.md b/test/karlcow/blockquote-multiline-1-space-end.md new file mode 100644 index 0000000..014617a --- /dev/null +++ b/test/karlcow/blockquote-multiline-1-space-end.md @@ -0,0 +1,3 @@ +>A blockquote +>on multiple lines +>like this. \ No newline at end of file diff --git a/test/karlcow/blockquote-multiline-2-paragraphs.html b/test/karlcow/blockquote-multiline-2-paragraphs.html new file mode 100644 index 0000000..1339eee --- /dev/null +++ b/test/karlcow/blockquote-multiline-2-paragraphs.html @@ -0,0 +1,8 @@ +
    +

    A blockquote +on multiple lines +like this.

    + +

    But it has +two paragraphs.

    +
    \ No newline at end of file diff --git a/test/karlcow/blockquote-multiline-2-paragraphs.md b/test/karlcow/blockquote-multiline-2-paragraphs.md new file mode 100644 index 0000000..0af137d --- /dev/null +++ b/test/karlcow/blockquote-multiline-2-paragraphs.md @@ -0,0 +1,6 @@ +>A blockquote +>on multiple lines +>like this. +> +>But it has +>two paragraphs. \ No newline at end of file diff --git a/test/karlcow/blockquote-multiline.html b/test/karlcow/blockquote-multiline.html new file mode 100644 index 0000000..18126d4 --- /dev/null +++ b/test/karlcow/blockquote-multiline.html @@ -0,0 +1,5 @@ +
    +

    A blockquote +on multiple lines +like this

    +
    \ No newline at end of file diff --git a/test/karlcow/blockquote-multiline.md b/test/karlcow/blockquote-multiline.md new file mode 100644 index 0000000..283f95d --- /dev/null +++ b/test/karlcow/blockquote-multiline.md @@ -0,0 +1,3 @@ +>A blockquote +>on multiple lines +>like this \ No newline at end of file diff --git a/test/karlcow/blockquote-nested-multiplereturn-level1.html b/test/karlcow/blockquote-nested-multiplereturn-level1.html new file mode 100644 index 0000000..37d039d --- /dev/null +++ b/test/karlcow/blockquote-nested-multiplereturn-level1.html @@ -0,0 +1,9 @@ +
    +

    This is the first level of quoting.

    + +
    +

    This is nested blockquote.

    +
    + +

    Back to the first level.

    +
    \ No newline at end of file diff --git a/test/karlcow/blockquote-nested-multiplereturn-level1.md b/test/karlcow/blockquote-nested-multiplereturn-level1.md new file mode 100644 index 0000000..8b2530f --- /dev/null +++ b/test/karlcow/blockquote-nested-multiplereturn-level1.md @@ -0,0 +1,5 @@ +> This is the first level of quoting. +> +> > This is nested blockquote. +> +> Back to the first level. diff --git a/test/karlcow/blockquote-nested-multiplereturn.html b/test/karlcow/blockquote-nested-multiplereturn.html new file mode 100644 index 0000000..5b0d801 --- /dev/null +++ b/test/karlcow/blockquote-nested-multiplereturn.html @@ -0,0 +1,7 @@ +
    +

    This is the first level of quoting.

    + +
    +

    This is nested blockquote.

    +
    +
    \ No newline at end of file diff --git a/test/karlcow/blockquote-nested-multiplereturn.md b/test/karlcow/blockquote-nested-multiplereturn.md new file mode 100644 index 0000000..4a8202d --- /dev/null +++ b/test/karlcow/blockquote-nested-multiplereturn.md @@ -0,0 +1,3 @@ +> This is the first level of quoting. +> +> > This is nested blockquote. \ No newline at end of file diff --git a/test/karlcow/blockquote-nested-return-level1.html b/test/karlcow/blockquote-nested-return-level1.html new file mode 100644 index 0000000..d37d55f --- /dev/null +++ b/test/karlcow/blockquote-nested-return-level1.html @@ -0,0 +1,8 @@ +
    +

    This is the first level of quoting.

    + +
    +

    This is nested blockquote. +Back to the first level.

    +
    +
    \ No newline at end of file diff --git a/test/karlcow/blockquote-nested-return-level1.md b/test/karlcow/blockquote-nested-return-level1.md new file mode 100644 index 0000000..e01158b --- /dev/null +++ b/test/karlcow/blockquote-nested-return-level1.md @@ -0,0 +1,3 @@ +> This is the first level of quoting. +> > This is nested blockquote. +> Back to the first level. diff --git a/test/karlcow/blockquote-nested.html b/test/karlcow/blockquote-nested.html new file mode 100644 index 0000000..5b0d801 --- /dev/null +++ b/test/karlcow/blockquote-nested.html @@ -0,0 +1,7 @@ +
    +

    This is the first level of quoting.

    + +
    +

    This is nested blockquote.

    +
    +
    \ No newline at end of file diff --git a/test/karlcow/blockquote-nested.md b/test/karlcow/blockquote-nested.md new file mode 100644 index 0000000..739ac21 --- /dev/null +++ b/test/karlcow/blockquote-nested.md @@ -0,0 +1,2 @@ +> This is the first level of quoting. +> > This is nested blockquote. diff --git a/test/karlcow/code-1-tab.html b/test/karlcow/code-1-tab.html new file mode 100644 index 0000000..9b8bb7a --- /dev/null +++ b/test/karlcow/code-1-tab.html @@ -0,0 +1,3 @@ +
    10 PRINT HELLO INFINITE
    +20 GOTO 10
    +
    \ No newline at end of file diff --git a/test/karlcow/code-1-tab.md b/test/karlcow/code-1-tab.md new file mode 100644 index 0000000..a314307 --- /dev/null +++ b/test/karlcow/code-1-tab.md @@ -0,0 +1,2 @@ + 10 PRINT HELLO INFINITE + 20 GOTO 10 \ No newline at end of file diff --git a/test/karlcow/code-4-spaces-escaping.html b/test/karlcow/code-4-spaces-escaping.html new file mode 100644 index 0000000..6d9fa87 --- /dev/null +++ b/test/karlcow/code-4-spaces-escaping.html @@ -0,0 +1,3 @@ +
    10 PRINT < > &
    +20 GOTO 10
    +
    \ No newline at end of file diff --git a/test/karlcow/code-4-spaces-escaping.md b/test/karlcow/code-4-spaces-escaping.md new file mode 100644 index 0000000..2edbd4e --- /dev/null +++ b/test/karlcow/code-4-spaces-escaping.md @@ -0,0 +1,2 @@ + 10 PRINT < > & + 20 GOTO 10 \ No newline at end of file diff --git a/test/karlcow/code-4-spaces.html b/test/karlcow/code-4-spaces.html new file mode 100644 index 0000000..9b8bb7a --- /dev/null +++ b/test/karlcow/code-4-spaces.html @@ -0,0 +1,3 @@ +
    10 PRINT HELLO INFINITE
    +20 GOTO 10
    +
    \ No newline at end of file diff --git a/test/karlcow/code-4-spaces.md b/test/karlcow/code-4-spaces.md new file mode 100644 index 0000000..e3b6e6d --- /dev/null +++ b/test/karlcow/code-4-spaces.md @@ -0,0 +1,2 @@ + 10 PRINT HELLO INFINITE + 20 GOTO 10 \ No newline at end of file diff --git a/test/karlcow/em-middle-word.html b/test/karlcow/em-middle-word.html new file mode 100644 index 0000000..74f7f90 --- /dev/null +++ b/test/karlcow/em-middle-word.html @@ -0,0 +1 @@ +

    asterisks

    \ No newline at end of file diff --git a/test/karlcow/em-middle-word.md b/test/karlcow/em-middle-word.md new file mode 100644 index 0000000..0935359 --- /dev/null +++ b/test/karlcow/em-middle-word.md @@ -0,0 +1 @@ +as*te*risks \ No newline at end of file diff --git a/test/karlcow/em-star.html b/test/karlcow/em-star.html new file mode 100644 index 0000000..d35dd53 --- /dev/null +++ b/test/karlcow/em-star.html @@ -0,0 +1 @@ +

    single asterisks

    \ No newline at end of file diff --git a/test/karlcow/em-star.md b/test/karlcow/em-star.md new file mode 100644 index 0000000..ddd8676 --- /dev/null +++ b/test/karlcow/em-star.md @@ -0,0 +1 @@ +*single asterisks* \ No newline at end of file diff --git a/test/karlcow/em-underscore.html b/test/karlcow/em-underscore.html new file mode 100644 index 0000000..2627bde --- /dev/null +++ b/test/karlcow/em-underscore.html @@ -0,0 +1 @@ +

    single underscores

    \ No newline at end of file diff --git a/test/karlcow/em-underscore.md b/test/karlcow/em-underscore.md new file mode 100644 index 0000000..155bb0e --- /dev/null +++ b/test/karlcow/em-underscore.md @@ -0,0 +1 @@ +_single underscores_ \ No newline at end of file diff --git a/test/karlcow/entities-text-flow.html b/test/karlcow/entities-text-flow.html new file mode 100644 index 0000000..6924fea --- /dev/null +++ b/test/karlcow/entities-text-flow.html @@ -0,0 +1 @@ +

    HTML entities are written using ampersand notation: ©

    \ No newline at end of file diff --git a/test/karlcow/entities-text-flow.md b/test/karlcow/entities-text-flow.md new file mode 100644 index 0000000..7e685ea --- /dev/null +++ b/test/karlcow/entities-text-flow.md @@ -0,0 +1 @@ +HTML entities are written using ampersand notation: © \ No newline at end of file diff --git a/test/karlcow/header-level1-equal-underlined.html b/test/karlcow/header-level1-equal-underlined.html new file mode 100644 index 0000000..af0c276 --- /dev/null +++ b/test/karlcow/header-level1-equal-underlined.html @@ -0,0 +1 @@ +

    This is an H1

    \ No newline at end of file diff --git a/test/karlcow/header-level1-equal-underlined.md b/test/karlcow/header-level1-equal-underlined.md new file mode 100644 index 0000000..f18b949 --- /dev/null +++ b/test/karlcow/header-level1-equal-underlined.md @@ -0,0 +1,2 @@ +This is an H1 +============= \ No newline at end of file diff --git a/test/karlcow/header-level1-hash-sign-closed.html b/test/karlcow/header-level1-hash-sign-closed.html new file mode 100644 index 0000000..af0c276 --- /dev/null +++ b/test/karlcow/header-level1-hash-sign-closed.html @@ -0,0 +1 @@ +

    This is an H1

    \ No newline at end of file diff --git a/test/karlcow/header-level1-hash-sign-closed.md b/test/karlcow/header-level1-hash-sign-closed.md new file mode 100644 index 0000000..147d59b --- /dev/null +++ b/test/karlcow/header-level1-hash-sign-closed.md @@ -0,0 +1 @@ +# This is an H1 # \ No newline at end of file diff --git a/test/karlcow/header-level1-hash-sign-trailing-1-space.html b/test/karlcow/header-level1-hash-sign-trailing-1-space.html new file mode 100644 index 0000000..1b48fc2 --- /dev/null +++ b/test/karlcow/header-level1-hash-sign-trailing-1-space.html @@ -0,0 +1 @@ +

    # This is an H1

    \ No newline at end of file diff --git a/test/karlcow/header-level1-hash-sign-trailing-1-space.md b/test/karlcow/header-level1-hash-sign-trailing-1-space.md new file mode 100644 index 0000000..b999b38 --- /dev/null +++ b/test/karlcow/header-level1-hash-sign-trailing-1-space.md @@ -0,0 +1 @@ + # This is an H1 \ No newline at end of file diff --git a/test/karlcow/header-level1-hash-sign-trailing-2-spaces.html b/test/karlcow/header-level1-hash-sign-trailing-2-spaces.html new file mode 100644 index 0000000..797d31c --- /dev/null +++ b/test/karlcow/header-level1-hash-sign-trailing-2-spaces.html @@ -0,0 +1,3 @@ +

    this is an h1 with two trailing spaces

    + +

    A new paragraph.

    \ No newline at end of file diff --git a/test/karlcow/header-level1-hash-sign-trailing-2-spaces.md b/test/karlcow/header-level1-hash-sign-trailing-2-spaces.md new file mode 100644 index 0000000..9cdcedf --- /dev/null +++ b/test/karlcow/header-level1-hash-sign-trailing-2-spaces.md @@ -0,0 +1,2 @@ +# this is an h1 with two trailing spaces +A new paragraph. \ No newline at end of file diff --git a/test/karlcow/header-level1-hash-sign.html b/test/karlcow/header-level1-hash-sign.html new file mode 100644 index 0000000..af0c276 --- /dev/null +++ b/test/karlcow/header-level1-hash-sign.html @@ -0,0 +1 @@ +

    This is an H1

    \ No newline at end of file diff --git a/test/karlcow/header-level1-hash-sign.md b/test/karlcow/header-level1-hash-sign.md new file mode 100644 index 0000000..f6a39e1 --- /dev/null +++ b/test/karlcow/header-level1-hash-sign.md @@ -0,0 +1 @@ +# This is an H1 \ No newline at end of file diff --git a/test/karlcow/header-level2-dash-underlined.html b/test/karlcow/header-level2-dash-underlined.html new file mode 100644 index 0000000..2f4138b --- /dev/null +++ b/test/karlcow/header-level2-dash-underlined.html @@ -0,0 +1 @@ +

    This is an H2

    \ No newline at end of file diff --git a/test/karlcow/header-level2-dash-underlined.md b/test/karlcow/header-level2-dash-underlined.md new file mode 100644 index 0000000..4564336 --- /dev/null +++ b/test/karlcow/header-level2-dash-underlined.md @@ -0,0 +1,2 @@ +This is an H2 +------------- \ No newline at end of file diff --git a/test/karlcow/header-level2-hash-sign-closed.html b/test/karlcow/header-level2-hash-sign-closed.html new file mode 100644 index 0000000..2f4138b --- /dev/null +++ b/test/karlcow/header-level2-hash-sign-closed.html @@ -0,0 +1 @@ +

    This is an H2

    \ No newline at end of file diff --git a/test/karlcow/header-level2-hash-sign-closed.md b/test/karlcow/header-level2-hash-sign-closed.md new file mode 100644 index 0000000..b84a1de --- /dev/null +++ b/test/karlcow/header-level2-hash-sign-closed.md @@ -0,0 +1 @@ +## This is an H2 ## \ No newline at end of file diff --git a/test/karlcow/header-level2-hash-sign.html b/test/karlcow/header-level2-hash-sign.html new file mode 100644 index 0000000..2f4138b --- /dev/null +++ b/test/karlcow/header-level2-hash-sign.html @@ -0,0 +1 @@ +

    This is an H2

    \ No newline at end of file diff --git a/test/karlcow/header-level2-hash-sign.md b/test/karlcow/header-level2-hash-sign.md new file mode 100644 index 0000000..6a93c6b --- /dev/null +++ b/test/karlcow/header-level2-hash-sign.md @@ -0,0 +1 @@ +## This is an H2 \ No newline at end of file diff --git a/test/karlcow/header-level3-hash-sign-closed.html b/test/karlcow/header-level3-hash-sign-closed.html new file mode 100644 index 0000000..a9d3ba9 --- /dev/null +++ b/test/karlcow/header-level3-hash-sign-closed.html @@ -0,0 +1 @@ +

    This is an H3

    \ No newline at end of file diff --git a/test/karlcow/header-level3-hash-sign-closed.md b/test/karlcow/header-level3-hash-sign-closed.md new file mode 100644 index 0000000..7d790cf --- /dev/null +++ b/test/karlcow/header-level3-hash-sign-closed.md @@ -0,0 +1 @@ +### This is an H3 ### \ No newline at end of file diff --git a/test/karlcow/header-level3-hash-sign.html b/test/karlcow/header-level3-hash-sign.html new file mode 100644 index 0000000..a9d3ba9 --- /dev/null +++ b/test/karlcow/header-level3-hash-sign.html @@ -0,0 +1 @@ +

    This is an H3

    \ No newline at end of file diff --git a/test/karlcow/header-level3-hash-sign.md b/test/karlcow/header-level3-hash-sign.md new file mode 100644 index 0000000..70c6d10 --- /dev/null +++ b/test/karlcow/header-level3-hash-sign.md @@ -0,0 +1 @@ +### This is an H3 \ No newline at end of file diff --git a/test/karlcow/header-level4-hash-sign-closed.html b/test/karlcow/header-level4-hash-sign-closed.html new file mode 100644 index 0000000..1c0f3d6 --- /dev/null +++ b/test/karlcow/header-level4-hash-sign-closed.html @@ -0,0 +1 @@ +

    This is an H4

    \ No newline at end of file diff --git a/test/karlcow/header-level4-hash-sign-closed.md b/test/karlcow/header-level4-hash-sign-closed.md new file mode 100644 index 0000000..716cf64 --- /dev/null +++ b/test/karlcow/header-level4-hash-sign-closed.md @@ -0,0 +1 @@ +#### This is an H4 #### \ No newline at end of file diff --git a/test/karlcow/header-level4-hash-sign.html b/test/karlcow/header-level4-hash-sign.html new file mode 100644 index 0000000..1c0f3d6 --- /dev/null +++ b/test/karlcow/header-level4-hash-sign.html @@ -0,0 +1 @@ +

    This is an H4

    \ No newline at end of file diff --git a/test/karlcow/header-level4-hash-sign.md b/test/karlcow/header-level4-hash-sign.md new file mode 100644 index 0000000..8283f11 --- /dev/null +++ b/test/karlcow/header-level4-hash-sign.md @@ -0,0 +1 @@ +#### This is an H4 \ No newline at end of file diff --git a/test/karlcow/header-level5-hash-sign-closed.html b/test/karlcow/header-level5-hash-sign-closed.html new file mode 100644 index 0000000..aa43910 --- /dev/null +++ b/test/karlcow/header-level5-hash-sign-closed.html @@ -0,0 +1 @@ +
    This is an H5
    \ No newline at end of file diff --git a/test/karlcow/header-level5-hash-sign-closed.md b/test/karlcow/header-level5-hash-sign-closed.md new file mode 100644 index 0000000..4294de6 --- /dev/null +++ b/test/karlcow/header-level5-hash-sign-closed.md @@ -0,0 +1 @@ +##### This is an H5 ##### \ No newline at end of file diff --git a/test/karlcow/header-level5-hash-sign.html b/test/karlcow/header-level5-hash-sign.html new file mode 100644 index 0000000..aa43910 --- /dev/null +++ b/test/karlcow/header-level5-hash-sign.html @@ -0,0 +1 @@ +
    This is an H5
    \ No newline at end of file diff --git a/test/karlcow/header-level5-hash-sign.md b/test/karlcow/header-level5-hash-sign.md new file mode 100644 index 0000000..abcdd91 --- /dev/null +++ b/test/karlcow/header-level5-hash-sign.md @@ -0,0 +1 @@ +##### This is an H5 \ No newline at end of file diff --git a/test/karlcow/header-level6-hash-sign-closed.html b/test/karlcow/header-level6-hash-sign-closed.html new file mode 100644 index 0000000..2cbc7b1 --- /dev/null +++ b/test/karlcow/header-level6-hash-sign-closed.html @@ -0,0 +1 @@ +
    This is an H6
    \ No newline at end of file diff --git a/test/karlcow/header-level6-hash-sign-closed.md b/test/karlcow/header-level6-hash-sign-closed.md new file mode 100644 index 0000000..dca50d6 --- /dev/null +++ b/test/karlcow/header-level6-hash-sign-closed.md @@ -0,0 +1 @@ +###### This is an H6 ###### \ No newline at end of file diff --git a/test/karlcow/header-level6-hash-sign.html b/test/karlcow/header-level6-hash-sign.html new file mode 100644 index 0000000..2cbc7b1 --- /dev/null +++ b/test/karlcow/header-level6-hash-sign.html @@ -0,0 +1 @@ +
    This is an H6
    \ No newline at end of file diff --git a/test/karlcow/header-level6-hash-sign.md b/test/karlcow/header-level6-hash-sign.md new file mode 100644 index 0000000..df2ff4c --- /dev/null +++ b/test/karlcow/header-level6-hash-sign.md @@ -0,0 +1 @@ +###### This is an H6 \ No newline at end of file diff --git a/test/karlcow/horizontal-rule-3-dashes-spaces.html b/test/karlcow/horizontal-rule-3-dashes-spaces.html new file mode 100644 index 0000000..1d6667d --- /dev/null +++ b/test/karlcow/horizontal-rule-3-dashes-spaces.html @@ -0,0 +1 @@ +
    \ No newline at end of file diff --git a/test/karlcow/horizontal-rule-3-dashes-spaces.md b/test/karlcow/horizontal-rule-3-dashes-spaces.md new file mode 100644 index 0000000..4587849 --- /dev/null +++ b/test/karlcow/horizontal-rule-3-dashes-spaces.md @@ -0,0 +1 @@ +- - - \ No newline at end of file diff --git a/test/karlcow/horizontal-rule-3-dashes.html b/test/karlcow/horizontal-rule-3-dashes.html new file mode 100644 index 0000000..1d6667d --- /dev/null +++ b/test/karlcow/horizontal-rule-3-dashes.html @@ -0,0 +1 @@ +
    \ No newline at end of file diff --git a/test/karlcow/horizontal-rule-3-dashes.md b/test/karlcow/horizontal-rule-3-dashes.md new file mode 100644 index 0000000..73b314f --- /dev/null +++ b/test/karlcow/horizontal-rule-3-dashes.md @@ -0,0 +1 @@ +--- \ No newline at end of file diff --git a/test/karlcow/horizontal-rule-3-stars.html b/test/karlcow/horizontal-rule-3-stars.html new file mode 100644 index 0000000..1d6667d --- /dev/null +++ b/test/karlcow/horizontal-rule-3-stars.html @@ -0,0 +1 @@ +
    \ No newline at end of file diff --git a/test/karlcow/horizontal-rule-3-stars.md b/test/karlcow/horizontal-rule-3-stars.md new file mode 100644 index 0000000..93a5273 --- /dev/null +++ b/test/karlcow/horizontal-rule-3-stars.md @@ -0,0 +1 @@ +*** \ No newline at end of file diff --git a/test/karlcow/horizontal-rule-3-underscores.html b/test/karlcow/horizontal-rule-3-underscores.html new file mode 100644 index 0000000..1d6667d --- /dev/null +++ b/test/karlcow/horizontal-rule-3-underscores.html @@ -0,0 +1 @@ +
    \ No newline at end of file diff --git a/test/karlcow/horizontal-rule-3-underscores.md b/test/karlcow/horizontal-rule-3-underscores.md new file mode 100644 index 0000000..da706a0 --- /dev/null +++ b/test/karlcow/horizontal-rule-3-underscores.md @@ -0,0 +1 @@ +___ \ No newline at end of file diff --git a/test/karlcow/horizontal-rule-7-dashes.html b/test/karlcow/horizontal-rule-7-dashes.html new file mode 100644 index 0000000..1d6667d --- /dev/null +++ b/test/karlcow/horizontal-rule-7-dashes.html @@ -0,0 +1 @@ +
    \ No newline at end of file diff --git a/test/karlcow/horizontal-rule-7-dashes.md b/test/karlcow/horizontal-rule-7-dashes.md new file mode 100644 index 0000000..f88adb6 --- /dev/null +++ b/test/karlcow/horizontal-rule-7-dashes.md @@ -0,0 +1 @@ +------- \ No newline at end of file diff --git a/test/karlcow/img-idref-title.html b/test/karlcow/img-idref-title.html new file mode 100644 index 0000000..f9b1715 --- /dev/null +++ b/test/karlcow/img-idref-title.html @@ -0,0 +1 @@ +

    HTML5

    \ No newline at end of file diff --git a/test/karlcow/img-idref-title.md b/test/karlcow/img-idref-title.md new file mode 100644 index 0000000..151b1e8 --- /dev/null +++ b/test/karlcow/img-idref-title.md @@ -0,0 +1,3 @@ +![HTML5][h5] + +[h5]: http://www.w3.org/html/logo/img/mark-word-icon.png "HTML5 for everyone" \ No newline at end of file diff --git a/test/karlcow/img-idref.html b/test/karlcow/img-idref.html new file mode 100644 index 0000000..79103a8 --- /dev/null +++ b/test/karlcow/img-idref.html @@ -0,0 +1 @@ +

    HTML5

    \ No newline at end of file diff --git a/test/karlcow/img-idref.md b/test/karlcow/img-idref.md new file mode 100644 index 0000000..4db1bcc --- /dev/null +++ b/test/karlcow/img-idref.md @@ -0,0 +1,3 @@ +![HTML5][h5] + +[h5]: http://www.w3.org/html/logo/img/mark-word-icon.png \ No newline at end of file diff --git a/test/karlcow/img-title.html b/test/karlcow/img-title.html new file mode 100644 index 0000000..cc0e195 --- /dev/null +++ b/test/karlcow/img-title.html @@ -0,0 +1 @@ +

    HTML5

    \ No newline at end of file diff --git a/test/karlcow/img-title.md b/test/karlcow/img-title.md new file mode 100644 index 0000000..2c8e6ff --- /dev/null +++ b/test/karlcow/img-title.md @@ -0,0 +1 @@ +![HTML5](http://www.w3.org/html/logo/img/mark-word-icon.png "HTML5 logo for everyone") \ No newline at end of file diff --git a/test/karlcow/img.html b/test/karlcow/img.html new file mode 100644 index 0000000..79103a8 --- /dev/null +++ b/test/karlcow/img.html @@ -0,0 +1 @@ +

    HTML5

    \ No newline at end of file diff --git a/test/karlcow/img.md b/test/karlcow/img.md new file mode 100644 index 0000000..3b3ca15 --- /dev/null +++ b/test/karlcow/img.md @@ -0,0 +1 @@ +![HTML5](http://www.w3.org/html/logo/img/mark-word-icon.png) \ No newline at end of file diff --git a/test/karlcow/inline-code-escaping-entities.html b/test/karlcow/inline-code-escaping-entities.html new file mode 100644 index 0000000..726e8a8 --- /dev/null +++ b/test/karlcow/inline-code-escaping-entities.html @@ -0,0 +1 @@ +

    We love <code> and & for everything

    \ No newline at end of file diff --git a/test/karlcow/inline-code-escaping-entities.md b/test/karlcow/inline-code-escaping-entities.md new file mode 100644 index 0000000..3821a9b --- /dev/null +++ b/test/karlcow/inline-code-escaping-entities.md @@ -0,0 +1 @@ +We love ` and &` for everything \ No newline at end of file diff --git a/test/karlcow/inline-code-with-visible-backtick.html b/test/karlcow/inline-code-with-visible-backtick.html new file mode 100644 index 0000000..bc92165 --- /dev/null +++ b/test/karlcow/inline-code-with-visible-backtick.html @@ -0,0 +1 @@ +

    We love `code` for everything

    \ No newline at end of file diff --git a/test/karlcow/inline-code-with-visible-backtick.md b/test/karlcow/inline-code-with-visible-backtick.md new file mode 100644 index 0000000..ecc9408 --- /dev/null +++ b/test/karlcow/inline-code-with-visible-backtick.md @@ -0,0 +1 @@ +``We love `code` for everything`` \ No newline at end of file diff --git a/test/karlcow/inline-code.html b/test/karlcow/inline-code.html new file mode 100644 index 0000000..bc92165 --- /dev/null +++ b/test/karlcow/inline-code.html @@ -0,0 +1 @@ +

    We love `code` for everything

    \ No newline at end of file diff --git a/test/karlcow/inline-code.md b/test/karlcow/inline-code.md new file mode 100644 index 0000000..ecc9408 --- /dev/null +++ b/test/karlcow/inline-code.md @@ -0,0 +1 @@ +``We love `code` for everything`` \ No newline at end of file diff --git a/test/karlcow/line-break-2-spaces.html b/test/karlcow/line-break-2-spaces.html new file mode 100644 index 0000000..cb75f09 --- /dev/null +++ b/test/karlcow/line-break-2-spaces.html @@ -0,0 +1,2 @@ +

    A first sentence
    +and a line break.

    \ No newline at end of file diff --git a/test/karlcow/line-break-2-spaces.md b/test/karlcow/line-break-2-spaces.md new file mode 100644 index 0000000..2b330a5 --- /dev/null +++ b/test/karlcow/line-break-2-spaces.md @@ -0,0 +1,2 @@ +A first sentence +and a line break. \ No newline at end of file diff --git a/test/karlcow/line-break-5-spaces.html b/test/karlcow/line-break-5-spaces.html new file mode 100644 index 0000000..cb75f09 --- /dev/null +++ b/test/karlcow/line-break-5-spaces.html @@ -0,0 +1,2 @@ +

    A first sentence
    +and a line break.

    \ No newline at end of file diff --git a/test/karlcow/line-break-5-spaces.md b/test/karlcow/line-break-5-spaces.md new file mode 100644 index 0000000..f2e3e37 --- /dev/null +++ b/test/karlcow/line-break-5-spaces.md @@ -0,0 +1,2 @@ +A first sentence +and a line break. \ No newline at end of file diff --git a/test/karlcow/link-automatic.html b/test/karlcow/link-automatic.html new file mode 100644 index 0000000..604cbdc --- /dev/null +++ b/test/karlcow/link-automatic.html @@ -0,0 +1 @@ +

    This is an automatic link http://www.w3.org/

    \ No newline at end of file diff --git a/test/karlcow/link-automatic.md b/test/karlcow/link-automatic.md new file mode 100644 index 0000000..bf5987d --- /dev/null +++ b/test/karlcow/link-automatic.md @@ -0,0 +1 @@ +This is an automatic link \ No newline at end of file diff --git a/test/karlcow/link-bracket-paranthesis-title.html b/test/karlcow/link-bracket-paranthesis-title.html new file mode 100644 index 0000000..5e568ba --- /dev/null +++ b/test/karlcow/link-bracket-paranthesis-title.html @@ -0,0 +1 @@ +

    W3C

    \ No newline at end of file diff --git a/test/karlcow/link-bracket-paranthesis-title.md b/test/karlcow/link-bracket-paranthesis-title.md new file mode 100644 index 0000000..c61641c --- /dev/null +++ b/test/karlcow/link-bracket-paranthesis-title.md @@ -0,0 +1 @@ +[W3C](http://www.w3.org/ "Discover w3c") \ No newline at end of file diff --git a/test/karlcow/link-bracket-paranthesis.html b/test/karlcow/link-bracket-paranthesis.html new file mode 100644 index 0000000..ba65be8 --- /dev/null +++ b/test/karlcow/link-bracket-paranthesis.html @@ -0,0 +1 @@ +

    W3C

    \ No newline at end of file diff --git a/test/karlcow/link-bracket-paranthesis.md b/test/karlcow/link-bracket-paranthesis.md new file mode 100644 index 0000000..8fd5195 --- /dev/null +++ b/test/karlcow/link-bracket-paranthesis.md @@ -0,0 +1 @@ +[W3C](http://www.w3.org/) \ No newline at end of file diff --git a/test/karlcow/link-idref-angle-bracket.html b/test/karlcow/link-idref-angle-bracket.html new file mode 100644 index 0000000..dbee9a9 --- /dev/null +++ b/test/karlcow/link-idref-angle-bracket.html @@ -0,0 +1 @@ +

    World Wide Web Consortium

    \ No newline at end of file diff --git a/test/karlcow/link-idref-angle-bracket.md b/test/karlcow/link-idref-angle-bracket.md new file mode 100644 index 0000000..0f96c3c --- /dev/null +++ b/test/karlcow/link-idref-angle-bracket.md @@ -0,0 +1,3 @@ +[World Wide Web Consortium][w3c] + +[w3c]: \ No newline at end of file diff --git a/test/karlcow/link-idref-implicit-spaces.html b/test/karlcow/link-idref-implicit-spaces.html new file mode 100644 index 0000000..dbee9a9 --- /dev/null +++ b/test/karlcow/link-idref-implicit-spaces.html @@ -0,0 +1 @@ +

    World Wide Web Consortium

    \ No newline at end of file diff --git a/test/karlcow/link-idref-implicit-spaces.md b/test/karlcow/link-idref-implicit-spaces.md new file mode 100644 index 0000000..f49e289 --- /dev/null +++ b/test/karlcow/link-idref-implicit-spaces.md @@ -0,0 +1,3 @@ +[World Wide Web Consortium][] + +[World Wide Web Consortium]: http://www.w3.org/ \ No newline at end of file diff --git a/test/karlcow/link-idref-implicit.html b/test/karlcow/link-idref-implicit.html new file mode 100644 index 0000000..9ba2da6 --- /dev/null +++ b/test/karlcow/link-idref-implicit.html @@ -0,0 +1 @@ +

    w3c

    \ No newline at end of file diff --git a/test/karlcow/link-idref-implicit.md b/test/karlcow/link-idref-implicit.md new file mode 100644 index 0000000..65483c2 --- /dev/null +++ b/test/karlcow/link-idref-implicit.md @@ -0,0 +1,3 @@ +[w3c][] + +[w3c]: http://www.w3.org/ \ No newline at end of file diff --git a/test/karlcow/link-idref-space.html b/test/karlcow/link-idref-space.html new file mode 100644 index 0000000..dbee9a9 --- /dev/null +++ b/test/karlcow/link-idref-space.html @@ -0,0 +1 @@ +

    World Wide Web Consortium

    \ No newline at end of file diff --git a/test/karlcow/link-idref-space.md b/test/karlcow/link-idref-space.md new file mode 100644 index 0000000..9b13c6f --- /dev/null +++ b/test/karlcow/link-idref-space.md @@ -0,0 +1,3 @@ +[World Wide Web Consortium] [w3c] + +[w3c]: http://www.w3.org/ \ No newline at end of file diff --git a/test/karlcow/link-idref-title-next-line.html b/test/karlcow/link-idref-title-next-line.html new file mode 100644 index 0000000..9c2dda6 --- /dev/null +++ b/test/karlcow/link-idref-title-next-line.html @@ -0,0 +1 @@ +

    World Wide Web Consortium

    \ No newline at end of file diff --git a/test/karlcow/link-idref-title-next-line.md b/test/karlcow/link-idref-title-next-line.md new file mode 100644 index 0000000..310e80b --- /dev/null +++ b/test/karlcow/link-idref-title-next-line.md @@ -0,0 +1,4 @@ +[World Wide Web Consortium][w3c] + +[w3c]: http://www.w3.org/ + "Discover W3C" \ No newline at end of file diff --git a/test/karlcow/link-idref-title-paranthesis.html b/test/karlcow/link-idref-title-paranthesis.html new file mode 100644 index 0000000..f80f8ce --- /dev/null +++ b/test/karlcow/link-idref-title-paranthesis.html @@ -0,0 +1 @@ +

    World Wide Web Consortium

    \ No newline at end of file diff --git a/test/karlcow/link-idref-title-paranthesis.md b/test/karlcow/link-idref-title-paranthesis.md new file mode 100644 index 0000000..9bb11ed --- /dev/null +++ b/test/karlcow/link-idref-title-paranthesis.md @@ -0,0 +1,3 @@ +[World Wide Web Consortium][w3c] + +[w3c]: http://www.w3.org/ (Discover w3c) \ No newline at end of file diff --git a/test/karlcow/link-idref-title-single-quote.html b/test/karlcow/link-idref-title-single-quote.html new file mode 100644 index 0000000..f80f8ce --- /dev/null +++ b/test/karlcow/link-idref-title-single-quote.html @@ -0,0 +1 @@ +

    World Wide Web Consortium

    \ No newline at end of file diff --git a/test/karlcow/link-idref-title-single-quote.md b/test/karlcow/link-idref-title-single-quote.md new file mode 100644 index 0000000..a6a81b9 --- /dev/null +++ b/test/karlcow/link-idref-title-single-quote.md @@ -0,0 +1,3 @@ +[World Wide Web Consortium][w3c] + +[w3c]: http://www.w3.org/ 'Discover w3c' \ No newline at end of file diff --git a/test/karlcow/link-idref-title.html b/test/karlcow/link-idref-title.html new file mode 100644 index 0000000..f80f8ce --- /dev/null +++ b/test/karlcow/link-idref-title.html @@ -0,0 +1 @@ +

    World Wide Web Consortium

    \ No newline at end of file diff --git a/test/karlcow/link-idref-title.md b/test/karlcow/link-idref-title.md new file mode 100644 index 0000000..bee4294 --- /dev/null +++ b/test/karlcow/link-idref-title.md @@ -0,0 +1,3 @@ +[World Wide Web Consortium][w3c] + +[w3c]: http://www.w3.org/ "Discover w3c" \ No newline at end of file diff --git a/test/karlcow/link-idref.html b/test/karlcow/link-idref.html new file mode 100644 index 0000000..dbee9a9 --- /dev/null +++ b/test/karlcow/link-idref.html @@ -0,0 +1 @@ +

    World Wide Web Consortium

    \ No newline at end of file diff --git a/test/karlcow/link-idref.md b/test/karlcow/link-idref.md new file mode 100644 index 0000000..2d45629 --- /dev/null +++ b/test/karlcow/link-idref.md @@ -0,0 +1,3 @@ +[World Wide Web Consortium][w3c] + +[w3c]: http://www.w3.org/ \ No newline at end of file diff --git a/test/karlcow/list-blockquote.html b/test/karlcow/list-blockquote.html new file mode 100644 index 0000000..1d99d17 --- /dev/null +++ b/test/karlcow/list-blockquote.html @@ -0,0 +1,7 @@ +
      +
    • a list containing a blockquote

      + +
      +

      this the blockquote in the list

      +
    • +
    diff --git a/test/karlcow/list-blockquote.md b/test/karlcow/list-blockquote.md new file mode 100644 index 0000000..37c0762 --- /dev/null +++ b/test/karlcow/list-blockquote.md @@ -0,0 +1,3 @@ +* a list containing a blockquote + + > this the blockquote in the list \ No newline at end of file diff --git a/test/karlcow/list-code.html b/test/karlcow/list-code.html new file mode 100644 index 0000000..53b3c22 --- /dev/null +++ b/test/karlcow/list-code.html @@ -0,0 +1,7 @@ +
      +
    • a list containing a block of code

      + +
      10 PRINT HELLO INFINITE
      +20 GOTO 10
      +
    • +
    \ No newline at end of file diff --git a/test/karlcow/list-code.md b/test/karlcow/list-code.md new file mode 100644 index 0000000..ed774d2 --- /dev/null +++ b/test/karlcow/list-code.md @@ -0,0 +1,4 @@ +* a list containing a block of code + + 10 PRINT HELLO INFINITE + 20 GOTO 10 \ No newline at end of file diff --git a/test/karlcow/list-multiparagraphs-tab.html b/test/karlcow/list-multiparagraphs-tab.html new file mode 100644 index 0000000..a90759e --- /dev/null +++ b/test/karlcow/list-multiparagraphs-tab.html @@ -0,0 +1,10 @@ +
      +
    • This is a list item with two paragraphs. Lorem ipsum dolor +sit amet, consectetuer adipiscing elit. Aliquam hendrerit +mi posuere lectus.

      + +

      Vestibulum enim wisi, viverra nec, fringilla in, laoreet +vitae, risus. Donec sit amet nisl. Aliquam semper ipsum +sit amet velit.

    • +
    • Suspendisse id sem consectetuer libero luctus adipiscing.

    • +
    \ No newline at end of file diff --git a/test/karlcow/list-multiparagraphs-tab.md b/test/karlcow/list-multiparagraphs-tab.md new file mode 100644 index 0000000..8c50d42 --- /dev/null +++ b/test/karlcow/list-multiparagraphs-tab.md @@ -0,0 +1,9 @@ +* This is a list item with two paragraphs. Lorem ipsum dolor + sit amet, consectetuer adipiscing elit. Aliquam hendrerit + mi posuere lectus. + + Vestibulum enim wisi, viverra nec, fringilla in, laoreet + vitae, risus. Donec sit amet nisl. Aliquam semper ipsum + sit amet velit. + +* Suspendisse id sem consectetuer libero luctus adipiscing. \ No newline at end of file diff --git a/test/karlcow/list-multiparagraphs.html b/test/karlcow/list-multiparagraphs.html new file mode 100644 index 0000000..a90759e --- /dev/null +++ b/test/karlcow/list-multiparagraphs.html @@ -0,0 +1,10 @@ +
      +
    • This is a list item with two paragraphs. Lorem ipsum dolor +sit amet, consectetuer adipiscing elit. Aliquam hendrerit +mi posuere lectus.

      + +

      Vestibulum enim wisi, viverra nec, fringilla in, laoreet +vitae, risus. Donec sit amet nisl. Aliquam semper ipsum +sit amet velit.

    • +
    • Suspendisse id sem consectetuer libero luctus adipiscing.

    • +
    \ No newline at end of file diff --git a/test/karlcow/list-multiparagraphs.md b/test/karlcow/list-multiparagraphs.md new file mode 100644 index 0000000..58d4820 --- /dev/null +++ b/test/karlcow/list-multiparagraphs.md @@ -0,0 +1,9 @@ +* This is a list item with two paragraphs. Lorem ipsum dolor + sit amet, consectetuer adipiscing elit. Aliquam hendrerit + mi posuere lectus. + + Vestibulum enim wisi, viverra nec, fringilla in, laoreet + vitae, risus. Donec sit amet nisl. Aliquam semper ipsum + sit amet velit. + +* Suspendisse id sem consectetuer libero luctus adipiscing. \ No newline at end of file diff --git a/test/karlcow/ordered-list-escaped.html b/test/karlcow/ordered-list-escaped.html new file mode 100644 index 0000000..f6c477d --- /dev/null +++ b/test/karlcow/ordered-list-escaped.html @@ -0,0 +1 @@ +

    1. ordered list escape

    \ No newline at end of file diff --git a/test/karlcow/ordered-list-escaped.md b/test/karlcow/ordered-list-escaped.md new file mode 100644 index 0000000..ec71a7e --- /dev/null +++ b/test/karlcow/ordered-list-escaped.md @@ -0,0 +1 @@ +1\. ordered list escape \ No newline at end of file diff --git a/test/karlcow/ordered-list-inner-par-list.html b/test/karlcow/ordered-list-inner-par-list.html new file mode 100644 index 0000000..3e7796c --- /dev/null +++ b/test/karlcow/ordered-list-inner-par-list.html @@ -0,0 +1,9 @@ +
      +
    1. +

      1

      +
        +
      • inner par list
      • +
      +
    2. +
    3. 2

    4. +
    diff --git a/test/karlcow/ordered-list-inner-par-list.md b/test/karlcow/ordered-list-inner-par-list.md new file mode 100644 index 0000000..05c6490 --- /dev/null +++ b/test/karlcow/ordered-list-inner-par-list.md @@ -0,0 +1,5 @@ +1. 1 + + - inner par list + +2. 2 diff --git a/test/karlcow/ordered-list-items-random-number.html b/test/karlcow/ordered-list-items-random-number.html new file mode 100644 index 0000000..6113b3a --- /dev/null +++ b/test/karlcow/ordered-list-items-random-number.html @@ -0,0 +1,5 @@ +
      +
    1. list item 1
    2. +
    3. list item 2
    4. +
    5. list item 3
    6. +
    \ No newline at end of file diff --git a/test/karlcow/ordered-list-items-random-number.md b/test/karlcow/ordered-list-items-random-number.md new file mode 100644 index 0000000..8f4d9bb --- /dev/null +++ b/test/karlcow/ordered-list-items-random-number.md @@ -0,0 +1,3 @@ +1. list item 1 +8. list item 2 +1. list item 3 \ No newline at end of file diff --git a/test/karlcow/ordered-list-items.html b/test/karlcow/ordered-list-items.html new file mode 100644 index 0000000..6113b3a --- /dev/null +++ b/test/karlcow/ordered-list-items.html @@ -0,0 +1,5 @@ +
      +
    1. list item 1
    2. +
    3. list item 2
    4. +
    5. list item 3
    6. +
    \ No newline at end of file diff --git a/test/karlcow/ordered-list-items.md b/test/karlcow/ordered-list-items.md new file mode 100644 index 0000000..6ba5e88 --- /dev/null +++ b/test/karlcow/ordered-list-items.md @@ -0,0 +1,3 @@ +1. list item 1 +2. list item 2 +3. list item 3 \ No newline at end of file diff --git a/test/karlcow/paragraph-hard-return.html b/test/karlcow/paragraph-hard-return.html new file mode 100644 index 0000000..7915e29 --- /dev/null +++ b/test/karlcow/paragraph-hard-return.html @@ -0,0 +1,3 @@ +

    This is a paragraph +on multiple lines +with hard return.

    \ No newline at end of file diff --git a/test/karlcow/paragraph-hard-return.md b/test/karlcow/paragraph-hard-return.md new file mode 100644 index 0000000..3e4dfbd --- /dev/null +++ b/test/karlcow/paragraph-hard-return.md @@ -0,0 +1,3 @@ +This is a paragraph +on multiple lines +with hard return. \ No newline at end of file diff --git a/test/karlcow/paragraph-line.html b/test/karlcow/paragraph-line.html new file mode 100644 index 0000000..5fc0e44 --- /dev/null +++ b/test/karlcow/paragraph-line.html @@ -0,0 +1 @@ +

    This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph on 1 line.

    \ No newline at end of file diff --git a/test/karlcow/paragraph-line.md b/test/karlcow/paragraph-line.md new file mode 100644 index 0000000..edcdead --- /dev/null +++ b/test/karlcow/paragraph-line.md @@ -0,0 +1 @@ +This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph on 1 line. \ No newline at end of file diff --git a/test/karlcow/paragraph-trailing-leading-spaces.html b/test/karlcow/paragraph-trailing-leading-spaces.html new file mode 100644 index 0000000..d99afcd --- /dev/null +++ b/test/karlcow/paragraph-trailing-leading-spaces.html @@ -0,0 +1 @@ +

    This is a paragraph with a trailing and leading space.

    \ No newline at end of file diff --git a/test/karlcow/paragraph-trailing-leading-spaces.md b/test/karlcow/paragraph-trailing-leading-spaces.md new file mode 100644 index 0000000..3b3353d --- /dev/null +++ b/test/karlcow/paragraph-trailing-leading-spaces.md @@ -0,0 +1 @@ + This is a paragraph with a trailing and leading space. \ No newline at end of file diff --git a/test/karlcow/paragraph-trailing-tab.html b/test/karlcow/paragraph-trailing-tab.html new file mode 100644 index 0000000..f4bcd7c --- /dev/null +++ b/test/karlcow/paragraph-trailing-tab.html @@ -0,0 +1 @@ +

    This is a paragraph with 1 trailing tab.

    \ No newline at end of file diff --git a/test/karlcow/paragraph-trailing-tab.md b/test/karlcow/paragraph-trailing-tab.md new file mode 100644 index 0000000..7b345c2 --- /dev/null +++ b/test/karlcow/paragraph-trailing-tab.md @@ -0,0 +1 @@ +This is a paragraph with 1 trailing tab. \ No newline at end of file diff --git a/test/karlcow/paragraphs-2-leading-spaces.html b/test/karlcow/paragraphs-2-leading-spaces.html new file mode 100644 index 0000000..bd08e95 --- /dev/null +++ b/test/karlcow/paragraphs-2-leading-spaces.html @@ -0,0 +1 @@ +

    This is a paragraph with 2 leading spaces.

    \ No newline at end of file diff --git a/test/karlcow/paragraphs-2-leading-spaces.md b/test/karlcow/paragraphs-2-leading-spaces.md new file mode 100644 index 0000000..1a618de --- /dev/null +++ b/test/karlcow/paragraphs-2-leading-spaces.md @@ -0,0 +1 @@ + This is a paragraph with 2 leading spaces. \ No newline at end of file diff --git a/test/karlcow/paragraphs-3-leading-spaces.html b/test/karlcow/paragraphs-3-leading-spaces.html new file mode 100644 index 0000000..9c91f46 --- /dev/null +++ b/test/karlcow/paragraphs-3-leading-spaces.html @@ -0,0 +1 @@ +

    This is a paragraph with 3 leading spaces.

    \ No newline at end of file diff --git a/test/karlcow/paragraphs-3-leading-spaces.md b/test/karlcow/paragraphs-3-leading-spaces.md new file mode 100644 index 0000000..a38428f --- /dev/null +++ b/test/karlcow/paragraphs-3-leading-spaces.md @@ -0,0 +1 @@ + This is a paragraph with 3 leading spaces. \ No newline at end of file diff --git a/test/karlcow/paragraphs-leading-space.html b/test/karlcow/paragraphs-leading-space.html new file mode 100644 index 0000000..917426d --- /dev/null +++ b/test/karlcow/paragraphs-leading-space.html @@ -0,0 +1 @@ +

    This is a paragraph with 1 leading space.

    \ No newline at end of file diff --git a/test/karlcow/paragraphs-leading-space.md b/test/karlcow/paragraphs-leading-space.md new file mode 100644 index 0000000..0d95f8b --- /dev/null +++ b/test/karlcow/paragraphs-leading-space.md @@ -0,0 +1 @@ + This is a paragraph with 1 leading space. \ No newline at end of file diff --git a/test/karlcow/paragraphs-trailing-spaces.html b/test/karlcow/paragraphs-trailing-spaces.html new file mode 100644 index 0000000..7636c46 --- /dev/null +++ b/test/karlcow/paragraphs-trailing-spaces.html @@ -0,0 +1 @@ +

    This is a paragraph with a trailing space.

    \ No newline at end of file diff --git a/test/karlcow/paragraphs-trailing-spaces.md b/test/karlcow/paragraphs-trailing-spaces.md new file mode 100644 index 0000000..6809b73 --- /dev/null +++ b/test/karlcow/paragraphs-trailing-spaces.md @@ -0,0 +1 @@ +This is a paragraph with a trailing space. \ No newline at end of file diff --git a/test/karlcow/strong-middle-word.html b/test/karlcow/strong-middle-word.html new file mode 100644 index 0000000..4550f32 --- /dev/null +++ b/test/karlcow/strong-middle-word.html @@ -0,0 +1 @@ +

    asterisks

    \ No newline at end of file diff --git a/test/karlcow/strong-middle-word.md b/test/karlcow/strong-middle-word.md new file mode 100644 index 0000000..44651a4 --- /dev/null +++ b/test/karlcow/strong-middle-word.md @@ -0,0 +1 @@ +as**te**risks \ No newline at end of file diff --git a/test/karlcow/strong-star.html b/test/karlcow/strong-star.html new file mode 100644 index 0000000..3181aea --- /dev/null +++ b/test/karlcow/strong-star.html @@ -0,0 +1 @@ +

    double asterisks

    \ No newline at end of file diff --git a/test/karlcow/strong-star.md b/test/karlcow/strong-star.md new file mode 100644 index 0000000..566125c --- /dev/null +++ b/test/karlcow/strong-star.md @@ -0,0 +1 @@ +**double asterisks** \ No newline at end of file diff --git a/test/karlcow/strong-underscore.html b/test/karlcow/strong-underscore.html new file mode 100644 index 0000000..ef613bb --- /dev/null +++ b/test/karlcow/strong-underscore.html @@ -0,0 +1 @@ +

    double underscores

    \ No newline at end of file diff --git a/test/karlcow/strong-underscore.md b/test/karlcow/strong-underscore.md new file mode 100644 index 0000000..69cc179 --- /dev/null +++ b/test/karlcow/strong-underscore.md @@ -0,0 +1 @@ +__double underscores__ \ No newline at end of file diff --git a/test/karlcow/unordered-list-items-asterisk.html b/test/karlcow/unordered-list-items-asterisk.html new file mode 100644 index 0000000..a5d2dfc --- /dev/null +++ b/test/karlcow/unordered-list-items-asterisk.html @@ -0,0 +1,5 @@ +
      +
    • list item 1
    • +
    • list item 2
    • +
    • list item 3
    • +
    \ No newline at end of file diff --git a/test/karlcow/unordered-list-items-asterisk.md b/test/karlcow/unordered-list-items-asterisk.md new file mode 100644 index 0000000..01e3e61 --- /dev/null +++ b/test/karlcow/unordered-list-items-asterisk.md @@ -0,0 +1,3 @@ +* list item 1 +* list item 2 +* list item 3 diff --git a/test/karlcow/unordered-list-items-dashsign.html b/test/karlcow/unordered-list-items-dashsign.html new file mode 100644 index 0000000..a5d2dfc --- /dev/null +++ b/test/karlcow/unordered-list-items-dashsign.html @@ -0,0 +1,5 @@ +
      +
    • list item 1
    • +
    • list item 2
    • +
    • list item 3
    • +
    \ No newline at end of file diff --git a/test/karlcow/unordered-list-items-dashsign.md b/test/karlcow/unordered-list-items-dashsign.md new file mode 100644 index 0000000..bf057f8 --- /dev/null +++ b/test/karlcow/unordered-list-items-dashsign.md @@ -0,0 +1,3 @@ +- list item 1 +- list item 2 +- list item 3 \ No newline at end of file diff --git a/test/karlcow/unordered-list-items-leading-1space.html b/test/karlcow/unordered-list-items-leading-1space.html new file mode 100644 index 0000000..99cec2f --- /dev/null +++ b/test/karlcow/unordered-list-items-leading-1space.html @@ -0,0 +1,5 @@ +
      +
    • list item 1
    • +
    • list item 2
    • +
    • list item 3
    • +
    diff --git a/test/karlcow/unordered-list-items-leading-1space.md b/test/karlcow/unordered-list-items-leading-1space.md new file mode 100644 index 0000000..ec95bb7 --- /dev/null +++ b/test/karlcow/unordered-list-items-leading-1space.md @@ -0,0 +1,3 @@ + * list item 1 + * list item 2 + * list item 3 \ No newline at end of file diff --git a/test/karlcow/unordered-list-items-leading-2spaces.html b/test/karlcow/unordered-list-items-leading-2spaces.html new file mode 100644 index 0000000..a5d2dfc --- /dev/null +++ b/test/karlcow/unordered-list-items-leading-2spaces.html @@ -0,0 +1,5 @@ +
      +
    • list item 1
    • +
    • list item 2
    • +
    • list item 3
    • +
    \ No newline at end of file diff --git a/test/karlcow/unordered-list-items-leading-2spaces.md b/test/karlcow/unordered-list-items-leading-2spaces.md new file mode 100644 index 0000000..0d724cd --- /dev/null +++ b/test/karlcow/unordered-list-items-leading-2spaces.md @@ -0,0 +1,3 @@ + * list item 1 + * list item 2 + * list item 3 \ No newline at end of file diff --git a/test/karlcow/unordered-list-items-leading-3spaces.html b/test/karlcow/unordered-list-items-leading-3spaces.html new file mode 100644 index 0000000..a5d2dfc --- /dev/null +++ b/test/karlcow/unordered-list-items-leading-3spaces.html @@ -0,0 +1,5 @@ +
      +
    • list item 1
    • +
    • list item 2
    • +
    • list item 3
    • +
    \ No newline at end of file diff --git a/test/karlcow/unordered-list-items-leading-3spaces.md b/test/karlcow/unordered-list-items-leading-3spaces.md new file mode 100644 index 0000000..c858766 --- /dev/null +++ b/test/karlcow/unordered-list-items-leading-3spaces.md @@ -0,0 +1,3 @@ + * list item 1 + * list item 2 + * list item 3 \ No newline at end of file diff --git a/test/karlcow/unordered-list-items-plussign.html b/test/karlcow/unordered-list-items-plussign.html new file mode 100644 index 0000000..a5d2dfc --- /dev/null +++ b/test/karlcow/unordered-list-items-plussign.html @@ -0,0 +1,5 @@ +
      +
    • list item 1
    • +
    • list item 2
    • +
    • list item 3
    • +
    \ No newline at end of file diff --git a/test/karlcow/unordered-list-items-plussign.md b/test/karlcow/unordered-list-items-plussign.md new file mode 100644 index 0000000..c91561e --- /dev/null +++ b/test/karlcow/unordered-list-items-plussign.md @@ -0,0 +1,3 @@ ++ list item 1 ++ list item 2 ++ list item 3 \ No newline at end of file diff --git a/test/karlcow/unordered-list-paragraphs.html b/test/karlcow/unordered-list-paragraphs.html new file mode 100644 index 0000000..e78215e --- /dev/null +++ b/test/karlcow/unordered-list-paragraphs.html @@ -0,0 +1,4 @@ +
      +
    • list item in paragraph

    • +
    • another list item in paragraph

    • +
    \ No newline at end of file diff --git a/test/karlcow/unordered-list-paragraphs.md b/test/karlcow/unordered-list-paragraphs.md new file mode 100644 index 0000000..c94b4db --- /dev/null +++ b/test/karlcow/unordered-list-paragraphs.md @@ -0,0 +1,3 @@ +* list item in paragraph + +* another list item in paragraph \ No newline at end of file diff --git a/test/karlcow/unordered-list-unindented-content.html b/test/karlcow/unordered-list-unindented-content.html new file mode 100644 index 0000000..44d07b8 --- /dev/null +++ b/test/karlcow/unordered-list-unindented-content.html @@ -0,0 +1,4 @@ +
      +
    • This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph in a list.
    • +
    • and yet another long long long long long long long long long long long long long long long long long long long long long long line.
    • +
    \ No newline at end of file diff --git a/test/karlcow/unordered-list-unindented-content.md b/test/karlcow/unordered-list-unindented-content.md new file mode 100644 index 0000000..f564c02 --- /dev/null +++ b/test/karlcow/unordered-list-unindented-content.md @@ -0,0 +1,2 @@ +* This a very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long paragraph in a list. +* and yet another long long long long long long long long long long long long long long long long long long long long long long line. \ No newline at end of file diff --git a/test/karlcow/unordered-list-with-indented-content.html b/test/karlcow/unordered-list-with-indented-content.html new file mode 100644 index 0000000..003d8ce --- /dev/null +++ b/test/karlcow/unordered-list-with-indented-content.html @@ -0,0 +1,7 @@ +
      +
    • This is a list item +with the content on +multiline and indented.
    • +
    • And this another list item +with the same principle.
    • +
    \ No newline at end of file diff --git a/test/karlcow/unordered-list-with-indented-content.md b/test/karlcow/unordered-list-with-indented-content.md new file mode 100644 index 0000000..5fcc8e0 --- /dev/null +++ b/test/karlcow/unordered-list-with-indented-content.md @@ -0,0 +1,5 @@ +* This is a list item + with the content on + multiline and indented. +* And this another list item + with the same principle. \ No newline at end of file diff --git a/test/node/showdown.Converter.makeHtml.js b/test/node/showdown.Converter.makeHtml.js index f687753..5cfabf9 100644 --- a/test/node/showdown.Converter.makeHtml.js +++ b/test/node/showdown.Converter.makeHtml.js @@ -8,14 +8,7 @@ describe('showdown.Converter', function () { require('source-map-support').install(); require('chai').should(); - var fs = require('fs'), - showdown = require('../../dist/showdown.js'), - cases = fs.readdirSync('test/cases/') - .filter(filter()) - .map(map('test/cases/')), - issues = fs.readdirSync('test/issues/') - .filter(filter()) - .map(map('test/issues/')); + var showdown = require('../../dist/showdown.js'); describe('Converter.options extensions', function () { showdown.extensions.testext = function () { @@ -28,7 +21,7 @@ describe('showdown.Converter', function () { }]; }; var runCount, - converter = new showdown.Converter({extensions: ['testext']}); + converter = new showdown.Converter({extensions: ['testext']}); it('output extensions should run once', function () { runCount = 0; @@ -37,82 +30,6 @@ describe('showdown.Converter', function () { }); }); - function filter() { - return function (file) { - var ext = file.slice(-3); - return (ext === '.md'); - }; - } - - function map(dir) { - return function (file) { - var name = file.replace('.md', ''), - htmlPath = dir + name + '.html', - html = fs.readFileSync(htmlPath, 'utf8'), - mdPath = dir + name + '.md', - md = fs.readFileSync(mdPath, 'utf8'); - - return { - name: name, - input: md, - expected: html - }; - }; - } - - function assertion(testCase, converter) { - return function () { - testCase.actual = converter.makeHtml(testCase.input); - testCase = normalize(testCase); - - // Compare - testCase.actual.should.equal(testCase.expected); - }; - } - - //Normalize input/output - function normalize(testCase) { - - // Normalize line returns - testCase.expected = testCase.expected.replace(/\r/g, ''); - testCase.actual = testCase.actual.replace(/\r/g, ''); - - // Ignore all leading/trailing whitespace - testCase.expected = testCase.expected.split('\n').map(function (x) { - return x.trim(); - }).join('\n'); - testCase.actual = testCase.actual.split('\n').map(function (x) { - return x.trim(); - }).join('\n'); - - // Remove extra lines - testCase.expected = testCase.expected.trim(); - - // Convert whitespace to a visible character so that it shows up on error reports - testCase.expected = testCase.expected.replace(/ /g, '·'); - testCase.expected = testCase.expected.replace(/\n/g, '•\n'); - testCase.actual = testCase.actual.replace(/ /g, '·'); - testCase.actual = testCase.actual.replace(/\n/g, '•\n'); - - return testCase; - - } - - //Tests - describe('makeHtml() output testcase', function () { - var converter = new showdown.Converter(); - for (var i = 0; i < cases.length; ++i) { - it(cases[i].name, assertion(cases[i], converter)); - } - }); - - describe('makeHtml() issues testcase', function () { - var converter = new showdown.Converter(); - for (var i = 0; i < issues.length; ++i) { - it(issues[i].name, assertion(issues[i], converter)); - } - }); - describe('makeHtml() with option omitExtraWLInCodeBlocks', function () { var converter = new showdown.Converter({omitExtraWLInCodeBlocks: true}), text = 'var foo = bar;', diff --git a/test/node/testsuite.issues.js b/test/node/testsuite.issues.js new file mode 100644 index 0000000..7623dd6 --- /dev/null +++ b/test/node/testsuite.issues.js @@ -0,0 +1,15 @@ +/** + * Created by Estevao on 08-06-2015. + */ +var showdown = require('../../dist/showdown.js'), + converter = new showdown.Converter(), + bootstrap = require('../bootstrap.js'), + assertion = bootstrap.assertion, + testsuite = bootstrap.getTestSuite('test/issues/'); + +//MD-Testsuite (borrowed from karlcow/markdown-testsuite) +describe('makeHtml() issues testsuite', function () { + for (var i = 0; i < testsuite.length; ++i) { + it(testsuite[i].name, assertion(testsuite[i], converter)); + } +}); diff --git a/test/node/testsuite.karlcow.js b/test/node/testsuite.karlcow.js new file mode 100644 index 0000000..22f4cb6 --- /dev/null +++ b/test/node/testsuite.karlcow.js @@ -0,0 +1,12 @@ +var showdown = require('../../dist/showdown.js'), + converter = new showdown.Converter({noHeaderId: true}), + bootstrap = require('../bootstrap.js'), + assertion = bootstrap.assertion, + testsuite = bootstrap.getTestSuite('test/karlcow/'); + +//MD-Testsuite (borrowed from karlcow/markdown-testsuite) +describe('makeHtml() karlcow testsuite', function () { + for (var i = 0; i < testsuite.length; ++i) { + it(testsuite[i].name, assertion(testsuite[i], converter)); + } +}); diff --git a/test/node/testsuite.standard.js b/test/node/testsuite.standard.js new file mode 100644 index 0000000..2648d3c --- /dev/null +++ b/test/node/testsuite.standard.js @@ -0,0 +1,12 @@ +var showdown = require('../../dist/showdown.js'), + converter = new showdown.Converter(), + bootstrap = require('../bootstrap.js'), + assertion = bootstrap.assertion, + testsuite = bootstrap.getTestSuite('test/cases/'); + +//MD-Testsuite (borrowed from karlcow/markdown-testsuite) +describe('makeHtml() standard testsuite', function () { + for (var i = 0; i < testsuite.length; ++i) { + it(testsuite[i].name, assertion(testsuite[i], converter)); + } +});