From 548becfd5869e16490405138c17154e098fc475c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Tue, 6 Jan 2015 16:38:22 +0000 Subject: [PATCH 01/34] renamed showdown to showdown legacy --- src/{showdown.js => showdown..legacy.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{showdown.js => showdown..legacy.js} (100%) diff --git a/src/showdown.js b/src/showdown..legacy.js similarity index 100% rename from src/showdown.js rename to src/showdown..legacy.js From eae5f0e01fd086cfee87de5a547fcd057f59a460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Thu, 15 Jan 2015 21:21:33 +0000 Subject: [PATCH 02/34] Major code refactoring --- .gitattributes | 7 +- .gitignore | 3 +- .jshintignore | 3 +- .jshintrc | 27 + CREDITS.md | 39 + Gruntfile.js | 68 +- README.md | 638 +++---- bower.json | 8 +- compressed/Showdown.js | 1606 ---------------- compressed/Showdown.js.map | 1 - compressed/Showdown.min.js | 2 - compressed/extensions/github.min.js | 2 - compressed/extensions/github.min.js.map | 1 - compressed/extensions/prettify.min.js | 2 - compressed/extensions/prettify.min.js.map | 1 - compressed/extensions/table.min.js | 2 - compressed/extensions/table.min.js.map | 1 - compressed/extensions/twitter.min.js | 2 - compressed/extensions/twitter.min.js.map | 1 - dist/showdown.js | 1577 ++++++++++++++++ dist/showdown.js.map | 1 + example/angular.html | 83 - example/showdown-gui.html | 720 -------- example/showdown-gui.js | 349 ---- example/showdown.js | 1 - example/syntax.txt | 896 --------- license.txt | 8 +- package.json | 11 +- perlMarkdown/Markdown License.txt | 30 - perlMarkdown/Markdown-1.0.2b2.pl | 1509 --------------- perlMarkdown/Markdown-1.0.2b7.pl | 1642 ----------------- perlMarkdown/readme.txt | 13 - src/{ng-showdown.js => angular.js} | 28 +- src/extensions/github.js | 25 - src/extensions/prettify.js | 29 - src/extensions/table.js | 106 -- src/extensions/twitter.js | 42 - src/helpers.js | 98 + src/loader.js | 20 + src/showdown..legacy.js | 1454 --------------- src/showdown.js | 145 ++ src/subParsers/anchors.js | 136 ++ src/subParsers/autoLinks.js | 33 + src/subParsers/blockGamut.js | 33 + src/subParsers/blockQuotes.js | 50 + src/subParsers/codeBlocks.js | 48 + src/subParsers/codeSpans.js | 57 + src/subParsers/detab.js | 38 + src/subParsers/encodeAmpsAndAngles.js | 18 + src/subParsers/encodeBackslashEscapes.js | 21 + src/subParsers/encodeCode.js | 33 + src/subParsers/encodeEmailAddress.js | 60 + .../escapeSpecialCharsWithinTagAttributes.js | 23 + src/subParsers/githubCodeBlocks.js | 46 + src/subParsers/hashBlock.js | 9 + src/subParsers/hashElement.js | 23 + src/subParsers/hashHTMLBlocks.js | 131 ++ src/subParsers/headers.js | 59 + src/subParsers/images.js | 109 ++ src/subParsers/italicsAndBold.js | 15 + src/subParsers/lists.js | 150 ++ src/subParsers/outdent.js | 19 + src/subParsers/paragraphs.js | 47 + src/subParsers/spanGamut.js | 34 + src/subParsers/stripBlankLines.js | 14 + src/subParsers/stripLinkDefinitions.js | 57 + src/subParsers/unescapeSpecialChars.js | 18 + test/cases/anchors-by-reference.html | 3 +- test/cases/automatic-anchors.html | 3 +- test/cases/blockquote.html | 2 +- test/cases/code-block-html-escape.html | 3 +- test/cases/code-block.html | 3 +- test/cases/doubline-list.html | 3 +- test/cases/emphasis.html | 3 +- test/cases/escaped-number-period.html | 2 +- test/cases/escaping.html | 3 +- test/cases/github-style-at-start.html | 3 +- test/cases/github-style-codeblock.html | 4 +- test/cases/github-style-linebreaks.html | 3 +- test/cases/h1-with-double-hash.html | 2 +- test/cases/h1-with-equals.html | 2 +- test/cases/h1-with-single-hash.html | 2 +- test/cases/h2-with-dashes.html | 2 +- test/cases/h2-with-double-hash.html | 2 +- test/cases/h2-with-single-hash.html | 2 +- test/cases/h3-with-double-hash.html | 2 +- test/cases/h3-with-single-hash.html | 2 +- test/cases/h4-with-single-hash.html | 2 +- test/cases/h5-with-single-hash.html | 2 +- test/cases/h6-with-single-hash.html | 2 +- test/cases/horizontal-rules.html | 3 +- test/cases/html5-strutural-tags.html | 3 +- test/cases/images.html | 3 +- test/cases/implicit-anchors.html | 3 +- test/cases/inline-anchors.html | 3 +- test/cases/inline-code.html | 3 +- test/cases/inline-escaped-chars.html | 3 +- test/cases/inline-style-tag.html | 3 +- test/cases/lazy-blockquote.html | 2 +- test/cases/list-with-blockquote.html | 2 +- test/cases/list-with-code.html | 2 +- test/cases/multi-paragraph-list.html | 2 +- test/cases/multiline-unordered-list.html | 2 +- test/cases/nested-blockquote.html | 2 +- test/cases/ordered-list-same-number.html | 2 +- test/cases/ordered-list-wrong-numbers.html | 2 +- test/cases/ordered-list.html | 2 +- test/cases/relative-anchors.html | 3 +- test/cases/simple-paragraph.html | 2 +- test/cases/strong.html | 3 +- test/cases/unordered-list-asterisk.html | 2 +- test/cases/unordered-list-minus.html | 2 +- test/cases/unordered-list-plus.html | 2 +- test/cases/url-with-parenthesis.html | 3 +- test/converter/testMakeHtml.js | 80 + test/extensions/github/basic.html | 5 - test/extensions/github/basic.md | 3 - test/extensions/prettify/basic.html | 7 - test/extensions/prettify/basic.md | 6 - test/extensions/table/basic.html | 21 - test/extensions/table/basic.md | 4 - test/extensions/table/large.html | 48 - test/extensions/table/large.md | 7 - test/extensions/table/multiple-tables.html | 43 - test/extensions/table/multiple-tables.md | 17 - test/extensions/table/with-equals.html | 21 - test/extensions/table/with-equals.md | 4 - test/extensions/table/with-surroundings.html | 33 - test/extensions/table/with-surroundings.md | 16 - test/extensions/table/without-body.html | 11 - test/extensions/table/without-body.md | 2 - .../table/without-header-delimiter.html | 1 - .../table/without-header-delimiter.md | 1 - test/extensions/twitter/basic.html | 5 - test/extensions/twitter/basic.md | 5 - test/run.js | 86 - test/testTable.js | 24 - 137 files changed, 3694 insertions(+), 9354 deletions(-) create mode 100644 .jshintrc create mode 100644 CREDITS.md delete mode 100644 compressed/Showdown.js delete mode 100644 compressed/Showdown.js.map delete mode 100644 compressed/Showdown.min.js delete mode 100644 compressed/extensions/github.min.js delete mode 100644 compressed/extensions/github.min.js.map delete mode 100644 compressed/extensions/prettify.min.js delete mode 100644 compressed/extensions/prettify.min.js.map delete mode 100644 compressed/extensions/table.min.js delete mode 100644 compressed/extensions/table.min.js.map delete mode 100644 compressed/extensions/twitter.min.js delete mode 100644 compressed/extensions/twitter.min.js.map create mode 100644 dist/showdown.js create mode 100644 dist/showdown.js.map delete mode 100644 example/angular.html delete mode 100644 example/showdown-gui.html delete mode 100644 example/showdown-gui.js delete mode 120000 example/showdown.js delete mode 100644 example/syntax.txt delete mode 100644 perlMarkdown/Markdown License.txt delete mode 100644 perlMarkdown/Markdown-1.0.2b2.pl delete mode 100644 perlMarkdown/Markdown-1.0.2b7.pl delete mode 100644 perlMarkdown/readme.txt rename src/{ng-showdown.js => angular.js} (87%) delete mode 100644 src/extensions/github.js delete mode 100644 src/extensions/prettify.js delete mode 100644 src/extensions/table.js delete mode 100644 src/extensions/twitter.js create mode 100644 src/helpers.js create mode 100644 src/loader.js delete mode 100644 src/showdown..legacy.js create mode 100644 src/showdown.js create mode 100644 src/subParsers/anchors.js create mode 100644 src/subParsers/autoLinks.js create mode 100644 src/subParsers/blockGamut.js create mode 100644 src/subParsers/blockQuotes.js create mode 100644 src/subParsers/codeBlocks.js create mode 100644 src/subParsers/codeSpans.js create mode 100644 src/subParsers/detab.js create mode 100644 src/subParsers/encodeAmpsAndAngles.js create mode 100644 src/subParsers/encodeBackslashEscapes.js create mode 100644 src/subParsers/encodeCode.js create mode 100644 src/subParsers/encodeEmailAddress.js create mode 100644 src/subParsers/escapeSpecialCharsWithinTagAttributes.js create mode 100644 src/subParsers/githubCodeBlocks.js create mode 100644 src/subParsers/hashBlock.js create mode 100644 src/subParsers/hashElement.js create mode 100644 src/subParsers/hashHTMLBlocks.js create mode 100644 src/subParsers/headers.js create mode 100644 src/subParsers/images.js create mode 100644 src/subParsers/italicsAndBold.js create mode 100644 src/subParsers/lists.js create mode 100644 src/subParsers/outdent.js create mode 100644 src/subParsers/paragraphs.js create mode 100644 src/subParsers/spanGamut.js create mode 100644 src/subParsers/stripBlankLines.js create mode 100644 src/subParsers/stripLinkDefinitions.js create mode 100644 src/subParsers/unescapeSpecialChars.js create mode 100644 test/converter/testMakeHtml.js delete mode 100644 test/extensions/github/basic.html delete mode 100644 test/extensions/github/basic.md delete mode 100644 test/extensions/prettify/basic.html delete mode 100644 test/extensions/prettify/basic.md delete mode 100644 test/extensions/table/basic.html delete mode 100644 test/extensions/table/basic.md delete mode 100644 test/extensions/table/large.html delete mode 100644 test/extensions/table/large.md delete mode 100644 test/extensions/table/multiple-tables.html delete mode 100644 test/extensions/table/multiple-tables.md delete mode 100644 test/extensions/table/with-equals.html delete mode 100644 test/extensions/table/with-equals.md delete mode 100644 test/extensions/table/with-surroundings.html delete mode 100644 test/extensions/table/with-surroundings.md delete mode 100644 test/extensions/table/without-body.html delete mode 100644 test/extensions/table/without-body.md delete mode 100644 test/extensions/table/without-header-delimiter.html delete mode 100644 test/extensions/table/without-header-delimiter.md delete mode 100644 test/extensions/twitter/basic.html delete mode 100644 test/extensions/twitter/basic.md delete mode 100644 test/run.js delete mode 100644 test/testTable.js diff --git a/.gitattributes b/.gitattributes index 7e29a2cf..6234bf3b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,7 +1,6 @@ /test export-ignore .gitattributes export-ignore .gitignore export-ignore -/perlMarkdown export-ignore -/example export-ignore -grunt.js export-ignore - +.jshintignore export-ignore +.travis.yml export-ignore +Gruntfile.js export-ignore diff --git a/.gitignore b/.gitignore index 8d7c6bbe..61f9328f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ +.idea/ +build/ .DS_Store node_modules npm-debug.log -.idea/ diff --git a/.jshintignore b/.jshintignore index 62aa808e..a76422d5 100644 --- a/.jshintignore +++ b/.jshintignore @@ -1,2 +1,3 @@ Gruntfile.js -dist/**/*.js \ No newline at end of file +dist/**/*.js +build/**/*.js diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 00000000..03d59610 --- /dev/null +++ b/.jshintrc @@ -0,0 +1,27 @@ +{ + "node": true, + "browser": true, + "esnext": true, + "bitwise": true, + "camelcase": true, + "curly": true, + "eqeqeq": true, + "immed": true, + "indent": 2, + "latedef": "nofunc", + "newcap": true, + "noarg": true, + "quotmark": "single", + "undef": false, + "unused": true, + "strict": false, + "trailing": true, + "smarttabs": true, + "globals": { + "angular": true, + "module": true, + "define": true, + "window": true, + "showdown": true + } +} diff --git a/CREDITS.md b/CREDITS.md new file mode 100644 index 00000000..632bca4d --- /dev/null +++ b/CREDITS.md @@ -0,0 +1,39 @@ +Credits +======= + - Showdown v2 + * [Estevão Santos](http://soares-dos-santos.com)
+ Code Refactoring and project maintainer + + - Showdown v1 + * [Corey Innis](http://github.com/coreyti):
+ GitHub project maintainer + * [Remy Sharp](https://github.com/remy/):
+ CommonJS-compatibility and more + * [Konstantin Käfer](https://github.com/kkaefer/):
+ CommonJS packaging + * [Roger Braun](https://github.com/rogerbraun):
+ Github-style code blocks + * [Dominic Tarr](https://github.com/dominictarr):
+ Documentation + * [Cat Chen](https://github.com/CatChen):
+ Export fix + * [Titus Stone](https://github.com/tstone):
+ Mocha tests, extension mechanism, and bug fixes + * [Rob Sutherland](https://github.com/roberocity):
+ The idea that lead to extensions + * [Pavel Lang](https://github.com/langpavel):
+ Code cleanup + * [Ben Combee](https://github.com/unwiredben):
+ Regex optimization + * [Adam Backstrom](https://github.com/abackstrom):
+ WebKit bugfix + * [Pascal Deschênes](https://github.com/pdeschen):
+ Grunt support, extension fixes + additions, packaging improvements, documentation + * [Estevão Santos](http://soares-dos-santos.com)
+ Bug fixing and later maintainer + + - Original Project + * [John Gruber](http://daringfireball.net/projects/markdown/)
+ Author of Markdown + * [John Fraser](http://attacklab.net/) + Author of Showdown diff --git a/Gruntfile.js b/Gruntfile.js index 47d92628..dc955515 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -9,28 +9,13 @@ module.exports = function (grunt) { pkg: grunt.file.readJSON('package.json'), concat: { options: { - separator: ';', - sourceMap: true + sourceMap: true, + banner: ";/*! <%= pkg.name %> <%= grunt.template.today('dd-mm-yyyy') %> */\n(function(){\n 'use strict';\n", + footer: "}).call(this)" }, dist: { - src: ['src/showdown.js', 'src/*.js'], - dest: 'compressed/<%= pkg.name %>.js' - }, - github_ext: { - src: ['src/extensions/github.js'], - dest: 'compressed/extensions/github.min.js' - }, - prettify_ext: { - src: ['src/extensions/prettify.js'], - dest: 'compressed/extensions/prettify.min.js' - }, - table_ext: { - src: ['src/extensions/table.js'], - dest: 'compressed/extensions/table.min.js' - }, - twitter_ext: { - src: ['src/extensions/twitter.js'], - dest: 'compressed/extensions/twitter.min.js' + src: ['src/showdown.js', 'src/helpers.js', 'src/subParsers/*.js', 'src/loader.js'], + dest: 'dist/<%= pkg.name %>.js' } }, uglify: { @@ -39,41 +24,21 @@ module.exports = function (grunt) { }, dist: { files: { - 'compressed/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>'] - } - }, - github_ext: { - files: { - 'compressed/extensions/github.min.js': ['<%= concat.github_ext.dest %>'] - } - }, - prettify_ext: { - files: { - 'compressed/extensions/prettify.min.js': ['<%= concat.prettify_ext.dest %>'] - } - }, - table_ext: { - files: { - 'compressed/extensions/table.min.js': ['<%= concat.table_ext.dest %>'] - } - }, - twitter_ext: { - files: { - 'compressed/extensions/twitter.min.js': ['<%= concat.twitter_ext.dest %>'] + 'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>'] } } }, jshint: { - files: ['Gruntfile.js', 'src/**/*.js', 'test/**/*.js'] + files: ['Gruntfile.js', 'src/**/*.js'] }, simplemocha: { all: { - src: 'test/run.js', + src: 'test/**/*.js', options: { globals: ['should'], timeout: 3000, ignoreLeaks: false, - ui: 'bdd' + reporter: 'spec' } } } @@ -85,16 +50,23 @@ module.exports = function (grunt) { grunt.loadNpmTasks('grunt-simple-mocha'); // test + /* + grunt.registerTask('sourceMapsSupport', function() { + 'use strict'; + + //# sourceMappingURL=path/to/source.map + sourceMapSupport.install(); + }); + */ grunt.registerTask('lint', ['jshint']); - grunt.registerTask('test', ['simplemocha']); + grunt.registerTask('test', ['jshint', 'concat', 'simplemocha']); + grunt.registerTask('test-without-building', ['simplemocha']); // build with uglify grunt.registerTask('build', ['concat', 'uglify']); - // Build with closure compiler - grunt.registerTask('build-with-closure', ['test', 'concat', 'closure-compiler']); - // Default task(s). grunt.registerTask('default', []); + }; diff --git a/README.md b/README.md index 139e0df9..036de306 100644 --- a/README.md +++ b/README.md @@ -1,315 +1,323 @@ -# Showdown - -A JavaScript port of Markdown - -## Note - - > Showdown is now maintained by the [showdownjs](https://github.com/showdownjs) organization on Github. - > - > The organization needs members to maintain Showdown. - > - > Please see [this issue](https://github.com/showdownjs/showdown/issues/114) to express interest or comment on this note. - -## Original Attributions - -Showdown Copyright (c) 2007 John Fraser. - - -Original Markdown Copyright (c) 2004-2005 John Gruber - - -Redistributable under a BSD-style open source license. -See license.txt for more information. - -## Quick Example - -```js -var Showdown = require('showdown'); -var converter = new Showdown.converter(); - -converter.makeHtml('#hello markdown!'); - -//

hello, markdown

-``` - -## What's it for? - -Developers can use Showdown to: - - * Add in-browser preview to existing Markdown apps - - Showdown's output is (almost always) identical to - markdown.pl's, so the server can reproduce exactly - the output that the user saw. (See below for - exceptions.) - - * Add Markdown input to programs that don't support it - - Any app that accepts HTML input can now be made to speak - Markdown by modifying the input pages's HTML. If your - application lets users edit documents again later, - then they won't have access to the original Markdown - text. But this should be good enough for many - uses -- and you can do it with just a two-line - `onsubmit` function! - - * Add Markdown input to closed-source web apps - - You can write bookmarklets or userscripts to extend - any standard textarea on the web so that it accepts - Markdown instead of HTML. With a little more hacking, - the same can probably be done with many rich edit - controls. - - * Build new web apps from scratch - - A Showdown front-end can send back text in Markdown, - HTML or both, so you can trade bandwidth for server - load to reduce your cost of operation. If your app - requires JavaScript, you won't need to do any - Markdown processing on the server at all. (For most - uses, you'll still need to sanitize the HTML before - showing it to other users -- but you'd need to do - that anyway if you're allowing raw HTML in your - Markdown.) - - -## Browser Compatibility - -Showdown has been tested successfully with: - - * Firefox 1.5 and 2.0 - * Internet Explorer 6 and 7 - * Safari 2.0.4 - * Opera 8.54 and 9.10 - * Netscape 8.1.2 - * Konqueror 3.5.4 - -In theory, Showdown will work in any browser that supports ECMA 262 3rd Edition (JavaScript 1.5). The converter itself might even work in things that aren't web browsers, like Acrobat. No promises. - - -## Extensions - -Showdown allows additional functionality to be loaded via extensions. - -### Client-side Extension Usage - -```js - - - - - - - - \ No newline at end of file diff --git a/example/showdown-gui.html b/example/showdown-gui.html deleted file mode 100644 index c447221e..00000000 --- a/example/showdown-gui.html +++ /dev/null @@ -1,720 +0,0 @@ - - - - - Showdown - Markdown in Javascript - - - - - - - - - -
-
- Input -
- -
- -
-
- -
- - - -
- - - - - - - - - - - - - - -
- - - - - - \ No newline at end of file diff --git a/example/showdown-gui.js b/example/showdown-gui.js deleted file mode 100644 index 5f3519f3..00000000 --- a/example/showdown-gui.js +++ /dev/null @@ -1,349 +0,0 @@ -// -// showdown-gui.js -// -// A sample application for Showdown, a javascript port -// of Markdown. -// -// Copyright (c) 2007 John Fraser. -// -// Redistributable under a BSD-style open source license. -// See license.txt for more information. -// -// The full source distribution is at: -// -// A A L -// T C A -// T K B -// -// -// - -// -// The Showdown converter itself is in showdown.js, which must be -// included by the HTML before this file is. -// -// showdown-gui.js assumes the id and class definitions in -// showdown.html. It isn't dependent on the CSS, but it does -// manually hide, display, and resize the individual panes -- -// overriding the stylesheets. -// -// This sample application only interacts with showdown.js in -// two places: -// -// In startGui(): -// -// converter = new Showdown.converter(); -// -// In convertText(): -// -// text = converter.makeHtml(text); -// -// The rest of this file is user interface stuff. -// - - -// -// Register for onload -// -window.onload = startGui; - - -// -// Globals -// - -var converter; -var convertTextTimer,processingTime; -var lastText,lastOutput,lastRoomLeft; -var convertTextSetting, convertTextButton, paneSetting; -var inputPane,previewPane,outputPane,syntaxPane; -var maxDelay = 3000; // longest update pause (in ms) - - -// -// Initialization -// - -function startGui() { - // find elements - convertTextSetting = document.getElementById("convertTextSetting"); - convertTextButton = document.getElementById("convertTextButton"); - paneSetting = document.getElementById("paneSetting"); - - inputPane = document.getElementById("inputPane"); - previewPane = document.getElementById("previewPane"); - outputPane = document.getElementById("outputPane"); - syntaxPane = document.getElementById("syntaxPane"); - - // set event handlers - convertTextSetting.onchange = onConvertTextSettingChanged; - convertTextButton.onclick = onConvertTextButtonClicked; - paneSetting.onchange = onPaneSettingChanged; - window.onresize = setPaneHeights; - - // First, try registering for keyup events - // (There's no harm in calling onInput() repeatedly) - window.onkeyup = inputPane.onkeyup = onInput; - - // In case we can't capture paste events, poll for them - var pollingFallback = window.setInterval(function(){ - if(inputPane.value != lastText) - onInput(); - },1000); - - // Try registering for paste events - inputPane.onpaste = function() { - // It worked! Cancel paste polling. - if (pollingFallback!=undefined) { - window.clearInterval(pollingFallback); - pollingFallback = undefined; - } - onInput(); - } - - // Try registering for input events (the best solution) - if (inputPane.addEventListener) { - // Let's assume input also fires on paste. - // No need to cancel our keyup handlers; - // they're basically free. - inputPane.addEventListener("input",inputPane.onpaste,false); - } - - // poll for changes in font size - // this is cheap; do it often - window.setInterval(setPaneHeights,250); - - // start with blank page? - if (top.document.location.href.match(/\?blank=1$/)) - inputPane.value = ""; - - // refresh panes to avoid a hiccup - onPaneSettingChanged(); - - // build the converter - converter = new Showdown.converter(); - - // do an initial conversion to avoid a hiccup - convertText(); - - // give the input pane focus - inputPane.focus(); - - // start the other panes at the top - // (our smart scrolling moved them to the bottom) - previewPane.scrollTop = 0; - outputPane.scrollTop = 0; -} - - -// -// Conversion -// - -function convertText() { - // get input text - var text = inputPane.value; - - // if there's no change to input, cancel conversion - if (text && text == lastText) { - return; - } else { - lastText = text; - } - - var startTime = new Date().getTime(); - - // Do the conversion - text = converter.makeHtml(text); - - // display processing time - var endTime = new Date().getTime(); - processingTime = endTime - startTime; - document.getElementById("processingTime").innerHTML = processingTime+" ms"; - - // save proportional scroll positions - saveScrollPositions(); - - // update right pane - if (paneSetting.value == "outputPane") { - // the output pane is selected - outputPane.value = text; - } else if (paneSetting.value == "previewPane") { - // the preview pane is selected - previewPane.innerHTML = text; - } - - lastOutput = text; - - // restore proportional scroll positions - restoreScrollPositions(); -}; - - -// -// Event handlers -// - -function onConvertTextSettingChanged() { - // If the user just enabled automatic - // updates, we'll do one now. - onInput(); -} - -function onConvertTextButtonClicked() { - // hack: force the converter to run - lastText = ""; - - convertText(); - inputPane.focus(); -} - -function onPaneSettingChanged() { - previewPane.style.display = "none"; - outputPane.style.display = "none"; - syntaxPane.style.display = "none"; - - // now make the selected one visible - top[paneSetting.value].style.display = "block"; - - lastRoomLeft = 0; // hack: force resize of new pane - setPaneHeights(); - - if (paneSetting.value == "outputPane") { - // Update output pane - outputPane.value = lastOutput; - } else if (paneSetting.value == "previewPane") { - // Update preview pane - previewPane.innerHTML = lastOutput; - } -} - -function onInput() { -// In "delayed" mode, we do the conversion at pauses in input. -// The pause is equal to the last runtime, so that slow -// updates happen less frequently. -// -// Use a timer to schedule updates. Each keystroke -// resets the timer. - - // if we already have convertText scheduled, cancel it - if (convertTextTimer) { - window.clearTimeout(convertTextTimer); - convertTextTimer = undefined; - } - - if (convertTextSetting.value != "manual") { - var timeUntilConvertText = 0; - if (convertTextSetting.value == "delayed") { - // make timer adaptive - timeUntilConvertText = processingTime; - } - - if (timeUntilConvertText > maxDelay) - timeUntilConvertText = maxDelay; - - // Schedule convertText(). - // Even if we're updating every keystroke, use a timer at 0. - // This gives the browser time to handle other events. - convertTextTimer = window.setTimeout(convertText,timeUntilConvertText); - } -} - - -// -// Smart scrollbar adjustment -// -// We need to make sure the user can't type off the bottom -// of the preview and output pages. We'll do this by saving -// the proportional scroll positions before the update, and -// restoring them afterwards. -// - -var previewScrollPos; -var outputScrollPos; - -function getScrollPos(element) { - // favor the bottom when the text first overflows the window - if (element.scrollHeight <= element.clientHeight) - return 1.0; - return element.scrollTop/(element.scrollHeight-element.clientHeight); -} - -function setScrollPos(element,pos) { - element.scrollTop = (element.scrollHeight - element.clientHeight) * pos; -} - -function saveScrollPositions() { - previewScrollPos = getScrollPos(previewPane); - outputScrollPos = getScrollPos(outputPane); -} - -function restoreScrollPositions() { - // hack for IE: setting scrollTop ensures scrollHeight - // has been updated after a change in contents - previewPane.scrollTop = previewPane.scrollTop; - - setScrollPos(previewPane,previewScrollPos); - setScrollPos(outputPane,outputScrollPos); -} - -// -// Textarea resizing -// -// Some browsers (i.e. IE) refuse to set textarea -// percentage heights in standards mode. (But other units? -// No problem. Percentage widths? No problem.) -// -// So we'll do it in javascript. If IE's behavior ever -// changes, we should remove this crap and do 100% textarea -// heights in CSS, because it makes resizing much smoother -// on other browsers. -// - -function getTop(element) { - var sum = element.offsetTop; - while(element = element.offsetParent) - sum += element.offsetTop; - return sum; -} - -function getElementHeight(element) { - var height = element.clientHeight; - if (!height) height = element.scrollHeight; - return height; -} - -function getWindowHeight(element) { - if (window.innerHeight) - return window.innerHeight; - else if (document.documentElement && document.documentElement.clientHeight) - return document.documentElement.clientHeight; - else if (document.body) - return document.body.clientHeight; -} - -function setPaneHeights() { - var textarea = inputPane; - var footer = document.getElementById("footer"); - - var windowHeight = getWindowHeight(); - var footerHeight = getElementHeight(footer); - var textareaTop = getTop(textarea); - - // figure out how much room the panes should fill - var roomLeft = windowHeight - footerHeight - textareaTop; - - if (roomLeft < 0) roomLeft = 0; - - // if it hasn't changed, return - if (roomLeft == lastRoomLeft) { - return; - } - lastRoomLeft = roomLeft; - - // resize all panes - inputPane.style.height = roomLeft + "px"; - previewPane.style.height = roomLeft + "px"; - outputPane.style.height = roomLeft + "px"; - syntaxPane.style.height = roomLeft + "px"; -} \ No newline at end of file diff --git a/example/showdown.js b/example/showdown.js deleted file mode 120000 index e165c71f..00000000 --- a/example/showdown.js +++ /dev/null @@ -1 +0,0 @@ -../src/showdown.js \ No newline at end of file diff --git a/example/syntax.txt b/example/syntax.txt deleted file mode 100644 index a8c129f6..00000000 --- a/example/syntax.txt +++ /dev/null @@ -1,896 +0,0 @@ -Markdown: Syntax -================ - - - - -* [Overview](#overview) - * [Philosophy](#philosophy) - * [Inline HTML](#html) - * [Automatic Escaping for Special Characters](#autoescape) -* [Block Elements](#block) - * [Paragraphs and Line Breaks](#p) - * [Headers](#header) - * [Blockquotes](#blockquote) - * [Lists](#list) - * [Code Blocks](#precode) - * [Horizontal Rules](#hr) -* [Span Elements](#span) - * [Links](#link) - * [Emphasis](#em) - * [Code](#code) - * [Images](#img) -* [Miscellaneous](#misc) - * [Backslash Escapes](#backslash) - * [Automatic Links](#autolink) - - -**Note:** This document is itself written using Markdown; you -can [see the source for it by adding '.text' to the URL][src]. - - [src]: /projects/markdown/syntax.text - -* * * - -

Overview

- -

Philosophy

- -Markdown is intended to be as easy-to-read and easy-to-write as is feasible. - -Readability, however, is emphasized above all else. A Markdown-formatted -document should be publishable as-is, as plain text, without looking -like it's been marked up with tags or formatting instructions. While -Markdown's syntax has been influenced by several existing text-to-HTML -filters -- including [Setext] [1], [atx] [2], [Textile] [3], [reStructuredText] [4], -[Grutatext] [5], and [EtText] [6] -- the single biggest source of -inspiration for Markdown's syntax is the format of plain text email. - - [1]: http://docutils.sourceforge.net/mirror/setext.html - [2]: http://www.aaronsw.com/2002/atx/ - [3]: http://textism.com/tools/textile/ - [4]: http://docutils.sourceforge.net/rst.html - [5]: http://www.triptico.com/software/grutatxt.html - [6]: http://ettext.taint.org/doc/ - -To this end, Markdown's syntax is comprised entirely of punctuation -characters, which punctuation characters have been carefully chosen so -as to look like what they mean. E.g., asterisks around a word actually -look like \*emphasis\*. Markdown lists look like, well, lists. Even -blockquotes look like quoted passages of text, assuming you've ever -used email. - - - -

Inline HTML

- -Markdown's syntax is intended for one purpose: to be used as a -format for *writing* for the web. - -Markdown is not a replacement for HTML, or even close to it. Its -syntax is very small, corresponding only to a very small subset of -HTML tags. The idea is *not* to create a syntax that makes it easier -to insert HTML tags. In my opinion, HTML tags are already easy to -insert. The idea for Markdown is to make it easy to read, write, and -edit prose. HTML is a *publishing* format; Markdown is a *writing* -format. Thus, Markdown's formatting syntax only addresses issues that -can be conveyed in plain text. - -For any markup that is not covered by Markdown's syntax, you simply -use HTML itself. There's no need to preface it or delimit it to -indicate that you're switching from Markdown to HTML; you just use -the tags. - -The only restrictions are that block-level HTML elements -- e.g. `
`, -``, `
`, `

`, etc. -- must be separated from surrounding -content by blank lines, and the start and end tags of the block should -not be indented with tabs or spaces. Markdown is smart enough not -to add extra (unwanted) `

` tags around HTML block-level tags. - -For example, to add an HTML table to a Markdown article: - - This is a regular paragraph. - -

- - - -
Foo
- - This is another regular paragraph. - -Note that Markdown formatting syntax is not processed within block-level -HTML tags. E.g., you can't use Markdown-style `*emphasis*` inside an -HTML block. - -Span-level HTML tags -- e.g. ``, ``, or `` -- can be -used anywhere in a Markdown paragraph, list item, or header. If you -want, you can even use HTML tags instead of Markdown formatting; e.g. if -you'd prefer to use HTML `` or `` tags instead of Markdown's -link or image syntax, go right ahead. - -Unlike block-level HTML tags, Markdown syntax *is* processed within -span-level tags. - - -

Automatic Escaping for Special Characters

- -In HTML, there are two characters that demand special treatment: `<` -and `&`. Left angle brackets are used to start tags; ampersands are -used to denote HTML entities. If you want to use them as literal -characters, you must escape them as entities, e.g. `<`, and -`&`. - -Ampersands in particular are bedeviling for web writers. If you want to -write about 'AT&T', you need to write '`AT&T`'. You even need to -escape ampersands within URLs. Thus, if you want to link to: - - http://images.google.com/images?num=30&q=larry+bird - -you need to encode the URL as: - - http://images.google.com/images?num=30&q=larry+bird - -in your anchor tag `href` attribute. Needless to say, this is easy to -forget, and is probably the single most common source of HTML validation -errors in otherwise well-marked-up web sites. - -Markdown allows you to use these characters naturally, taking care of -all the necessary escaping for you. If you use an ampersand as part of -an HTML entity, it remains unchanged; otherwise it will be translated -into `&`. - -So, if you want to include a copyright symbol in your article, you can write: - - © - -and Markdown will leave it alone. But if you write: - - AT&T - -Markdown will translate it to: - - AT&T - -Similarly, because Markdown supports [inline HTML](#html), if you use -angle brackets as delimiters for HTML tags, Markdown will treat them as -such. But if you write: - - 4 < 5 - -Markdown will translate it to: - - 4 < 5 - -However, inside Markdown code spans and blocks, angle brackets and -ampersands are *always* encoded automatically. This makes it easy to use -Markdown to write about HTML code. (As opposed to raw HTML, which is a -terrible format for writing about HTML syntax, because every single `<` -and `&` in your example code needs to be escaped.) - - -* * * - - -

Block Elements

- - -

Paragraphs and Line Breaks

- -A paragraph is simply one or more consecutive lines of text, separated -by one or more blank lines. (A blank line is any line that looks like a -blank line -- a line containing nothing but spaces or tabs is considered -blank.) Normal paragraphs should not be indented with spaces or tabs. - -The implication of the "one or more consecutive lines of text" rule is -that Markdown supports "hard-wrapped" text paragraphs. This differs -significantly from most other text-to-HTML formatters (including Movable -Type's "Convert Line Breaks" option) which translate every line break -character in a paragraph into a `
` tag. - -When you *do* want to insert a `
` break tag using Markdown, you -end a line with two or more spaces, then type return. - -Yes, this takes a tad more effort to create a `
`, but a simplistic -"every line break is a `
`" rule wouldn't work for Markdown. -Markdown's email-style [blockquoting][bq] and multi-paragraph [list items][l] -work best -- and look better -- when you format them with hard breaks. - - [bq]: #blockquote - [l]: #list - - - - - -Markdown supports two styles of headers, [Setext] [1] and [atx] [2]. - -Setext-style headers are "underlined" using equal signs (for first-level -headers) and dashes (for second-level headers). For example: - - This is an H1 - ============= - - This is an H2 - ------------- - -Any number of underlining `=`'s or `-`'s will work. - -Atx-style headers use 1-6 hash characters at the start of the line, -corresponding to header levels 1-6. For example: - - # This is an H1 - - ## This is an H2 - - ###### This is an H6 - -Optionally, you may "close" atx-style headers. This is purely -cosmetic -- you can use this if you think it looks better. The -closing hashes don't even need to match the number of hashes -used to open the header. (The number of opening hashes -determines the header level.) : - - # This is an H1 # - - ## This is an H2 ## - - ### This is an H3 ###### - - -

Blockquotes

- -Markdown uses email-style `>` characters for blockquoting. If you're -familiar with quoting passages of text in an email message, then you -know how to create a blockquote in Markdown. It looks best if you hard -wrap the text and put a `>` before every line: - - > This is a blockquote 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. - -Markdown allows you to be lazy and only put the `>` before the first -line of a hard-wrapped paragraph: - - > This is a blockquote 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. - -Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by -adding additional levels of `>`: - - > This is the first level of quoting. - > - > > This is nested blockquote. - > - > Back to the first level. - -Blockquotes can contain other Markdown elements, including headers, lists, -and code blocks: - - > ## This is a header. - > - > 1. This is the first list item. - > 2. This is the second list item. - > - > Here's some example code: - > - > return shell_exec("echo $input | $markdown_script"); - -Any decent text editor should make email-style quoting easy. For -example, with BBEdit, you can make a selection and choose Increase -Quote Level from the Text menu. - - -

Lists

- -Markdown supports ordered (numbered) and unordered (bulleted) lists. - -Unordered lists use asterisks, pluses, and hyphens -- interchangably --- as list markers: - - * Red - * Green - * Blue - -is equivalent to: - - + Red - + Green - + Blue - -and: - - - Red - - Green - - Blue - -Ordered lists use numbers followed by periods: - - 1. Bird - 2. McHale - 3. Parish - -It's important to note that the actual numbers you use to mark the -list have no effect on the HTML output Markdown produces. The HTML -Markdown produces from the above list is: - -
    -
  1. Bird
  2. -
  3. McHale
  4. -
  5. Parish
  6. -
- -If you instead wrote the list in Markdown like this: - - 1. Bird - 1. McHale - 1. Parish - -or even: - - 3. Bird - 1. McHale - 8. Parish - -you'd get the exact same HTML output. The point is, if you want to, -you can use ordinal numbers in your ordered Markdown lists, so that -the numbers in your source match the numbers in your published HTML. -But if you want to be lazy, you don't have to. - -If you do use lazy list numbering, however, you should still start the -list with the number 1. At some point in the future, Markdown may support -starting ordered lists at an arbitrary number. - -List markers typically start at the left margin, but may be indented by -up to three spaces. List markers must be followed by one or more spaces -or a tab. - -To make lists look nice, you can wrap items with hanging indents: - - * 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. - -But if you want to be lazy, you don't have to: - - * 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. - -If list items are separated by blank lines, Markdown will wrap the -items in `

` tags in the HTML output. For example, this input: - - * Bird - * Magic - -will turn into: - -

    -
  • Bird
  • -
  • Magic
  • -
- -But this: - - * Bird - - * Magic - -will turn into: - -
    -
  • Bird

  • -
  • Magic

  • -
- -List items may consist of multiple paragraphs. Each subsequent -paragraph in a list item must be indented by either 4 spaces -or one tab: - - 1. 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. - - 2. Suspendisse id sem consectetuer libero luctus adipiscing. - -It looks nice if you indent every line of the subsequent -paragraphs, but here again, Markdown will allow you to be -lazy: - - * This is a list item with two paragraphs. - - This is the second paragraph in the list item. You're - only required to indent the first line. Lorem ipsum dolor - sit amet, consectetuer adipiscing elit. - - * Another item in the same list. - -To put a blockquote within a list item, the blockquote's `>` -delimiters need to be indented: - - * A list item with a blockquote: - - > This is a blockquote - > inside a list item. - -To put a code block within a list item, the code block needs -to be indented *twice* -- 8 spaces or two tabs: - - * A list item with a code block: - - - - -It's worth noting that it's possible to trigger an ordered list by -accident, by writing something like this: - - 1986. What a great season. - -In other words, a *number-period-space* sequence at the beginning of a -line. To avoid this, you can backslash-escape the period: - - 1986\. What a great season. - - - -

Code Blocks

- -Pre-formatted code blocks are used for writing about programming or -markup source code. Rather than forming normal paragraphs, the lines -of a code block are interpreted literally. Markdown wraps a code block -in both `
` and `` tags.
-
-To produce a code block in Markdown, simply indent every line of the
-block by at least 4 spaces or 1 tab. For example, given this input:
-
-    This is a normal paragraph:
-
-        This is a code block.
-
-Markdown will generate:
-
-    

This is a normal paragraph:

- -
This is a code block.
-    
- -One level of indentation -- 4 spaces or 1 tab -- is removed from each -line of the code block. For example, this: - - Here is an example of AppleScript: - - tell application "Foo" - beep - end tell - -will turn into: - -

Here is an example of AppleScript:

- -
tell application "Foo"
-        beep
-    end tell
-    
- -A code block continues until it reaches a line that is not indented -(or the end of the article). - -Within a code block, ampersands (`&`) and angle brackets (`<` and `>`) -are automatically converted into HTML entities. This makes it very -easy to include example HTML source code using Markdown -- just paste -it and indent it, and Markdown will handle the hassle of encoding the -ampersands and angle brackets. For example, this: - - - -will turn into: - -
<div class="footer">
-        &copy; 2004 Foo Corporation
-    </div>
-    
- -Regular Markdown syntax is not processed within code blocks. E.g., -asterisks are just literal asterisks within a code block. This means -it's also easy to use Markdown to write about Markdown's own syntax. - - - -

Horizontal Rules

- -You can produce a horizontal rule tag (`
`) by placing three or -more hyphens, asterisks, or underscores on a line by themselves. If you -wish, you may use spaces between the hyphens or asterisks. Each of the -following lines will produce a horizontal rule: - - * * * - - *** - - ***** - - - - - - - --------------------------------------- - - -* * * - -

Span Elements

- - - -Markdown supports two style of links: *inline* and *reference*. - -In both styles, the link text is delimited by [square brackets]. - -To create an inline link, use a set of regular parentheses immediately -after the link text's closing square bracket. Inside the parentheses, -put the URL where you want the link to point, along with an *optional* -title for the link, surrounded in quotes. For example: - - This is [an example](http://example.com/ "Title") inline link. - - [This link](http://example.net/) has no title attribute. - -Will produce: - -

This is - an example inline link.

- -

This link has no - title attribute.

- -If you're referring to a local resource on the same server, you can -use relative paths: - - See my [About](/about/) page for details. - -Reference-style links use a second set of square brackets, inside -which you place a label of your choosing to identify the link: - - This is [an example][id] reference-style link. - -You can optionally use a space to separate the sets of brackets: - - This is [an example] [id] reference-style link. - -Then, anywhere in the document, you define your link label like this, -on a line by itself: - - [id]: http://example.com/ "Optional Title Here" - -That is: - -* Square brackets containing the link identifier (optionally - indented from the left margin using up to three spaces); -* followed by a colon; -* followed by one or more spaces (or tabs); -* followed by the URL for the link; -* optionally followed by a title attribute for the link, enclosed - in double or single quotes, or enclosed in parentheses. - -The following three link definitions are equivalent: - - [foo]: http://example.com/ "Optional Title Here" - [foo]: http://example.com/ 'Optional Title Here' - [foo]: http://example.com/ (Optional Title Here) - -**Note:** There is a known bug in Markdown.pl 1.0.1 which prevents -single quotes from being used to delimit link titles. - -The link URL may, optionally, be surrounded by angle brackets: - - [id]: "Optional Title Here" - -You can put the title attribute on the next line and use extra spaces -or tabs for padding, which tends to look better with longer URLs: - - [id]: http://example.com/longish/path/to/resource/here - "Optional Title Here" - -Link definitions are only used for creating links during Markdown -processing, and are stripped from your document in the HTML output. - -Link definition names may consist of letters, numbers, spaces, and -punctuation -- but they are *not* case sensitive. E.g. these two -links: - - [link text][a] - [link text][A] - -are equivalent. - -The *implicit link name* shortcut allows you to omit the name of the -link, in which case the link text itself is used as the name. -Just use an empty set of square brackets -- e.g., to link the word -"Google" to the google.com web site, you could simply write: - - [Google][] - -And then define the link: - - [Google]: http://google.com/ - -Because link names may contain spaces, this shortcut even works for -multiple words in the link text: - - Visit [Daring Fireball][] for more information. - -And then define the link: - - [Daring Fireball]: http://daringfireball.net/ - -Link definitions can be placed anywhere in your Markdown document. I -tend to put them immediately after each paragraph in which they're -used, but if you want, you can put them all at the end of your -document, sort of like footnotes. - -Here's an example of reference links in action: - - I get 10 times more traffic from [Google] [1] than from - [Yahoo] [2] or [MSN] [3]. - - [1]: http://google.com/ "Google" - [2]: http://search.yahoo.com/ "Yahoo Search" - [3]: http://search.msn.com/ "MSN Search" - -Using the implicit link name shortcut, you could instead write: - - I get 10 times more traffic from [Google][] than from - [Yahoo][] or [MSN][]. - - [google]: http://google.com/ "Google" - [yahoo]: http://search.yahoo.com/ "Yahoo Search" - [msn]: http://search.msn.com/ "MSN Search" - -Both of the above examples will produce the following HTML output: - -

I get 10 times more traffic from Google than from - Yahoo - or MSN.

- -For comparison, here is the same paragraph written using -Markdown's inline link style: - - I get 10 times more traffic from [Google](http://google.com/ "Google") - than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or - [MSN](http://search.msn.com/ "MSN Search"). - -The point of reference-style links is not that they're easier to -write. The point is that with reference-style links, your document -source is vastly more readable. Compare the above examples: using -reference-style links, the paragraph itself is only 81 characters -long; with inline-style links, it's 176 characters; and as raw HTML, -it's 234 characters. In the raw HTML, there's more markup than there -is text. - -With Markdown's reference-style links, a source document much more -closely resembles the final output, as rendered in a browser. By -allowing you to move the markup-related metadata out of the paragraph, -you can add links without interrupting the narrative flow of your -prose. - - -

Emphasis

- -Markdown treats asterisks (`*`) and underscores (`_`) as indicators of -emphasis. Text wrapped with one `*` or `_` will be wrapped with an -HTML `` tag; double `*`'s or `_`'s will be wrapped with an HTML -`` tag. E.g., this input: - - *single asterisks* - - _single underscores_ - - **double asterisks** - - __double underscores__ - -will produce: - - single asterisks - - single underscores - - double asterisks - - double underscores - -You can use whichever style you prefer; the lone restriction is that -the same character must be used to open and close an emphasis span. - -Emphasis can be used in the middle of a word: - - un*frigging*believable - -But if you surround an `*` or `_` with spaces, it'll be treated as a -literal asterisk or underscore. - -To produce a literal asterisk or underscore at a position where it -would otherwise be used as an emphasis delimiter, you can backslash -escape it: - - \*this text is surrounded by literal asterisks\* - - - -

Code

- -To indicate a span of code, wrap it with backtick quotes (`` ` ``). -Unlike a pre-formatted code block, a code span indicates code within a -normal paragraph. For example: - - Use the `printf()` function. - -will produce: - -

Use the printf() function.

- -To include a literal backtick character within a code span, you can use -multiple backticks as the opening and closing delimiters: - - ``There is a literal backtick (`) here.`` - -which will produce this: - -

There is a literal backtick (`) here.

- -The backtick delimiters surrounding a code span may include spaces -- -one after the opening, one before the closing. This allows you to place -literal backtick characters at the beginning or end of a code span: - - A single backtick in a code span: `` ` `` - - A backtick-delimited string in a code span: `` `foo` `` - -will produce: - -

A single backtick in a code span: `

- -

A backtick-delimited string in a code span: `foo`

- -With a code span, ampersands and angle brackets are encoded as HTML -entities automatically, which makes it easy to include example HTML -tags. Markdown will turn this: - - Please don't use any `` tags. - -into: - -

Please don't use any <blink> tags.

- -You can write this: - - `—` is the decimal-encoded equivalent of `—`. - -to produce: - -

&#8212; is the decimal-encoded - equivalent of &mdash;.

- - - -

Images

- -Admittedly, it's fairly difficult to devise a "natural" syntax for -placing images into a plain text document format. - -Markdown uses an image syntax that is intended to resemble the syntax -for links, allowing for two styles: *inline* and *reference*. - -Inline image syntax looks like this: - - ![Alt text](/path/to/img.jpg) - - ![Alt text](/path/to/img.jpg "Optional title") - -That is: - -* An exclamation mark: `!`; -* followed by a set of square brackets, containing the `alt` - attribute text for the image; -* followed by a set of parentheses, containing the URL or path to - the image, and an optional `title` attribute enclosed in double - or single quotes. - -Reference-style image syntax looks like this: - - ![Alt text][id] - -Where "id" is the name of a defined image reference. Image references -are defined using syntax identical to link references: - - [id]: url/to/image "Optional title attribute" - -As of this writing, Markdown has no syntax for specifying the -dimensions of an image; if this is important to you, you can simply -use regular HTML `` tags. - - -* * * - - -

Miscellaneous

- - - -Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this: - - - -Markdown will turn this into: - - http://example.com/ - -Automatic links for email addresses work similarly, except that -Markdown will also perform a bit of randomized decimal and hex -entity-encoding to help obscure your address from address-harvesting -spambots. For example, Markdown will turn this: - - - -into something like this: - - address@exa - mple.com - -which will render in a browser as a clickable link to "address@example.com". - -(This sort of entity-encoding trick will indeed fool many, if not -most, address-harvesting bots, but it definitely won't fool all of -them. It's better than nothing, but an address published in this way -will probably eventually start receiving spam.) - - - -

Backslash Escapes

- -Markdown allows you to use backslash escapes to generate literal -characters which would otherwise have special meaning in Markdown's -formatting syntax. For example, if you wanted to surround a word -with literal asterisks (instead of an HTML `` tag), you can use -backslashes before the asterisks, like this: - - \*literal asterisks\* - -Markdown provides backslash escapes for the following characters: - - \ backslash - ` backtick - * asterisk - _ underscore - {} curly braces - [] square brackets - () parentheses - # hash mark - + plus sign - - minus sign (hyphen) - . dot - ! exclamation mark diff --git a/license.txt b/license.txt index a6096c84..bb98b86a 100644 --- a/license.txt +++ b/license.txt @@ -1,9 +1,9 @@ -Copyright (c) 2007, John Fraser - +Showdown Copyright (c) 2007, John Fraser + All rights reserved. -Original Markdown copyright (c) 2004, John Gruber - +Original Markdown copyright (c) 2004, John Gruber + All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/package.json b/package.json index e227b424..43060f64 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,8 @@ { "name": "showdown", - "version": "0.3.4", - "author": "John Fraser", + "version": "2.0.0-alpha1", + "description": "A Markdown to HTML converter written in Javascript", + "authors": "Estevão Santos", "contributors": [ "John Gruber", "John Fraser", @@ -30,18 +31,20 @@ "url": "https://github.com/coreyti/showdown/raw/master/license.txt" } ], - "main": "./src/showdown", + "main": "./dist/showdown.js", "scripts": { "test": "mocha ./test/run.js" }, "devDependencies": { "angular": "^1.3.2", + "chai": "^1.10.0", "grunt": "^0.4.5", "grunt-contrib-concat": "^0.5.0", "grunt-contrib-jshint": "^0.10.0", "grunt-contrib-uglify": "^0.6.0", "grunt-simple-mocha": "^0.4.0", "mocha": "*", - "should": "^4.4.2" + "should": "^4.4.2", + "source-map-support": "^0.2.9" } } diff --git a/perlMarkdown/Markdown License.txt b/perlMarkdown/Markdown License.txt deleted file mode 100644 index 6d765065..00000000 --- a/perlMarkdown/Markdown License.txt +++ /dev/null @@ -1,30 +0,0 @@ -Copyright (c) 2004, John Gruber - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -* Neither the name "Markdown" nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - -This software is provided by the copyright holders and contributors "as -is" and any express or implied warranties, including, but not limited -to, the implied warranties of merchantability and fitness for a -particular purpose are disclaimed. In no event shall the copyright owner -or contributors be liable for any direct, indirect, incidental, special, -exemplary, or consequential damages (including, but not limited to, -procurement of substitute goods or services; loss of use, data, or -profits; or business interruption) however caused and on any theory of -liability, whether in contract, strict liability, or tort (including -negligence or otherwise) arising in any way out of the use of this -software, even if advised of the possibility of such damage. diff --git a/perlMarkdown/Markdown-1.0.2b2.pl b/perlMarkdown/Markdown-1.0.2b2.pl deleted file mode 100644 index 5c78edd4..00000000 --- a/perlMarkdown/Markdown-1.0.2b2.pl +++ /dev/null @@ -1,1509 +0,0 @@ -#!/usr/bin/perl - -# -# Markdown -- A text-to-HTML conversion tool for web writers -# -# Copyright (c) 2004-2005 John Gruber -# -# - - -package Markdown; -require 5.006_000; -use strict; -use warnings; - -use Digest::MD5 qw(md5_hex); -use vars qw($VERSION); -$VERSION = '1.0.2b2'; -# Sat 26 Mar 2005 - -## Disabled; causes problems under Perl 5.6.1: -# use utf8; -# binmode( STDOUT, ":utf8" ); # c.f.: http://acis.openlib.org/dev/perl-unicode-struggle.html - - -# -# Global default settings: -# -my $g_empty_element_suffix = " />"; # Change to ">" for HTML output -my $g_tab_width = 4; - - -# -# Globals: -# - -# Regex to match balanced [brackets]. See Friedl's -# "Mastering Regular Expressions", 2nd Ed., pp. 328-331. -my $g_nested_brackets; -$g_nested_brackets = qr{ - (?> # Atomic matching - [^\[\]]+ # Anything other than brackets - | - \[ - (??{ $g_nested_brackets }) # Recursive set of nested brackets - \] - )* -}x; - - -# Table of hash values for escaped characters: -my %g_escape_table; -foreach my $char (split //, '\\`*_{}[]()>#+-.!') { - $g_escape_table{$char} = md5_hex($char); -} - - -# Global hashes, used by various utility routines -my %g_urls; -my %g_titles; -my %g_html_blocks; - -# Used to track when we're inside an ordered or unordered list -# (see _ProcessListItems() for details): -my $g_list_level = 0; - - -#### Blosxom plug-in interface ########################################## - -# Set $g_blosxom_use_meta to 1 to use Blosxom's meta plug-in to determine -# which posts Markdown should process, using a "meta-markup: markdown" -# header. If it's set to 0 (the default), Markdown will process all -# entries. -my $g_blosxom_use_meta = 0; - -sub start { 1; } -sub story { - my($pkg, $path, $filename, $story_ref, $title_ref, $body_ref) = @_; - - if ( (! $g_blosxom_use_meta) or - (defined($meta::markup) and ($meta::markup =~ /^\s*markdown\s*$/i)) - ){ - $$body_ref = Markdown($$body_ref); - } - 1; -} - - -#### Movable Type plug-in interface ##################################### -eval {require MT}; # Test to see if we're running in MT. -unless ($@) { - require MT; - import MT; - require MT::Template::Context; - import MT::Template::Context; - - eval {require MT::Plugin}; # Test to see if we're running >= MT 3.0. - unless ($@) { - require MT::Plugin; - import MT::Plugin; - my $plugin = new MT::Plugin({ - name => "Markdown", - description => "A plain-text-to-HTML formatting plugin. (Version: $VERSION)", - doc_link => 'http://daringfireball.net/projects/markdown/' - }); - MT->add_plugin( $plugin ); - } - - MT::Template::Context->add_container_tag(MarkdownOptions => sub { - my $ctx = shift; - my $args = shift; - my $builder = $ctx->stash('builder'); - my $tokens = $ctx->stash('tokens'); - - if (defined ($args->{'output'}) ) { - $ctx->stash('markdown_output', lc $args->{'output'}); - } - - defined (my $str = $builder->build($ctx, $tokens) ) - or return $ctx->error($builder->errstr); - $str; # return value - }); - - MT->add_text_filter('markdown' => { - label => 'Markdown', - docs => 'http://daringfireball.net/projects/markdown/', - on_format => sub { - my $text = shift; - my $ctx = shift; - my $raw = 0; - if (defined $ctx) { - my $output = $ctx->stash('markdown_output'); - if (defined $output && $output =~ m/^html/i) { - $g_empty_element_suffix = ">"; - $ctx->stash('markdown_output', ''); - } - elsif (defined $output && $output eq 'raw') { - $raw = 1; - $ctx->stash('markdown_output', ''); - } - else { - $raw = 0; - $g_empty_element_suffix = " />"; - } - } - $text = $raw ? $text : Markdown($text); - $text; - }, - }); - - # If SmartyPants is loaded, add a combo Markdown/SmartyPants text filter: - my $smartypants; - - { - no warnings "once"; - $smartypants = $MT::Template::Context::Global_filters{'smarty_pants'}; - } - - if ($smartypants) { - MT->add_text_filter('markdown_with_smartypants' => { - label => 'Markdown With SmartyPants', - docs => 'http://daringfireball.net/projects/markdown/', - on_format => sub { - my $text = shift; - my $ctx = shift; - if (defined $ctx) { - my $output = $ctx->stash('markdown_output'); - if (defined $output && $output eq 'html') { - $g_empty_element_suffix = ">"; - } - else { - $g_empty_element_suffix = " />"; - } - } - $text = Markdown($text); - $text = $smartypants->($text, '1'); - }, - }); - } -} -else { -#### BBEdit/command-line text filter interface ########################## -# Needs to be hidden from MT (and Blosxom when running in static mode). - - # We're only using $blosxom::version once; tell Perl not to warn us: - no warnings 'once'; - unless ( defined($blosxom::version) ) { - use warnings; - - #### Check for command-line switches: ################# - my %cli_opts; - use Getopt::Long; - Getopt::Long::Configure('pass_through'); - GetOptions(\%cli_opts, - 'version', - 'shortversion', - 'html4tags', - ); - if ($cli_opts{'version'}) { # Version info - print "\nThis is Markdown, version $VERSION.\n"; - print "Copyright 2004 John Gruber\n"; - print "http://daringfireball.net/projects/markdown/\n\n"; - exit 0; - } - if ($cli_opts{'shortversion'}) { # Just the version number string. - print $VERSION; - exit 0; - } - if ($cli_opts{'html4tags'}) { # Use HTML tag style instead of XHTML - $g_empty_element_suffix = ">"; - } - - - #### Process incoming text: ########################### - my $text; - { - local $/; # Slurp the whole file - $text = <>; - } - print Markdown($text); - } -} - - - -sub Markdown { -# -# Main function. The order in which other subs are called here is -# essential. Link and image substitutions need to happen before -# _EscapeSpecialCharsWithinTagAttributes(), so that any *'s or _'s in the -# and tags get encoded. -# - my $text = shift; - - # Clear the global hashes. If we don't clear these, you get conflicts - # from other articles when generating a page which contains more than - # one article (e.g. an index page that shows the N most recent - # articles): - %g_urls = (); - %g_titles = (); - %g_html_blocks = (); - - - # Standardize line endings: - $text =~ s{\r\n}{\n}g; # DOS to Unix - $text =~ s{\r}{\n}g; # Mac to Unix - - # Make sure $text ends with a couple of newlines: - $text .= "\n\n"; - - # Convert all tabs to spaces. - $text = _Detab($text); - - # Strip any lines consisting only of spaces and tabs. - # This makes subsequent regexen easier to write, because we can - # match consecutive blank lines with /\n+/ instead of something - # contorted like /[ \t]*\n+/ . - $text =~ s/^[ \t]+$//mg; - - # Turn block-level HTML blocks into hash entries - $text = _HashHTMLBlocks($text); - - # Strip link definitions, store in hashes. - $text = _StripLinkDefinitions($text); - - $text = _RunBlockGamut($text); - - $text = _UnescapeSpecialChars($text); - - return $text . "\n"; -} - - -sub _StripLinkDefinitions { -# -# Strips link definitions from text, stores the URLs and titles in -# hash references. -# - my $text = shift; - my $less_than_tab = $g_tab_width - 1; - - # Link defs are in the form: ^[id]: url "optional title" - while ($text =~ s{ - ^[ ]{0,$less_than_tab}\[(.+)\]: # id = $1 - [ \t]* - \n? # maybe *one* newline - [ \t]* - ? # url = $2 - [ \t]* - \n? # maybe one newline - [ \t]* - (?: - (?<=\s) # lookbehind for whitespace - ["(] - (.+?) # title = $3 - [")] - [ \t]* - )? # title is optional - (?:\n+|\Z) - } - {}mx) { - $g_urls{lc $1} = _EncodeAmpsAndAngles( $2 ); # Link IDs are case-insensitive - if ($3) { - $g_titles{lc $1} = $3; - $g_titles{lc $1} =~ s/"/"/g; - } - } - - return $text; -} - - -sub _HashHTMLBlocks { - my $text = shift; - my $less_than_tab = $g_tab_width - 1; - - # Hashify HTML blocks: - # We only want to do this for block-level HTML tags, such as headers, - # lists, and tables. That's because we still want to wrap

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

- #
- # tags for inner block must be indented. - #
- #
- # - # The outermost tags must start at the left margin for this to match, and - # the inner nested divs must be indented. - # We need to do this before the next, more liberal match, because the next - # match will start at the first `
` and stop at the first `
`. - $text =~ s{ - ( # save in $1 - ^ # start of line (with /m) - <($block_tags_a) # start tag = $2 - \b # word break - (.*\n)*? # any number of lines, minimally matching - # the matching end tag - [ \t]* # trailing spaces/tabs - (?=\n+|\Z) # followed by a newline or end of document - ) - }{ - my $key = md5_hex($1); - $g_html_blocks{$key} = $1; - "\n\n" . $key . "\n\n"; - }egmx; - - - # - # Now match more liberally, simply from `\n` to `\n` - # - $text =~ s{ - ( # save in $1 - ^ # start of line (with /m) - <($block_tags_b) # start tag = $2 - \b # word break - (.*\n)*? # any number of lines, minimally matching - .* # the matching end tag - [ \t]* # trailing spaces/tabs - (?=\n+|\Z) # followed by a newline or end of document - ) - }{ - my $key = md5_hex($1); - $g_html_blocks{$key} = $1; - "\n\n" . $key . "\n\n"; - }egmx; - # Special case just for
. It was easier to make a special case than - # to make the other regex more complicated. - $text =~ s{ - (?: - (?<=\n\n) # Starting after a blank line - | # or - \A\n? # the beginning of the doc - ) - ( # save in $1 - [ ]{0,$less_than_tab} - <(hr) # start tag = $2 - \b # word break - ([^<>])*? # - /?> # the matching end tag - [ \t]* - (?=\n{2,}|\Z) # followed by a blank line or end of document - ) - }{ - my $key = md5_hex($1); - $g_html_blocks{$key} = $1; - "\n\n" . $key . "\n\n"; - }egx; - - # Special case for standalone HTML comments: - $text =~ s{ - (?: - (?<=\n\n) # Starting after a blank line - | # or - \A\n? # the beginning of the doc - ) - ( # save in $1 - [ ]{0,$less_than_tab} - (?s: - - ) - [ \t]* - (?=\n{2,}|\Z) # followed by a blank line or end of document - ) - }{ - my $key = md5_hex($1); - $g_html_blocks{$key} = $1; - "\n\n" . $key . "\n\n"; - }egx; - - - return $text; -} - - -sub _RunBlockGamut { -# -# These are all the transformations that form block-level -# tags like paragraphs, headers, and list items. -# - my $text = shift; - - $text = _DoHeaders($text); - - # Do Horizontal Rules: - $text =~ s{^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$}{\n tags around block-level tags. - $text = _HashHTMLBlocks($text); - $text = _FormParagraphs($text); - - return $text; -} - - -sub _RunSpanGamut { -# -# These are all the transformations that occur *within* block-level -# tags like paragraphs, headers, and list items. -# - my $text = shift; - - $text = _EscapeSpecialCharsWithinTagAttributes($text); - $text = _DoCodeSpans($text); - $text = _EncodeBackslashEscapes($text); - - # Process anchor and image tags. Images must come first, - # because ![foo][f] looks like an anchor. - $text = _DoImages($text); - $text = _DoAnchors($text); - - # Make links out of things like `` - # Must come after _DoAnchors(), because you can use < and > - # delimiters in inline links like [this](). - $text = _DoAutoLinks($text); - $text = _EncodeAmpsAndAngles($text); - $text = _DoItalicsAndBold($text); - - # Do hard breaks: - $text =~ s/ {2,}\n/ -- encode [\ ` * _] so they -# don't conflict with their use in Markdown for code, italics and strong. -# We're replacing each such character with its corresponding MD5 checksum -# value; this is likely overkill, but it should prevent us from colliding -# with the escape values by accident. -# - my $text = shift; - my $tokens ||= _TokenizeHTML($text); - $text = ''; # rebuild $text from the tokens - - foreach my $cur_token (@$tokens) { - if ($cur_token->[0] eq "tag") { - $cur_token->[1] =~ s! \\ !$g_escape_table{'\\'}!gx; - $cur_token->[1] =~ s! ` !$g_escape_table{'`'}!gx; - $cur_token->[1] =~ s! \* !$g_escape_table{'*'}!gx; - $cur_token->[1] =~ s! _ !$g_escape_table{'_'}!gx; - } - $text .= $cur_token->[1]; - } - return $text; -} - - -sub _DoAnchors { -# -# Turn Markdown link shortcuts into XHTML
tags. -# - my $text = shift; - - # - # First, handle reference-style links: [link text] [id] - # - $text =~ s{ - ( # wrap whole match in $1 - \[ - ($g_nested_brackets) # link text = $2 - \] - - [ ]? # one optional space - (?:\n[ ]*)? # one optional newline followed by spaces - - \[ - (.*?) # id = $3 - \] - ) - }{ - my $result; - my $whole_match = $1; - my $link_text = $2; - my $link_id = lc $3; - - if ($link_id eq "") { - $link_id = lc $link_text; # for shortcut links like [this][]. - } - - if (defined $g_urls{$link_id}) { - my $url = $g_urls{$link_id}; - $url =~ s! \* !$g_escape_table{'*'}!gx; # We've got to encode these to avoid - $url =~ s! _ !$g_escape_table{'_'}!gx; # conflicting with italics/bold. - $result = "? # href = $3 - [ \t]* - ( # $4 - (['"]) # quote char = $5 - (.*?) # Title = $6 - \5 # matching quote - )? # title is optional - \) - ) - }{ - my $result; - my $whole_match = $1; - my $link_text = $2; - my $url = $3; - my $title = $6; - - $url =~ s! \* !$g_escape_table{'*'}!gx; # We've got to encode these to avoid - $url =~ s! _ !$g_escape_table{'_'}!gx; # conflicting with italics/bold. - $result = " tags. -# - my $text = shift; - - # - # First, handle reference-style labeled images: ![alt text][id] - # - $text =~ s{ - ( # wrap whole match in $1 - !\[ - (.*?) # alt text = $2 - \] - - [ ]? # one optional space - (?:\n[ ]*)? # one optional newline followed by spaces - - \[ - (.*?) # id = $3 - \] - - ) - }{ - my $result; - my $whole_match = $1; - my $alt_text = $2; - my $link_id = lc $3; - - if ($link_id eq "") { - $link_id = lc $alt_text; # for shortcut links like ![this][]. - } - - $alt_text =~ s/"/"/g; - if (defined $g_urls{$link_id}) { - my $url = $g_urls{$link_id}; - $url =~ s! \* !$g_escape_table{'*'}!gx; # We've got to encode these to avoid - $url =~ s! _ !$g_escape_table{'_'}!gx; # conflicting with italics/bold. - $result = "\"$alt_text\"";? # src url = $3 - [ \t]* - ( # $4 - (['"]) # quote char = $5 - (.*?) # title = $6 - \5 # matching quote - [ \t]* - )? # title is optional - \) - ) - }{ - my $result; - my $whole_match = $1; - my $alt_text = $2; - my $url = $3; - my $title = ''; - if (defined($6)) { - $title = $6; - } - - $alt_text =~ s/"/"/g; - $title =~ s/"/"/g; - $url =~ s! \* !$g_escape_table{'*'}!gx; # We've got to encode these to avoid - $url =~ s! _ !$g_escape_table{'_'}!gx; # conflicting with italics/bold. - $result = "\"$alt_text\"";" . _RunSpanGamut($1) . "\n\n"; - }egmx; - - $text =~ s{ ^(.+)[ \t]*\n-+[ \t]*\n+ }{ - "

" . _RunSpanGamut($1) . "

\n\n"; - }egmx; - - - # atx-style headers: - # # Header 1 - # ## Header 2 - # ## Header 2 with closing hashes ## - # ... - # ###### Header 6 - # - $text =~ s{ - ^(\#{1,6}) # $1 = string of #'s - [ \t]* - (.+?) # $2 = Header text - [ \t]* - \#* # optional closing #'s (not counted) - \n+ - }{ - my $h_level = length($1); - "" . _RunSpanGamut($2) . "\n\n"; - }egmx; - - return $text; -} - - -sub _DoLists { -# -# Form HTML ordered (numbered) and unordered (bulleted) lists. -# - my $text = shift; - my $less_than_tab = $g_tab_width - 1; - - # Re-usable patterns to match list item bullets and number markers: - my $marker_ul = qr/[*+-]/; - my $marker_ol = qr/\d+[.]/; - my $marker_any = qr/(?:$marker_ul|$marker_ol)/; - - # Re-usable pattern to match any entirel ul or ol list: - my $whole_list = qr{ - ( # $1 = whole list - ( # $2 - [ ]{0,$less_than_tab} - (${marker_any}) # $3 = first list item marker - [ \t]+ - ) - (?s:.+?) - ( # $4 - \z - | - \n{2,} - (?=\S) - (?! # Negative lookahead for another list item marker - [ \t]* - ${marker_any}[ \t]+ - ) - ) - ) - }mx; - - # We use a different prefix before nested lists than top-level lists. - # See extended comment in _ProcessListItems(). - # - # Note: There's a bit of duplication here. My original implementation - # created a scalar regex pattern as the conditional result of the test on - # $g_list_level, and then only ran the $text =~ s{...}{...}egmx - # substitution once, using the scalar as the pattern. This worked, - # everywhere except when running under MT on my hosting account at Pair - # Networks. There, this caused all rebuilds to be killed by the reaper (or - # perhaps they crashed, but that seems incredibly unlikely given that the - # same script on the same server ran fine *except* under MT. I've spent - # more time trying to figure out why this is happening than I'd like to - # admit. My only guess, backed up by the fact that this workaround works, - # is that Perl optimizes the substition when it can figure out that the - # pattern will never change, and when this optimization isn't on, we run - # afoul of the reaper. Thus, the slightly redundant code that uses two - # static s/// patterns rather than one conditional pattern. - - if ($g_list_level) { - $text =~ s{ - ^ - $whole_list - }{ - my $list = $1; - my $list_type = ($3 =~ m/$marker_ul/) ? "ul" : "ol"; - - # Turn double returns into triple returns, so that we can make a - # paragraph for the last item in a list, if necessary: - $list =~ s/\n{2,}/\n\n\n/g; - my $result = _ProcessListItems($list, $marker_any); - - # Trim any trailing whitespace, to put the closing `` - # up on the preceding line, to get it past the current stupid - # HTML block parser. This is a hack to work around the terrible - # hack that is the HTML block parser. - $result =~ s{\s+$}{}; - $result = "<$list_type>" . $result . "\n"; - $result; - }egmx; - } - else { - $text =~ s{ - (?:(?<=\n\n)|\A\n?) - $whole_list - }{ - my $list = $1; - my $list_type = ($3 =~ m/$marker_ul/) ? "ul" : "ol"; - # Turn double returns into triple returns, so that we can make a - # paragraph for the last item in a list, if necessary: - $list =~ s/\n{2,}/\n\n\n/g; - my $result = _ProcessListItems($list, $marker_any); - $result = "<$list_type>\n" . $result . "\n"; - $result; - }egmx; - } - - - return $text; -} - - -sub _ProcessListItems { -# -# Process the contents of a single ordered or unordered list, splitting it -# into individual list items. -# - - my $list_str = shift; - my $marker_any = shift; - - - # The $g_list_level global keeps track of when we're inside a list. - # Each time we enter a list, we increment it; when we leave a list, - # we decrement. If it's zero, we're not in a list anymore. - # - # We do this because when we're not inside a list, we want to treat - # something like this: - # - # I recommend upgrading to version - # 8. Oops, now this line is treated - # as a sub-list. - # - # As a single paragraph, despite the fact that the second line starts - # with a digit-period-space sequence. - # - # Whereas when we're inside a list (or sub-list), that line will be - # treated as the start of a sub-list. What a kludge, huh? This is - # an aspect of Markdown's syntax that's hard to parse perfectly - # without resorting to mind-reading. Perhaps the solution is to - # change the syntax rules such that sub-lists must start with a - # starting cardinal number; e.g. "1." or "a.". - - $g_list_level++; - - # trim trailing blank lines: - $list_str =~ s/\n{2,}\z/\n/; - - - $list_str =~ s{ - (\n)? # leading line = $1 - (^[ \t]*) # leading whitespace = $2 - ($marker_any) [ \t]+ # list marker = $3 - ((?s:.+?) # list item text = $4 - (\n{1,2})) - (?= \n* (\z | \2 ($marker_any) [ \t]+)) - }{ - my $item = $4; - my $leading_line = $1; - my $leading_space = $2; - - if ($leading_line or ($item =~ m/\n{2,}/)) { - $item = _RunBlockGamut(_Outdent($item)); - } - else { - # Recursion for sub-lists: - $item = _DoLists(_Outdent($item)); - chomp $item; - $item = _RunSpanGamut($item); - } - - "
  • " . $item . "
  • \n"; - }egmx; - - $g_list_level--; - return $list_str; -} - - - -sub _DoCodeBlocks { -# -# Process Markdown `
    ` blocks.
    -#  
    -
    -  my $text = shift;
    -
    -  $text =~ s{
    -      (?:\n\n|\A)
    -      (              # $1 = the code block -- one or more lines, starting with a space/tab
    -        (?:
    -          (?:[ ]{$g_tab_width} | \t)  # Lines must start with a tab or a tab-width of spaces
    -          .*\n+
    -        )+
    -      )
    -      ((?=^[ ]{0,$g_tab_width}\S)|\Z)  # Lookahead for non-space at line-start, or end of doc
    -    }{
    -      my $codeblock = $1;
    -      my $result; # return value
    -
    -      $codeblock = _EncodeCode(_Outdent($codeblock));
    -      $codeblock = _Detab($codeblock);
    -      $codeblock =~ s/\A\n+//; # trim leading newlines
    -      $codeblock =~ s/\s+\z//; # trim trailing whitespace
    -
    -      $result = "\n\n
    " . $codeblock . "\n
    \n\n"; - - $result; - }egmx; - - return $text; -} - - -sub _DoCodeSpans { -# -# * Backtick quotes are used for spans. -# -# * You can use multiple backticks as the delimiters if you want to -# include literal backticks in the code span. So, this input: -# -# Just type ``foo `bar` baz`` at the prompt. -# -# Will translate to: -# -#

    Just type foo `bar` baz at the prompt.

    -# -# There's no arbitrary limit to the number of backticks you -# can use as delimters. If you need three consecutive backticks -# in your code, use four for delimiters, etc. -# -# * You can use spaces to get literal backticks at the edges: -# -# ... type `` `bar` `` ... -# -# Turns to: -# -# ... type `bar` ... -# - - my $text = shift; - - $text =~ s@ - (?$c
    "; - @egsx; - - return $text; -} - - -sub _EncodeCode { -# -# Encode/escape certain characters inside Markdown code runs. -# The point is that in code, these characters are literals, -# and lose their special Markdown meanings. -# - local $_ = shift; - - # Encode all ampersands; HTML entities are not - # entities within a Markdown code span. - s/&/&/g; - - # Encode $'s, but only if we're running under Blosxom. - # (Blosxom interpolates Perl variables in article bodies.) - { - no warnings 'once'; - if (defined($blosxom::version)) { - s/\$/$/g; - } - } - - - # Do the angle bracket song and dance: - s! < !<!gx; - s! > !>!gx; - - # Now, escape characters that are magic in Markdown: - s! \* !$g_escape_table{'*'}!gx; - s! _ !$g_escape_table{'_'}!gx; - s! { !$g_escape_table{'{'}!gx; - s! } !$g_escape_table{'}'}!gx; - s! \[ !$g_escape_table{'['}!gx; - s! \] !$g_escape_table{']'}!gx; - s! \\ !$g_escape_table{'\\'}!gx; - - return $_; -} - - -sub _DoItalicsAndBold { - my $text = shift; - - # must go first: - $text =~ s{ (\*\*|__) (?=\S) (.+?[*_]*) (?<=\S) \1 } - {$2}gsx; - - $text =~ s{ (\*|_) (?=\S) (.+?) (?<=\S) \1 } - {$2}gsx; - - return $text; -} - - -sub _DoBlockQuotes { - my $text = shift; - - $text =~ s{ - ( # Wrap whole match in $1 - ( - ^[ \t]*>[ \t]? # '>' at the start of a line - .+\n # rest of the first line - (.+\n)* # subsequent consecutive lines - \n* # blanks - )+ - ) - }{ - my $bq = $1; - $bq =~ s/^[ \t]*>[ \t]?//gm; # trim one level of quoting - $bq =~ s/^[ \t]+$//mg; # trim whitespace-only lines - $bq = _RunBlockGamut($bq); # recurse - - $bq =~ s/^/ /g; - # These leading spaces screw with
     content, so we need to fix that:
    -      $bq =~ s{
    -          (\s*
    .+?
    ) - }{ - my $pre = $1; - $pre =~ s/^ //mg; - $pre; - }egsx; - - "
    \n$bq\n
    \n\n"; - }egmx; - - - return $text; -} - - -sub _FormParagraphs { -# -# Params: -# $text - string to process with html

    tags -# - my $text = shift; - - # Strip leading and trailing lines: - $text =~ s/\A\n+//; - $text =~ s/\n+\z//; - - my @grafs = split(/\n{2,}/, $text); - - # - # Wrap

    tags. - # - foreach (@grafs) { - unless (defined( $g_html_blocks{$_} )) { - $_ = _RunSpanGamut($_); - s/^([ \t]*)/

    /; - $_ .= "

    "; - } - } - - # - # Unhashify HTML blocks - # - foreach (@grafs) { - if (defined( $g_html_blocks{$_} )) { - $_ = $g_html_blocks{$_}; - } - } - - return join "\n\n", @grafs; -} - - -sub _EncodeAmpsAndAngles { -# Smart processing for ampersands and angle brackets that need to be encoded. - - my $text = shift; - - # Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin: - # http://bumppo.net/projects/amputator/ - $text =~ s/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/&/g; - - # Encode naked <'s - $text =~ s{<(?![a-z/?\$!])}{<}gi; - - return $text; -} - - -sub _EncodeBackslashEscapes { -# -# Parameter: String. -# Returns: The string, with after processing the following backslash -# escape sequences. -# - local $_ = shift; - - s! \\\\ !$g_escape_table{'\\'}!gx; # Must process escaped backslashes first. - s! \\` !$g_escape_table{'`'}!gx; - s! \\\* !$g_escape_table{'*'}!gx; - s! \\_ !$g_escape_table{'_'}!gx; - s! \\\{ !$g_escape_table{'{'}!gx; - s! \\\} !$g_escape_table{'}'}!gx; - s! \\\[ !$g_escape_table{'['}!gx; - s! \\\] !$g_escape_table{']'}!gx; - s! \\\( !$g_escape_table{'('}!gx; - s! \\\) !$g_escape_table{')'}!gx; - s! \\> !$g_escape_table{'>'}!gx; - s! \\\# !$g_escape_table{'#'}!gx; - s! \\\+ !$g_escape_table{'+'}!gx; - s! \\\- !$g_escape_table{'-'}!gx; - s! \\\. !$g_escape_table{'.'}!gx; - s{ \\! }{$g_escape_table{'!'}}gx; - - return $_; -} - - -sub _DoAutoLinks { - my $text = shift; - - $text =~ s{<((https?|ftp):[^'">\s]+)>}{
    $1}gi; - - # Email addresses: - $text =~ s{ - < - (?:mailto:)? - ( - [-.\w]+ - \@ - [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+ - ) - > - }{ - _EncodeEmailAddress( _UnescapeSpecialChars($1) ); - }egix; - - return $text; -} - - -sub _EncodeEmailAddress { -# -# Input: an email address, e.g. "foo@example.com" -# -# Output: the email address as a mailto link, with each character -# of the address encoded as either a decimal or hex entity, in -# the hopes of foiling most address harvesting spam bots. E.g.: -# -# foo -# @example.com -# -# Based on a filter by Matthew Wickline, posted to the BBEdit-Talk -# mailing list: -# - - my $addr = shift; - - srand; - my @encode = ( - sub { '&#' . ord(shift) . ';' }, - sub { '&#x' . sprintf( "%X", ord(shift) ) . ';' }, - sub { shift }, - ); - - $addr = "mailto:" . $addr; - - $addr =~ s{(.)}{ - my $char = $1; - if ( $char eq '@' ) { - # this *must* be encoded. I insist. - $char = $encode[int rand 1]->($char); - } elsif ( $char ne ':' ) { - # leave ':' alone (to spot mailto: later) - my $r = rand; - # roughly 10% raw, 45% hex, 45% dec - $char = ( - $r > .9 ? $encode[2]->($char) : - $r < .45 ? $encode[1]->($char) : - $encode[0]->($char) - ); - } - $char; - }gex; - - $addr = qq{$addr}; - $addr =~ s{">.+?:}{">}; # strip the mailto: from the visible part - - return $addr; -} - - -sub _UnescapeSpecialChars { -# -# Swap back in all the special characters we've hidden. -# - my $text = shift; - - while( my($char, $hash) = each(%g_escape_table) ) { - $text =~ s/$hash/$char/g; - } - return $text; -} - - -sub _TokenizeHTML { -# -# Parameter: String containing HTML markup. -# Returns: Reference to an array of the tokens comprising the input -# string. Each token is either a tag (possibly with nested, -# tags contained therein, such as , or a -# run of text between tags. Each element of the array is a -# two-element array; the first is either 'tag' or 'text'; -# the second is the actual value. -# -# -# Derived from the _tokenize() subroutine from Brad Choate's MTRegex plugin. -# -# - - my $str = shift; - my $pos = 0; - my $len = length $str; - my @tokens; - - my $depth = 6; - my $nested_tags = join('|', ('(?:<[a-z/!$](?:[^<>]') x $depth) . (')*>)' x $depth); - my $match = qr/(?s: ) | # comment - (?s: <\? .*? \?> ) | # processing instruction - $nested_tags/ix; # nested tags - - while ($str =~ m/($match)/g) { - my $whole_tag = $1; - my $sec_start = pos $str; - my $tag_start = $sec_start - length $whole_tag; - if ($pos < $tag_start) { - push @tokens, ['text', substr($str, $pos, $tag_start - $pos)]; - } - push @tokens, ['tag', $whole_tag]; - $pos = pos $str; - } - push @tokens, ['text', substr($str, $pos, $len - $pos)] if $pos < $len; - \@tokens; -} - - -sub _Outdent { -# -# Remove one level of line-leading tabs or spaces -# - my $text = shift; - - $text =~ s/^(\t|[ ]{1,$g_tab_width})//gm; - return $text; -} - - -sub _Detab { -# -# Cribbed from a post by Bart Lateur: -# -# - my $text = shift; - - $text =~ s{(.*?)\t}{$1.(' ' x ($g_tab_width - length($1) % $g_tab_width))}ge; - return $text; -} - - -1; - -__END__ - - -=pod - -=head1 NAME - -B - - -=head1 SYNOPSIS - -B [ B<--html4tags> ] [ B<--version> ] [ B<-shortversion> ] - [ I ... ] - - -=head1 DESCRIPTION - -Markdown is a text-to-HTML filter; it translates an easy-to-read / -easy-to-write structured text format into HTML. Markdown's text format -is most similar to that of plain text email, and supports features such -as headers, *emphasis*, code blocks, blockquotes, and links. - -Markdown's syntax is designed not as a generic markup language, but -specifically to serve as a front-end to (X)HTML. You can use span-level -HTML tags anywhere in a Markdown document, and you can use block level -HTML tags (like
    and as well). - -For more information about Markdown's syntax, see: - - http://daringfireball.net/projects/markdown/ - - -=head1 OPTIONS - -Use "--" to end switch parsing. For example, to open a file named "-z", use: - - Markdown.pl -- -z - -=over 4 - - -=item B<--html4tags> - -Use HTML 4 style for empty element tags, e.g.: - -
    - -instead of Markdown's default XHTML style tags, e.g.: - -
    - - -=item B<-v>, B<--version> - -Display Markdown's version number and copyright information. - - -=item B<-s>, B<--shortversion> - -Display the short-form version number. - - -=back - - - -=head1 BUGS - -To file bug reports or feature requests (other than topics listed in the -Caveats section above) please send email to: - - support@daringfireball.net - -Please include with your report: (1) the example input; (2) the output -you expected; (3) the output Markdown actually produced. - - -=head1 VERSION HISTORY - -See the readme file for detailed release notes for this version. - -1.0.2b2 - 20 Mar 2005 - - + Fix for nested sub-lists in list-paragraph mode. Previously we got - a spurious extra level of `

    ` tags for something like this: - - * this - - * sub - - that - - + Experimental support for [this] as a synonym for [this][]. - (Note to self: No test yet for this.) - Be sure to test, e.g.: [permutations of this sort of [thing][].] - - -1.0.2b1 - 28 Feb 2005 - - + Fix for backticks within HTML tag: like this - - + Fix for escaped backticks still triggering code spans: - - There are two raw backticks here: \` and here: \`, not a code span - -1.0.1 - 14 Dec 2004 - -1.0 - 28 Aug 2004 - - -=head1 AUTHOR - - John Gruber - http://daringfireball.net - - PHP port and other contributions by Michel Fortin - http://michelf.com - - -=head1 COPYRIGHT AND LICENSE - -Copyright (c) 2003-2005 John Gruber - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -* Neither the name "Markdown" nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - -This software is provided by the copyright holders and contributors "as -is" and any express or implied warranties, including, but not limited -to, the implied warranties of merchantability and fitness for a -particular purpose are disclaimed. In no event shall the copyright owner -or contributors be liable for any direct, indirect, incidental, special, -exemplary, or consequential damages (including, but not limited to, -procurement of substitute goods or services; loss of use, data, or -profits; or business interruption) however caused and on any theory of -liability, whether in contract, strict liability, or tort (including -negligence or otherwise) arising in any way out of the use of this -software, even if advised of the possibility of such damage. - -=cut diff --git a/perlMarkdown/Markdown-1.0.2b7.pl b/perlMarkdown/Markdown-1.0.2b7.pl deleted file mode 100644 index c3b351fe..00000000 --- a/perlMarkdown/Markdown-1.0.2b7.pl +++ /dev/null @@ -1,1642 +0,0 @@ -#!/usr/bin/env perl - -# -# Markdown -- A text-to-HTML conversion tool for web writers -# -# Copyright (c) 2004-2005 John Gruber -# -# - - -package Markdown; -require 5.006_000; -use strict; -use warnings; - -use Digest::MD5 qw(md5_hex); -use vars qw($VERSION); -$VERSION = '1.0.2b7'; -# Tue 29 Aug 2006 - -## Disabled; causes problems under Perl 5.6.1: -# use utf8; -# binmode( STDOUT, ":utf8" ); # c.f.: http://acis.openlib.org/dev/perl-unicode-struggle.html - -# -# Global default settings: -# -my $g_empty_element_suffix = " />"; # Change to ">" for HTML output -my $g_tab_width = 4; - - -# -# Globals: -# - -# Regex to match balanced [brackets]. See Friedl's -# "Mastering Regular Expressions", 2nd Ed., pp. 328-331. -my $g_nested_brackets; -$g_nested_brackets = qr{ - (?> # Atomic matching - [^\[\]]+ # Anything other than brackets - | - \[ - (??{ $g_nested_brackets }) # Recursive set of nested brackets - \] - )* -}x; - - -# Table of hash values for escaped characters: -my %g_escape_table; -foreach my $char (split //, '\\`*_{}[]()>#+-.!') { - $g_escape_table{$char} = md5_hex($char); -} - - -# Global hashes, used by various utility routines -my %g_urls; -my %g_titles; -my %g_html_blocks; - -# Used to track when we're inside an ordered or unordered list -# (see _ProcessListItems() for details): -my $g_list_level = 0; - - -#### Blosxom plug-in interface ########################################## - -# Set $g_blosxom_use_meta to 1 to use Blosxom's meta plug-in to determine -# which posts Markdown should process, using a "meta-markup: markdown" -# header. If it's set to 0 (the default), Markdown will process all -# entries. -my $g_blosxom_use_meta = 0; - -sub start { 1; } -sub story { - my($pkg, $path, $filename, $story_ref, $title_ref, $body_ref) = @_; - - if ( (! $g_blosxom_use_meta) or - (defined($meta::markup) and ($meta::markup =~ /^\s*markdown\s*$/i)) - ){ - $$body_ref = Markdown($$body_ref); - } - 1; -} - - -#### Movable Type plug-in interface ##################################### -eval {require MT}; # Test to see if we're running in MT. -unless ($@) { - require MT; - import MT; - require MT::Template::Context; - import MT::Template::Context; - - eval {require MT::Plugin}; # Test to see if we're running >= MT 3.0. - unless ($@) { - require MT::Plugin; - import MT::Plugin; - my $plugin = new MT::Plugin({ - name => "Markdown", - description => "A plain-text-to-HTML formatting plugin. (Version: $VERSION)", - doc_link => 'http://daringfireball.net/projects/markdown/' - }); - MT->add_plugin( $plugin ); - } - - MT::Template::Context->add_container_tag(MarkdownOptions => sub { - my $ctx = shift; - my $args = shift; - my $builder = $ctx->stash('builder'); - my $tokens = $ctx->stash('tokens'); - - if (defined ($args->{'output'}) ) { - $ctx->stash('markdown_output', lc $args->{'output'}); - } - - defined (my $str = $builder->build($ctx, $tokens) ) - or return $ctx->error($builder->errstr); - $str; # return value - }); - - MT->add_text_filter('markdown' => { - label => 'Markdown', - docs => 'http://daringfireball.net/projects/markdown/', - on_format => sub { - my $text = shift; - my $ctx = shift; - my $raw = 0; - if (defined $ctx) { - my $output = $ctx->stash('markdown_output'); - if (defined $output && $output =~ m/^html/i) { - $g_empty_element_suffix = ">"; - $ctx->stash('markdown_output', ''); - } - elsif (defined $output && $output eq 'raw') { - $raw = 1; - $ctx->stash('markdown_output', ''); - } - else { - $raw = 0; - $g_empty_element_suffix = " />"; - } - } - $text = $raw ? $text : Markdown($text); - $text; - }, - }); - - # If SmartyPants is loaded, add a combo Markdown/SmartyPants text filter: - my $smartypants; - - { - no warnings "once"; - $smartypants = $MT::Template::Context::Global_filters{'smarty_pants'}; - } - - if ($smartypants) { - MT->add_text_filter('markdown_with_smartypants' => { - label => 'Markdown With SmartyPants', - docs => 'http://daringfireball.net/projects/markdown/', - on_format => sub { - my $text = shift; - my $ctx = shift; - if (defined $ctx) { - my $output = $ctx->stash('markdown_output'); - if (defined $output && $output eq 'html') { - $g_empty_element_suffix = ">"; - } - else { - $g_empty_element_suffix = " />"; - } - } - $text = Markdown($text); - $text = $smartypants->($text, '1'); - }, - }); - } -} -else { -#### BBEdit/command-line text filter interface ########################## -# Needs to be hidden from MT (and Blosxom when running in static mode). - - # We're only using $blosxom::version once; tell Perl not to warn us: - no warnings 'once'; - unless ( defined($blosxom::version) ) { - use warnings; - - #### Check for command-line switches: ################# - my %cli_opts; - use Getopt::Long; - Getopt::Long::Configure('pass_through'); - GetOptions(\%cli_opts, - 'version', - 'shortversion', - 'html4tags', - ); - if ($cli_opts{'version'}) { # Version info - print "\nThis is Markdown, version $VERSION.\n"; - print "Copyright 2004 John Gruber\n"; - print "http://daringfireball.net/projects/markdown/\n\n"; - exit 0; - } - if ($cli_opts{'shortversion'}) { # Just the version number string. - print $VERSION; - exit 0; - } - if ($cli_opts{'html4tags'}) { # Use HTML tag style instead of XHTML - $g_empty_element_suffix = ">"; - } - - - #### Process incoming text: ########################### - my $text; - { - local $/; # Slurp the whole file - $text = <>; - } - print Markdown($text); - } -} - - - -sub Markdown { -# -# Main function. The order in which other subs are called here is -# essential. Link and image substitutions need to happen before -# _EscapeSpecialCharsWithinTagAttributes(), so that any *'s or _'s in the -# and tags get encoded. -# - my $text = shift; - - # Clear the global hashes. If we don't clear these, you get conflicts - # from other articles when generating a page which contains more than - # one article (e.g. an index page that shows the N most recent - # articles): - %g_urls = (); - %g_titles = (); - %g_html_blocks = (); - - - # Standardize line endings: - $text =~ s{\r\n}{\n}g; # DOS to Unix - $text =~ s{\r}{\n}g; # Mac to Unix - - # Make sure $text ends with a couple of newlines: - $text .= "\n\n"; - - # Convert all tabs to spaces. - $text = _Detab($text); - - # Strip any lines consisting only of spaces and tabs. - # This makes subsequent regexen easier to write, because we can - # match consecutive blank lines with /\n+/ instead of something - # contorted like /[ \t]*\n+/ . - $text =~ s/^[ \t]+$//mg; - - # Turn block-level HTML blocks into hash entries - $text = _HashHTMLBlocks($text); - - # Strip link definitions, store in hashes. - $text = _StripLinkDefinitions($text); - - $text = _RunBlockGamut($text); - - $text = _UnescapeSpecialChars($text); - - return $text . "\n"; -} - - -sub _StripLinkDefinitions { -# -# Strips link definitions from text, stores the URLs and titles in -# hash references. -# - my $text = shift; - my $less_than_tab = $g_tab_width - 1; - - # Link defs are in the form: ^[id]: url "optional title" - while ($text =~ s{ - ^[ ]{0,$less_than_tab}\[(.+)\]: # id = $1 - [ \t]* - \n? # maybe *one* newline - [ \t]* - ? # url = $2 - [ \t]* - \n? # maybe one newline - [ \t]* - (?: - (?<=\s) # lookbehind for whitespace - ["(] - (.+?) # title = $3 - [")] - [ \t]* - )? # title is optional - (?:\n+|\Z) - } - {}mx) { - $g_urls{lc $1} = _EncodeAmpsAndAngles( $2 ); # Link IDs are case-insensitive - if ($3) { - $g_titles{lc $1} = $3; - $g_titles{lc $1} =~ s/"/"/g; - } - } - - return $text; -} - - -sub _HashHTMLBlocks { - my $text = shift; - my $less_than_tab = $g_tab_width - 1; - - # Hashify HTML blocks: - # We only want to do this for block-level HTML tags, such as headers, - # lists, and tables. That's because we still want to wrap

    s around - # "paragraphs" that are wrapped in non-block-level tags, such as anchors, - # phrase emphasis, and spans. The list of tags we're looking for is - # hard-coded: - my $block_tags = qr{ - (?: - p | div | h[1-6] | blockquote | pre | table | - dl | ol | ul | script | noscript | form | - fieldset | iframe | math | ins | del - ) - }x; - - my $tag_attrs = qr{ - (?: # Match one attr name/value pair - \s+ # There needs to be at least some whitespace - # before each attribute name. - [\w.:_-]+ # Attribute name - \s*=\s* - (["']) # Attribute quoter - .+? # Attribute value - \1 # Closing quoter - )* # Zero or more - }x; - - my $empty_tag = qr{< \w+ $tag_attrs \s* />}xms; - my $open_tag = qr{< $block_tags $tag_attrs \s* >}xms; - my $close_tag = undef; # let Text::Balanced handle this - - use Text::Balanced qw(gen_extract_tagged); - my $extract_block = gen_extract_tagged($open_tag, $close_tag, undef, { ignore => [$empty_tag] }); - - my @chunks; - ## TO-DO: the 0,3 on the next line ought to respect the - ## tabwidth, or else, we should mandate 4-space tabwidth and - ## be done with it: - while ($text =~ s{^(([ ]{0,3}<)?.*\n)}{}m) { - my $cur_line = $1; - if (defined $2) { - # current line could be start of code block - - my ($tag, $remainder) = $extract_block->($cur_line . $text); - if ($tag) { - my $key = md5_hex($tag); - $g_html_blocks{$key} = $tag; - push @chunks, "\n\n" . $key . "\n\n"; - $text = $remainder; - } - else { - # No tag match, so toss $cur_line into @chunks - push @chunks, $cur_line; - } - } - else { - # current line could NOT be start of code block - push @chunks, $cur_line; - } - - } - push @chunks, $text; # Whatever is left. - - $text = join '', @chunks; - - - - # Special case just for


    . It was easier to make a special case than - # to make the other regex more complicated. - $text =~ s{ - (?: - (?<=\n\n) # Starting after a blank line - | # or - \A\n? # the beginning of the doc - ) - ( # save in $1 - [ ]{0,$less_than_tab} - <(hr) # start tag = $2 - \b # word break - ([^<>])*? # - /?> # the matching end tag - [ \t]* - (?=\n{2,}|\Z) # followed by a blank line or end of document - ) - }{ - my $key = md5_hex($1); - $g_html_blocks{$key} = $1; - "\n\n" . $key . "\n\n"; - }egx; - - # Special case for standalone HTML comments: - $text =~ s{ - (?: - (?<=\n\n) # Starting after a blank line - | # or - \A\n? # the beginning of the doc - ) - ( # save in $1 - [ ]{0,$less_than_tab} - (?s: - - ) - [ \t]* - (?=\n{2,}|\Z) # followed by a blank line or end of document - ) - }{ - my $key = md5_hex($1); - $g_html_blocks{$key} = $1; - "\n\n" . $key . "\n\n"; - }egx; - - # PHP and ASP-style processor instructions ( and <%…%>) - $text =~ s{ - (?: - (?<=\n\n) # Starting after a blank line - | # or - \A\n? # the beginning of the doc - ) - ( # save in $1 - [ ]{0,$less_than_tab} - (?s: - <([?%]) # $2 - .*? - \2> - ) - [ \t]* - (?=\n{2,}|\Z) # followed by a blank line or end of document - ) - }{ - my $key = md5_hex($1); - $g_html_blocks{$key} = $1; - "\n\n" . $key . "\n\n"; - }egx; - - - return $text; -} - - -sub _RunBlockGamut { -# -# These are all the transformations that form block-level -# tags like paragraphs, headers, and list items. -# - my $text = shift; - - $text = _DoHeaders($text); - - # Do Horizontal Rules: - $text =~ s{^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$}{\n tags around block-level tags. - $text = _HashHTMLBlocks($text); - $text = _FormParagraphs($text); - - return $text; -} - - -sub _RunSpanGamut { -# -# These are all the transformations that occur *within* block-level -# tags like paragraphs, headers, and list items. -# - my $text = shift; - - $text = _DoCodeSpans($text); - $text = _EscapeSpecialCharsWithinTagAttributes($text); - $text = _EncodeBackslashEscapes($text); - - # Process anchor and image tags. Images must come first, - # because ![foo][f] looks like an anchor. - $text = _DoImages($text); - $text = _DoAnchors($text); - - # Make links out of things like `` - # Must come after _DoAnchors(), because you can use < and > - # delimiters in inline links like [this](). - $text = _DoAutoLinks($text); - $text = _EncodeAmpsAndAngles($text); - $text = _DoItalicsAndBold($text); - - # Do hard breaks: - $text =~ s/ {2,}\n/ -- encode [\ ` * _] so they -# don't conflict with their use in Markdown for code, italics and strong. -# We're replacing each such character with its corresponding MD5 checksum -# value; this is likely overkill, but it should prevent us from colliding -# with the escape values by accident. -# - my $text = shift; - my $tokens ||= _TokenizeHTML($text); - $text = ''; # rebuild $text from the tokens - - foreach my $cur_token (@$tokens) { - if ($cur_token->[0] eq "tag") { - $cur_token->[1] =~ s! \\ !$g_escape_table{'\\'}!gx; - $cur_token->[1] =~ s{ (?<=.)(?=.) }{$g_escape_table{'`'}}gx; - $cur_token->[1] =~ s! \* !$g_escape_table{'*'}!gx; - $cur_token->[1] =~ s! _ !$g_escape_table{'_'}!gx; - } - $text .= $cur_token->[1]; - } - return $text; -} - - -sub _DoAnchors { -# -# Turn Markdown link shortcuts into XHTML tags. -# - my $text = shift; - - # - # First, handle reference-style links: [link text] [id] - # - $text =~ s{ - ( # wrap whole match in $1 - \[ - ($g_nested_brackets) # link text = $2 - \] - - [ ]? # one optional space - (?:\n[ ]*)? # one optional newline followed by spaces - - \[ - (.*?) # id = $3 - \] - ) - }{ - my $result; - my $whole_match = $1; - my $link_text = $2; - my $link_id = lc $3; - - if ($link_id eq "") { - $link_id = lc $link_text; # for shortcut links like [this][]. - } - - if (defined $g_urls{$link_id}) { - my $url = $g_urls{$link_id}; - $url =~ s! \* !$g_escape_table{'*'}!gx; # We've got to encode these to avoid - $url =~ s! _ !$g_escape_table{'_'}!gx; # conflicting with italics/bold. - $result = "? # href = $3 - [ \t]* - ( # $4 - (['"]) # quote char = $5 - (.*?) # Title = $6 - \5 # matching quote - [ \t]* # ignore any spaces/tabs between closing quote and ) - )? # title is optional - \) - ) - }{ - my $result; - my $whole_match = $1; - my $link_text = $2; - my $url = $3; - my $title = $6; - - $url =~ s! \* !$g_escape_table{'*'}!gx; # We've got to encode these to avoid - $url =~ s! _ !$g_escape_table{'_'}!gx; # conflicting with italics/bold. - $result = " tags. -# - my $text = shift; - - # - # First, handle reference-style labeled images: ![alt text][id] - # - $text =~ s{ - ( # wrap whole match in $1 - !\[ - (.*?) # alt text = $2 - \] - - [ ]? # one optional space - (?:\n[ ]*)? # one optional newline followed by spaces - - \[ - (.*?) # id = $3 - \] - - ) - }{ - my $result; - my $whole_match = $1; - my $alt_text = $2; - my $link_id = lc $3; - - if ($link_id eq "") { - $link_id = lc $alt_text; # for shortcut links like ![this][]. - } - - $alt_text =~ s/"/"/g; - if (defined $g_urls{$link_id}) { - my $url = $g_urls{$link_id}; - $url =~ s! \* !$g_escape_table{'*'}!gx; # We've got to encode these to avoid - $url =~ s! _ !$g_escape_table{'_'}!gx; # conflicting with italics/bold. - $result = "\"$alt_text\"";? # src url = $3 - [ \t]* - ( # $4 - (['"]) # quote char = $5 - (.*?) # title = $6 - \5 # matching quote - [ \t]* - )? # title is optional - \) - ) - }{ - my $result; - my $whole_match = $1; - my $alt_text = $2; - my $url = $3; - my $title = ''; - if (defined($6)) { - $title = $6; - } - - $alt_text =~ s/"/"/g; - $title =~ s/"/"/g; - $url =~ s! \* !$g_escape_table{'*'}!gx; # We've got to encode these to avoid - $url =~ s! _ !$g_escape_table{'_'}!gx; # conflicting with italics/bold. - $result = "\"$alt_text\"";" . _RunSpanGamut($1) . "\n\n"; - }egmx; - - $text =~ s{ ^(.+)[ \t]*\n-+[ \t]*\n+ }{ - "

    " . _RunSpanGamut($1) . "

    \n\n"; - }egmx; - - - # atx-style headers: - # # Header 1 - # ## Header 2 - # ## Header 2 with closing hashes ## - # ... - # ###### Header 6 - # - $text =~ s{ - ^(\#{1,6}) # $1 = string of #'s - [ \t]* - (.+?) # $2 = Header text - [ \t]* - \#* # optional closing #'s (not counted) - \n+ - }{ - my $h_level = length($1); - "" . _RunSpanGamut($2) . "\n\n"; - }egmx; - - return $text; -} - - -sub _DoLists { -# -# Form HTML ordered (numbered) and unordered (bulleted) lists. -# - my $text = shift; - my $less_than_tab = $g_tab_width - 1; - - # Re-usable patterns to match list item bullets and number markers: - my $marker_ul = qr/[*+-]/; - my $marker_ol = qr/\d+[.]/; - my $marker_any = qr/(?:$marker_ul|$marker_ol)/; - - # Re-usable pattern to match any entirel ul or ol list: - my $whole_list = qr{ - ( # $1 = whole list - ( # $2 - [ ]{0,$less_than_tab} - (${marker_any}) # $3 = first list item marker - [ \t]+ - ) - (?s:.+?) - ( # $4 - \z - | - \n{2,} - (?=\S) - (?! # Negative lookahead for another list item marker - [ \t]* - ${marker_any}[ \t]+ - ) - ) - ) - }mx; - - # We use a different prefix before nested lists than top-level lists. - # See extended comment in _ProcessListItems(). - # - # Note: There's a bit of duplication here. My original implementation - # created a scalar regex pattern as the conditional result of the test on - # $g_list_level, and then only ran the $text =~ s{...}{...}egmx - # substitution once, using the scalar as the pattern. This worked, - # everywhere except when running under MT on my hosting account at Pair - # Networks. There, this caused all rebuilds to be killed by the reaper (or - # perhaps they crashed, but that seems incredibly unlikely given that the - # same script on the same server ran fine *except* under MT. I've spent - # more time trying to figure out why this is happening than I'd like to - # admit. My only guess, backed up by the fact that this workaround works, - # is that Perl optimizes the substition when it can figure out that the - # pattern will never change, and when this optimization isn't on, we run - # afoul of the reaper. Thus, the slightly redundant code that uses two - # static s/// patterns rather than one conditional pattern. - - if ($g_list_level) { - $text =~ s{ - ^ - $whole_list - }{ - my $list = $1; - my $list_type = ($3 =~ m/$marker_ul/) ? "ul" : "ol"; - - # Turn double returns into triple returns, so that we can make a - # paragraph for the last item in a list, if necessary: - $list =~ s/\n{2,}/\n\n\n/g; - my $result = _ProcessListItems($list, $marker_any); - - # Trim any trailing whitespace, to put the closing `` - # up on the preceding line, to get it past the current stupid - # HTML block parser. This is a hack to work around the terrible - # hack that is the HTML block parser. - $result =~ s{\s+$}{}; - $result = "<$list_type>" . $result . "\n"; - $result; - }egmx; - } - else { - $text =~ s{ - (?:(?<=\n\n)|\A\n?) - $whole_list - }{ - my $list = $1; - my $list_type = ($3 =~ m/$marker_ul/) ? "ul" : "ol"; - # Turn double returns into triple returns, so that we can make a - # paragraph for the last item in a list, if necessary: - $list =~ s/\n{2,}/\n\n\n/g; - my $result = _ProcessListItems($list, $marker_any); - $result = "<$list_type>\n" . $result . "\n"; - $result; - }egmx; - } - - - return $text; -} - - -sub _ProcessListItems { -# -# Process the contents of a single ordered or unordered list, splitting it -# into individual list items. -# - - my $list_str = shift; - my $marker_any = shift; - - - # The $g_list_level global keeps track of when we're inside a list. - # Each time we enter a list, we increment it; when we leave a list, - # we decrement. If it's zero, we're not in a list anymore. - # - # We do this because when we're not inside a list, we want to treat - # something like this: - # - # I recommend upgrading to version - # 8. Oops, now this line is treated - # as a sub-list. - # - # As a single paragraph, despite the fact that the second line starts - # with a digit-period-space sequence. - # - # Whereas when we're inside a list (or sub-list), that line will be - # treated as the start of a sub-list. What a kludge, huh? This is - # an aspect of Markdown's syntax that's hard to parse perfectly - # without resorting to mind-reading. Perhaps the solution is to - # change the syntax rules such that sub-lists must start with a - # starting cardinal number; e.g. "1." or "a.". - - $g_list_level++; - - # trim trailing blank lines: - $list_str =~ s/\n{2,}\z/\n/; - - - $list_str =~ s{ - (\n)? # leading line = $1 - (^[ \t]*) # leading whitespace = $2 - ($marker_any) [ \t]+ # list marker = $3 - ((?s:.+?) # list item text = $4 - (\n{1,2})) - (?= \n* (\z | \2 ($marker_any) [ \t]+)) - }{ - my $item = $4; - my $leading_line = $1; - my $leading_space = $2; - - if ($leading_line or ($item =~ m/\n{2,}/)) { - $item = _RunBlockGamut(_Outdent($item)); - } - else { - # Recursion for sub-lists: - $item = _DoLists(_Outdent($item)); - chomp $item; - $item = _RunSpanGamut($item); - } - - "
  • " . $item . "
  • \n"; - }egmx; - - $g_list_level--; - return $list_str; -} - - - -sub _DoCodeBlocks { -# -# Process Markdown `
    ` blocks.
    -#	
    -
    -	my $text = shift;
    -
    -	$text =~ s{
    -			(?:\n\n|\A)
    -			(	            # $1 = the code block -- one or more lines, starting with a space/tab
    -			  (?:
    -			    (?:[ ]{$g_tab_width} | \t)  # Lines must start with a tab or a tab-width of spaces
    -			    .*\n+
    -			  )+
    -			)
    -			((?=^[ ]{0,$g_tab_width}\S)|\Z)	# Lookahead for non-space at line-start, or end of doc
    -		}{
    -			my $codeblock = $1;
    -			my $result; # return value
    -
    -			$codeblock = _EncodeCode(_Outdent($codeblock));
    -			$codeblock = _Detab($codeblock);
    -			$codeblock =~ s/\A\n+//; # trim leading newlines
    -			$codeblock =~ s/\n+\z//; # trim trailing newlines
    -
    -			$result = "\n\n
    " . $codeblock . "\n
    \n\n"; - - $result; - }egmx; - - return $text; -} - - -sub _DoCodeSpans { -# -# * Backtick quotes are used for spans. -# -# * You can use multiple backticks as the delimiters if you want to -# include literal backticks in the code span. So, this input: -# -# Just type ``foo `bar` baz`` at the prompt. -# -# Will translate to: -# -#

    Just type foo `bar` baz at the prompt.

    -# -# There's no arbitrary limit to the number of backticks you -# can use as delimters. If you need three consecutive backticks -# in your code, use four for delimiters, etc. -# -# * You can use spaces to get literal backticks at the edges: -# -# ... type `` `bar` `` ... -# -# Turns to: -# -# ... type `bar` ... -# - - my $text = shift; - - $text =~ s@ - (?$c
    "; - @egsx; - - return $text; -} - - -sub _EncodeCode { -# -# Encode/escape certain characters inside Markdown code runs. -# The point is that in code, these characters are literals, -# and lose their special Markdown meanings. -# - local $_ = shift; - - # Encode all ampersands; HTML entities are not - # entities within a Markdown code span. - s/&/&/g; - - # Encode $'s, but only if we're running under Blosxom. - # (Blosxom interpolates Perl variables in article bodies.) - { - no warnings 'once'; - if (defined($blosxom::version)) { - s/\$/$/g; - } - } - - - # Do the angle bracket song and dance: - s! < !<!gx; - s! > !>!gx; - - # Now, escape characters that are magic in Markdown: - s! \* !$g_escape_table{'*'}!gx; - s! _ !$g_escape_table{'_'}!gx; - s! { !$g_escape_table{'{'}!gx; - s! } !$g_escape_table{'}'}!gx; - s! \[ !$g_escape_table{'['}!gx; - s! \] !$g_escape_table{']'}!gx; - s! \\ !$g_escape_table{'\\'}!gx; - - return $_; -} - - -sub _DoItalicsAndBold { - my $text = shift; - - # must go first: - $text =~ s{ (\*\*|__) (?=\S) (.+?[*_]*) (?<=\S) \1 } - {$2}gsx; - - $text =~ s{ (\*|_) (?=\S) (.+?) (?<=\S) \1 } - {$2}gsx; - - return $text; -} - - -sub _DoBlockQuotes { - my $text = shift; - - $text =~ s{ - ( # Wrap whole match in $1 - ( - ^[ \t]*>[ \t]? # '>' at the start of a line - .+\n # rest of the first line - (.+\n)* # subsequent consecutive lines - \n* # blanks - )+ - ) - }{ - my $bq = $1; - $bq =~ s/^[ \t]*>[ \t]?//gm; # trim one level of quoting - $bq =~ s/^[ \t]+$//mg; # trim whitespace-only lines - $bq = _RunBlockGamut($bq); # recurse - - $bq =~ s/^/ /g; - # These leading spaces screw with
     content, so we need to fix that:
    -			$bq =~ s{
    -					(\s*
    .+?
    ) - }{ - my $pre = $1; - $pre =~ s/^ //mg; - $pre; - }egsx; - - "
    \n$bq\n
    \n\n"; - }egmx; - - - return $text; -} - - -sub _FormParagraphs { -# -# Params: -# $text - string to process with html

    tags -# - my $text = shift; - - # Strip leading and trailing lines: - $text =~ s/\A\n+//; - $text =~ s/\n+\z//; - - my @grafs = split(/\n{2,}/, $text); - - # - # Wrap

    tags. - # - foreach (@grafs) { - unless (defined( $g_html_blocks{$_} )) { - $_ = _RunSpanGamut($_); - s/^([ \t]*)/

    /; - $_ .= "

    "; - } - } - - # - # Unhashify HTML blocks - # -# foreach my $graf (@grafs) { -# my $block = $g_html_blocks{$graf}; -# if (defined $block) { -# $graf = $block; -# } -# } - - foreach my $graf (@grafs) { - # Modify elements of @grafs in-place... - my $block = $g_html_blocks{$graf}; - if (defined $block) { - $graf = $block; - if ($block =~ m{ - \A - ( # $1 =
    tag -
    ]* - \b - markdown\s*=\s* (['"]) # $2 = attr quote char - 1 - \2 - [^>]* - > - ) - ( # $3 = contents - .* - ) - (
    ) # $4 = closing tag - \z - - }xms - ) { - my ($div_open, $div_content, $div_close) = ($1, $3, $4); - - # We can't call Markdown(), because that resets the hash; - # that initialization code should be pulled into its own sub, though. - $div_content = _HashHTMLBlocks($div_content); - $div_content = _StripLinkDefinitions($div_content); - $div_content = _RunBlockGamut($div_content); - $div_content = _UnescapeSpecialChars($div_content); - - $div_open =~ s{\smarkdown\s*=\s*(['"]).+?\1}{}ms; - - $graf = $div_open . "\n" . $div_content . "\n" . $div_close; - } - } - } - - - return join "\n\n", @grafs; -} - - -sub _EncodeAmpsAndAngles { -# Smart processing for ampersands and angle brackets that need to be encoded. - - my $text = shift; - - # Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin: - # http://bumppo.net/projects/amputator/ - $text =~ s/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/&/g; - - # Encode naked <'s - $text =~ s{<(?![a-z/?\$!])}{<}gi; - - return $text; -} - - -sub _EncodeBackslashEscapes { -# -# Parameter: String. -# Returns: The string, with after processing the following backslash -# escape sequences. -# - local $_ = shift; - - s! \\\\ !$g_escape_table{'\\'}!gx; # Must process escaped backslashes first. - s! \\` !$g_escape_table{'`'}!gx; - s! \\\* !$g_escape_table{'*'}!gx; - s! \\_ !$g_escape_table{'_'}!gx; - s! \\\{ !$g_escape_table{'{'}!gx; - s! \\\} !$g_escape_table{'}'}!gx; - s! \\\[ !$g_escape_table{'['}!gx; - s! \\\] !$g_escape_table{']'}!gx; - s! \\\( !$g_escape_table{'('}!gx; - s! \\\) !$g_escape_table{')'}!gx; - s! \\> !$g_escape_table{'>'}!gx; - s! \\\# !$g_escape_table{'#'}!gx; - s! \\\+ !$g_escape_table{'+'}!gx; - s! \\\- !$g_escape_table{'-'}!gx; - s! \\\. !$g_escape_table{'.'}!gx; - s{ \\! }{$g_escape_table{'!'}}gx; - - return $_; -} - - -sub _DoAutoLinks { - my $text = shift; - - $text =~ s{<((https?|ftp|dict):[^'">\s]+)>}{
    $1}gi; - - # Email addresses: - $text =~ s{ - < - (?:mailto:)? - ( - [-.\w]+ - \@ - [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+ - ) - > - }{ - _EncodeEmailAddress( _UnescapeSpecialChars($1) ); - }egix; - - return $text; -} - - -sub _EncodeEmailAddress { -# -# Input: an email address, e.g. "foo@example.com" -# -# Output: the email address as a mailto link, with each character -# of the address encoded as either a decimal or hex entity, in -# the hopes of foiling most address harvesting spam bots. E.g.: -# -# foo -# @example.com -# -# Based on a filter by Matthew Wickline, posted to the BBEdit-Talk -# mailing list: -# - - my $addr = shift; - - srand; - my @encode = ( - sub { '&#' . ord(shift) . ';' }, - sub { '&#x' . sprintf( "%X", ord(shift) ) . ';' }, - sub { shift }, - ); - - $addr = "mailto:" . $addr; - - $addr =~ s{(.)}{ - my $char = $1; - if ( $char eq '@' ) { - # this *must* be encoded. I insist. - $char = $encode[int rand 1]->($char); - } elsif ( $char ne ':' ) { - # leave ':' alone (to spot mailto: later) - my $r = rand; - # roughly 10% raw, 45% hex, 45% dec - $char = ( - $r > .9 ? $encode[2]->($char) : - $r < .45 ? $encode[1]->($char) : - $encode[0]->($char) - ); - } - $char; - }gex; - - $addr = qq{$addr}; - $addr =~ s{">.+?:}{">}; # strip the mailto: from the visible part - - return $addr; -} - - -sub _UnescapeSpecialChars { -# -# Swap back in all the special characters we've hidden. -# - my $text = shift; - - while( my($char, $hash) = each(%g_escape_table) ) { - $text =~ s/$hash/$char/g; - } - return $text; -} - - -sub _TokenizeHTML { -# -# Parameter: String containing HTML markup. -# Returns: Reference to an array of the tokens comprising the input -# string. Each token is either a tag (possibly with nested, -# tags contained therein, such as , or a -# run of text between tags. Each element of the array is a -# two-element array; the first is either 'tag' or 'text'; -# the second is the actual value. -# -# -# Derived from the _tokenize() subroutine from Brad Choate's MTRegex plugin. -# -# - - my $str = shift; - my $pos = 0; - my $len = length $str; - my @tokens; - - my $depth = 6; - my $nested_tags = join('|', ('(?:<[a-z/!$](?:[^<>]') x $depth) . (')*>)' x $depth); - my $match = qr/(?s: ) | # comment - (?s: <\? .*? \?> ) | # processing instruction - $nested_tags/ix; # nested tags - - while ($str =~ m/($match)/g) { - my $whole_tag = $1; - my $sec_start = pos $str; - my $tag_start = $sec_start - length $whole_tag; - if ($pos < $tag_start) { - push @tokens, ['text', substr($str, $pos, $tag_start - $pos)]; - } - push @tokens, ['tag', $whole_tag]; - $pos = pos $str; - } - push @tokens, ['text', substr($str, $pos, $len - $pos)] if $pos < $len; - - return \@tokens; -} - - -sub _Outdent { -# -# Remove one level of line-leading tabs or spaces -# - my $text = shift; - - $text =~ s/^(\t|[ ]{1,$g_tab_width})//gm; - return $text; -} - - -sub _Detab { -# -# Cribbed from a post by Bart Lateur: -# -# - my $text = shift; - - $text =~ s{(.*?)\t}{$1.(' ' x ($g_tab_width - length($1) % $g_tab_width))}ge; - return $text; -} - - -1; - -__END__ - - -=pod - -=head1 NAME - -B - - -=head1 SYNOPSIS - -B [ B<--html4tags> ] [ B<--version> ] [ B<-shortversion> ] - [ I ... ] - - -=head1 DESCRIPTION - -Markdown is a text-to-HTML filter; it translates an easy-to-read / -easy-to-write structured text format into HTML. Markdown's text format -is most similar to that of plain text email, and supports features such -as headers, *emphasis*, code blocks, blockquotes, and links. - -Markdown's syntax is designed not as a generic markup language, but -specifically to serve as a front-end to (X)HTML. You can use span-level -HTML tags anywhere in a Markdown document, and you can use block level -HTML tags (like
    and
    as well). - -For more information about Markdown's syntax, see: - - http://daringfireball.net/projects/markdown/ - - -=head1 OPTIONS - -Use "--" to end switch parsing. For example, to open a file named "-z", use: - - Markdown.pl -- -z - -=over 4 - - -=item B<--html4tags> - -Use HTML 4 style for empty element tags, e.g.: - -
    - -instead of Markdown's default XHTML style tags, e.g.: - -
    - - -=item B<-v>, B<--version> - -Display Markdown's version number and copyright information. - - -=item B<-s>, B<--shortversion> - -Display the short-form version number. - - -=back - - - -=head1 BUGS - -To file bug reports or feature requests (other than topics listed in the -Caveats section above) please send email to: - - support@daringfireball.net - -Please include with your report: (1) the example input; (2) the output -you expected; (3) the output Markdown actually produced. - - -=head1 VERSION HISTORY - -See the readme file for detailed release notes for this version. - -1.0.2b7 - - + Changed shebang line from "/usr/bin/perl" to "/usr/bin/env perl" - - + Now only trim trailing newlines from code blocks, instead of trimming - all trailing whitespace characters. - - -1.0.2b6 - Mon 03 Apr 2006 - - + Fixed bad performance bug in new `Text::Balanced`-based block-level parser. - - -1.0.2b5 - Thu 08 Dec 2005 - - + Fixed bug where this: - - [text](http://m.com "title" ) - - wasn't working as expected, because the parser wasn't allowing for spaces - before the closing paren. - - -1.0.2b4 - Thu 08 Sep 2005 - - + Filthy hack to support markdown='1' in div tags, because I need it - to write today's fireball. - - + First crack at a new, smarter, block-level HTML parser. - -1.0.2b3 - Thu 28 Apr 2005 - - + _DoAutoLinks() now supports the 'dict://' URL scheme. - - + PHP- and ASP-style processor instructions are now protected as - raw HTML blocks. - - - <% ... %> - - + Workarounds for regressions introduced with fix for "backticks within - tags" bug in 1.0.2b1. The fix is to allow `...` to be turned into - ... within an HTML tag attribute, and then to turn - these spurious `` tags back into literal backtick characters - in _EscapeSpecialCharsWithinTagAttributes(). - - The regression was caused because in the fix, we moved - _EscapeSpecialCharsWithinTagAttributes() ahead of _DoCodeSpans() - in _RunSpanGamut(), but that's no good. We need to process code - spans first, otherwise we can get tripped up by something like this: - - `` - - -1.0.2b2 - 20 Mar 2005 - - + Fix for nested sub-lists in list-paragraph mode. Previously we got - a spurious extra level of `

    ` tags for something like this: - - * this - - * sub - - that - - + Experimental support for [this] as a synonym for [this][]. - (Note to self: No test yet for this.) - Be sure to test, e.g.: [permutations of this sort of [thing][].] - - -1.0.2b1 - 28 Feb 2005 - - + Fix for backticks within HTML tag: like this - - + Fix for escaped backticks still triggering code spans: - - There are two raw backticks here: \` and here: \`, not a code span - -1.0.1 - 14 Dec 2004 - -1.0 - 28 Aug 2004 - - -=head1 AUTHOR - - John Gruber - http://daringfireball.net - - PHP port and other contributions by Michel Fortin - http://michelf.com - - -=head1 COPYRIGHT AND LICENSE - -Copyright (c) 2003-2005 John Gruber - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -* Neither the name "Markdown" nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - -This software is provided by the copyright holders and contributors "as -is" and any express or implied warranties, including, but not limited -to, the implied warranties of merchantability and fitness for a -particular purpose are disclaimed. In no event shall the copyright owner -or contributors be liable for any direct, indirect, incidental, special, -exemplary, or consequential damages (including, but not limited to, -procurement of substitute goods or services; loss of use, data, or -profits; or business interruption) however caused and on any theory of -liability, whether in contract, strict liability, or tort (including -negligence or otherwise) arising in any way out of the use of this -software, even if advised of the possibility of such damage. - -=cut diff --git a/perlMarkdown/readme.txt b/perlMarkdown/readme.txt deleted file mode 100644 index 9e73e56c..00000000 --- a/perlMarkdown/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -Reference Implementation ------------------------- - -This directory contains John Gruber's original Perl implementation of Markdown. Smart diff programs like Araxis Merge will be able to match up this file with markdown.pl. - -A little tweaking helps. In markdown.pl: - - - replace `#` with `//` - - replace `$text` with `text` - -Be sure to ignore whitespace and line endings. - -Note: This release of Showdown is based on `markdown1.0.2b7.pl`, but uses the HTML parser from `markdown1.0.2b2.pl`. diff --git a/src/ng-showdown.js b/src/angular.js similarity index 87% rename from src/ng-showdown.js rename to src/angular.js index 9e9e617c..e2bc6068 100644 --- a/src/ng-showdown.js +++ b/src/angular.js @@ -4,13 +4,14 @@ //Check if AngularJs and Showdown is defined and only load ng-Showdown if both are present -if (typeof angular !== 'undefined' && typeof Showdown !== 'undefined') { +if (typeof angular !== 'undefined' && typeof showdown !== 'undefined') { - (function (module, Showdown) { + (function (module, showdown) { + 'use strict'; module - .provider('$Showdown', provider) - .directive('sdModelToHtml', ['$Showdown', markdownToHtmlDirective]) + .provider('$showdown', provider) + .directive('sdModelToHtml', ['$showdown', markdownToHtmlDirective]) .filter('sdStripHtml', stripHtmlFilter); /** @@ -20,7 +21,6 @@ if (typeof angular !== 'undefined' && typeof Showdown !== 'undefined') { * with the user configurations. * If the user wants to use a different configuration in a determined context, he can use the "classic" Showdown * object instead. - * */ function provider() { @@ -35,9 +35,9 @@ if (typeof angular !== 'undefined' && typeof Showdown !== 'undefined') { * * @param {string} key Config parameter key * @param {string} value Config parameter value - */ + */ /* jshint validthis: true */ this.setOption = function (key, value) { - config.key = value; + config[key] = value; return this; }; @@ -68,7 +68,7 @@ if (typeof angular !== 'undefined' && typeof Showdown !== 'undefined') { }; function SDObject() { - var converter = new Showdown.converter(config); + var converter = new showdown.Converter(config); /** * Converts a markdown text into HTML @@ -103,16 +103,16 @@ if (typeof angular !== 'undefined' && typeof Showdown !== 'undefined') { * Usage example: *

    * - * @param $Showdown + * @param $showdown * @returns {*} */ - function markdownToHtmlDirective($Showdown) { + function markdownToHtmlDirective($showdown) { var link = function (scope, element) { scope.$watch('model', function (newValue) { var val; if (typeof newValue === 'string') { - val = $Showdown.makeHtml(newValue); + val = $showdown.makeHtml(newValue); } else { val = typeof newValue; } @@ -126,7 +126,7 @@ if (typeof angular !== 'undefined' && typeof Showdown !== 'undefined') { scope: { model: '=sdModelToHtml' } - } + }; } /** @@ -140,11 +140,11 @@ if (typeof angular !== 'undefined' && typeof Showdown !== 'undefined') { }; } - })(angular.module('Showdown', []), Showdown); + })(angular.module('showdown', []), showdown); } else { /** TODO Since this library is opt out, maybe we should not throw an error so we can concatenate this - script with the main lib */ + script with the main lib */ // throw new Error("ng-showdown was not loaded because one of it's dependencies (AngularJS or Showdown) wasn't met"); } diff --git a/src/extensions/github.js b/src/extensions/github.js deleted file mode 100644 index c4f86827..00000000 --- a/src/extensions/github.js +++ /dev/null @@ -1,25 +0,0 @@ -// -// Github Extension (WIP) -// ~~strike-through~~ -> strike-through -// - -(function(){ - var github = function(converter) { - return [ - { - // strike-through - // NOTE: showdown already replaced "~" with "~T", so we need to adjust accordingly. - type : 'lang', - regex : '(~T){2}([^~]+)(~T){2}', - replace : function(match, prefix, content, suffix) { - return '' + content + ''; - } - } - ]; - }; - - // Client-side export - if (typeof window !== 'undefined' && window.Showdown && window.Showdown.extensions) { window.Showdown.extensions.github = github; } - // Server-side export - if (typeof module !== 'undefined') module.exports = github; -}()); diff --git a/src/extensions/prettify.js b/src/extensions/prettify.js deleted file mode 100644 index 4b3a70b2..00000000 --- a/src/extensions/prettify.js +++ /dev/null @@ -1,29 +0,0 @@ -// -// Google Prettify -// A showdown extension to add Google Prettify (http://code.google.com/p/google-code-prettify/) -// hints to showdown's HTML output. -// - -(function(){ - - var prettify = function(converter) { - return [ - { type: 'output', filter: function(source){ - - return source.replace(/(
    )?/gi, function(match, pre) {
    -                    if (pre) {
    -                        return '
    ';
    -                    } else {
    -                        return '';
    -                    }
    -                });
    -            }}
    -        ];
    -    };
    -
    -    // Client-side export
    -    if (typeof window !== 'undefined' && window.Showdown && window.Showdown.extensions) { window.Showdown.extensions.prettify = prettify; }
    -    // Server-side export
    -    if (typeof module !== 'undefined') module.exports = prettify;
    -
    -}());
    diff --git a/src/extensions/table.js b/src/extensions/table.js
    deleted file mode 100644
    index faa96598..00000000
    --- a/src/extensions/table.js
    +++ /dev/null
    @@ -1,106 +0,0 @@
    -/*global module:true*/
    -/*
    - * Basic table support with re-entrant parsing, where cell content
    - * can also specify markdown.
    - *
    - * Tables
    - * ======
    - *
    - * | Col 1   | Col 2                                              |
    - * |======== |====================================================|
    - * |**bold** | ![Valid XHTML] (http://w3.org/Icons/valid-xhtml10) |
    - * | Plain   | Value                                              |
    - *
    - */
    -
    -(function(){
    -  var table = function(converter) {
    -    var tables = {}, style = 'text-align:left;', filter; 
    -    tables.th = function(header){
    -      if (header.trim() === "") { return "";}
    -      var id = header.trim().replace(/ /g, '_').toLowerCase();
    -      return '
    '; - }; - tables.td = function(cell) { - return ''; - }; - tables.ths = function(){ - var out = "", i = 0, hs = [].slice.apply(arguments); - for (i;i'); - hs = line.substring(1, line.length -1).split('|'); - tbl.push(tables.thead.apply(this, hs)); - line = lines[++i]; - if (!line.trim().match(/^[|]{1}[-=| ]+[|]{1}$/)) { - // not a table rolling back - line = lines[--i]; - } - else { - line = lines[++i]; - tbl.push(''); - while (line.trim().match(/^[|]{1}.*[|]{1}$/)) { - line = line.trim(); - tbl.push(tables.tr.apply(this, line.substring(1, line.length -1).split('|'))); - line = lines[++i]; - } - tbl.push(''); - tbl.push('
    ' + header + '' + converter.makeHtml(cell) + '
    '); - // we are done with this table and we move along - out.push(tbl.join('\n')); - continue; - } - } - out.push(line); - } - return out.join('\n'); - }; - return [ - { - type: 'lang', - filter: filter - } - ]; - }; - - // Client-side export - if (typeof window !== 'undefined' && window.Showdown && window.Showdown.extensions) { window.Showdown.extensions.table = table; } - // Server-side export - if (typeof module !== 'undefined') { - module.exports = table; - } -}()); diff --git a/src/extensions/twitter.js b/src/extensions/twitter.js deleted file mode 100644 index cde3379d..00000000 --- a/src/extensions/twitter.js +++ /dev/null @@ -1,42 +0,0 @@ -// -// Twitter Extension -// @username -> @username -// #hashtag -> #hashtag -// - -(function(){ - - var twitter = function(converter) { - return [ - - // @username syntax - { type: 'lang', regex: '\\B(\\\\)?@([\\S]+)\\b', replace: function(match, leadingSlash, username) { - // Check if we matched the leading \ and return nothing changed if so - if (leadingSlash === '\\') { - return match; - } else { - return '@' + username + ''; - } - }}, - - // #hashtag syntax - { type: 'lang', regex: '\\B(\\\\)?#([\\S]+)\\b', replace: function(match, leadingSlash, tag) { - // Check if we matched the leading \ and return nothing changed if so - if (leadingSlash === '\\') { - return match; - } else { - return '#' + tag + ''; - } - }}, - - // Escaped @'s - { type: 'lang', regex: '\\\\@', replace: '@' } - ]; - }; - - // Client-side export - if (typeof window !== 'undefined' && window.Showdown && window.Showdown.extensions) { window.Showdown.extensions.twitter = twitter; } - // Server-side export - if (typeof module !== 'undefined') module.exports = twitter; - -}()); diff --git a/src/helpers.js b/src/helpers.js new file mode 100644 index 00000000..9cc87319 --- /dev/null +++ b/src/helpers.js @@ -0,0 +1,98 @@ +/** + * Created by Estevao on 11-01-2015. + */ + +function isString(a) { + return (typeof a === 'string' || a instanceof String); +} + +function forEach(obj, callback) { + if (typeof obj.forEach === 'function') { + obj.forEach(callback); + } else { + var i, len = obj.length; + for (i = 0; i < len; i++) { + callback(obj[i], i, obj); + } + } +} + +function isArray(a) { + return a.constructor === Array; +} + +function isUndefined(value) { + return typeof value === 'undefined'; +} + +var escapeCharactersCallback = function (wholeMatch, m1) { + var charCodeToEscape = m1.charCodeAt(0); + return '~E' + charCodeToEscape + 'E'; +}; + +var escapeCharacters = function (text, charsToEscape, afterBackslash) { + // First we have to escape the escape characters so that + // we can build a character class out of them + var regexString = '([' + charsToEscape.replace(/([\[\]\\])/g, '\\$1') + '])'; + + if (afterBackslash) { + regexString = '\\\\' + regexString; + } + + var regex = new RegExp(regexString, 'g'); + text = text.replace(regex, escapeCharactersCallback); + + return text; +}; + +if (!showdown.hasOwnProperty('helper')) { + showdown.helper = {}; +} + +/** + * isString helper function + * @param a + * @returns {boolean} + */ +showdown.helper.isString = isString; + +/** + * ForEach helper function + * @param {*} obj + * @param callback + */ +showdown.helper.forEach = forEach; + +/** + * isArray helper function + * @param {*} a + * @returns {boolean} + */ +showdown.helper.isArray = isArray; + +/** + * Check if value is undefined + * + * @static + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + */ +showdown.helper.isUndefined = isUndefined; + +/** + * Callback used to escape characters when passing through String.replace + * @param {string} wholeMatch + * @param {string} m1 + * @returns {string} + */ +showdown.helper.escapeCharactersCallback = escapeCharactersCallback; + +/** + * Escape characters in a string + * + * @param {string} text + * @param {string} charsToEscape + * @param {boolean} afterBackslash + * @returns {XML|string|void|*} + */ +showdown.helper.escapeCharacters = escapeCharacters; diff --git a/src/loader.js b/src/loader.js new file mode 100644 index 00000000..8c044dfe --- /dev/null +++ b/src/loader.js @@ -0,0 +1,20 @@ +/** + * Created by Estevao on 15-01-2015. + */ + +var root = this; + +// CommonJS/nodeJS Loader +if (typeof module !== 'undefined' && module.exports) { + module.exports = showdown; +} +// AMD Loader +else if (typeof define === 'function' && define.amd) { + define('showdown', function () { + return showdown; + }); +} +// Regular Browser loader +else { + root.showdown = showdown; +} diff --git a/src/showdown..legacy.js b/src/showdown..legacy.js deleted file mode 100644 index 25bed634..00000000 --- a/src/showdown..legacy.js +++ /dev/null @@ -1,1454 +0,0 @@ -// -// showdown.js -- A javascript port of Markdown. -// -// Copyright (c) 2007 John Fraser. -// -// Original Markdown Copyright (c) 2004-2005 John Gruber -// -// -// Redistributable under a BSD-style open source license. -// See license.txt for more information. -// -// The full source distribution is at: -// -// A A L -// T C A -// T K B -// -// -// - -// -// Wherever possible, Showdown is a straight, line-by-line port -// of the Perl version of Markdown. -// -// This is not a normal parser design; it's basically just a -// series of string substitutions. It's hard to read and -// maintain this way, but keeping Showdown close to the original -// design makes it easier to port new features. -// -// More importantly, Showdown behaves like markdown.pl in most -// edge cases. So web applications can do client-side preview -// in Javascript, and then build identical HTML on the server. -// -// This port needs the new RegExp functionality of ECMA 262, -// 3rd Edition (i.e. Javascript 1.5). Most modern web browsers -// should do fine. Even with the new regular expression features, -// We do a lot of work to emulate Perl's regex functionality. -// The tricky changes in this file mostly have the "attacklab:" -// label. Major or self-explanatory changes don't. -// -// Smart diff tools like Araxis Merge will be able to match up -// this file with markdown.pl in a useful way. A little tweaking -// helps: in a copy of markdown.pl, replace "#" with "//" and -// replace "$text" with "text". Be sure to ignore whitespace -// and line endings. -// - - -// -// Showdown usage: -// -// var text = "Markdown *rocks*."; -// -// var converter = new Showdown.converter(); -// var html = converter.makeHtml(text); -// -// alert(html); -// -// Note: move the sample code to the bottom of this -// file before uncommenting it. -// - - -// -// Showdown namespace -// -var Showdown = {extensions: {}}; - -// -// forEach -// -var forEach = Showdown.forEach = function (obj, callback) { - if (typeof obj.forEach === 'function') { - obj.forEach(callback); - } else { - var i, len = obj.length; - for (i = 0; i < len; i++) { - callback(obj[i], i, obj); - } - } -}; - -// -// Standard extension naming -// -var stdExtName = function (s) { - return s.replace(/[_-]||\s/g, '').toLowerCase(); -}; - -// -// converter -// -// Wraps all "globals" so that the only thing -// exposed is makeHtml(). -// -Showdown.converter = function (converter_options) { - -// -// Globals: -// - -// Global hashes, used by various utility routines - var g_urls; - var g_titles; - var g_html_blocks; - -// Used to track when we're inside an ordered or unordered list -// (see _ProcessListItems() for details): - var g_list_level = 0; - -// Global extensions - var g_lang_extensions = []; - var g_output_modifiers = []; - - -// -// Automatic Extension Loading (node only): -// - if (typeof module !== 'undefined' && typeof exports !== 'undefined' && typeof require !== 'undefined') { - var fs = require('fs'); - - if (fs) { - // Search extensions folder - var extensions = fs.readdirSync((__dirname || '.') + '/extensions').filter(function (file) { - return ~file.indexOf('.js'); - }).map(function (file) { - return file.replace(/\.js$/, ''); - }); - // Load extensions into Showdown namespace - Showdown.forEach(extensions, function (ext) { - var name = stdExtName(ext); - Showdown.extensions[name] = require('./extensions/' + ext); - }); - } - } - - this.makeHtml = function (text) { -// -// Main function. The order in which other subs are called here is -// essential. Link and image substitutions need to happen before -// _EscapeSpecialCharsWithinTagAttributes(), so that any *'s or _'s in the -// and tags get encoded. -// - - // Clear the global hashes. If we don't clear these, you get conflicts - // from other articles when generating a page which contains more than - // one article (e.g. an index page that shows the N most recent - // articles): - g_urls = {}; - g_titles = {}; - g_html_blocks = []; - - // attacklab: Replace ~ with ~T - // This lets us use tilde as an escape char to avoid md5 hashes - // The choice of character is arbitray; anything that isn't - // magic in Markdown will work. - text = text.replace(/~/g, "~T"); - - // attacklab: Replace $ with ~D - // RegExp interprets $ as a special character - // when it's in a replacement string - text = text.replace(/\$/g, "~D"); - - // Standardize line endings - text = text.replace(/\r\n/g, "\n"); // DOS to Unix - text = text.replace(/\r/g, "\n"); // Mac to Unix - - // Make sure text begins and ends with a couple of newlines: - text = "\n\n" + text + "\n\n"; - - // Convert all tabs to spaces. - text = _Detab(text); - - // Strip any lines consisting only of spaces and tabs. - // This makes subsequent regexen easier to write, because we can - // match consecutive blank lines with /\n+/ instead of something - // contorted like /[ \t]*\n+/ . - text = text.replace(/^[ \t]+$/mg, ""); - - // Run language extensions - Showdown.forEach(g_lang_extensions, function (x) { - text = _ExecuteExtension(x, text); - }); - - // Handle github codeblocks prior to running HashHTML so that - // HTML contained within the codeblock gets escaped propertly - text = _DoGithubCodeBlocks(text); - - // Turn block-level HTML blocks into hash entries - text = _HashHTMLBlocks(text); - - // Strip link definitions, store in hashes. - text = _StripLinkDefinitions(text); - - text = _RunBlockGamut(text); - - text = _UnescapeSpecialChars(text); - - // attacklab: Restore dollar signs - text = text.replace(/~D/g, "$$"); - - // attacklab: Restore tildes - text = text.replace(/~T/g, "~"); - - // Run output modifiers - Showdown.forEach(g_output_modifiers, function (x) { - text = _ExecuteExtension(x, text); - }); - - return text; - }; - - -// -// Options: -// - -// Parse extensions options into separate arrays - if (converter_options && converter_options.extensions) { - - var self = this; - - // Iterate over each plugin - Showdown.forEach(converter_options.extensions, function (plugin) { - - // Assume it's a bundled plugin if a string is given - if (typeof plugin === 'string') { - plugin = Showdown.extensions[stdExtName(plugin)]; - } - - if (typeof plugin === 'function') { - // Iterate over each extension within that plugin - Showdown.forEach(plugin(self), function (ext) { - // Sort extensions by type - if (ext.type) { - if (ext.type === 'language' || ext.type === 'lang') { - g_lang_extensions.push(ext); - } else if (ext.type === 'output' || ext.type === 'html') { - g_output_modifiers.push(ext); - } - } else { - // Assume language extension - g_output_modifiers.push(ext); - } - }); - } else { - throw "Extension '" + plugin + "' could not be loaded. It was either not found or is not a valid extension."; - } - }); - } - - - var _ExecuteExtension = function (ext, text) { - if (ext.regex) { - var re = new RegExp(ext.regex, 'g'); - return text.replace(re, ext.replace); - } else if (ext.filter) { - return ext.filter(text); - } - }; - - var _StripLinkDefinitions = function (text) { -// -// Strips link definitions from text, stores the URLs and titles in -// hash references. -// - - // Link defs are in the form: ^[id]: url "optional title" - - /* - var text = text.replace(/ - ^[ ]{0,3}\[(.+)\]: // id = $1 attacklab: g_tab_width - 1 - [ \t]* - \n? // maybe *one* newline - [ \t]* - ? // url = $2 - [ \t]* - \n? // maybe one newline - [ \t]* - (?: - (\n*) // any lines skipped = $3 attacklab: lookbehind removed - ["(] - (.+?) // title = $4 - [")] - [ \t]* - )? // title is optional - (?:\n+|$) - /gm, - function(){...}); - */ - - // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug - text += "~0"; - - text = text.replace(/^[ ]{0,3}\[(.+)\]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm, - function (wholeMatch, m1, m2, m3, m4) { - m1 = m1.toLowerCase(); - g_urls[m1] = _EncodeAmpsAndAngles(m2); // Link IDs are case-insensitive - if (m3) { - // Oops, found blank lines, so it's not a title. - // Put back the parenthetical statement we stole. - return m3 + m4; - } else if (m4) { - g_titles[m1] = m4.replace(/"/g, """); - } - - // Completely remove the definition from the text - return ""; - } - ); - - // attacklab: strip sentinel - text = text.replace(/~0/, ""); - - return text; - } - - var _HashHTMLBlocks = function (text) { - // attacklab: Double up blank lines to reduce lookaround - text = text.replace(/\n/g, "\n\n"); - - // Hashify HTML blocks: - // We only want to do this for block-level HTML tags, such as headers, - // lists, and tables. That's because we still want to wrap

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

    - //
    - // tags for inner block must be indented. - //
    - //
    - // - // The outermost tags must start at the left margin for this to match, and - // the inner nested divs must be indented. - // We need to do this before the next, more liberal match, because the next - // match will start at the first `
    ` and stop at the first `
    `. - - // attacklab: This regex can be expensive when it fails. - /* - var text = text.replace(/ - ( // save in $1 - ^ // start of line (with /m) - <($block_tags_a) // start tag = $2 - \b // word break - // attacklab: hack around khtml/pcre bug... - [^\r]*?\n // any number of lines, minimally matching - // the matching end tag - [ \t]* // trailing spaces/tabs - (?=\n+) // followed by a newline - ) // attacklab: there are sentinel newlines at end of document - /gm,function(){...}}; - */ - 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, hashElement); - - // - // Now match more liberally, simply from `\n` to `\n` - // - - /* - var text = text.replace(/ - ( // save in $1 - ^ // start of line (with /m) - <($block_tags_b) // start tag = $2 - \b // word break - // attacklab: hack around khtml/pcre bug... - [^\r]*? // any number of lines, minimally matching - // the matching end tag - [ \t]* // trailing spaces/tabs - (?=\n+) // followed by a newline - ) // attacklab: there are sentinel newlines at end of document - /gm,function(){...}}; - */ - 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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm, hashElement); - - // Special case just for
    . It was easier to make a special case than - // to make the other regex more complicated. - - /* - text = text.replace(/ - ( // save in $1 - \n\n // Starting after a blank line - [ ]{0,3} - (<(hr) // start tag = $2 - \b // word break - ([^<>])*? // - \/?>) // the matching end tag - [ \t]* - (?=\n{2,}) // followed by a blank line - ) - /g,hashElement); - */ - text = text.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g, hashElement); - - // Special case for standalone HTML comments: - - /* - text = text.replace(/ - ( // save in $1 - \n\n // Starting after a blank line - [ ]{0,3} // attacklab: g_tab_width - 1 - - [ \t]* - (?=\n{2,}) // followed by a blank line - ) - /g,hashElement); - */ - text = text.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g, hashElement); - - // PHP and ASP-style processor instructions ( and <%...%>) - - /* - text = text.replace(/ - (?: - \n\n // Starting after a blank line - ) - ( // save in $1 - [ ]{0,3} // attacklab: g_tab_width - 1 - (?: - <([?%]) // $2 - [^\r]*? - \2> - ) - [ \t]* - (?=\n{2,}) // followed by a blank line - ) - /g,hashElement); - */ - text = text.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g, hashElement); - - // attacklab: Undo double lines (see comment at top of this function) - text = text.replace(/\n\n/g, "\n"); - return text; - } - - var hashElement = function (wholeMatch, m1) { - var blockText = m1; - - // Undo double lines - blockText = blockText.replace(/\n\n/g, "\n"); - blockText = blockText.replace(/^\n/, ""); - - // strip trailing blank lines - blockText = blockText.replace(/\n+$/g, ""); - - // Replace the element text with a marker ("~KxK" where x is its key) - blockText = "\n\n~K" + (g_html_blocks.push(blockText) - 1) + "K\n\n"; - - return blockText; - }; - - var _RunBlockGamut = function (text) { -// -// These are all the transformations that form block-level -// tags like paragraphs, headers, and list items. -// - text = _DoHeaders(text); - - // Do Horizontal Rules: - var key = hashBlock("
    "); - text = text.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm, key); - text = text.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm, key); - text = text.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm, key); - - text = _DoLists(text); - text = _DoCodeBlocks(text); - text = _DoBlockQuotes(text); - - // We already ran _HashHTMLBlocks() before, in Markdown(), but that - // was to escape raw HTML in the original Markdown source. This time, - // we're escaping the markup we've just created, so that we don't wrap - //

    tags around block-level tags. - text = _HashHTMLBlocks(text); - text = _FormParagraphs(text); - - return text; - }; - - var _RunSpanGamut = function (text) { -// -// These are all the transformations that occur *within* block-level -// tags like paragraphs, headers, and list items. -// - - text = _DoCodeSpans(text); - text = _EscapeSpecialCharsWithinTagAttributes(text); - text = _EncodeBackslashEscapes(text); - - // Process anchor and image tags. Images must come first, - // because ![foo][f] looks like an anchor. - text = _DoImages(text); - text = _DoAnchors(text); - - // Make links out of things like `` - // Must come after _DoAnchors(), because you can use < and > - // delimiters in inline links like [this](). - text = _DoAutoLinks(text); - text = _EncodeAmpsAndAngles(text); - text = _DoItalicsAndBold(text); - - // Do hard breaks: - text = text.replace(/ +\n/g, "
    \n"); - - return text; - } - - var _EscapeSpecialCharsWithinTagAttributes = function (text) { -// -// Within tags -- meaning between < and > -- encode [\ ` * _] so they -// don't conflict with their use in Markdown for code, italics and strong. -// - - // Build a regex to find HTML tags and comments. See Friedl's - // "Mastering Regular Expressions", 2nd Ed., pp. 200-201. - var regex = /(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi; - - text = text.replace(regex, function (wholeMatch) { - var tag = wholeMatch.replace(/(.)<\/?code>(?=.)/g, "$1`"); - tag = escapeCharacters(tag, "\\`*_"); - return tag; - }); - - return text; - } - - var _DoAnchors = function (text) { -// -// Turn Markdown link shortcuts into XHTML
    tags. -// - // - // First, handle reference-style links: [link text] [id] - // - - /* - text = text.replace(/ - ( // wrap whole match in $1 - \[ - ( - (?: - \[[^\]]*\] // allow brackets nested one level - | - [^\[] // or anything else - )* - ) - \] - - [ ]? // one optional space - (?:\n[ ]*)? // one optional newline followed by spaces - - \[ - (.*?) // id = $3 - \] - )()()()() // pad remaining backreferences - /g,_DoAnchors_callback); - */ - text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g, writeAnchorTag); - - // - // Next, inline-style links: [link text](url "optional title") - // - - /* - text = text.replace(/ - ( // wrap whole match in $1 - \[ - ( - (?: - \[[^\]]*\] // allow brackets nested one level - | - [^\[\]] // or anything else - ) - ) - \] - \( // literal paren - [ \t]* - () // no id, so leave $3 empty - ? // href = $4 - [ \t]* - ( // $5 - (['"]) // quote char = $6 - (.*?) // Title = $7 - \6 // matching quote - [ \t]* // ignore any spaces/tabs between closing quote and ) - )? // title is optional - \) - ) - /g,writeAnchorTag); - */ - text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, writeAnchorTag); - - // - // Last, handle reference-style shortcuts: [link text] - // These must come last in case you've also got [link test][1] - // or [link test](/foo) - // - - /* - text = text.replace(/ - ( // wrap whole match in $1 - \[ - ([^\[\]]+) // link text = $2; can't contain '[' or ']' - \] - )()()()()() // pad rest of backreferences - /g, writeAnchorTag); - */ - text = text.replace(/(\[([^\[\]]+)\])()()()()()/g, writeAnchorTag); - - return text; - } - - var writeAnchorTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) { - if (m7 == undefined) m7 = ""; - var whole_match = m1; - var link_text = m2; - var link_id = m3.toLowerCase(); - var url = m4; - var title = m7; - - if (url == "") { - if (link_id == "") { - // lower-case and turn embedded newlines into spaces - link_id = link_text.toLowerCase().replace(/ ?\n/g, " "); - } - url = "#" + link_id; - - if (g_urls[link_id] != undefined) { - url = g_urls[link_id]; - if (g_titles[link_id] != undefined) { - title = g_titles[link_id]; - } - } - else { - if (whole_match.search(/\(\s*\)$/m) > -1) { - // Special case for explicit empty url - url = ""; - } else { - return whole_match; - } - } - } - - url = escapeCharacters(url, "*_"); - var result = ""; - - return result; - } - - var _DoImages = function (text) { -// -// Turn Markdown image shortcuts into tags. -// - - // - // First, handle reference-style labeled images: ![alt text][id] - // - - /* - text = text.replace(/ - ( // wrap whole match in $1 - !\[ - (.*?) // alt text = $2 - \] - - [ ]? // one optional space - (?:\n[ ]*)? // one optional newline followed by spaces - - \[ - (.*?) // id = $3 - \] - )()()()() // pad rest of backreferences - /g,writeImageTag); - */ - text = text.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g, writeImageTag); - - // - // Next, handle inline images: ![alt text](url "optional title") - // Don't forget: encode * and _ - - /* - text = text.replace(/ - ( // wrap whole match in $1 - !\[ - (.*?) // alt text = $2 - \] - \s? // One optional whitespace character - \( // literal paren - [ \t]* - () // no id, so leave $3 empty - ? // src url = $4 - [ \t]* - ( // $5 - (['"]) // quote char = $6 - (.*?) // title = $7 - \6 // matching quote - [ \t]* - )? // title is optional - \) - ) - /g,writeImageTag); - */ - text = text.replace(/(!\[(.*?)\]\s?\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, writeImageTag); - - return text; - } - - var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) { - var whole_match = m1; - var alt_text = m2; - var link_id = m3.toLowerCase(); - var url = m4; - var title = m7; - - if (!title) title = ""; - - if (url == "") { - if (link_id == "") { - // lower-case and turn embedded newlines into spaces - link_id = alt_text.toLowerCase().replace(/ ?\n/g, " "); - } - url = "#" + link_id; - - if (g_urls[link_id] != undefined) { - url = g_urls[link_id]; - if (g_titles[link_id] != undefined) { - title = g_titles[link_id]; - } - } - else { - return whole_match; - } - } - - alt_text = alt_text.replace(/"/g, """); - url = escapeCharacters(url, "*_"); - var result = "\""' + _RunSpanGamut(m1) + ""); - }); - - text = text.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm, - function (matchFound, m1) { - return hashBlock('

    ' + _RunSpanGamut(m1) + "

    "); - }); - - // atx-style headers: - // # Header 1 - // ## Header 2 - // ## Header 2 with closing hashes ## - // ... - // ###### Header 6 - // - - /* - text = text.replace(/ - ^(\#{1,6}) // $1 = string of #'s - [ \t]* - (.+?) // $2 = Header text - [ \t]* - \#* // optional closing #'s (not counted) - \n+ - /gm, function() {...}); - */ - - text = text.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm, - function (wholeMatch, m1, m2) { - var h_level = m1.length; - return hashBlock("' + _RunSpanGamut(m2) + ""); - }); - - function headerId(m) { - return m.replace(/[^\w]/g, '').toLowerCase(); - } - - return text; - } - -// This declaration keeps Dojo compressor from outputting garbage: - var _ProcessListItems; - - var _DoLists = function (text) { -// -// Form HTML ordered (numbered) and unordered (bulleted) lists. -// - - // attacklab: add sentinel to hack around khtml/safari bug: - // http://bugs.webkit.org/show_bug.cgi?id=11231 - text += "~0"; - - // Re-usable pattern to match any entirel ul or ol list: - - /* - var whole_list = / - ( // $1 = whole list - ( // $2 - [ ]{0,3} // attacklab: g_tab_width - 1 - ([*+-]|\d+[.]) // $3 = first list item marker - [ \t]+ - ) - [^\r]+? - ( // $4 - ~0 // sentinel for workaround; should be $ - | - \n{2,} - (?=\S) - (?! // Negative lookahead for another list item marker - [ \t]* - (?:[*+-]|\d+[.])[ \t]+ - ) - ) - )/g - */ - var whole_list = /^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm; - - if (g_list_level) { - text = text.replace(whole_list, function (wholeMatch, m1, m2) { - var list = m1; - var list_type = (m2.search(/[*+-]/g) > -1) ? "ul" : "ol"; - - // Turn double returns into triple returns, so that we can make a - // paragraph for the last item in a list, if necessary: - list = list.replace(/\n{2,}/g, "\n\n\n"); - ; - var result = _ProcessListItems(list); - - // Trim any trailing whitespace, to put the closing `` - // up on the preceding line, to get it past the current stupid - // HTML block parser. This is a hack to work around the terrible - // hack that is the HTML block parser. - result = result.replace(/\s+$/, ""); - result = "<" + list_type + ">" + result + "\n"; - return result; - }); - } else { - whole_list = /(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g; - text = text.replace(whole_list, function (wholeMatch, m1, m2, m3) { - var runup = m1; - var list = m2; - - var list_type = (m3.search(/[*+-]/g) > -1) ? "ul" : "ol"; - // Turn double returns into triple returns, so that we can make a - // paragraph for the last item in a list, if necessary: - var list = list.replace(/\n{2,}/g, "\n\n\n"); - ; - var result = _ProcessListItems(list); - result = runup + "<" + list_type + ">\n" + result + "\n"; - return result; - }); - } - - // attacklab: strip sentinel - text = text.replace(/~0/, ""); - - return text; - } - - _ProcessListItems = function (list_str) { -// -// Process the contents of a single ordered or unordered list, splitting it -// into individual list items. -// - // The $g_list_level global keeps track of when we're inside a list. - // Each time we enter a list, we increment it; when we leave a list, - // we decrement. If it's zero, we're not in a list anymore. - // - // We do this because when we're not inside a list, we want to treat - // something like this: - // - // I recommend upgrading to version - // 8. Oops, now this line is treated - // as a sub-list. - // - // As a single paragraph, despite the fact that the second line starts - // with a digit-period-space sequence. - // - // Whereas when we're inside a list (or sub-list), that line will be - // treated as the start of a sub-list. What a kludge, huh? This is - // an aspect of Markdown's syntax that's hard to parse perfectly - // without resorting to mind-reading. Perhaps the solution is to - // change the syntax rules such that sub-lists must start with a - // starting cardinal number; e.g. "1." or "a.". - - g_list_level++; - - // trim trailing blank lines: - list_str = list_str.replace(/\n{2,}$/, "\n"); - - // attacklab: add sentinel to emulate \z - list_str += "~0"; - - /* - list_str = list_str.replace(/ - (\n)? // leading line = $1 - (^[ \t]*) // leading whitespace = $2 - ([*+-]|\d+[.]) [ \t]+ // list marker = $3 - ([^\r]+? // list item text = $4 - (\n{1,2})) - (?= \n* (~0 | \2 ([*+-]|\d+[.]) [ \t]+)) - /gm, function(){...}); - */ - list_str = list_str.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm, - function (wholeMatch, m1, m2, m3, m4) { - var item = m4; - var leading_line = m1; - var leading_space = m2; - - if (leading_line || (item.search(/\n{2,}/) > -1)) { - item = _RunBlockGamut(_Outdent(item)); - } - else { - // Recursion for sub-lists: - item = _DoLists(_Outdent(item)); - item = item.replace(/\n$/, ""); // chomp(item) - item = _RunSpanGamut(item); - } - - return "
  • " + item + "
  • \n"; - } - ); - - // attacklab: strip sentinel - list_str = list_str.replace(/~0/g, ""); - - g_list_level--; - return list_str; - } - - var _DoCodeBlocks = function (text) { -// -// Process Markdown `
    ` blocks.
    -//
    -
    -        /*
    -         text = text.replace(text,
    -         /(?:\n\n|^)
    -         (								// $1 = the code block -- one or more lines, starting with a space/tab
    -         (?:
    -         (?:[ ]{4}|\t)			// Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width
    -         .*\n+
    -         )+
    -         )
    -         (\n*[ ]{0,3}[^ \t\n]|(?=~0))	// attacklab: g_tab_width
    -         /g,function(){...});
    -         */
    -
    -        // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
    -        text += "~0";
    -
    -        text = text.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,
    -            function (wholeMatch, m1, m2) {
    -                var codeblock = m1;
    -                var nextChar = m2;
    -
    -                codeblock = _EncodeCode(_Outdent(codeblock));
    -                codeblock = _Detab(codeblock);
    -                codeblock = codeblock.replace(/^\n+/g, ""); // trim leading newlines
    -                codeblock = codeblock.replace(/\n+$/g, ""); // trim trailing whitespace
    -
    -                codeblock = "
    " + codeblock + "\n
    "; - - return hashBlock(codeblock) + nextChar; - } - ); - - // attacklab: strip sentinel - text = text.replace(/~0/, ""); - - return text; - }; - - var _DoGithubCodeBlocks = function (text) { -// -// Process Github-style code blocks -// Example: -// ```ruby -// def hello_world(x) -// puts "Hello, #{x}" -// end -// ``` -// - - - // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug - text += "~0"; - - text = text.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g, - function (wholeMatch, m1, m2) { - var language = m1; - var codeblock = m2; - - codeblock = _EncodeCode(codeblock); - codeblock = _Detab(codeblock); - codeblock = codeblock.replace(/^\n+/g, ""); // trim leading newlines - codeblock = codeblock.replace(/\n+$/g, ""); // trim trailing whitespace - - codeblock = "
    " + codeblock + "\n
    "; - - return hashBlock(codeblock); - } - ); - - // attacklab: strip sentinel - text = text.replace(/~0/, ""); - - return text; - } - - var hashBlock = function (text) { - text = text.replace(/(^\n+|\n+$)/g, ""); - return "\n\n~K" + (g_html_blocks.push(text) - 1) + "K\n\n"; - } - - var _DoCodeSpans = function (text) { -// -// * Backtick quotes are used for spans. -// -// * You can use multiple backticks as the delimiters if you want to -// include literal backticks in the code span. So, this input: -// -// Just type ``foo `bar` baz`` at the prompt. -// -// Will translate to: -// -//

    Just type foo `bar` baz at the prompt.

    -// -// There's no arbitrary limit to the number of backticks you -// can use as delimters. If you need three consecutive backticks -// in your code, use four for delimiters, etc. -// -// * You can use spaces to get literal backticks at the edges: -// -// ... type `` `bar` `` ... -// -// Turns to: -// -// ... type `bar` ... -// - - /* - text = text.replace(/ - (^|[^\\]) // Character before opening ` can't be a backslash - (`+) // $2 = Opening run of ` - ( // $3 = The code block - [^\r]*? - [^`] // attacklab: work around lack of lookbehind - ) - \2 // Matching closer - (?!`) - /gm, function(){...}); - */ - - text = text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm, - function (wholeMatch, m1, m2, m3, m4) { - var c = m3; - c = c.replace(/^([ \t]*)/g, ""); // leading whitespace - c = c.replace(/[ \t]*$/g, ""); // trailing whitespace - c = _EncodeCode(c); - return m1 + "" + c + ""; - }); - - return text; - } - - var _EncodeCode = function (text) { -// -// Encode/escape certain characters inside Markdown code runs. -// The point is that in code, these characters are literals, -// and lose their special Markdown meanings. -// - // Encode all ampersands; HTML entities are not - // entities within a Markdown code span. - text = text.replace(/&/g, "&"); - - // Do the angle bracket song and dance: - text = text.replace(//g, ">"); - - // Now, escape characters that are magic in Markdown: - text = escapeCharacters(text, "\*_{}[]\\", false); - -// jj the line above breaks this: -//--- - -//* Item - -// 1. Subitem - -// special char: * -//--- - - return text; - } - - var _DoItalicsAndBold = function (text) { - - // must go first: - text = text.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g, - "$2"); - - text = text.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g, - "$2"); - - return text; - } - - var _DoBlockQuotes = function (text) { - - /* - text = text.replace(/ - ( // Wrap whole match in $1 - ( - ^[ \t]*>[ \t]? // '>' at the start of a line - .+\n // rest of the first line - (.+\n)* // subsequent consecutive lines - \n* // blanks - )+ - ) - /gm, function(){...}); - */ - - text = text.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm, - function (wholeMatch, m1) { - var bq = m1; - - // attacklab: hack around Konqueror 3.5.4 bug: - // "----------bug".replace(/^-/g,"") == "bug" - - bq = bq.replace(/^[ \t]*>[ \t]?/gm, "~0"); // trim one level of quoting - - // attacklab: clean up hack - bq = bq.replace(/~0/g, ""); - - bq = bq.replace(/^[ \t]+$/gm, ""); // trim whitespace-only lines - bq = _RunBlockGamut(bq); // recurse - - bq = bq.replace(/(^|\n)/g, "$1 "); - // These leading spaces screw with
     content, so we need to fix that:
    -                bq = bq.replace(
    -                    /(\s*
    [^\r]+?<\/pre>)/gm,
    -                    function (wholeMatch, m1) {
    -                        var pre = m1;
    -                        // attacklab: hack around Konqueror 3.5.4 bug:
    -                        pre = pre.replace(/^  /mg, "~0");
    -                        pre = pre.replace(/~0/g, "");
    -                        return pre;
    -                    });
    -
    -                return hashBlock("
    \n" + bq + "\n
    "); - }); - return text; - } - - var _FormParagraphs = function (text) { -// -// Params: -// $text - string to process with html

    tags -// - - // Strip leading and trailing lines: - text = text.replace(/^\n+/g, ""); - text = text.replace(/\n+$/g, ""); - - var grafs = text.split(/\n{2,}/g); - var grafsOut = []; - - // - // Wrap

    tags. - // - var end = grafs.length; - for (var i = 0; i < end; i++) { - var str = grafs[i]; - - // if this is an HTML marker, copy it - if (str.search(/~K(\d+)K/g) >= 0) { - grafsOut.push(str); - } - else if (str.search(/\S/) >= 0) { - str = _RunSpanGamut(str); - str = str.replace(/^([ \t]*)/g, "

    "); - str += "

    " - grafsOut.push(str); - } - - } - - // - // Unhashify HTML blocks - // - end = grafsOut.length; - for (var i = 0; i < end; i++) { - // if this is a marker for an html block... - while (grafsOut[i].search(/~K(\d+)K/) >= 0) { - var blockText = g_html_blocks[RegExp.$1]; - blockText = blockText.replace(/\$/g, "$$$$"); // Escape any dollar signs - grafsOut[i] = grafsOut[i].replace(/~K\d+K/, blockText); - } - } - - return grafsOut.join("\n\n"); - } - - var _EncodeAmpsAndAngles = function (text) { -// Smart processing for ampersands and angle brackets that need to be encoded. - - // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin: - // http://bumppo.net/projects/amputator/ - text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, "&"); - - // Encode naked <'s - text = text.replace(/<(?![a-z\/?\$!])/gi, "<"); - - return text; - } - - var _EncodeBackslashEscapes = function (text) { -// -// Parameter: String. -// Returns: The string, with after processing the following backslash -// escape sequences. -// - - // attacklab: The polite way to do this is with the new - // escapeCharacters() function: - // - // text = escapeCharacters(text,"\\",true); - // text = escapeCharacters(text,"`*_{}[]()>#+-.!",true); - // - // ...but we're sidestepping its use of the (slow) RegExp constructor - // as an optimization for Firefox. This function gets called a LOT. - - text = text.replace(/\\(\\)/g, escapeCharacters_callback); - text = text.replace(/\\([`*_{}\[\]()>#+-.!])/g, escapeCharacters_callback); - return text; - } - - var _DoAutoLinks = function (text) { - - text = text.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi, "
    $1"); - - // Email addresses: - - /* - text = text.replace(/ - < - (?:mailto:)? - ( - [-.\w]+ - \@ - [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+ - ) - > - /gi, _DoAutoLinks_callback()); - */ - text = text.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi, - function (wholeMatch, m1) { - return _EncodeEmailAddress(_UnescapeSpecialChars(m1)); - } - ); - - return text; - } - - var _EncodeEmailAddress = function (addr) { -// -// Input: an email address, e.g. "foo@example.com" -// -// Output: the email address as a mailto link, with each character -// of the address encoded as either a decimal or hex entity, in -// the hopes of foiling most address harvesting spam bots. E.g.: -// -// foo -// @example.com -// -// Based on a filter by Matthew Wickline, posted to the BBEdit-Talk -// mailing list: -// - - var encode = [ - function (ch) { - return "&#" + ch.charCodeAt(0) + ";"; - }, - function (ch) { - return "&#x" + ch.charCodeAt(0).toString(16) + ";"; - }, - function (ch) { - return ch; - } - ]; - - addr = "mailto:" + addr; - - addr = addr.replace(/./g, function (ch) { - if (ch == "@") { - // this *must* be encoded. I insist. - ch = encode[Math.floor(Math.random() * 2)](ch); - } else if (ch != ":") { - // leave ':' alone (to spot mailto: later) - var r = Math.random(); - // roughly 10% raw, 45% hex, 45% dec - ch = ( - r > .9 ? encode[2](ch) : - r > .45 ? encode[1](ch) : - encode[0](ch) - ); - } - return ch; - }); - - addr = "" + addr + ""; - addr = addr.replace(/">.+:/g, "\">"); // strip the mailto: from the visible part - - return addr; - } - - var _UnescapeSpecialChars = function (text) { -// -// Swap back in all the special characters we've hidden. -// - text = text.replace(/~E(\d+)E/g, - function (wholeMatch, m1) { - var charCodeToReplace = parseInt(m1); - return String.fromCharCode(charCodeToReplace); - } - ); - return text; - } - - var _Outdent = function (text) { -// -// Remove one level of line-leading tabs or spaces -// - - // attacklab: hack around Konqueror 3.5.4 bug: - // "----------bug".replace(/^-/g,"") == "bug" - - text = text.replace(/^(\t|[ ]{1,4})/gm, "~0"); // attacklab: g_tab_width - - // attacklab: clean up hack - text = text.replace(/~0/g, "") - - return text; - } - - var _Detab = function (text) { -// attacklab: Detab's completely rewritten for speed. -// In perl we could fix it by anchoring the regexp with \G. -// In javascript we're less fortunate. - - // expand first n-1 tabs - text = text.replace(/\t(?=\t)/g, " "); // attacklab: g_tab_width - - // replace the nth with two sentinels - text = text.replace(/\t/g, "~A~B"); - - // use the sentinel to anchor our regex so it doesn't explode - text = text.replace(/~B(.+?)~A/g, - function (wholeMatch, m1, m2) { - var leadingText = m1; - var numSpaces = 4 - leadingText.length % 4; // attacklab: g_tab_width - - // there *must* be a better way to do this: - for (var i = 0; i < numSpaces; i++) leadingText += " "; - - return leadingText; - } - ); - - // clean up sentinels - text = text.replace(/~A/g, " "); // attacklab: g_tab_width - text = text.replace(/~B/g, ""); - - return text; - } - - -// -// attacklab: Utility functions -// - - - var escapeCharacters = function (text, charsToEscape, afterBackslash) { - // First we have to escape the escape characters so that - // we can build a character class out of them - var regexString = "([" + charsToEscape.replace(/([\[\]\\])/g, "\\$1") + "])"; - - if (afterBackslash) { - regexString = "\\\\" + regexString; - } - - var regex = new RegExp(regexString, "g"); - text = text.replace(regex, escapeCharacters_callback); - - return text; - } - - - var escapeCharacters_callback = function (wholeMatch, m1) { - var charCodeToEscape = m1.charCodeAt(0); - return "~E" + charCodeToEscape + "E"; - } - -} // end of Showdown.converter - - -// export -if (typeof module !== 'undefined') module.exports = Showdown; - -// stolen from AMD branch of underscore -// AMD define happens at the end for compatibility with AMD loaders -// that don't enforce next-turn semantics on modules. -if (typeof define === 'function' && define.amd) { - define('showdown', function () { - return Showdown; - }); -} diff --git a/src/showdown.js b/src/showdown.js new file mode 100644 index 00000000..ef17ba9b --- /dev/null +++ b/src/showdown.js @@ -0,0 +1,145 @@ +/** + * Created by Tivie on 06-01-2015. + */ + +// Private properties +var showdown = {}, + parsers = {}, + globalOptions = { + omitExtraWLInCodeBlocks: false + }; + +/////////////////////////////////////////////////////////////////////////// +// Public API +// +/** + * helper namespace + * @type {{}} + */ +showdown.helper = {}; + + +/////////////////////////////////////////////////////////////////////////// +// API +// + +// Public properties +showdown.extensions = {}; + +//Public methods +showdown.setOption = function (key, value) { + globalOptions[key] = value; + + return this; +}; + +/** + * Static Method + * + * subParser(name) - Get a registered subParser + * subParser(name, func) - Register a subParser + * @param {string} name + * @param {function} [func] + * @returns {*} + */ +showdown.subParser = function (name, func) { + if (showdown.helper.isString(name)) { + if (typeof func !== 'undefined') { + parsers[name] = func; + } else { + if (parsers.hasOwnProperty(name)) { + return parsers[name]; + } else { + throw Error('SubParser named ' + name + ' not registered!'); + } + } + } +}; + +/** + * + * @param {object} [converterOptions] + * @returns {{makeHtml: Function}} + */ +showdown.Converter = function (converterOptions) { + + converterOptions = converterOptions || {}; + + var options = globalOptions, + parserOrder = [ + 'detab', + 'stripBlankLines', + //runLanguageExtensions, + 'githubCodeBlocks', + 'hashHTMLBlocks', + 'stripLinkDefinitions', + 'blockGamut', + 'unescapeSpecialChars' + ]; + + // Merge options + if (typeof converterOptions === 'object') { + for (var opt in converterOptions) { + if (converterOptions.hasOwnProperty(opt)) { + options[opt] = converterOptions[opt]; + } + } + } + + var makeHtml = function (text) { + + //check if text is not falsy + if (!text) { + return text; + } + + var globals = { + gHtmlBlocks: [], + gUrls: {}, + gTitles: {}, + gListLevel: 0 + }; + + // attacklab: Replace ~ with ~T + // This lets us use tilde as an escape char to avoid md5 hashes + // The choice of character is arbitrary; anything that isn't + // magic in Markdown will work. + text = text.replace(/~/g, '~T'); + + // attacklab: Replace $ with ~D + // RegExp interprets $ as a special character + // when it's in a replacement string + text = text.replace(/\$/g, '~D'); + + // Standardize line endings + text = text.replace(/\r\n/g, '\n'); // DOS to Unix + text = text.replace(/\r/g, '\n'); // Mac to Unix + + // Make sure text begins and ends with a couple of newlines: + text = '\n\n' + text + '\n\n'; + + // Run all registered parsers + for (var i = 0; i < parserOrder.length; ++i) { + var name = parserOrder[i]; + text = parsers[name](text, options, globals); + } + + // attacklab: Restore dollar signs + text = text.replace(/~D/g, '$$'); + + // attacklab: Restore tildes + text = text.replace(/~T/g, '~'); + + // Run output modifiers + //showdown.forEach(g_output_modifiers, function (x) { + // text = _ExecuteExtension(x, text); + //}); + + return text; + }; + + + return { + makeHtml: makeHtml + }; +}; diff --git a/src/subParsers/anchors.js b/src/subParsers/anchors.js new file mode 100644 index 00000000..27610bec --- /dev/null +++ b/src/subParsers/anchors.js @@ -0,0 +1,136 @@ +/** + * Created by Estevao on 11-01-2015. + */ + +/** + * Turn Markdown link shortcuts into XHTML tags. + */ +showdown.subParser('anchors', function (text, config, globals) { + 'use strict'; + + var writeAnchorTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) { + if (showdown.helper.isUndefined(m7)) { + m7 = ''; + } + wholeMatch = m1; + var linkText = m2, + linkId = m3.toLowerCase(), + url = m4, + title = m7; + + if (!url) { + if (!linkId) { + // lower-case and turn embedded newlines into spaces + linkId = linkText.toLowerCase().replace(/ ?\n/g, ' '); + } + url = '#' + linkId; + + if (!showdown.helper.isUndefined(globals.gUrls[linkId])) { + url = globals.gUrls[linkId]; + if (!showdown.helper.isUndefined(globals.gTitles[linkId])) { + title = globals.gTitles[linkId]; + } + } + else { + if (wholeMatch.search(/\(\s*\)$/m) > -1) { + // Special case for explicit empty url + url = ''; + } else { + return wholeMatch; + } + } + } + + url = showdown.helper.escapeCharacters(url, '*_'); + var result = ''; + + return result; + }; + + // First, handle reference-style links: [link text] [id] + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ( + (?: + \[[^\]]*\] // allow brackets nested one level + | + [^\[] // or anything else + )* + ) + \] + + [ ]? // one optional space + (?:\n[ ]*)? // one optional newline followed by spaces + + \[ + (.*?) // id = $3 + \] + )()()()() // pad remaining backreferences + /g,_DoAnchors_callback); + */ + text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g, writeAnchorTag); + + // + // Next, inline-style links: [link text](url "optional title") + // + + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ( + (?: + \[[^\]]*\] // allow brackets nested one level + | + [^\[\]] // or anything else + ) + ) + \] + \( // literal paren + [ \t]* + () // no id, so leave $3 empty + ? // href = $4 + [ \t]* + ( // $5 + (['"]) // quote char = $6 + (.*?) // Title = $7 + \6 // matching quote + [ \t]* // ignore any spaces/tabs between closing quote and ) + )? // title is optional + \) + ) + /g,writeAnchorTag); + */ + text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, writeAnchorTag); + + // + // Last, handle reference-style shortcuts: [link text] + // These must come last in case you've also got [link test][1] + // or [link test](/foo) + // + + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ([^\[\]]+) // link text = $2; can't contain '[' or ']' + \] + )()()()()() // pad rest of backreferences + /g, writeAnchorTag); + */ + text = text.replace(/(\[([^\[\]]+)\])()()()()()/g, writeAnchorTag); + + return text; + + +}); diff --git a/src/subParsers/autoLinks.js b/src/subParsers/autoLinks.js new file mode 100644 index 00000000..86a9e347 --- /dev/null +++ b/src/subParsers/autoLinks.js @@ -0,0 +1,33 @@ +/** + * Created by Estevao on 12-01-2015. + */ + +showdown.subParser('autoLinks', function (text) { + 'use strict'; + + text = text.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi, "$1"); + + // Email addresses: + + /* + text = text.replace(/ + < + (?:mailto:)? + ( + [-.\w]+ + \@ + [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+ + ) + > + /gi, _DoAutoLinks_callback()); + */ + text = text.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi, + function (wholeMatch, m1) { + var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1); + return showdown.subParser('encodeEmailAddress')(unescapedStr); + } + ); + + return text; + +}); diff --git a/src/subParsers/blockGamut.js b/src/subParsers/blockGamut.js new file mode 100644 index 00000000..11f62088 --- /dev/null +++ b/src/subParsers/blockGamut.js @@ -0,0 +1,33 @@ +/** + * Created by Estevao on 11-01-2015. + */ + +/** + * These are all the transformations that form block-level + * tags like paragraphs, headers, and list items. + */ +showdown.subParser('blockGamut', function (text, options, globals) { + 'use strict'; + + text = showdown.subParser('headers')(text, options, globals); + + // Do Horizontal Rules: + var key = showdown.subParser('hashBlock')('
    ', options, globals); + text = text.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm, key); + text = text.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm, key); + text = text.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm, key); + + text = showdown.subParser('lists')(text, options, globals); + text = showdown.subParser('codeBlocks')(text, options, globals); + text = showdown.subParser('blockQuotes')(text, options, globals); + + // We already ran _HashHTMLBlocks() before, in Markdown(), but that + // was to escape raw HTML in the original Markdown source. This time, + // we're escaping the markup we've just created, so that we don't wrap + //

    tags around block-level tags. + text = showdown.subParser('hashHTMLBlocks')(text, options, globals); + text = showdown.subParser('paragraphs')(text, options, globals); + + return text; +}); + diff --git a/src/subParsers/blockQuotes.js b/src/subParsers/blockQuotes.js new file mode 100644 index 00000000..56418c24 --- /dev/null +++ b/src/subParsers/blockQuotes.js @@ -0,0 +1,50 @@ +/** + * Created by Estevao on 12-01-2015. + */ + +showdown.subParser('blockQuotes', function (text, options, globals) { + 'use strict'; + + /* + text = text.replace(/ + ( // Wrap whole match in $1 + ( + ^[ \t]*>[ \t]? // '>' at the start of a line + .+\n // rest of the first line + (.+\n)* // subsequent consecutive lines + \n* // blanks + )+ + ) + /gm, function(){...}); + */ + + text = text.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm, + function (wholeMatch, m1) { + var bq = m1; + + // attacklab: hack around Konqueror 3.5.4 bug: + // "----------bug".replace(/^-/g,"") == "bug" + bq = bq.replace(/^[ \t]*>[ \t]?/gm, '~0'); // trim one level of quoting + + // attacklab: clean up hack + bq = bq.replace(/~0/g, ''); + + bq = bq.replace(/^[ \t]+$/gm, ''); // trim whitespace-only lines + bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse + + bq = bq.replace(/(^|\n)/g, '$1 '); + // These leading spaces screw with

     content, so we need to fix that:
    +            bq = bq.replace(
    +                /(\s*
    [^\r]+?<\/pre>)/gm,
    +                function (wholeMatch, m1) {
    +                    var pre = m1;
    +                    // attacklab: hack around Konqueror 3.5.4 bug:
    +                    pre = pre.replace(/^  /mg, '~0');
    +                    pre = pre.replace(/~0/g, '');
    +                    return pre;
    +                });
    +
    +            return showdown.subParser('hashBlock')('
    \n' + bq + '\n
    ', options, globals); + }); + return text; +}); diff --git a/src/subParsers/codeBlocks.js b/src/subParsers/codeBlocks.js new file mode 100644 index 00000000..b11de329 --- /dev/null +++ b/src/subParsers/codeBlocks.js @@ -0,0 +1,48 @@ +/** + * Created by Estevao on 12-01-2015. + */ + +/** + * Process Markdown `
    ` blocks.
    + */
    +showdown.subParser('codeBlocks', function (text, options, globals) {
    +    'use strict';
    +
    +    /*
    +     text = text.replace(text,
    +     /(?:\n\n|^)
    +     (								// $1 = the code block -- one or more lines, starting with a space/tab
    +     (?:
    +     (?:[ ]{4}|\t)			// Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width
    +     .*\n+
    +     )+
    +     )
    +     (\n*[ ]{0,3}[^ \t\n]|(?=~0))	// attacklab: g_tab_width
    +     /g,function(){...});
    +     */
    +
    +    // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
    +    text += '~0';
    +
    +    text = text.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,
    +        function (wholeMatch, m1, m2) {
    +            var codeblock = m1,
    +                nextChar = m2;
    +
    +            codeblock = showdown.subParser('outdent')(codeblock);
    +            codeblock = showdown.subParser('encodeCode')(codeblock);
    +            codeblock = showdown.subParser('detab')(codeblock);
    +            codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines
    +            codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing whitespace
    +
    +            codeblock = '
    ' + codeblock + '\n
    '; + + return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar; + } + ); + + // attacklab: strip sentinel + text = text.replace(/~0/, ''); + + return text; +}); diff --git a/src/subParsers/codeSpans.js b/src/subParsers/codeSpans.js new file mode 100644 index 00000000..002eb639 --- /dev/null +++ b/src/subParsers/codeSpans.js @@ -0,0 +1,57 @@ +/** + * Created by Estevao on 11-01-2015. + */ + +/** + * + * * Backtick quotes are used for spans. + * + * * You can use multiple backticks as the delimiters if you want to + * include literal backticks in the code span. So, this input: + * + * Just type ``foo `bar` baz`` at the prompt. + * + * Will translate to: + * + *

    Just type foo `bar` baz at the prompt.

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

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

    + //
    + // tags for inner block must be indented. + //
    + //
    + // + // The outermost tags must start at the left margin for this to match, and + // the inner nested divs must be indented. + // We need to do this before the next, more liberal match, because the next + // match will start at the first `
    ` and stop at the first `
    `. + + // attacklab: This regex can be expensive when it fails. + /* + var text = text.replace(/ + ( // save in $1 + ^ // start of line (with /m) + <($block_tags_a) // start tag = $2 + \b // word break + // attacklab: hack around khtml/pcre bug... + [^\r]*?\n // any number of lines, minimally matching + // the matching end tag + [ \t]* // trailing spaces/tabs + (?=\n+) // followed by a newline + ) // attacklab: there are sentinel newlines at end of document + /gm,function(){...}}; + */ + 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, showdown.subParser('hashElement')(text, options, globals)); + + // + // Now match more liberally, simply from `\n` to `\n` + // + + /* + var text = text.replace(/ + ( // save in $1 + ^ // start of line (with /m) + <($block_tags_b) // start tag = $2 + \b // word break + // attacklab: hack around khtml/pcre bug... + [^\r]*? // any number of lines, minimally matching + // the matching end tag + [ \t]* // trailing spaces/tabs + (?=\n+) // followed by a newline + ) // attacklab: there are sentinel newlines at end of document + /gm,function(){...}}; + */ + 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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm, showdown.subParser('hashElement')(text, options, globals)); + + // Special case just for
    . It was easier to make a special case than + // to make the other regex more complicated. + + /* + text = text.replace(/ + ( // save in $1 + \n\n // Starting after a blank line + [ ]{0,3} + (<(hr) // start tag = $2 + \b // word break + ([^<>])*? // + \/?>) // the matching end tag + [ \t]* + (?=\n{2,}) // followed by a blank line + ) + /g,showdown.subParser('hashElement')(text, options, globals)); + */ + text = text.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g, showdown.subParser('hashElement')(text, options, globals)); + + // Special case for standalone HTML comments: + + /* + text = text.replace(/ + ( // save in $1 + \n\n // Starting after a blank line + [ ]{0,3} // attacklab: g_tab_width - 1 + + [ \t]* + (?=\n{2,}) // followed by a blank line + ) + /g,showdown.subParser('hashElement')(text, options, globals)); + */ + text = text.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g, showdown.subParser('hashElement')(text, options, globals)); + + // PHP and ASP-style processor instructions ( and <%...%>) + + /* + text = text.replace(/ + (?: + \n\n // Starting after a blank line + ) + ( // save in $1 + [ ]{0,3} // attacklab: g_tab_width - 1 + (?: + <([?%]) // $2 + [^\r]*? + \2> + ) + [ \t]* + (?=\n{2,}) // followed by a blank line + ) + /g,showdown.subParser('hashElement')(text, options, globals)); + */ + text = text.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g, showdown.subParser('hashElement')(text, options, globals)); + + // attacklab: Undo double lines (see comment at top of this function) + text = text.replace(/\n\n/g, '\n'); + return text; + + +}); diff --git a/src/subParsers/headers.js b/src/subParsers/headers.js new file mode 100644 index 00000000..8af27392 --- /dev/null +++ b/src/subParsers/headers.js @@ -0,0 +1,59 @@ +/** + * Created by Estevao on 11-01-2015. + */ + +showdown.subParser('headers', function (text, options, globals) { + 'use strict'; + + // Set text-style headers: + // Header 1 + // ======== + // + // Header 2 + // -------- + // + text = text.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm, + function (wholeMatch, m1) { + return showdown.subParser('hashBlock')('

    ' + + showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals); + }); + + text = text.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm, + function (matchFound, m1) { + return showdown.subParser('hashBlock')('

    ' + + showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals); + }); + + // atx-style headers: + // # Header 1 + // ## Header 2 + // ## Header 2 with closing hashes ## + // ... + // ###### Header 6 + // + + /* + text = text.replace(/ + ^(\#{1,6}) // $1 = string of #'s + [ \t]* + (.+?) // $2 = Header text + [ \t]* + \#* // optional closing #'s (not counted) + \n+ + /gm, function() {...}); + */ + + text = text.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm, + function (wholeMatch, m1, m2) { + var span = showdown.subParser('spanGamut')(m2, options, globals), + header = '' + span + ''; + + return showdown.subParser('hashBlock')(header, options, globals); + }); + + function headerId(m) { + return m.replace(/[^\w]/g, '').toLowerCase(); + } + + return text; +}); diff --git a/src/subParsers/images.js b/src/subParsers/images.js new file mode 100644 index 00000000..99a78902 --- /dev/null +++ b/src/subParsers/images.js @@ -0,0 +1,109 @@ +/** + * Created by Estevao on 11-01-2015. + */ + + +/** + * Turn Markdown image shortcuts into tags. + */ +showdown.subParser('images', function (text, options, globals) { + 'use strict'; + + var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) { + + wholeMatch = m1; + var altText = m2, + linkId = m3.toLowerCase(), + url = m4, + title = m7, + gUrls = globals.gUrls, + gTitles = globals.gTitles; + + if (!title) { + title = ''; + } + + if (url === '' || url === null) { + if (linkId === '' || linkId === null) { + // lower-case and turn embedded newlines into spaces + linkId = altText.toLowerCase().replace(/ ?\n/g, ' '); + } + url = '#' + linkId; + + if (typeof gUrls[linkId] !== 'undefined') { + url = gUrls[linkId]; + if (typeof gTitles[linkId] !== 'undefined') { + title = gTitles[linkId]; + } + } + else { + return wholeMatch; + } + } + + altText = altText.replace(/"/g, '"'); + url = showdown.helper.escapeCharacters(url, '*_'); + var result = '' + altText + '? // src url = $4 + [ \t]* + ( // $5 + (['"]) // quote char = $6 + (.*?) // title = $7 + \6 // matching quote + [ \t]* + )? // title is optional + \) + ) + /g,writeImageTag); + */ + text = text.replace(/(!\[(.*?)\]\s?\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, writeImageTag); + + return text; +}); diff --git a/src/subParsers/italicsAndBold.js b/src/subParsers/italicsAndBold.js new file mode 100644 index 00000000..77906729 --- /dev/null +++ b/src/subParsers/italicsAndBold.js @@ -0,0 +1,15 @@ +/** + * Created by Estevao on 12-01-2015. + */ + +showdown.subParser('italicsAndBold', function (text) { + 'use strict'; + // must go first: + text = text.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g, + '$2'); + + text = text.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g, + '$2'); + + return text; +}); diff --git a/src/subParsers/lists.js b/src/subParsers/lists.js new file mode 100644 index 00000000..e216d897 --- /dev/null +++ b/src/subParsers/lists.js @@ -0,0 +1,150 @@ +/** + * Created by Estevao on 12-01-2015. + */ + +/** + * Form HTML ordered (numbered) and unordered (bulleted) lists. + */ +showdown.subParser('lists', function (text, options, globals) { + 'use strict'; + + /** + * Process the contents of a single ordered or unordered list, splitting it + * into individual list items. + * @param listStr + * @returns {string|*} + */ + var processListItems = function (listStr) { + // The $g_list_level global keeps track of when we're inside a list. + // Each time we enter a list, we increment it; when we leave a list, + // we decrement. If it's zero, we're not in a list anymore. + // + // We do this because when we're not inside a list, we want to treat + // something like this: + // + // I recommend upgrading to version + // 8. Oops, now this line is treated + // as a sub-list. + // + // As a single paragraph, despite the fact that the second line starts + // with a digit-period-space sequence. + // + // Whereas when we're inside a list (or sub-list), that line will be + // treated as the start of a sub-list. What a kludge, huh? This is + // an aspect of Markdown's syntax that's hard to parse perfectly + // without resorting to mind-reading. Perhaps the solution is to + // change the syntax rules such that sub-lists must start with a + // starting cardinal number; e.g. "1." or "a.". + + globals.gListLevel++; + + // trim trailing blank lines: + listStr = listStr.replace(/\n{2,}$/, '\n'); + + // attacklab: add sentinel to emulate \z + listStr += '~0'; + + /* + list_str = list_str.replace(/ + (\n)? // leading line = $1 + (^[ \t]*) // leading whitespace = $2 + ([*+-]|\d+[.]) [ \t]+ // list marker = $3 + ([^\r]+? // list item text = $4 + (\n{1,2})) + (?= \n* (~0 | \2 ([*+-]|\d+[.]) [ \t]+)) + /gm, function(){...}); + */ + listStr = listStr.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm, + function (wholeMatch, m1, m2, m3, m4) { + var item = showdown.subParser('outdent')(m4, options, globals); + //m1 - LeadingLine + + if (m1 || (item.search(/\n{2,}/) > -1)) { + item = showdown.subParser('blockGamut')(item, options, globals); + } else { + // Recursion for sub-lists: + item = showdown.subParser('lists')(item, options, globals); + item = item.replace(/\n$/, ''); // chomp(item) + item = showdown.subParser('spanGamut')(item, options, globals); + } + + return '
  • ' + item + '
  • \n'; + } + ); + + // attacklab: strip sentinel + listStr = listStr.replace(/~0/g, ''); + + globals.gListLevel--; + return listStr; + }; + + + // attacklab: add sentinel to hack around khtml/safari bug: + // http://bugs.webkit.org/show_bug.cgi?id=11231 + text += '~0'; + + // Re-usable pattern to match any entirel ul or ol list: + + /* + var whole_list = / + ( // $1 = whole list + ( // $2 + [ ]{0,3} // attacklab: g_tab_width - 1 + ([*+-]|\d+[.]) // $3 = first list item marker + [ \t]+ + ) + [^\r]+? + ( // $4 + ~0 // sentinel for workaround; should be $ + | + \n{2,} + (?=\S) + (?! // Negative lookahead for another list item marker + [ \t]* + (?:[*+-]|\d+[.])[ \t]+ + ) + ) + )/g + */ + var wholeList = /^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm; + + if (globals.gListLevel) { + text = text.replace(wholeList, function (wholeMatch, m1, m2) { + var list = m1, + listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol'; + + // Turn double returns into triple returns, so that we can make a + // paragraph for the last item in a list, if necessary: + list = list.replace(/\n{2,}/g, '\n\n\n'); + + var result = processListItems(list); + + // Trim any trailing whitespace, to put the closing `` + // up on the preceding line, to get it past the current stupid + // HTML block parser. This is a hack to work around the terrible + // hack that is the HTML block parser. + result = result.replace(/\s+$/, ''); + result = '<' + listType + '>' + result + '\n'; + return result; + }); + } else { + wholeList = /(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g; + + text = text.replace(wholeList, function(wholeMatch,m1,m2,m3) { + + // Turn double returns into triple returns, so that we can make a + // paragraph for the last item in a list, if necessary: + var list = m2.replace(/\n{2,}/g, '\n\n\n'), + listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol', + result = processListItems(list); + + return m1 + '<' + listType + '>\n' + result + '\n'; + }); + } + + // attacklab: strip sentinel + text = text.replace(/~0/, ''); + + return text; +}); diff --git a/src/subParsers/outdent.js b/src/subParsers/outdent.js new file mode 100644 index 00000000..a6e37ac6 --- /dev/null +++ b/src/subParsers/outdent.js @@ -0,0 +1,19 @@ +/** + * Created by Estevao on 12-01-2015. + */ + +/** + * Remove one level of line-leading tabs or spaces + */ +showdown.subParser('outdent', function (text) { + 'use strict'; + + // attacklab: hack around Konqueror 3.5.4 bug: + // "----------bug".replace(/^-/g,"") == "bug" + text = text.replace(/^(\t|[ ]{1,4})/gm, '~0'); // attacklab: g_tab_width + + // attacklab: clean up hack + text = text.replace(/~0/g, ''); + + return text; +}); diff --git a/src/subParsers/paragraphs.js b/src/subParsers/paragraphs.js new file mode 100644 index 00000000..5af839cf --- /dev/null +++ b/src/subParsers/paragraphs.js @@ -0,0 +1,47 @@ +/** + * Created by Estevao on 12-01-2015. + */ + +/** + * + */ +showdown.subParser('paragraphs', function (text, options, globals) { + 'use strict'; + + // Strip leading and trailing lines: + text = text.replace(/^\n+/g, ''); + text = text.replace(/\n+$/g, ''); + + var grafs = text.split(/\n{2,}/g), + grafsOut = []; + + /** Wrap

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

    '); + str += '

    '; + grafsOut.push(str); + } + } + + /** Unhashify HTML blocks */ + end = grafsOut.length; + for (i = 0; i < end; i++) { + // if this is a marker for an html block... + while (grafsOut[i].search(/~K(\d+)K/) >= 0) { + var blockText = globals.gHtmlBlocks[RegExp.$1]; + blockText = blockText.replace(/\$/g, '$$$$'); // Escape any dollar signs + grafsOut[i] = grafsOut[i].replace(/~K\d+K/, blockText); + } + } + + return grafsOut.join('\n\n'); +}); diff --git a/src/subParsers/spanGamut.js b/src/subParsers/spanGamut.js new file mode 100644 index 00000000..6aae7234 --- /dev/null +++ b/src/subParsers/spanGamut.js @@ -0,0 +1,34 @@ +/** + * Created by Estevao on 11-01-2015. + */ + +/** + * These are all the transformations that occur *within* block-level + * tags like paragraphs, headers, and list items. + */ +showdown.subParser('spanGamut', function (text, options, globals) { + 'use strict'; + + + text = showdown.subParser('codeSpans')(text, options, globals); + text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals); + text = showdown.subParser('encodeBackslashEscapes')(text, options, globals); + + // Process anchor and image tags. Images must come first, + // because ![foo][f] looks like an anchor. + text = showdown.subParser('images')(text, options, globals); + text = showdown.subParser('anchors')(text, options, globals); + + // Make links out of things like `` + // Must come after _DoAnchors(), because you can use < and > + // delimiters in inline links like [this](). + text = showdown.subParser('autoLinks')(text, options, globals); + text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals); + text = showdown.subParser('italicsAndBold')(text, options, globals); + + // Do hard breaks: + text = text.replace(/ +\n/g, '
    \n'); + + return text; + +}); diff --git a/src/subParsers/stripBlankLines.js b/src/subParsers/stripBlankLines.js new file mode 100644 index 00000000..ef4969b9 --- /dev/null +++ b/src/subParsers/stripBlankLines.js @@ -0,0 +1,14 @@ +/** + * Created by Estevao on 11-01-2015. + */ + +/** + * Strip any lines consisting only of spaces and tabs. + * This makes subsequent regexs easier to write, because we can + * match consecutive blank lines with /\n+/ instead of something + * contorted like /[ \t]*\n+/ + */ +showdown.subParser('stripBlankLines', function (text) { + 'use strict'; + return text.replace(/^[ \t]+$/mg, ''); +}); diff --git a/src/subParsers/stripLinkDefinitions.js b/src/subParsers/stripLinkDefinitions.js new file mode 100644 index 00000000..4bb474fb --- /dev/null +++ b/src/subParsers/stripLinkDefinitions.js @@ -0,0 +1,57 @@ +/** + * Created by Estevao on 11-01-2015. + */ + +/** + * Strips link definitions from text, stores the URLs and titles in + * hash references. + * Link defs are in the form: ^[id]: url "optional title" + * + * ^[ ]{0,3}\[(.+)\]: // id = $1 attacklab: g_tab_width - 1 + * [ \t]* + * \n? // maybe *one* newline + * [ \t]* + * ? // url = $2 + * [ \t]* + * \n? // maybe one newline + * [ \t]* + * (?: + * (\n*) // any lines skipped = $3 attacklab: lookbehind removed + * ["(] + * (.+?) // title = $4 + * [")] + * [ \t]* + * )? // title is optional + * (?:\n+|$) + * /gm, + * function(){...}); + * + */ +showdown.subParser('stripLinkDefinitions', function (text, options, globals) { + 'use strict'; + + // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug + text += '~0'; + + text = text.replace(/^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm, + function (wholeMatch, m1, m2, m3, m4) { + m1 = m1.toLowerCase(); + globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive + if (m3) { + // Oops, found blank lines, so it's not a title. + // Put back the parenthetical statement we stole. + return m3 + m4; + } else if (m4) { + globals.gTitles[m1] = m4.replace(/"/g, '"'); + } + + // Completely remove the definition from the text + return ''; + } + ); + + // attacklab: strip sentinel + text = text.replace(/~0/, ''); + + return text; +}); diff --git a/src/subParsers/unescapeSpecialChars.js b/src/subParsers/unescapeSpecialChars.js new file mode 100644 index 00000000..28e17c37 --- /dev/null +++ b/src/subParsers/unescapeSpecialChars.js @@ -0,0 +1,18 @@ +/** + * Created by Estevao on 12-01-2015. + */ + +/** + * Swap back in all the special characters we've hidden. + */ +showdown.subParser('unescapeSpecialChars', function (text) { + 'use strict'; + + text = text.replace(/~E(\d+)E/g, + function (wholeMatch, m1) { + var charCodeToReplace = parseInt(m1); + return String.fromCharCode(charCodeToReplace); + } + ); + return text; +}); diff --git a/test/cases/anchors-by-reference.html b/test/cases/anchors-by-reference.html index 92652746..6115d50e 100644 --- a/test/cases/anchors-by-reference.html +++ b/test/cases/anchors-by-reference.html @@ -1,5 +1,4 @@ -

    This is an example reference-style link. This is another reference-style link. This is a third reference-style link. -This is a fourth reference-style link.

    \ No newline at end of file +This is a fourth reference-style link.

    diff --git a/test/cases/automatic-anchors.html b/test/cases/automatic-anchors.html index 8d322155..6de71a9d 100644 --- a/test/cases/automatic-anchors.html +++ b/test/cases/automatic-anchors.html @@ -1,2 +1 @@ - -

    http://example.com/

    \ No newline at end of file +

    http://example.com/

    diff --git a/test/cases/blockquote.html b/test/cases/blockquote.html index c31f2842..85cabf47 100644 --- a/test/cases/blockquote.html +++ b/test/cases/blockquote.html @@ -2,4 +2,4 @@

    This is a multi line blockquote test

    With more than one line.

    - \ No newline at end of file + diff --git a/test/cases/code-block-html-escape.html b/test/cases/code-block-html-escape.html index 123e4f3c..028f874d 100644 --- a/test/cases/code-block-html-escape.html +++ b/test/cases/code-block-html-escape.html @@ -1,5 +1,4 @@ -

    This is some HTML:

    <h1>Heading</h1>
    -
    \ No newline at end of file +
    diff --git a/test/cases/code-block.html b/test/cases/code-block.html index bdb50b4e..3e560997 100644 --- a/test/cases/code-block.html +++ b/test/cases/code-block.html @@ -1,5 +1,4 @@ -

    This is a normal paragraph:

    This is a code block.
    -
    \ No newline at end of file +
    diff --git a/test/cases/doubline-list.html b/test/cases/doubline-list.html index da412379..a2c72162 100644 --- a/test/cases/doubline-list.html +++ b/test/cases/doubline-list.html @@ -1,5 +1,4 @@ -
    • Bird

    • Magic

    • -
    \ No newline at end of file + diff --git a/test/cases/emphasis.html b/test/cases/emphasis.html index 056fdeab..36c11352 100644 --- a/test/cases/emphasis.html +++ b/test/cases/emphasis.html @@ -1,8 +1,7 @@ -

    important

    important

    this midimportantsentence

    -

    *not important*

    \ No newline at end of file +

    *not important*

    diff --git a/test/cases/escaped-number-period.html b/test/cases/escaped-number-period.html index f773d21d..0ea83bac 100644 --- a/test/cases/escaped-number-period.html +++ b/test/cases/escaped-number-period.html @@ -1 +1 @@ -

    It happened in 1986. What a great season.

    \ No newline at end of file +

    It happened in 1986. What a great season.

    diff --git a/test/cases/escaping.html b/test/cases/escaping.html index 671a2a64..1ac6a291 100644 --- a/test/cases/escaping.html +++ b/test/cases/escaping.html @@ -1,4 +1,3 @@ -

    These should all be escaped:

    \

    @@ -29,4 +28,4 @@

    .

    -

    !

    \ No newline at end of file +

    !

    diff --git a/test/cases/github-style-at-start.html b/test/cases/github-style-at-start.html index 8f5dd947..4f119a76 100644 --- a/test/cases/github-style-at-start.html +++ b/test/cases/github-style-at-start.html @@ -1,7 +1,6 @@ -
    function MyFunc(a) {
         // ...
     }
     
    -

    That is some code!

    \ No newline at end of file +

    That is some code!

    diff --git a/test/cases/github-style-codeblock.html b/test/cases/github-style-codeblock.html index fc4187e5..5daca2f9 100644 --- a/test/cases/github-style-codeblock.html +++ b/test/cases/github-style-codeblock.html @@ -1,5 +1,3 @@ - -

    Define a function in javascript:

    function MyFunc(a) {
    @@ -10,4 +8,4 @@
     

    And some HTML

    <div>HTML!</div>
    -
    \ No newline at end of file +
    diff --git a/test/cases/github-style-linebreaks.html b/test/cases/github-style-linebreaks.html index d8210a4f..276dbf03 100644 --- a/test/cases/github-style-linebreaks.html +++ b/test/cases/github-style-linebreaks.html @@ -1,4 +1,3 @@ -
    code can go here
     this is rendered on a second line
    -
    \ No newline at end of file +
    diff --git a/test/cases/h1-with-double-hash.html b/test/cases/h1-with-double-hash.html index 2cecc38f..ab5b5555 100644 --- a/test/cases/h1-with-double-hash.html +++ b/test/cases/h1-with-double-hash.html @@ -1 +1 @@ -

    This is an H1

    \ No newline at end of file +

    This is an H1

    diff --git a/test/cases/h1-with-equals.html b/test/cases/h1-with-equals.html index 2cecc38f..ab5b5555 100644 --- a/test/cases/h1-with-equals.html +++ b/test/cases/h1-with-equals.html @@ -1 +1 @@ -

    This is an H1

    \ No newline at end of file +

    This is an H1

    diff --git a/test/cases/h1-with-single-hash.html b/test/cases/h1-with-single-hash.html index 2cecc38f..ab5b5555 100644 --- a/test/cases/h1-with-single-hash.html +++ b/test/cases/h1-with-single-hash.html @@ -1 +1 @@ -

    This is an H1

    \ No newline at end of file +

    This is an H1

    diff --git a/test/cases/h2-with-dashes.html b/test/cases/h2-with-dashes.html index d040d753..375a0d06 100644 --- a/test/cases/h2-with-dashes.html +++ b/test/cases/h2-with-dashes.html @@ -1 +1 @@ -

    This is an H2

    \ No newline at end of file +

    This is an H2

    diff --git a/test/cases/h2-with-double-hash.html b/test/cases/h2-with-double-hash.html index d040d753..375a0d06 100644 --- a/test/cases/h2-with-double-hash.html +++ b/test/cases/h2-with-double-hash.html @@ -1 +1 @@ -

    This is an H2

    \ No newline at end of file +

    This is an H2

    diff --git a/test/cases/h2-with-single-hash.html b/test/cases/h2-with-single-hash.html index d040d753..375a0d06 100644 --- a/test/cases/h2-with-single-hash.html +++ b/test/cases/h2-with-single-hash.html @@ -1 +1 @@ -

    This is an H2

    \ No newline at end of file +

    This is an H2

    diff --git a/test/cases/h3-with-double-hash.html b/test/cases/h3-with-double-hash.html index 082318e5..13f8c9e7 100644 --- a/test/cases/h3-with-double-hash.html +++ b/test/cases/h3-with-double-hash.html @@ -1 +1 @@ -

    This is an H3

    \ No newline at end of file +

    This is an H3

    diff --git a/test/cases/h3-with-single-hash.html b/test/cases/h3-with-single-hash.html index 082318e5..13f8c9e7 100644 --- a/test/cases/h3-with-single-hash.html +++ b/test/cases/h3-with-single-hash.html @@ -1 +1 @@ -

    This is an H3

    \ No newline at end of file +

    This is an H3

    diff --git a/test/cases/h4-with-single-hash.html b/test/cases/h4-with-single-hash.html index cc32aa17..165b4ef2 100644 --- a/test/cases/h4-with-single-hash.html +++ b/test/cases/h4-with-single-hash.html @@ -1 +1 @@ -

    This is an H4

    \ No newline at end of file +

    This is an H4

    diff --git a/test/cases/h5-with-single-hash.html b/test/cases/h5-with-single-hash.html index 96dca787..28eac148 100644 --- a/test/cases/h5-with-single-hash.html +++ b/test/cases/h5-with-single-hash.html @@ -1 +1 @@ -
    This is an H5
    \ No newline at end of file +
    This is an H5
    diff --git a/test/cases/h6-with-single-hash.html b/test/cases/h6-with-single-hash.html index 10de6905..47574cc5 100644 --- a/test/cases/h6-with-single-hash.html +++ b/test/cases/h6-with-single-hash.html @@ -1 +1 @@ -
    This is an H6
    \ No newline at end of file +
    This is an H6
    diff --git a/test/cases/horizontal-rules.html b/test/cases/horizontal-rules.html index 88eb5def..aaef23eb 100644 --- a/test/cases/horizontal-rules.html +++ b/test/cases/horizontal-rules.html @@ -1,4 +1,3 @@ -

    @@ -7,4 +6,4 @@
    -
    \ No newline at end of file +
    diff --git a/test/cases/html5-strutural-tags.html b/test/cases/html5-strutural-tags.html index 98698e8d..528731f5 100644 --- a/test/cases/html5-strutural-tags.html +++ b/test/cases/html5-strutural-tags.html @@ -1,4 +1,3 @@ -

    These HTML5 tags should pass through just fine.

    hello
    @@ -20,4 +19,4 @@ ignore me -

    the end

    \ No newline at end of file +

    the end

    diff --git a/test/cases/images.html b/test/cases/images.html index f214ba11..7df58552 100644 --- a/test/cases/images.html +++ b/test/cases/images.html @@ -1,6 +1,5 @@ -

    Alt text

    Alt text

    -

    Alt text

    \ No newline at end of file +

    Alt text

    diff --git a/test/cases/implicit-anchors.html b/test/cases/implicit-anchors.html index 8bb39fff..01e62d9a 100644 --- a/test/cases/implicit-anchors.html +++ b/test/cases/implicit-anchors.html @@ -1,2 +1 @@ - -

    Search the web at Google or Daring Fireball.

    \ No newline at end of file +

    Search the web at Google or Daring Fireball.

    diff --git a/test/cases/inline-anchors.html b/test/cases/inline-anchors.html index 7be05efe..52f90ed3 100644 --- a/test/cases/inline-anchors.html +++ b/test/cases/inline-anchors.html @@ -1,4 +1,3 @@ -

    This is an example inline link.

    -

    This link has no title attribute.

    \ No newline at end of file +

    This link has no title attribute.

    diff --git a/test/cases/inline-code.html b/test/cases/inline-code.html index e1809e6e..ebb7fdc0 100644 --- a/test/cases/inline-code.html +++ b/test/cases/inline-code.html @@ -1,4 +1,3 @@ -

    Create a new function.

    Use the backtick in MySQL syntax SELECT `column` FROM whatever.

    @@ -9,4 +8,4 @@

    Please don't use any <blink> tags.

    -

    &#8212; is the decimal-encoded equivalent of &mdash;.

    \ No newline at end of file +

    &#8212; is the decimal-encoded equivalent of &mdash;.

    diff --git a/test/cases/inline-escaped-chars.html b/test/cases/inline-escaped-chars.html index ff9226c7..9192f3e4 100644 --- a/test/cases/inline-escaped-chars.html +++ b/test/cases/inline-escaped-chars.html @@ -1,3 +1,2 @@ -

    Hello.this_is_a_variable -and.this.is.another_one

    \ No newline at end of file +and.this.is.another_one

    diff --git a/test/cases/inline-style-tag.html b/test/cases/inline-style-tag.html index 9a6540b5..1006aa8f 100644 --- a/test/cases/inline-style-tag.html +++ b/test/cases/inline-style-tag.html @@ -1,6 +1,5 @@ - -

    An exciting sentence.

    \ No newline at end of file +

    An exciting sentence.

    diff --git a/test/cases/lazy-blockquote.html b/test/cases/lazy-blockquote.html index c31f2842..85cabf47 100644 --- a/test/cases/lazy-blockquote.html +++ b/test/cases/lazy-blockquote.html @@ -2,4 +2,4 @@

    This is a multi line blockquote test

    With more than one line.

    - \ No newline at end of file + diff --git a/test/cases/list-with-blockquote.html b/test/cases/list-with-blockquote.html index e33c04fe..6bfd077c 100644 --- a/test/cases/list-with-blockquote.html +++ b/test/cases/list-with-blockquote.html @@ -5,4 +5,4 @@

    This is a blockquote inside a list item.

    - \ No newline at end of file + diff --git a/test/cases/list-with-code.html b/test/cases/list-with-code.html index 753a2693..dbea279b 100644 --- a/test/cases/list-with-code.html +++ b/test/cases/list-with-code.html @@ -3,4 +3,4 @@
    alert('Hello world!');
         
    - \ No newline at end of file + diff --git a/test/cases/multi-paragraph-list.html b/test/cases/multi-paragraph-list.html index 1afca575..1f08bd0e 100644 --- a/test/cases/multi-paragraph-list.html +++ b/test/cases/multi-paragraph-list.html @@ -3,4 +3,4 @@

    That contains multiple paragraphs.

  • And another line

  • - \ No newline at end of file + diff --git a/test/cases/multiline-unordered-list.html b/test/cases/multiline-unordered-list.html index bb6c06a9..ab56450e 100644 --- a/test/cases/multiline-unordered-list.html +++ b/test/cases/multiline-unordered-list.html @@ -2,4 +2,4 @@
  • This line spans more than one line and is lazy
  • Similar to this line
  • - \ No newline at end of file + diff --git a/test/cases/nested-blockquote.html b/test/cases/nested-blockquote.html index 97ca7d7d..91ae5ea9 100644 --- a/test/cases/nested-blockquote.html +++ b/test/cases/nested-blockquote.html @@ -6,4 +6,4 @@

    With more than one line.

    - \ No newline at end of file + diff --git a/test/cases/ordered-list-same-number.html b/test/cases/ordered-list-same-number.html index 726f66c6..95b3803f 100644 --- a/test/cases/ordered-list-same-number.html +++ b/test/cases/ordered-list-same-number.html @@ -2,4 +2,4 @@
  • Red
  • Green
  • Blue
  • - \ No newline at end of file + diff --git a/test/cases/ordered-list-wrong-numbers.html b/test/cases/ordered-list-wrong-numbers.html index 726f66c6..95b3803f 100644 --- a/test/cases/ordered-list-wrong-numbers.html +++ b/test/cases/ordered-list-wrong-numbers.html @@ -2,4 +2,4 @@
  • Red
  • Green
  • Blue
  • - \ No newline at end of file + diff --git a/test/cases/ordered-list.html b/test/cases/ordered-list.html index 726f66c6..95b3803f 100644 --- a/test/cases/ordered-list.html +++ b/test/cases/ordered-list.html @@ -2,4 +2,4 @@
  • Red
  • Green
  • Blue
  • - \ No newline at end of file + diff --git a/test/cases/relative-anchors.html b/test/cases/relative-anchors.html index a4120831..6db73dc4 100644 --- a/test/cases/relative-anchors.html +++ b/test/cases/relative-anchors.html @@ -1,2 +1 @@ - -

    See my About page for details.

    \ No newline at end of file +

    See my About page for details.

    diff --git a/test/cases/simple-paragraph.html b/test/cases/simple-paragraph.html index 1f19a39b..7ce53543 100644 --- a/test/cases/simple-paragraph.html +++ b/test/cases/simple-paragraph.html @@ -1 +1 @@ -

    Hello, world!

    \ No newline at end of file +

    Hello, world!

    diff --git a/test/cases/strong.html b/test/cases/strong.html index 4938794c..5bcc6756 100644 --- a/test/cases/strong.html +++ b/test/cases/strong.html @@ -1,6 +1,5 @@ -

    important

    important

    -

    really freakingstrong

    \ No newline at end of file +

    really freakingstrong

    diff --git a/test/cases/unordered-list-asterisk.html b/test/cases/unordered-list-asterisk.html index ddc422c7..f02abb7c 100644 --- a/test/cases/unordered-list-asterisk.html +++ b/test/cases/unordered-list-asterisk.html @@ -2,4 +2,4 @@
  • Red
  • Green
  • Blue
  • - \ No newline at end of file + diff --git a/test/cases/unordered-list-minus.html b/test/cases/unordered-list-minus.html index ddc422c7..f02abb7c 100644 --- a/test/cases/unordered-list-minus.html +++ b/test/cases/unordered-list-minus.html @@ -2,4 +2,4 @@
  • Red
  • Green
  • Blue
  • - \ No newline at end of file + diff --git a/test/cases/unordered-list-plus.html b/test/cases/unordered-list-plus.html index ddc422c7..f02abb7c 100644 --- a/test/cases/unordered-list-plus.html +++ b/test/cases/unordered-list-plus.html @@ -2,4 +2,4 @@
  • Red
  • Green
  • Blue
  • - \ No newline at end of file + diff --git a/test/cases/url-with-parenthesis.html b/test/cases/url-with-parenthesis.html index d42cee8b..9e1e7cc9 100644 --- a/test/cases/url-with-parenthesis.html +++ b/test/cases/url-with-parenthesis.html @@ -1,2 +1 @@ - -

    There's an episode of Star Trek: The Next Generation

    \ No newline at end of file +

    There's an episode of Star Trek: The Next Generation

    diff --git a/test/converter/testMakeHtml.js b/test/converter/testMakeHtml.js new file mode 100644 index 00000000..9095cef9 --- /dev/null +++ b/test/converter/testMakeHtml.js @@ -0,0 +1,80 @@ +/** + * Created by Estevao on 15-01-2015. + */ + +(function () { + 'use strict'; + + require('source-map-support').install(); + require('chai').should(); + + var fs = require('fs'), + dir = 'test/cases/', + showdown = require('../../dist/showdown.js'), + converter = new showdown.Converter(); + + // Load test cases from disk + var cases = fs.readdirSync(dir).filter(function (file) { + var ext = file.slice(-3); + return (ext === '.md'); + }).map(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 + }; + }); + + //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; + + } + + function assertion(testCase) { + return function () { + testCase.actual = converter.makeHtml(testCase.input); + testCase = normalize(testCase); + + // Compare + testCase.actual.should.equal(testCase.expected); + }; + } + + //Tests + describe('Converter.makeHtml()', function () { + for (var i = 0; i < cases.length; ++i) { + it(cases[i].name, assertion(cases[i])); + } + }); + +})(); diff --git a/test/extensions/github/basic.html b/test/extensions/github/basic.html deleted file mode 100644 index af2b0696..00000000 --- a/test/extensions/github/basic.html +++ /dev/null @@ -1,5 +0,0 @@ -

    github-flavored markdown adds support for:

    - -
      -
    • strike-through text
    • -
    \ No newline at end of file diff --git a/test/extensions/github/basic.md b/test/extensions/github/basic.md deleted file mode 100644 index 0ef04a30..00000000 --- a/test/extensions/github/basic.md +++ /dev/null @@ -1,3 +0,0 @@ -[github-flavored markdown](http://github.github.com/github-flavored-markdown/) adds support for: - - * ~~strike-through text~~ diff --git a/test/extensions/prettify/basic.html b/test/extensions/prettify/basic.html deleted file mode 100644 index 13c7f404..00000000 --- a/test/extensions/prettify/basic.html +++ /dev/null @@ -1,7 +0,0 @@ - -

    Here's a simple hello world in javascript:

    - -
    alert('Hello World!');
    -
    - -

    The alert function is a build-in global from window.

    \ No newline at end of file diff --git a/test/extensions/prettify/basic.md b/test/extensions/prettify/basic.md deleted file mode 100644 index fba19fa6..00000000 --- a/test/extensions/prettify/basic.md +++ /dev/null @@ -1,6 +0,0 @@ - -Here's a simple hello world in javascript: - - alert('Hello World!'); - -The `alert` function is a build-in global from `window`. \ No newline at end of file diff --git a/test/extensions/table/basic.html b/test/extensions/table/basic.html deleted file mode 100644 index d909e65b..00000000 --- a/test/extensions/table/basic.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -
    First Header Second Header

    Row 1 Cell 1

    Row 1 Cell 2

    Row 2 Cell 1

    Row 2 Cell 2

    diff --git a/test/extensions/table/basic.md b/test/extensions/table/basic.md deleted file mode 100644 index d67f8fda..00000000 --- a/test/extensions/table/basic.md +++ /dev/null @@ -1,4 +0,0 @@ -| First Header | Second Header | -| ------------- | ------------- | -| Row 1 Cell 1 | Row 1 Cell 2 | -| Row 2 Cell 1 | Row 2 Cell 2 | diff --git a/test/extensions/table/large.html b/test/extensions/table/large.html deleted file mode 100644 index 332bdab6..00000000 --- a/test/extensions/table/large.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    First Header Second Header Third Header Fourth Header

    Row 1 Cell 1

    Row 1 Cell 2

    Row 1 Cell 3

    Row 1 Cell 4

    Row 2 Cell 1

    Row 2 Cell 2

    Row 2 Cell 3

    Row 2 Cell 4

    Row 3 Cell 1

    Row 3 Cell 2

    Row 3 Cell 3

    Row 3 Cell 4

    Row 4 Cell 1

    Row 4 Cell 2

    Row 4 Cell 3

    Row 4 Cell 4

    Row 5 Cell 1

    Row 5 Cell 2

    Row 5 Cell 3

    Row 5 Cell 4

    diff --git a/test/extensions/table/large.md b/test/extensions/table/large.md deleted file mode 100644 index e18e478d..00000000 --- a/test/extensions/table/large.md +++ /dev/null @@ -1,7 +0,0 @@ -| First Header | Second Header | Third Header | Fourth Header | -| ------------- | ------------- | ------------ | ------------- | -| Row 1 Cell 1 | Row 1 Cell 2 | Row 1 Cell 3 | Row 1 Cell 4 | -| Row 2 Cell 1 | Row 2 Cell 2 | Row 2 Cell 3 | Row 2 Cell 4 | -| Row 3 Cell 1 | Row 3 Cell 2 | Row 3 Cell 3 | Row 3 Cell 4 | -| Row 4 Cell 1 | Row 4 Cell 2 | Row 4 Cell 3 | Row 4 Cell 4 | -| Row 5 Cell 1 | Row 5 Cell 2 | Row 5 Cell 3 | Row 5 Cell 4 | diff --git a/test/extensions/table/multiple-tables.html b/test/extensions/table/multiple-tables.html deleted file mode 100644 index 5611db12..00000000 --- a/test/extensions/table/multiple-tables.html +++ /dev/null @@ -1,43 +0,0 @@ -

    Table Test

    - -

    section 1

    - - - - - - - - - - - - - - - - - - -
    header1 header2 header3

    Value1

    Value2

    Value3

    - -

    section 2

    - - - - - - - - - - - - - - - - - - -
    headerA headerB headerC

    ValueA

    ValueB

    ValueC

    \ No newline at end of file diff --git a/test/extensions/table/multiple-tables.md b/test/extensions/table/multiple-tables.md deleted file mode 100644 index 25bc09ec..00000000 --- a/test/extensions/table/multiple-tables.md +++ /dev/null @@ -1,17 +0,0 @@ -Table Test -============ - -section 1 ------------- - -|header1 |header2 |header3| -|-----------|-----------|---------| -|Value1 |Value2 |Value3 | - - -section 2 ------------ - -|headerA |headerB |headerC| -|-----------|-----------|---------| -|ValueA |ValueB |ValueC | diff --git a/test/extensions/table/with-equals.html b/test/extensions/table/with-equals.html deleted file mode 100644 index d909e65b..00000000 --- a/test/extensions/table/with-equals.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -
    First Header Second Header

    Row 1 Cell 1

    Row 1 Cell 2

    Row 2 Cell 1

    Row 2 Cell 2

    diff --git a/test/extensions/table/with-equals.md b/test/extensions/table/with-equals.md deleted file mode 100644 index 744a6db4..00000000 --- a/test/extensions/table/with-equals.md +++ /dev/null @@ -1,4 +0,0 @@ -| First Header | Second Header | -| ============= | ============= | -| Row 1 Cell 1 | Row 1 Cell 2 | -| Row 2 Cell 1 | Row 2 Cell 2 | diff --git a/test/extensions/table/with-surroundings.html b/test/extensions/table/with-surroundings.html deleted file mode 100644 index a8957c33..00000000 --- a/test/extensions/table/with-surroundings.html +++ /dev/null @@ -1,33 +0,0 @@ -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent nisi est, -ullamcorper euismod iaculis sed, tristique at neque. Nullam metus risus, -malesuada vitae imperdiet ac, tincidunt eget lacus. Proin ullamcorper -vulputate dictum. Vestibulum consequat ultricies nibh, sed tempus nisl mattis a.

    - - - - - - - - - - - - - - - - - - - - - -
    First Header Second Header

    Row 1 Cell 1

    Row 1 Cell 2

    Row 2 Cell 1

    Row 2 Cell 2

    - -

    Phasellus ac porttitor quam. Integer cursus accumsan mauris nec interdum. -Etiam iaculis urna vitae risus facilisis faucibus eu quis risus. Sed aliquet -rutrum dictum. Vivamus pulvinar malesuada ultricies. Pellentesque in commodo -nibh. Maecenas justo erat, sodales vel bibendum a, dignissim in orci. Duis -blandit ornare mi non facilisis. Aliquam rutrum fringilla lacus in semper. -Sed vel pretium lorem.

    diff --git a/test/extensions/table/with-surroundings.md b/test/extensions/table/with-surroundings.md deleted file mode 100644 index b55baa32..00000000 --- a/test/extensions/table/with-surroundings.md +++ /dev/null @@ -1,16 +0,0 @@ -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent nisi est, -ullamcorper euismod iaculis sed, tristique at neque. Nullam metus risus, -malesuada vitae imperdiet ac, tincidunt eget lacus. Proin ullamcorper -vulputate dictum. Vestibulum consequat ultricies nibh, sed tempus nisl mattis a. - -| First Header | Second Header | -| ------------- | ------------- | -| Row 1 Cell 1 | Row 1 Cell 2 | -| Row 2 Cell 1 | Row 2 Cell 2 | - -Phasellus ac porttitor quam. Integer cursus accumsan mauris nec interdum. -Etiam iaculis urna vitae risus facilisis faucibus eu quis risus. Sed aliquet -rutrum dictum. Vivamus pulvinar malesuada ultricies. Pellentesque in commodo -nibh. Maecenas justo erat, sodales vel bibendum a, dignissim in orci. Duis -blandit ornare mi non facilisis. Aliquam rutrum fringilla lacus in semper. -Sed vel pretium lorem. diff --git a/test/extensions/table/without-body.html b/test/extensions/table/without-body.html deleted file mode 100644 index 5b37e4a5..00000000 --- a/test/extensions/table/without-body.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - -
    First Header Second Header
    diff --git a/test/extensions/table/without-body.md b/test/extensions/table/without-body.md deleted file mode 100644 index 78c06f01..00000000 --- a/test/extensions/table/without-body.md +++ /dev/null @@ -1,2 +0,0 @@ -| First Header | Second Header | -| ------------- | ------------- | diff --git a/test/extensions/table/without-header-delimiter.html b/test/extensions/table/without-header-delimiter.html deleted file mode 100644 index 5d1af0fe..00000000 --- a/test/extensions/table/without-header-delimiter.html +++ /dev/null @@ -1 +0,0 @@ -

    | First Header | Second Header |

    diff --git a/test/extensions/table/without-header-delimiter.md b/test/extensions/table/without-header-delimiter.md deleted file mode 100644 index a86f2da8..00000000 --- a/test/extensions/table/without-header-delimiter.md +++ /dev/null @@ -1 +0,0 @@ -| First Header | Second Header | diff --git a/test/extensions/twitter/basic.html b/test/extensions/twitter/basic.html deleted file mode 100644 index 4e9b316a..00000000 --- a/test/extensions/twitter/basic.html +++ /dev/null @@ -1,5 +0,0 @@ -

    Testing of the twitter extension.

    - -

    Ping @andstuff to find out more about #extensions with showdown

    - -

    And @something shouldn't render as a twitter link

    \ No newline at end of file diff --git a/test/extensions/twitter/basic.md b/test/extensions/twitter/basic.md deleted file mode 100644 index 6269c9d1..00000000 --- a/test/extensions/twitter/basic.md +++ /dev/null @@ -1,5 +0,0 @@ -Testing of the twitter extension. - -Ping @andstuff to find out more about #extensions with showdown - -And \@something shouldn't render as a twitter link \ No newline at end of file diff --git a/test/run.js b/test/run.js deleted file mode 100644 index 5e7a677b..00000000 --- a/test/run.js +++ /dev/null @@ -1,86 +0,0 @@ -var showdown = new require('../src/showdown'), - fs = require('fs'), - path = require('path'), - should = require('should'); - - -var runTestsInDir = function(dir, converter) { - - // Load test cases from disk - var cases = fs.readdirSync(dir).filter(function(file){ - return ~file.indexOf('.md'); - }).map(function(file){ - return file.replace('.md', ''); - }); - - // Run each test case (markdown -> html) - showdown.forEach(cases, function(test){ - var name = test.replace(/[-.]/g, ' '); - it (name, function(){ - var mdpath = path.join(dir, test + '.md'), - htmlpath = path.join(dir, test + '.html'), - md = fs.readFileSync(mdpath, 'utf8'), - expected = fs.readFileSync(htmlpath, 'utf8').trim(), - actual = converter.makeHtml(md).trim(); - - // Normalize line returns - expected = expected.replace(/\r/g, ''); - - // Ignore all leading/trailing whitespace - expected = expected.split('\n').map(function(x){ - return x.trim(); - }).join('\n'); - actual = actual.split('\n').map(function(x){ - return x.trim(); - }).join('\n'); - - // Convert whitespace to a visible character so that it shows up on error reports - expected = expected.replace(/ /g, '·'); - expected = expected.replace(/\n/g, '•\n'); - actual = actual.replace(/ /g, '·'); - actual = actual.replace(/\n/g, '•\n'); - - // Compare - actual.should.equal(expected); - }); - }); -}; - - -// -// :: Markdown to HTML testing :: -// - -describe('Markdown', function() { - var converter = new showdown.converter(); - runTestsInDir('test/cases', converter); -}); - - -// -// :: Extensions Testing :: -// - -if (path.existsSync('test/extensions')) { - - describe('extensions', function() { - // Search all sub-folders looking for directory-specific tests - var extensions = fs.readdirSync('test/extensions').filter(function(file){ - return fs.lstatSync('test/extensions/' + file).isDirectory(); - }); - - // Run tests in each extension sub-folder - showdown.forEach(extensions, function(ext){ - // Make sure extension exists - var src = 'src/extensions/' + ext + '.js'; - if (!path.existsSync(src)) { - throw "Attempting tests for '" + ext + "' but source file (" + src + ") was not found."; - } - - var converter = new showdown.converter({ extensions: [ ext ] }); - var dir = 'test/extensions/' + ext; - runTestsInDir(dir, converter); - }); - }); - -} diff --git a/test/testTable.js b/test/testTable.js deleted file mode 100644 index 712f0973..00000000 --- a/test/testTable.js +++ /dev/null @@ -1,24 +0,0 @@ -var Showdown = require('../src/showdown'); -var fs = require('fs'); - -module.exports = { - setUp:function(callback) { - this.showdown = new Showdown.converter({extensions:['table']}); - callback(); - }, - testMakeHtml:function(test) { - var html = this.showdown.makeHtml("**blah**"); - console.log(html); - test.equals(html ,'

    blah

    '); - test.done(); - }, - testMakeTable:function(test) { - var md = fs.readFileSync('test/extensions/table/multiple-tables.md','UTF-8'); - var html = fs.readFileSync('test/extensions/table/multiple-tables.html','UTF-8'); - - var result = this.showdown.makeHtml(md); - console.log(result); - test.equals(result, html); - test.done(); - } -}; \ No newline at end of file From 394d37983e5b3440128b2ba815d265998152c43e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Thu, 15 Jan 2015 21:29:39 +0000 Subject: [PATCH 03/34] Fixed test command for travis --- Gruntfile.js | 2 -- package.json | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index dc955515..24842d0c 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -67,6 +67,4 @@ module.exports = function (grunt) { // Default task(s). grunt.registerTask('default', []); - - }; diff --git a/package.json b/package.json index 43060f64..fc730db9 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ ], "main": "./dist/showdown.js", "scripts": { - "test": "mocha ./test/run.js" + "test": "mocha ./test/**/*.js" }, "devDependencies": { "angular": "^1.3.2", From bf094ba446fc91519ee8ef34bff7b5c97776496a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Fri, 16 Jan 2015 21:48:28 +0000 Subject: [PATCH 04/34] test(): browser and node tests now live in different directories This enables one to run the appropriate tests according to evironment --- Gruntfile.js | 10 ++++++++-- dist/showdown.js | 2 +- test/{converter => node/Container}/testMakeHtml.js | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) rename test/{converter => node/Container}/testMakeHtml.js (97%) diff --git a/Gruntfile.js b/Gruntfile.js index 24842d0c..d6e9e700 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -32,14 +32,20 @@ module.exports = function (grunt) { files: ['Gruntfile.js', 'src/**/*.js'] }, simplemocha: { - all: { - src: 'test/**/*.js', + node: { + src: 'test/node/**/*.js', options: { globals: ['should'], timeout: 3000, ignoreLeaks: false, reporter: 'spec' } + }, + browser: { + src: 'test/browser/**/*.js', + options: { + reporter: 'spec' + } } } }); diff --git a/dist/showdown.js b/dist/showdown.js index bd29a705..f7f0afd5 100644 --- a/dist/showdown.js +++ b/dist/showdown.js @@ -1,4 +1,4 @@ -;/*! showdown 15-01-2015 */ +;/*! showdown 16-01-2015 */ (function(){ 'use strict'; /** diff --git a/test/converter/testMakeHtml.js b/test/node/Container/testMakeHtml.js similarity index 97% rename from test/converter/testMakeHtml.js rename to test/node/Container/testMakeHtml.js index 9095cef9..0918bff4 100644 --- a/test/converter/testMakeHtml.js +++ b/test/node/Container/testMakeHtml.js @@ -10,7 +10,7 @@ var fs = require('fs'), dir = 'test/cases/', - showdown = require('../../dist/showdown.js'), + showdown = require('../../../dist/showdown.js'), converter = new showdown.Converter(); // Load test cases from disk From 0a8d2836c72204fdf56b9286301884cb050251ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Fri, 16 Jan 2015 21:50:44 +0000 Subject: [PATCH 05/34] refactor(grunt): Adds support for minification and minified source map. --- Gruntfile.js | 15 ++------------- dist/showdown.min.js | 4 ++++ dist/showdown.min.js.map | 1 + 3 files changed, 7 insertions(+), 13 deletions(-) create mode 100644 dist/showdown.min.js create mode 100644 dist/showdown.min.js.map diff --git a/Gruntfile.js b/Gruntfile.js index d6e9e700..843e7b2e 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -20,6 +20,7 @@ module.exports = function (grunt) { }, uglify: { options: { + sourceMap: true, banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n' }, dist: { @@ -55,21 +56,9 @@ module.exports = function (grunt) { grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-simple-mocha'); - // test - /* - grunt.registerTask('sourceMapsSupport', function() { - 'use strict'; - - //# sourceMappingURL=path/to/source.map - sourceMapSupport.install(); - }); - */ - grunt.registerTask('lint', ['jshint']); grunt.registerTask('test', ['jshint', 'concat', 'simplemocha']); grunt.registerTask('test-without-building', ['simplemocha']); - - // build with uglify - grunt.registerTask('build', ['concat', 'uglify']); + grunt.registerTask('build', ['jshint', 'concat', 'test', 'uglify']); // Default task(s). grunt.registerTask('default', []); diff --git a/dist/showdown.min.js b/dist/showdown.min.js new file mode 100644 index 00000000..9bd6f2e1 --- /dev/null +++ b/dist/showdown.min.js @@ -0,0 +1,4 @@ +/*! showdown 16-01-2015 */ + +(function(){"use strict";function a(a){return"string"==typeof a||a instanceof String}function b(a,b){if("function"==typeof a.forEach)a.forEach(b);else{var c,d=a.length;for(c=0;d>c;c++)b(a[c],c,a)}}function c(a){return a.constructor===Array}function d(a){return"undefined"==typeof a}var e={},f={},g={omitExtraWLInCodeBlocks:!1};e.helper={},e.extensions={},e.setOption=function(a,b){return g[a]=b,this},e.subParser=function(a,b){if(e.helper.isString(a)){if("undefined"==typeof b){if(f.hasOwnProperty(a))return f[a];throw Error("SubParser named "+a+" not registered!")}f[a]=b}},e.Converter=function(a){a=a||{};var b=g,c=["detab","stripBlankLines","githubCodeBlocks","hashHTMLBlocks","stripLinkDefinitions","blockGamut","unescapeSpecialChars"];if("object"==typeof a)for(var d in a)a.hasOwnProperty(d)&&(b[d]=a[d]);var e=function(a){if(!a)return a;var d={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n";for(var e=0;e-1))return a;m=""}else m=c.gUrls[l],e.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=e.helper.escapeCharacters(m,"*_");var o='"};return a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,d),a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d),a=a.replace(/(\[([^\[\]]+)\])()()()()()/g,d)}),e.subParser("autoLinks",function(a){return a=a.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'$1'),a=a.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,function(a,b){var c=e.subParser("unescapeSpecialChars")(b);return e.subParser("encodeEmailAddress")(c)})}),e.subParser("blockGamut",function(a,b,c){a=e.subParser("headers")(a,b,c);var d=e.subParser("hashBlock")("
    ",b,c);return a=a.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,d),a=e.subParser("lists")(a,b,c),a=e.subParser("codeBlocks")(a,b,c),a=e.subParser("blockQuotes")(a,b,c),a=e.subParser("hashHTMLBlocks")(a,b,c),a=e.subParser("paragraphs")(a,b,c)}),e.subParser("blockQuotes",function(a,b,c){return a=a.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(a,d){var f=d;return f=f.replace(/^[ \t]*>[ \t]?/gm,"~0"),f=f.replace(/~0/g,""),f=f.replace(/^[ \t]+$/gm,""),f=e.subParser("blockGamut")(f,b,c),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,"")}),e.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)})}),e.subParser("codeBlocks",function(a,b,c){return a+="~0",a=a.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(a,d,f){var g=d,h=f;return g=e.subParser("outdent")(g),g=e.subParser("encodeCode")(g),g=e.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",e.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,"")}),e.subParser("codeSpans",function(a){return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,d){var f=d;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=e.subParser("encodeCode")(f),b+""+f+""})}),e.subParser("detab",function(a){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,"")}),e.subParser("encodeAmpsAndAngles",function(a){return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),e.subParser("encodeBackslashEscapes",function(a){return a=a.replace(/\\(\\)/g,e.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,e.helper.escapeCharactersCallback)}),e.subParser("encodeCode",function(a){return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=e.helper.escapeCharacters(a,"*_{}[]\\",!1)}),e.subParser("encodeEmailAddress",function(a){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,'">')}),e.subParser("escapeSpecialCharsWithinTagAttributes",function(a){var b=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;return a=a.replace(b,function(a){var b=a.replace(/(.)<\/?code>(?=.)/g,"$1`");return b=e.helper.escapeCharacters(b,"\\`*_")})}),e.subParser("githubCodeBlocks",function(a,b,c){return a+="~0",a=a.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,function(a,d,f){var g=d,h=f,i="\n";return b.omitExtraWLInCodeBlocks&&(i=""),h=e.subParser("encodeCode")(h),h=e.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",e.subParser("hashBlock")(h,b,c)}),a=a.replace(/~0/,"")}),e.subParser("hashBlock",function(a,b,c){return a=a.replace(/(^\n+|\n+$)/g,""),"\n\n~K"+(c.gHtmlBlocks.push(a)-1)+"K\n\n"}),e.subParser("hashElement",function(a,b,c){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"}}),e.subParser("hashHTMLBlocks",function(a,b,c){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,e.subParser("hashElement")(a,b,c)),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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/\n\n/g,"\n")}),e.subParser("headers",function(a,b,c){function d(a){return a.replace(/[^\w]/g,"").toLowerCase()}return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){return e.subParser("hashBlock")('

    '+e.subParser("spanGamut")(f,b,c)+"

    ",b,c)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){return e.subParser("hashBlock")('

    '+e.subParser("spanGamut")(f,b,c)+"

    ",b,c)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=e.subParser("spanGamut")(g,b,c),i="'+h+"";return e.subParser("hashBlock")(i,b,c)})}),e.subParser("images",function(a,b,c){var d=function(a,b,d,f,g,h,j,k){a=b;var l=d,m=f.toLowerCase(),n=g,o=k,p=c.gUrls,q=c.gTitles;if(o||(o=""),""===n||null===n){if((""===m||null===m)&&(m=l.toLowerCase().replace(/ ?\n/g," ")),n="#"+m,"undefined"==typeof p[m])return a;n=p[m],"undefined"!=typeof q[m]&&(o=q[m])}l=l.replace(/"/g,"""),n=e.helper.escapeCharacters(n,"*_");var r=''+l+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d)}),e.subParser("italicsAndBold",function(a){return a=a.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"$2"),a=a.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"$2")}),e.subParser("lists",function(a,b,c){var d=function(a){return c.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,d,f,g,h){var i=e.subParser("outdent")(h,b,c);return d||i.search(/\n{2,}/)>-1?i=e.subParser("blockGamut")(i,b,c):(i=e.subParser("lists")(i,b,c),i=i.replace(/\n$/,""),i=e.subParser("spanGamut")(i,b,c)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),c.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.gListLevel?a=a.replace(f,function(a,b,c){var e=b,f=c.search(/[*+-]/g)>-1?"ul":"ol";e=e.replace(/\n{2,}/g,"\n\n\n");var g=d(e);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,e){var f=c.replace(/\n{2,}/g,"\n\n\n"),g=e.search(/[*+-]/g)>-1?"ul":"ol",h=d(f);return b+"<"+g+">\n"+h+"\n"})),a=a.replace(/~0/,"")}),e.subParser("outdent",function(a){return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),e.subParser("paragraphs",function(a,b,c){a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,"");for(var d=a.split(/\n{2,}/g),f=[],g=d.length,h=0;g>h;h++){var i=d[h];i.search(/~K(\d+)K/g)>=0?f.push(i):i.search(/\S/)>=0&&(i=e.subParser("spanGamut")(i,b,c),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=c.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),e.subParser("spanGamut",function(a,b,c){return a=e.subParser("codeSpans")(a,b,c),a=e.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=e.subParser("encodeBackslashEscapes")(a,b,c),a=e.subParser("images")(a,b,c),a=e.subParser("anchors")(a,b,c),a=e.subParser("autoLinks")(a,b,c),a=e.subParser("encodeAmpsAndAngles")(a,b,c),a=e.subParser("italicsAndBold")(a,b,c),a=a.replace(/ +\n/g,"
    \n")}),e.subParser("stripBlankLines",function(a){return a.replace(/^[ \t]+$/gm,"")}),e.subParser("stripLinkDefinitions",function(a,b,c){return a+="~0",a=a.replace(/^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm,function(a,b,d,f,g){return b=b.toLowerCase(),c.gUrls[b]=e.subParser("encodeAmpsAndAngles")(d),f?f+g:(g&&(c.gTitles[b]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),e.subParser("unescapeSpecialChars",function(a){return a=a.replace(/~E(\d+)E/g,function(a,b){var c=parseInt(b);return String.fromCharCode(c)})});var j=this;"undefined"!=typeof module&&module.exports?module.exports=e:"function"==typeof define&&define.amd?define("showdown",function(){return e}):j.showdown=e}).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 new file mode 100644 index 00000000..ce0f7b9c --- /dev/null +++ b/dist/showdown.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"showdown.min.js","sources":["showdown.js"],"names":["isString","a","String","forEach","obj","callback","i","len","length","isArray","constructor","Array","isUndefined","value","showdown","parsers","globalOptions","omitExtraWLInCodeBlocks","helper","extensions","setOption","key","this","subParser","name","func","hasOwnProperty","Error","Converter","converterOptions","options","parserOrder","opt","makeHtml","text","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","replace","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","escapeCharacters","charsToEscape","afterBackslash","regexString","regex","RegExp","config","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","toLowerCase","url","title","search","result","unescapedStr","bq","pre","codeblock","nextChar","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","language","end","push","blockText","headerId","m","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","split","grafsOut","str","$1","join","charCodeToReplace","parseInt","fromCharCode","root","module","exports","define","amd","call"],"mappings":"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"} \ No newline at end of file From 3bbe4e2ef1777c845f14f0cf09d60de5bb7bda59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Fri, 16 Jan 2015 22:17:25 +0000 Subject: [PATCH 06/34] test(emphasis): change test to match original spec test --- test/cases/emphasis.html | 15 +++++++++++---- test/cases/emphasis.md | 14 ++++++++++---- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/test/cases/emphasis.html b/test/cases/emphasis.html index 36c11352..d2a523fe 100644 --- a/test/cases/emphasis.html +++ b/test/cases/emphasis.html @@ -1,7 +1,14 @@ -

    important

    +

    single asterisks

    -

    important

    +

    single underscores

    -

    this midimportantsentence

    +

    double asterisks

    -

    *not important*

    +

    double underscores

    + +

    text with italic sentence in middle

    + +

    text with bold sentence in middle

    + +

    text with bold text that +spans across multiple lines

    diff --git a/test/cases/emphasis.md b/test/cases/emphasis.md index 0e708029..5257a25d 100644 --- a/test/cases/emphasis.md +++ b/test/cases/emphasis.md @@ -1,8 +1,14 @@ +*single asterisks* -*important* +_single underscores_ -_important_ +**double asterisks** -this mid*important*sentence +__double underscores__ -\*not important\* \ No newline at end of file +text *with italic sentence* in middle + +text __with bold sentence__ in middle + +text with __bold text that +spans across multiple__ lines From f938d2b8aabe8fdc52a99e06949e44002bcb16ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Fri, 16 Jan 2015 23:03:38 +0000 Subject: [PATCH 07/34] test(emphasis): add more test scenarios to emphasis --- test/cases/emphasis.html | 52 ++++++++++++++++++++++++++++++++++++++++ test/cases/emphasis.md | 52 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) diff --git a/test/cases/emphasis.html b/test/cases/emphasis.html index d2a523fe..5e30c108 100644 --- a/test/cases/emphasis.html +++ b/test/cases/emphasis.html @@ -12,3 +12,55 @@

    text with bold text that spans across multiple lines

    + +

    underscored_word

    + +

    doubleunderscore__word

    + +

    asterix*word

    + +

    doubleasterix**word

    + +

    line with_underscored word

    + +

    line with__doubleunderscored word

    + +

    line with*asterixed word

    + +

    line with**doubleasterixed word

    + +

    some linewithinner underscores

    + +

    some linewithinner double underscores

    + +

    some linewithinner asterixs

    + +

    some linewithinner double asterixs

    + +

    another line with just _one underscore

    + +

    another line with just __one double underscore

    + +

    another line with just *one asterix

    + +

    another line with just **one double asterix

    + +

    a sentence withunderscore and anotherunderscore

    + +

    a sentence withdoubleunderscore and anotherdoubleunderscore

    + +

    a sentence withasterix and anotherasterix

    + +

    a sentence withdoubleasterix and anotherdoubleasterix

    + +

    escaped word_with_underscores

    + +

    escaped word__with__double underscores

    + +

    escaped word_with_single italic underscore

    + +

    escaped word*with*asterixs

    + +

    escaped word**with**asterixs

    + +

    escaped word*with*bold asterixs

    diff --git a/test/cases/emphasis.md b/test/cases/emphasis.md index 5257a25d..dc7901ff 100644 --- a/test/cases/emphasis.md +++ b/test/cases/emphasis.md @@ -12,3 +12,55 @@ text __with bold sentence__ in middle text with __bold text that spans across multiple__ lines + +underscored_word + +doubleunderscore__word + +asterix*word + +doubleasterix**word + +line with_underscored word + +line with__doubleunderscored word + +line with*asterixed word + +line with**doubleasterixed word + +some line_with_inner underscores + +some line__with__inner double underscores + +some line*with*inner asterixs + +some line**with**inner double asterixs + +another line with just _one underscore + +another line with just __one double underscore + +another line with just *one asterix + +another line with just **one double asterix + +a sentence with_underscore and another_underscore + +a sentence with__doubleunderscore and another__doubleunderscore + +a sentence with*asterix and another*asterix + +a sentence with**doubleasterix and another**doubleasterix + +escaped word\_with\_underscores + +escaped word\_\_with\_\_double underscores + +escaped word_\_with\__single italic underscore + +escaped word\*with*asterixs + +escaped word\*\*with\*\*asterixs + +escaped word**\*with\***bold asterixs From d4f619c66629b81a651d13c1a547a5a9e826d638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Fri, 16 Jan 2015 23:05:12 +0000 Subject: [PATCH 08/34] Test(emphasis): prove that emphasis mechanism is working correctly This test scenario is related to issue #107 --- .../#107.inner_underscore_parse_to_block.html | 11 +++ .../#107.inner_underscore_parse_to_block.md | 11 +++ test/node/Container/testMakeHtml.js | 77 +++++++++++-------- 3 files changed, 69 insertions(+), 30 deletions(-) create mode 100644 test/issues/#107.inner_underscore_parse_to_block.html create mode 100644 test/issues/#107.inner_underscore_parse_to_block.md diff --git a/test/issues/#107.inner_underscore_parse_to_block.html b/test/issues/#107.inner_underscore_parse_to_block.html new file mode 100644 index 00000000..b47ea954 --- /dev/null +++ b/test/issues/#107.inner_underscore_parse_to_block.html @@ -0,0 +1,11 @@ +

    escaped word_with_underscores

    + +

    escaped word__with__double underscores

    + +

    escaped word_with_single italic underscore

    + +

    escaped word*with*asterixs

    + +

    escaped word**with**asterixs

    + +

    escaped word*with*bold asterixs

    diff --git a/test/issues/#107.inner_underscore_parse_to_block.md b/test/issues/#107.inner_underscore_parse_to_block.md new file mode 100644 index 00000000..8d22521f --- /dev/null +++ b/test/issues/#107.inner_underscore_parse_to_block.md @@ -0,0 +1,11 @@ +escaped word\_with\_underscores + +escaped word\_\_with\_\_double underscores + +escaped word_\_with\__single italic underscore + +escaped word\*with*asterixs + +escaped word\*\*with\*\*asterixs + +escaped word**\*with\***bold asterixs diff --git a/test/node/Container/testMakeHtml.js b/test/node/Container/testMakeHtml.js index 0918bff4..589d2114 100644 --- a/test/node/Container/testMakeHtml.js +++ b/test/node/Container/testMakeHtml.js @@ -8,30 +8,55 @@ require('source-map-support').install(); require('chai').should(); - var fs = require('fs'), - dir = 'test/cases/', - showdown = require('../../../dist/showdown.js'), - converter = new showdown.Converter(); - - // Load test cases from disk - var cases = fs.readdirSync(dir).filter(function (file) { - var ext = file.slice(-3); - return (ext === '.md'); - }).map(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 - }; + var fs = require('fs'), + showdown = require('../../../dist/showdown.js'), + converter = new showdown.Converter(), + cases = fs + .readdirSync('test/cases/') + .filter(filter()) + .map(map('test/cases/')), + issues = fs + .readdirSync('test/issues/') + .filter(filter()) + .map(map('test/issues/')); + + //Tests + describe('Converter.makeHtml() simple testcases', function () { + for (var i = 0; i < cases.length; ++i) { + it(cases[i].name, assertion(cases[i])); + } }); + describe('Converter.makeHtml() issues testcase', function () { + for (var i = 0; i < issues.length; ++i) { + it(issues[i].name, assertion(issues[i])); + } + }); + + + 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 + }; + }; + } + //Normalize input/output function normalize(testCase) { @@ -69,12 +94,4 @@ testCase.actual.should.equal(testCase.expected); }; } - - //Tests - describe('Converter.makeHtml()', function () { - for (var i = 0; i < cases.length; ++i) { - it(cases[i].name, assertion(cases[i])); - } - }); - })(); From f1211ac916617f88059e74d5f178f5a5072c9cfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Fri, 16 Jan 2015 23:09:12 +0000 Subject: [PATCH 09/34] chore(travis): build speedup --- .travis.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.travis.yml b/.travis.yml index 9e341d1d..da67b6d2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,3 +6,9 @@ node_js: before_install: - '[ "${TRAVIS_NODE_VERSION}" != "0.8" ] || npm install -g npm@1.4.28' - npm install -g npm@latest + +#travis build speed up +sudo: false +cache: + directories: + - node_modules From f6326b84e478eaabdac48747f8f172e4b863403e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Fri, 16 Jan 2015 23:39:20 +0000 Subject: [PATCH 10/34] feat(allowBlockIndents): Indented inline block elements can be parsed as markdown When the text is pulled from indented HTML elements, ex: ```
    ## Content to be converted
    ``` it no longer becomes wrapped in code/pre tags. A new option is also available (allowBlockIndents) that when set to false, reverts to the previous behavior --- dist/showdown.js | 66 ++++++++++++++++++++++++++++- dist/showdown.js.map | 2 +- dist/showdown.min.js | 2 +- dist/showdown.min.js.map | 2 +- src/showdown.js | 3 +- src/subParsers/allowBlockIndents.js | 62 +++++++++++++++++++++++++++ 6 files changed, 132 insertions(+), 5 deletions(-) create mode 100644 src/subParsers/allowBlockIndents.js diff --git a/dist/showdown.js b/dist/showdown.js index f7f0afd5..618c9129 100644 --- a/dist/showdown.js +++ b/dist/showdown.js @@ -9,7 +9,8 @@ var showdown = {}, parsers = {}, globalOptions = { - omitExtraWLInCodeBlocks: false + omitExtraWLInCodeBlocks: false, + allowBlockIndents: true }; /////////////////////////////////////////////////////////////////////////// @@ -246,6 +247,69 @@ showdown.helper.escapeCharactersCallback = escapeCharactersCallback; */ showdown.helper.escapeCharacters = escapeCharacters; +/** + * Credits to Christopher (https://github.com/cwalker107) + */ + +/** + * If text is being pulled from indented HTML elements, i.e. + * + *
    + * ## Content to be converted + *
    + * + */ +showdown.subParser('allowBlockIndents', function (text, config, globals) { + 'use strict'; + + if (!config.allowBlockIndents) { + return text; + } + + //Split the given array by it's new line characters + var textSplitArr = text.split('\n'); + //We'll use this later to determine if there are leading whitespace characters + var leadingWhiteChars = 0; + var i; + + for(i=0; i<=textSplitArr.length;i++) { + if(textSplitArr[i] !== undefined) { + + // Trim all trailing whitespaces from each line + textSplitArr[i].replace(/[\s]*$/,''); + + // roots out empty array values + if(textSplitArr[i].length > 0) { + + // Defines this single line's leading whitespace + var lineLeadingWhiteChars = (textSplitArr[i].match(/^(\s)*/))[0].length; + + // Determine how much the text is indented + // by. This fixes nesting issues and also + // doesn't break MarkDown syntax if code is on + // the first lines + if(leadingWhiteChars === 0 || (lineLeadingWhiteChars < leadingWhiteChars)) { + if(textSplitArr[i].match(/[^\s]$/) !== null) { + leadingWhiteChars = lineLeadingWhiteChars; + } + } + } + } + } + + // Only a regex that will replace how much it is indented by + var reg = '^\\s{'+leadingWhiteChars+'}'; + for(i=0; i<=textSplitArr.length;i++) { + if(textSplitArr[i] !== undefined) { + // Replace leading indents + textSplitArr[i] = textSplitArr[i].replace(new RegExp(reg),''); + } + } + text = textSplitArr.join('\n\n'); //Join it all back together + + return text; +}); + /** * Created by Estevao on 11-01-2015. */ diff --git a/dist/showdown.js.map b/dist/showdown.js.map index 7655b9b4..0d944655 100644 --- a/dist/showdown.js.map +++ b/dist/showdown.js.map @@ -1 +1 @@ -{"version":3,"sources":["..\\src\\showdown.js","..\\src\\helpers.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\\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":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false\r\n };\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// Public API\r\n//\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// API\r\n//\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n//Public methods\r\nshowdown.setOption = function (key, value) {\r\n globalOptions[key] = value;\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Static Method\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\n/**\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n parserOrder = [\r\n 'detab',\r\n 'stripBlankLines',\r\n //runLanguageExtensions,\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n var makeHtml = function (text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n //showdown.forEach(g_output_modifiers, function (x) {\r\n // text = _ExecuteExtension(x, text);\r\n //});\r\n\r\n return text;\r\n };\r\n\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nfunction isString(a) {\r\n return (typeof a === 'string' || a instanceof String);\r\n}\r\n\r\nfunction forEach(obj, callback) {\r\n if (typeof obj.forEach === 'function') {\r\n obj.forEach(callback);\r\n } else {\r\n var i, len = obj.length;\r\n for (i = 0; i < len; i++) {\r\n callback(obj[i], i, obj);\r\n }\r\n }\r\n}\r\n\r\nfunction isArray(a) {\r\n return a.constructor === Array;\r\n}\r\n\r\nfunction isUndefined(value) {\r\n return typeof value === 'undefined';\r\n}\r\n\r\nvar escapeCharactersCallback = function (wholeMatch, m1) {\r\n var charCodeToEscape = m1.charCodeAt(0);\r\n return '~E' + charCodeToEscape + 'E';\r\n};\r\n\r\nvar escapeCharacters = function (text, charsToEscape, afterBackslash) {\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\nif (!showdown.hasOwnProperty('helper')) {\r\n showdown.helper = {};\r\n}\r\n\r\n/**\r\n * isString helper function\r\n * @param a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isString = isString;\r\n\r\n/**\r\n * ForEach helper function\r\n * @param {*} obj\r\n * @param callback\r\n */\r\nshowdown.helper.forEach = forEach;\r\n\r\n/**\r\n * isArray helper function\r\n * @param {*} a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isArray = isArray;\r\n\r\n/**\r\n * Check if value is undefined\r\n *\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 = isUndefined;\r\n\r\n/**\r\n * Callback used to escape characters when passing through String.replace\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 *\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 = escapeCharacters;\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\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 }\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, '*_');\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, 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 (\t\t \t\t\t\t\t// wrap whole match in $1\r\n \\[\r\n ([^\\[\\]]+)\t\t\t\t// link text = $2; can't contain '[' or ']'\r\n \\]\r\n )()()()()()\t\t\t\t\t// 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});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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, _DoAutoLinks_callback());\r\n */\r\n text = text.replace(/<(?:mailto:)?([-.\\w]+\\@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\r\n function (wholeMatch, m1) {\r\n var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1);\r\n return showdown.subParser('encodeEmailAddress')(unescapedStr);\r\n }\r\n );\r\n\r\n return text;\r\n\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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,\r\n 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(\r\n                /(\\s*
    [^\\r]+?<\\/pre>)/gm,\r\n                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 * Created by Estevao on 12-01-2015.\r\n */\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    text = text.replace(/(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))/g,\r\n        function (wholeMatch, m1, m2) {\r\n            var codeblock = m1,\r\n                nextChar = m2;\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 whitespace\r\n\r\n            codeblock = '
    ' + codeblock + '\\n
    ';\r\n\r\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\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 * Created by Estevao on 11-01-2015.\r\n */\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,\r\n 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 * Created by Estevao on 11-01-2015.\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,\r\n 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\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 * Created by Estevao on 11-01-2015.\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 * Created by Estevao on 11-01-2015.\r\n */\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 * Created by Estevao on 11-01-2015.\r\n */\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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\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\n r > 0.45 ? encode[1](ch) :\r\n 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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\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, '\\\\`*_');\r\n return tag;\r\n });\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\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,\r\n 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\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 * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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 = '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 = '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, 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)\\b[^\\r]*?<\\/\\2>[ \\t]*(?=\\n+)\\n)/gm, 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, 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, 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, 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});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.subParser('headers', function (text, options, globals) {\r\n 'use strict';\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\r\n function (wholeMatch, m1) {\r\n return showdown.subParser('hashBlock')('

    ' +\r\n showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm,\r\n function (matchFound, m1) {\r\n return showdown.subParser('hashBlock')('

    ' +\r\n showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm,\r\n function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n return m.replace(/[^\\w]/g, '').toLowerCase();\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n\r\n/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n }\r\n else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_');\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.subParser('italicsAndBold', function (text) {\r\n 'use strict';\r\n // must go first:\r\n text = text.replace(/(\\*\\*|__)(?=\\S)([^\\r]*?\\S[*_]*)\\1/g,\r\n '$2');\r\n\r\n text = text.replace(/(\\*|_)(?=\\S)([^\\r]*?\\S)\\1/g,\r\n '$2');\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\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 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\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\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 * Created by Estevao on 12-01-2015.\r\n */\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 * Created by Estevao on 12-01-2015.\r\n */\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\r\n /** Wrap

    tags. */\r\n var end = grafs.length;\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 }\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 * Created by Estevao on 11-01-2015.\r\n */\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\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 * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(/^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm,\r\n function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * Created by Estevao on 12-01-2015.\r\n */\r\n\r\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,\r\n function (wholeMatch, m1) {\r\n var charCodeToReplace = parseInt(m1);\r\n return String.fromCharCode(charCodeToReplace);\r\n }\r\n );\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 15-01-2015.\r\n */\r\n\r\nvar 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\nelse if (typeof define === 'function' && define.amd) {\r\n define('showdown', function () {\r\n return showdown;\r\n });\r\n}\r\n// Regular Browser loader\r\nelse {\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\\subParsers\\allowBlockIndents.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\\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":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false,\r\n allowBlockIndents: true\r\n };\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// Public API\r\n//\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// API\r\n//\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n//Public methods\r\nshowdown.setOption = function (key, value) {\r\n globalOptions[key] = value;\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Static Method\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\n/**\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n parserOrder = [\r\n 'detab',\r\n 'stripBlankLines',\r\n //runLanguageExtensions,\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n var makeHtml = function (text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n //showdown.forEach(g_output_modifiers, function (x) {\r\n // text = _ExecuteExtension(x, text);\r\n //});\r\n\r\n return text;\r\n };\r\n\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nfunction isString(a) {\r\n return (typeof a === 'string' || a instanceof String);\r\n}\r\n\r\nfunction forEach(obj, callback) {\r\n if (typeof obj.forEach === 'function') {\r\n obj.forEach(callback);\r\n } else {\r\n var i, len = obj.length;\r\n for (i = 0; i < len; i++) {\r\n callback(obj[i], i, obj);\r\n }\r\n }\r\n}\r\n\r\nfunction isArray(a) {\r\n return a.constructor === Array;\r\n}\r\n\r\nfunction isUndefined(value) {\r\n return typeof value === 'undefined';\r\n}\r\n\r\nvar escapeCharactersCallback = function (wholeMatch, m1) {\r\n var charCodeToEscape = m1.charCodeAt(0);\r\n return '~E' + charCodeToEscape + 'E';\r\n};\r\n\r\nvar escapeCharacters = function (text, charsToEscape, afterBackslash) {\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\nif (!showdown.hasOwnProperty('helper')) {\r\n showdown.helper = {};\r\n}\r\n\r\n/**\r\n * isString helper function\r\n * @param a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isString = isString;\r\n\r\n/**\r\n * ForEach helper function\r\n * @param {*} obj\r\n * @param callback\r\n */\r\nshowdown.helper.forEach = forEach;\r\n\r\n/**\r\n * isArray helper function\r\n * @param {*} a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isArray = isArray;\r\n\r\n/**\r\n * Check if value is undefined\r\n *\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 = isUndefined;\r\n\r\n/**\r\n * Callback used to escape characters when passing through String.replace\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 *\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 = escapeCharacters;\r\n","/**\r\n * Credits to Christopher (https://github.com/cwalker107)\r\n */\r\n\r\n/**\r\n * If text is being pulled from indented HTML elements, i.e.\r\n * \r\n *
    \r\n * ## Content to be converted\r\n *
    \r\n * \r\n */\r\nshowdown.subParser('allowBlockIndents', function (text, config, globals) {\r\n 'use strict';\r\n\r\n if (!config.allowBlockIndents) {\r\n return text;\r\n }\r\n\r\n //Split the given array by it's new line characters\r\n var textSplitArr = text.split('\\n');\r\n //We'll use this later to determine if there are leading whitespace characters\r\n var leadingWhiteChars = 0;\r\n var i;\r\n\r\n for(i=0; i<=textSplitArr.length;i++) {\r\n if(textSplitArr[i] !== undefined) {\r\n\r\n // Trim all trailing whitespaces from each line\r\n textSplitArr[i].replace(/[\\s]*$/,'');\r\n\r\n // roots out empty array values\r\n if(textSplitArr[i].length > 0) {\r\n\r\n // Defines this single line's leading whitespace\r\n var lineLeadingWhiteChars = (textSplitArr[i].match(/^(\\s)*/))[0].length;\r\n\r\n // Determine how much the text is indented\r\n // by. This fixes nesting issues and also\r\n // doesn't break MarkDown syntax if code is on\r\n // the first lines\r\n if(leadingWhiteChars === 0 || (lineLeadingWhiteChars < leadingWhiteChars)) {\r\n if(textSplitArr[i].match(/[^\\s]$/) !== null) {\r\n leadingWhiteChars = lineLeadingWhiteChars;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Only a regex that will replace how much it is indented by\r\n var reg = '^\\\\s{'+leadingWhiteChars+'}';\r\n for(i=0; i<=textSplitArr.length;i++) {\r\n if(textSplitArr[i] !== undefined) {\r\n // Replace leading indents\r\n textSplitArr[i] = textSplitArr[i].replace(new RegExp(reg),'');\r\n }\r\n }\r\n text = textSplitArr.join('\\n\\n'); //Join it all back together\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\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 }\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, '*_');\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, 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 (\t\t \t\t\t\t\t// wrap whole match in $1\r\n \\[\r\n ([^\\[\\]]+)\t\t\t\t// link text = $2; can't contain '[' or ']'\r\n \\]\r\n )()()()()()\t\t\t\t\t// 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});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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, _DoAutoLinks_callback());\r\n */\r\n text = text.replace(/<(?:mailto:)?([-.\\w]+\\@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\r\n function (wholeMatch, m1) {\r\n var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1);\r\n return showdown.subParser('encodeEmailAddress')(unescapedStr);\r\n }\r\n );\r\n\r\n return text;\r\n\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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,\r\n 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(\r\n                /(\\s*
    [^\\r]+?<\\/pre>)/gm,\r\n                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 * Created by Estevao on 12-01-2015.\r\n */\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    text = text.replace(/(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))/g,\r\n        function (wholeMatch, m1, m2) {\r\n            var codeblock = m1,\r\n                nextChar = m2;\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 whitespace\r\n\r\n            codeblock = '
    ' + codeblock + '\\n
    ';\r\n\r\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\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 * Created by Estevao on 11-01-2015.\r\n */\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,\r\n 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 * Created by Estevao on 11-01-2015.\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,\r\n 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\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 * Created by Estevao on 11-01-2015.\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 * Created by Estevao on 11-01-2015.\r\n */\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 * Created by Estevao on 11-01-2015.\r\n */\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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\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\n r > 0.45 ? encode[1](ch) :\r\n 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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\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, '\\\\`*_');\r\n return tag;\r\n });\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\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,\r\n 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\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 * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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 = '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 = '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, 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)\\b[^\\r]*?<\\/\\2>[ \\t]*(?=\\n+)\\n)/gm, 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, 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, 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, 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});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.subParser('headers', function (text, options, globals) {\r\n 'use strict';\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\r\n function (wholeMatch, m1) {\r\n return showdown.subParser('hashBlock')('

    ' +\r\n showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm,\r\n function (matchFound, m1) {\r\n return showdown.subParser('hashBlock')('

    ' +\r\n showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm,\r\n function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n return m.replace(/[^\\w]/g, '').toLowerCase();\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n\r\n/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n }\r\n else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_');\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.subParser('italicsAndBold', function (text) {\r\n 'use strict';\r\n // must go first:\r\n text = text.replace(/(\\*\\*|__)(?=\\S)([^\\r]*?\\S[*_]*)\\1/g,\r\n '$2');\r\n\r\n text = text.replace(/(\\*|_)(?=\\S)([^\\r]*?\\S)\\1/g,\r\n '$2');\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\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 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\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\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 * Created by Estevao on 12-01-2015.\r\n */\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 * Created by Estevao on 12-01-2015.\r\n */\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\r\n /** Wrap

    tags. */\r\n var end = grafs.length;\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 }\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 * Created by Estevao on 11-01-2015.\r\n */\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\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 * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(/^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm,\r\n function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * Created by Estevao on 12-01-2015.\r\n */\r\n\r\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,\r\n function (wholeMatch, m1) {\r\n var charCodeToReplace = parseInt(m1);\r\n return String.fromCharCode(charCodeToReplace);\r\n }\r\n );\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 15-01-2015.\r\n */\r\n\r\nvar 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\nelse if (typeof define === 'function' && define.amd) {\r\n define('showdown', function () {\r\n return showdown;\r\n });\r\n}\r\n// Regular Browser loader\r\nelse {\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 9bd6f2e1..eb4338d2 100644 --- a/dist/showdown.min.js +++ b/dist/showdown.min.js @@ -1,4 +1,4 @@ /*! showdown 16-01-2015 */ -(function(){"use strict";function a(a){return"string"==typeof a||a instanceof String}function b(a,b){if("function"==typeof a.forEach)a.forEach(b);else{var c,d=a.length;for(c=0;d>c;c++)b(a[c],c,a)}}function c(a){return a.constructor===Array}function d(a){return"undefined"==typeof a}var e={},f={},g={omitExtraWLInCodeBlocks:!1};e.helper={},e.extensions={},e.setOption=function(a,b){return g[a]=b,this},e.subParser=function(a,b){if(e.helper.isString(a)){if("undefined"==typeof b){if(f.hasOwnProperty(a))return f[a];throw Error("SubParser named "+a+" not registered!")}f[a]=b}},e.Converter=function(a){a=a||{};var b=g,c=["detab","stripBlankLines","githubCodeBlocks","hashHTMLBlocks","stripLinkDefinitions","blockGamut","unescapeSpecialChars"];if("object"==typeof a)for(var d in a)a.hasOwnProperty(d)&&(b[d]=a[d]);var e=function(a){if(!a)return a;var d={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n";for(var e=0;e-1))return a;m=""}else m=c.gUrls[l],e.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=e.helper.escapeCharacters(m,"*_");var o='"};return a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,d),a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d),a=a.replace(/(\[([^\[\]]+)\])()()()()()/g,d)}),e.subParser("autoLinks",function(a){return a=a.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'$1'),a=a.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,function(a,b){var c=e.subParser("unescapeSpecialChars")(b);return e.subParser("encodeEmailAddress")(c)})}),e.subParser("blockGamut",function(a,b,c){a=e.subParser("headers")(a,b,c);var d=e.subParser("hashBlock")("
    ",b,c);return a=a.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,d),a=e.subParser("lists")(a,b,c),a=e.subParser("codeBlocks")(a,b,c),a=e.subParser("blockQuotes")(a,b,c),a=e.subParser("hashHTMLBlocks")(a,b,c),a=e.subParser("paragraphs")(a,b,c)}),e.subParser("blockQuotes",function(a,b,c){return a=a.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(a,d){var f=d;return f=f.replace(/^[ \t]*>[ \t]?/gm,"~0"),f=f.replace(/~0/g,""),f=f.replace(/^[ \t]+$/gm,""),f=e.subParser("blockGamut")(f,b,c),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,"")}),e.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)})}),e.subParser("codeBlocks",function(a,b,c){return a+="~0",a=a.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(a,d,f){var g=d,h=f;return g=e.subParser("outdent")(g),g=e.subParser("encodeCode")(g),g=e.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",e.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,"")}),e.subParser("codeSpans",function(a){return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,d){var f=d;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=e.subParser("encodeCode")(f),b+""+f+""})}),e.subParser("detab",function(a){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,"")}),e.subParser("encodeAmpsAndAngles",function(a){return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),e.subParser("encodeBackslashEscapes",function(a){return a=a.replace(/\\(\\)/g,e.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,e.helper.escapeCharactersCallback)}),e.subParser("encodeCode",function(a){return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=e.helper.escapeCharacters(a,"*_{}[]\\",!1)}),e.subParser("encodeEmailAddress",function(a){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,'">')}),e.subParser("escapeSpecialCharsWithinTagAttributes",function(a){var b=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;return a=a.replace(b,function(a){var b=a.replace(/(.)<\/?code>(?=.)/g,"$1`");return b=e.helper.escapeCharacters(b,"\\`*_")})}),e.subParser("githubCodeBlocks",function(a,b,c){return a+="~0",a=a.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,function(a,d,f){var g=d,h=f,i="\n";return b.omitExtraWLInCodeBlocks&&(i=""),h=e.subParser("encodeCode")(h),h=e.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",e.subParser("hashBlock")(h,b,c)}),a=a.replace(/~0/,"")}),e.subParser("hashBlock",function(a,b,c){return a=a.replace(/(^\n+|\n+$)/g,""),"\n\n~K"+(c.gHtmlBlocks.push(a)-1)+"K\n\n"}),e.subParser("hashElement",function(a,b,c){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"}}),e.subParser("hashHTMLBlocks",function(a,b,c){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,e.subParser("hashElement")(a,b,c)),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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/\n\n/g,"\n")}),e.subParser("headers",function(a,b,c){function d(a){return a.replace(/[^\w]/g,"").toLowerCase()}return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){return e.subParser("hashBlock")('

    '+e.subParser("spanGamut")(f,b,c)+"

    ",b,c)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){return e.subParser("hashBlock")('

    '+e.subParser("spanGamut")(f,b,c)+"

    ",b,c)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=e.subParser("spanGamut")(g,b,c),i="'+h+"";return e.subParser("hashBlock")(i,b,c)})}),e.subParser("images",function(a,b,c){var d=function(a,b,d,f,g,h,j,k){a=b;var l=d,m=f.toLowerCase(),n=g,o=k,p=c.gUrls,q=c.gTitles;if(o||(o=""),""===n||null===n){if((""===m||null===m)&&(m=l.toLowerCase().replace(/ ?\n/g," ")),n="#"+m,"undefined"==typeof p[m])return a;n=p[m],"undefined"!=typeof q[m]&&(o=q[m])}l=l.replace(/"/g,"""),n=e.helper.escapeCharacters(n,"*_");var r=''+l+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d)}),e.subParser("italicsAndBold",function(a){return a=a.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"$2"),a=a.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"$2")}),e.subParser("lists",function(a,b,c){var d=function(a){return c.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,d,f,g,h){var i=e.subParser("outdent")(h,b,c);return d||i.search(/\n{2,}/)>-1?i=e.subParser("blockGamut")(i,b,c):(i=e.subParser("lists")(i,b,c),i=i.replace(/\n$/,""),i=e.subParser("spanGamut")(i,b,c)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),c.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.gListLevel?a=a.replace(f,function(a,b,c){var e=b,f=c.search(/[*+-]/g)>-1?"ul":"ol";e=e.replace(/\n{2,}/g,"\n\n\n");var g=d(e);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,e){var f=c.replace(/\n{2,}/g,"\n\n\n"),g=e.search(/[*+-]/g)>-1?"ul":"ol",h=d(f);return b+"<"+g+">\n"+h+"\n"})),a=a.replace(/~0/,"")}),e.subParser("outdent",function(a){return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),e.subParser("paragraphs",function(a,b,c){a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,"");for(var d=a.split(/\n{2,}/g),f=[],g=d.length,h=0;g>h;h++){var i=d[h];i.search(/~K(\d+)K/g)>=0?f.push(i):i.search(/\S/)>=0&&(i=e.subParser("spanGamut")(i,b,c),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=c.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),e.subParser("spanGamut",function(a,b,c){return a=e.subParser("codeSpans")(a,b,c),a=e.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=e.subParser("encodeBackslashEscapes")(a,b,c),a=e.subParser("images")(a,b,c),a=e.subParser("anchors")(a,b,c),a=e.subParser("autoLinks")(a,b,c),a=e.subParser("encodeAmpsAndAngles")(a,b,c),a=e.subParser("italicsAndBold")(a,b,c),a=a.replace(/ +\n/g,"
    \n")}),e.subParser("stripBlankLines",function(a){return a.replace(/^[ \t]+$/gm,"")}),e.subParser("stripLinkDefinitions",function(a,b,c){return a+="~0",a=a.replace(/^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm,function(a,b,d,f,g){return b=b.toLowerCase(),c.gUrls[b]=e.subParser("encodeAmpsAndAngles")(d),f?f+g:(g&&(c.gTitles[b]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),e.subParser("unescapeSpecialChars",function(a){return a=a.replace(/~E(\d+)E/g,function(a,b){var c=parseInt(b);return String.fromCharCode(c)})});var j=this;"undefined"!=typeof module&&module.exports?module.exports=e:"function"==typeof define&&define.amd?define("showdown",function(){return e}):j.showdown=e}).call(this); +(function(){"use strict";function a(a){return"string"==typeof a||a instanceof String}function b(a,b){if("function"==typeof a.forEach)a.forEach(b);else{var c,d=a.length;for(c=0;d>c;c++)b(a[c],c,a)}}function c(a){return a.constructor===Array}function d(a){return"undefined"==typeof a}var e={},f={},g={omitExtraWLInCodeBlocks:!1,allowBlockIndents:!0};e.helper={},e.extensions={},e.setOption=function(a,b){return g[a]=b,this},e.subParser=function(a,b){if(e.helper.isString(a)){if("undefined"==typeof b){if(f.hasOwnProperty(a))return f[a];throw Error("SubParser named "+a+" not registered!")}f[a]=b}},e.Converter=function(a){a=a||{};var b=g,c=["detab","stripBlankLines","githubCodeBlocks","hashHTMLBlocks","stripLinkDefinitions","blockGamut","unescapeSpecialChars"];if("object"==typeof a)for(var d in a)a.hasOwnProperty(d)&&(b[d]=a[d]);var e=function(a){if(!a)return a;var d={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n";for(var e=0;e0)){var f=d[c].match(/^(\s)*/)[0].length;(0===e||e>f)&&null!==d[c].match(/[^\s]$/)&&(e=f)}var g="^\\s{"+e+"}";for(c=0;c<=d.length;c++)void 0!==d[c]&&(d[c]=d[c].replace(new RegExp(g),""));return a=d.join("\n\n")}),e.subParser("anchors",function(a,b,c){var d=function(a,b,d,f,g,h,i,j){e.helper.isUndefined(j)&&(j=""),a=b;var k=d,l=f.toLowerCase(),m=g,n=j;if(!m)if(l||(l=k.toLowerCase().replace(/ ?\n/g," ")),m="#"+l,e.helper.isUndefined(c.gUrls[l])){if(!(a.search(/\(\s*\)$/m)>-1))return a;m=""}else m=c.gUrls[l],e.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=e.helper.escapeCharacters(m,"*_");var o='"};return a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,d),a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d),a=a.replace(/(\[([^\[\]]+)\])()()()()()/g,d)}),e.subParser("autoLinks",function(a){return a=a.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'$1'),a=a.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,function(a,b){var c=e.subParser("unescapeSpecialChars")(b);return e.subParser("encodeEmailAddress")(c)})}),e.subParser("blockGamut",function(a,b,c){a=e.subParser("headers")(a,b,c);var d=e.subParser("hashBlock")("
    ",b,c);return a=a.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,d),a=e.subParser("lists")(a,b,c),a=e.subParser("codeBlocks")(a,b,c),a=e.subParser("blockQuotes")(a,b,c),a=e.subParser("hashHTMLBlocks")(a,b,c),a=e.subParser("paragraphs")(a,b,c)}),e.subParser("blockQuotes",function(a,b,c){return a=a.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(a,d){var f=d;return f=f.replace(/^[ \t]*>[ \t]?/gm,"~0"),f=f.replace(/~0/g,""),f=f.replace(/^[ \t]+$/gm,""),f=e.subParser("blockGamut")(f,b,c),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,"")}),e.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)})}),e.subParser("codeBlocks",function(a,b,c){return a+="~0",a=a.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(a,d,f){var g=d,h=f;return g=e.subParser("outdent")(g),g=e.subParser("encodeCode")(g),g=e.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",e.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,"")}),e.subParser("codeSpans",function(a){return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,d){var f=d;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=e.subParser("encodeCode")(f),b+""+f+""})}),e.subParser("detab",function(a){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,"")}),e.subParser("encodeAmpsAndAngles",function(a){return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),e.subParser("encodeBackslashEscapes",function(a){return a=a.replace(/\\(\\)/g,e.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,e.helper.escapeCharactersCallback)}),e.subParser("encodeCode",function(a){return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=e.helper.escapeCharacters(a,"*_{}[]\\",!1)}),e.subParser("encodeEmailAddress",function(a){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,'">')}),e.subParser("escapeSpecialCharsWithinTagAttributes",function(a){var b=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;return a=a.replace(b,function(a){var b=a.replace(/(.)<\/?code>(?=.)/g,"$1`");return b=e.helper.escapeCharacters(b,"\\`*_")})}),e.subParser("githubCodeBlocks",function(a,b,c){return a+="~0",a=a.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,function(a,d,f){var g=d,h=f,i="\n";return b.omitExtraWLInCodeBlocks&&(i=""),h=e.subParser("encodeCode")(h),h=e.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",e.subParser("hashBlock")(h,b,c)}),a=a.replace(/~0/,"")}),e.subParser("hashBlock",function(a,b,c){return a=a.replace(/(^\n+|\n+$)/g,""),"\n\n~K"+(c.gHtmlBlocks.push(a)-1)+"K\n\n"}),e.subParser("hashElement",function(a,b,c){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"}}),e.subParser("hashHTMLBlocks",function(a,b,c){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,e.subParser("hashElement")(a,b,c)),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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/\n\n/g,"\n")}),e.subParser("headers",function(a,b,c){function d(a){return a.replace(/[^\w]/g,"").toLowerCase()}return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){return e.subParser("hashBlock")('

    '+e.subParser("spanGamut")(f,b,c)+"

    ",b,c)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){return e.subParser("hashBlock")('

    '+e.subParser("spanGamut")(f,b,c)+"

    ",b,c)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=e.subParser("spanGamut")(g,b,c),i="'+h+"";return e.subParser("hashBlock")(i,b,c)})}),e.subParser("images",function(a,b,c){var d=function(a,b,d,f,g,h,j,k){a=b;var l=d,m=f.toLowerCase(),n=g,o=k,p=c.gUrls,q=c.gTitles;if(o||(o=""),""===n||null===n){if((""===m||null===m)&&(m=l.toLowerCase().replace(/ ?\n/g," ")),n="#"+m,"undefined"==typeof p[m])return a;n=p[m],"undefined"!=typeof q[m]&&(o=q[m])}l=l.replace(/"/g,"""),n=e.helper.escapeCharacters(n,"*_");var r=''+l+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d)}),e.subParser("italicsAndBold",function(a){return a=a.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"$2"),a=a.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"$2")}),e.subParser("lists",function(a,b,c){var d=function(a){return c.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,d,f,g,h){var i=e.subParser("outdent")(h,b,c);return d||i.search(/\n{2,}/)>-1?i=e.subParser("blockGamut")(i,b,c):(i=e.subParser("lists")(i,b,c),i=i.replace(/\n$/,""),i=e.subParser("spanGamut")(i,b,c)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),c.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.gListLevel?a=a.replace(f,function(a,b,c){var e=b,f=c.search(/[*+-]/g)>-1?"ul":"ol";e=e.replace(/\n{2,}/g,"\n\n\n");var g=d(e);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,e){var f=c.replace(/\n{2,}/g,"\n\n\n"),g=e.search(/[*+-]/g)>-1?"ul":"ol",h=d(f);return b+"<"+g+">\n"+h+"\n"})),a=a.replace(/~0/,"")}),e.subParser("outdent",function(a){return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),e.subParser("paragraphs",function(a,b,c){a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,"");for(var d=a.split(/\n{2,}/g),f=[],g=d.length,h=0;g>h;h++){var i=d[h];i.search(/~K(\d+)K/g)>=0?f.push(i):i.search(/\S/)>=0&&(i=e.subParser("spanGamut")(i,b,c),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=c.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),e.subParser("spanGamut",function(a,b,c){return a=e.subParser("codeSpans")(a,b,c),a=e.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=e.subParser("encodeBackslashEscapes")(a,b,c),a=e.subParser("images")(a,b,c),a=e.subParser("anchors")(a,b,c),a=e.subParser("autoLinks")(a,b,c),a=e.subParser("encodeAmpsAndAngles")(a,b,c),a=e.subParser("italicsAndBold")(a,b,c),a=a.replace(/ +\n/g,"
    \n")}),e.subParser("stripBlankLines",function(a){return a.replace(/^[ \t]+$/gm,"")}),e.subParser("stripLinkDefinitions",function(a,b,c){return a+="~0",a=a.replace(/^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm,function(a,b,d,f,g){return b=b.toLowerCase(),c.gUrls[b]=e.subParser("encodeAmpsAndAngles")(d),f?f+g:(g&&(c.gTitles[b]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),e.subParser("unescapeSpecialChars",function(a){return a=a.replace(/~E(\d+)E/g,function(a,b){var c=parseInt(b);return String.fromCharCode(c)})});var j=this;"undefined"!=typeof module&&module.exports?module.exports=e:"function"==typeof define&&define.amd?define("showdown",function(){return e}):j.showdown=e}).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 ce0f7b9c..8903f1ab 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":["isString","a","String","forEach","obj","callback","i","len","length","isArray","constructor","Array","isUndefined","value","showdown","parsers","globalOptions","omitExtraWLInCodeBlocks","helper","extensions","setOption","key","this","subParser","name","func","hasOwnProperty","Error","Converter","converterOptions","options","parserOrder","opt","makeHtml","text","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","replace","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","escapeCharacters","charsToEscape","afterBackslash","regexString","regex","RegExp","config","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","toLowerCase","url","title","search","result","unescapedStr","bq","pre","codeblock","nextChar","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","language","end","push","blockText","headerId","m","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","split","grafsOut","str","$1","join","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":["isString","a","String","forEach","obj","callback","i","len","length","isArray","constructor","Array","isUndefined","value","showdown","parsers","globalOptions","omitExtraWLInCodeBlocks","allowBlockIndents","helper","extensions","setOption","key","this","subParser","name","func","hasOwnProperty","Error","Converter","converterOptions","options","parserOrder","opt","makeHtml","text","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","replace","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","escapeCharacters","charsToEscape","afterBackslash","regexString","regex","RegExp","config","textSplitArr","split","leadingWhiteChars","undefined","lineLeadingWhiteChars","match","reg","join","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","toLowerCase","url","title","search","result","unescapedStr","bq","pre","codeblock","nextChar","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","language","end","push","blockText","headerId","m","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","grafsOut","str","$1","charCodeToReplace","parseInt","fromCharCode","root","module","exports","define","amd","call"],"mappings":"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"} \ No newline at end of file diff --git a/src/showdown.js b/src/showdown.js index ef17ba9b..83785868 100644 --- a/src/showdown.js +++ b/src/showdown.js @@ -6,7 +6,8 @@ var showdown = {}, parsers = {}, globalOptions = { - omitExtraWLInCodeBlocks: false + omitExtraWLInCodeBlocks: false, + allowBlockIndents: true }; /////////////////////////////////////////////////////////////////////////// diff --git a/src/subParsers/allowBlockIndents.js b/src/subParsers/allowBlockIndents.js new file mode 100644 index 00000000..0bee7581 --- /dev/null +++ b/src/subParsers/allowBlockIndents.js @@ -0,0 +1,62 @@ +/** + * Credits to Christopher (https://github.com/cwalker107) + */ + +/** + * If text is being pulled from indented HTML elements, i.e. + * + *
    + * ## Content to be converted + *
    + * + */ +showdown.subParser('allowBlockIndents', function (text, config, globals) { + 'use strict'; + + if (!config.allowBlockIndents) { + return text; + } + + //Split the given array by it's new line characters + var textSplitArr = text.split('\n'); + //We'll use this later to determine if there are leading whitespace characters + var leadingWhiteChars = 0; + var i; + + for(i=0; i<=textSplitArr.length;i++) { + if(textSplitArr[i] !== undefined) { + + // Trim all trailing whitespaces from each line + textSplitArr[i].replace(/[\s]*$/,''); + + // roots out empty array values + if(textSplitArr[i].length > 0) { + + // Defines this single line's leading whitespace + var lineLeadingWhiteChars = (textSplitArr[i].match(/^(\s)*/))[0].length; + + // Determine how much the text is indented + // by. This fixes nesting issues and also + // doesn't break MarkDown syntax if code is on + // the first lines + if(leadingWhiteChars === 0 || (lineLeadingWhiteChars < leadingWhiteChars)) { + if(textSplitArr[i].match(/[^\s]$/) !== null) { + leadingWhiteChars = lineLeadingWhiteChars; + } + } + } + } + } + + // Only a regex that will replace how much it is indented by + var reg = '^\\s{'+leadingWhiteChars+'}'; + for(i=0; i<=textSplitArr.length;i++) { + if(textSplitArr[i] !== undefined) { + // Replace leading indents + textSplitArr[i] = textSplitArr[i].replace(new RegExp(reg),''); + } + } + text = textSplitArr.join('\n\n'); //Join it all back together + + return text; +}); From c9de4b6b1fa903f9c9dc8344050931f3c8be867b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Sat, 17 Jan 2015 00:13:12 +0000 Subject: [PATCH 11/34] Revert "feat(allowBlockIndents): Indented inline block elements can be parsed as markdown" This reverts commit f6326b84e478eaabdac48747f8f172e4b863403e. --- dist/showdown.js | 66 +---------------------------- dist/showdown.js.map | 2 +- dist/showdown.min.js | 2 +- dist/showdown.min.js.map | 2 +- src/showdown.js | 3 +- src/subParsers/allowBlockIndents.js | 62 --------------------------- 6 files changed, 5 insertions(+), 132 deletions(-) delete mode 100644 src/subParsers/allowBlockIndents.js diff --git a/dist/showdown.js b/dist/showdown.js index 618c9129..f7f0afd5 100644 --- a/dist/showdown.js +++ b/dist/showdown.js @@ -9,8 +9,7 @@ var showdown = {}, parsers = {}, globalOptions = { - omitExtraWLInCodeBlocks: false, - allowBlockIndents: true + omitExtraWLInCodeBlocks: false }; /////////////////////////////////////////////////////////////////////////// @@ -247,69 +246,6 @@ showdown.helper.escapeCharactersCallback = escapeCharactersCallback; */ showdown.helper.escapeCharacters = escapeCharacters; -/** - * Credits to Christopher (https://github.com/cwalker107) - */ - -/** - * If text is being pulled from indented HTML elements, i.e. - * - *
    - * ## Content to be converted - *
    - * - */ -showdown.subParser('allowBlockIndents', function (text, config, globals) { - 'use strict'; - - if (!config.allowBlockIndents) { - return text; - } - - //Split the given array by it's new line characters - var textSplitArr = text.split('\n'); - //We'll use this later to determine if there are leading whitespace characters - var leadingWhiteChars = 0; - var i; - - for(i=0; i<=textSplitArr.length;i++) { - if(textSplitArr[i] !== undefined) { - - // Trim all trailing whitespaces from each line - textSplitArr[i].replace(/[\s]*$/,''); - - // roots out empty array values - if(textSplitArr[i].length > 0) { - - // Defines this single line's leading whitespace - var lineLeadingWhiteChars = (textSplitArr[i].match(/^(\s)*/))[0].length; - - // Determine how much the text is indented - // by. This fixes nesting issues and also - // doesn't break MarkDown syntax if code is on - // the first lines - if(leadingWhiteChars === 0 || (lineLeadingWhiteChars < leadingWhiteChars)) { - if(textSplitArr[i].match(/[^\s]$/) !== null) { - leadingWhiteChars = lineLeadingWhiteChars; - } - } - } - } - } - - // Only a regex that will replace how much it is indented by - var reg = '^\\s{'+leadingWhiteChars+'}'; - for(i=0; i<=textSplitArr.length;i++) { - if(textSplitArr[i] !== undefined) { - // Replace leading indents - textSplitArr[i] = textSplitArr[i].replace(new RegExp(reg),''); - } - } - text = textSplitArr.join('\n\n'); //Join it all back together - - return text; -}); - /** * Created by Estevao on 11-01-2015. */ diff --git a/dist/showdown.js.map b/dist/showdown.js.map index 0d944655..7655b9b4 100644 --- a/dist/showdown.js.map +++ b/dist/showdown.js.map @@ -1 +1 @@ -{"version":3,"sources":["..\\src\\showdown.js","..\\src\\helpers.js","..\\src\\subParsers\\allowBlockIndents.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\\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":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false,\r\n allowBlockIndents: true\r\n };\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// Public API\r\n//\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// API\r\n//\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n//Public methods\r\nshowdown.setOption = function (key, value) {\r\n globalOptions[key] = value;\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Static Method\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\n/**\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n parserOrder = [\r\n 'detab',\r\n 'stripBlankLines',\r\n //runLanguageExtensions,\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n var makeHtml = function (text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n //showdown.forEach(g_output_modifiers, function (x) {\r\n // text = _ExecuteExtension(x, text);\r\n //});\r\n\r\n return text;\r\n };\r\n\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nfunction isString(a) {\r\n return (typeof a === 'string' || a instanceof String);\r\n}\r\n\r\nfunction forEach(obj, callback) {\r\n if (typeof obj.forEach === 'function') {\r\n obj.forEach(callback);\r\n } else {\r\n var i, len = obj.length;\r\n for (i = 0; i < len; i++) {\r\n callback(obj[i], i, obj);\r\n }\r\n }\r\n}\r\n\r\nfunction isArray(a) {\r\n return a.constructor === Array;\r\n}\r\n\r\nfunction isUndefined(value) {\r\n return typeof value === 'undefined';\r\n}\r\n\r\nvar escapeCharactersCallback = function (wholeMatch, m1) {\r\n var charCodeToEscape = m1.charCodeAt(0);\r\n return '~E' + charCodeToEscape + 'E';\r\n};\r\n\r\nvar escapeCharacters = function (text, charsToEscape, afterBackslash) {\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\nif (!showdown.hasOwnProperty('helper')) {\r\n showdown.helper = {};\r\n}\r\n\r\n/**\r\n * isString helper function\r\n * @param a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isString = isString;\r\n\r\n/**\r\n * ForEach helper function\r\n * @param {*} obj\r\n * @param callback\r\n */\r\nshowdown.helper.forEach = forEach;\r\n\r\n/**\r\n * isArray helper function\r\n * @param {*} a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isArray = isArray;\r\n\r\n/**\r\n * Check if value is undefined\r\n *\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 = isUndefined;\r\n\r\n/**\r\n * Callback used to escape characters when passing through String.replace\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 *\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 = escapeCharacters;\r\n","/**\r\n * Credits to Christopher (https://github.com/cwalker107)\r\n */\r\n\r\n/**\r\n * If text is being pulled from indented HTML elements, i.e.\r\n * \r\n *
    \r\n * ## Content to be converted\r\n *
    \r\n * \r\n */\r\nshowdown.subParser('allowBlockIndents', function (text, config, globals) {\r\n 'use strict';\r\n\r\n if (!config.allowBlockIndents) {\r\n return text;\r\n }\r\n\r\n //Split the given array by it's new line characters\r\n var textSplitArr = text.split('\\n');\r\n //We'll use this later to determine if there are leading whitespace characters\r\n var leadingWhiteChars = 0;\r\n var i;\r\n\r\n for(i=0; i<=textSplitArr.length;i++) {\r\n if(textSplitArr[i] !== undefined) {\r\n\r\n // Trim all trailing whitespaces from each line\r\n textSplitArr[i].replace(/[\\s]*$/,'');\r\n\r\n // roots out empty array values\r\n if(textSplitArr[i].length > 0) {\r\n\r\n // Defines this single line's leading whitespace\r\n var lineLeadingWhiteChars = (textSplitArr[i].match(/^(\\s)*/))[0].length;\r\n\r\n // Determine how much the text is indented\r\n // by. This fixes nesting issues and also\r\n // doesn't break MarkDown syntax if code is on\r\n // the first lines\r\n if(leadingWhiteChars === 0 || (lineLeadingWhiteChars < leadingWhiteChars)) {\r\n if(textSplitArr[i].match(/[^\\s]$/) !== null) {\r\n leadingWhiteChars = lineLeadingWhiteChars;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Only a regex that will replace how much it is indented by\r\n var reg = '^\\\\s{'+leadingWhiteChars+'}';\r\n for(i=0; i<=textSplitArr.length;i++) {\r\n if(textSplitArr[i] !== undefined) {\r\n // Replace leading indents\r\n textSplitArr[i] = textSplitArr[i].replace(new RegExp(reg),'');\r\n }\r\n }\r\n text = textSplitArr.join('\\n\\n'); //Join it all back together\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\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 }\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, '*_');\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, 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 (\t\t \t\t\t\t\t// wrap whole match in $1\r\n \\[\r\n ([^\\[\\]]+)\t\t\t\t// link text = $2; can't contain '[' or ']'\r\n \\]\r\n )()()()()()\t\t\t\t\t// 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});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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, _DoAutoLinks_callback());\r\n */\r\n text = text.replace(/<(?:mailto:)?([-.\\w]+\\@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\r\n function (wholeMatch, m1) {\r\n var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1);\r\n return showdown.subParser('encodeEmailAddress')(unescapedStr);\r\n }\r\n );\r\n\r\n return text;\r\n\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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,\r\n 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(\r\n                /(\\s*
    [^\\r]+?<\\/pre>)/gm,\r\n                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 * Created by Estevao on 12-01-2015.\r\n */\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    text = text.replace(/(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))/g,\r\n        function (wholeMatch, m1, m2) {\r\n            var codeblock = m1,\r\n                nextChar = m2;\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 whitespace\r\n\r\n            codeblock = '
    ' + codeblock + '\\n
    ';\r\n\r\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\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 * Created by Estevao on 11-01-2015.\r\n */\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,\r\n 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 * Created by Estevao on 11-01-2015.\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,\r\n 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\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 * Created by Estevao on 11-01-2015.\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 * Created by Estevao on 11-01-2015.\r\n */\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 * Created by Estevao on 11-01-2015.\r\n */\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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\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\n r > 0.45 ? encode[1](ch) :\r\n 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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\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, '\\\\`*_');\r\n return tag;\r\n });\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\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,\r\n 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\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 * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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 = '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 = '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, 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)\\b[^\\r]*?<\\/\\2>[ \\t]*(?=\\n+)\\n)/gm, 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, 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, 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, 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});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.subParser('headers', function (text, options, globals) {\r\n 'use strict';\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\r\n function (wholeMatch, m1) {\r\n return showdown.subParser('hashBlock')('

    ' +\r\n showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm,\r\n function (matchFound, m1) {\r\n return showdown.subParser('hashBlock')('

    ' +\r\n showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm,\r\n function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n return m.replace(/[^\\w]/g, '').toLowerCase();\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n\r\n/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n }\r\n else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_');\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.subParser('italicsAndBold', function (text) {\r\n 'use strict';\r\n // must go first:\r\n text = text.replace(/(\\*\\*|__)(?=\\S)([^\\r]*?\\S[*_]*)\\1/g,\r\n '$2');\r\n\r\n text = text.replace(/(\\*|_)(?=\\S)([^\\r]*?\\S)\\1/g,\r\n '$2');\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\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 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\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\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 * Created by Estevao on 12-01-2015.\r\n */\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 * Created by Estevao on 12-01-2015.\r\n */\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\r\n /** Wrap

    tags. */\r\n var end = grafs.length;\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 }\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 * Created by Estevao on 11-01-2015.\r\n */\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\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 * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(/^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm,\r\n function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * Created by Estevao on 12-01-2015.\r\n */\r\n\r\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,\r\n function (wholeMatch, m1) {\r\n var charCodeToReplace = parseInt(m1);\r\n return String.fromCharCode(charCodeToReplace);\r\n }\r\n );\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 15-01-2015.\r\n */\r\n\r\nvar 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\nelse if (typeof define === 'function' && define.amd) {\r\n define('showdown', function () {\r\n return showdown;\r\n });\r\n}\r\n// Regular Browser loader\r\nelse {\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\\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\\spanGamut.js","..\\src\\subParsers\\stripBlankLines.js","..\\src\\subParsers\\stripLinkDefinitions.js","..\\src\\subParsers\\unescapeSpecialChars.js","..\\src\\loader.js"],"names":[],"mappings":";;;AAAA;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA,GAG9B,OAAO,CAAC,UAAU;AACrB,GAAG,CAAC,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,aAAa;AAAA,QACT,uBAAuB,EAAE,KAAK;AAAA;AAAA;AAAA;AAAA,GAInC,MAAM,CAAC,GAAG;AAAA;AAAA;AAAA,GAGV,MAAM,CAAC,SAAS;AAAA,IACf,IAAI;AAAA;AAER,QAAQ,CAAC,MAAM;AAAA;AAAA;AAAA;AAAA,GAIZ,GAAG;AAAA;AAAA;AAAA,GAGH,MAAM,CAAC,UAAU;AACpB,QAAQ,CAAC,UAAU;AAAA;AAAA,EAEjB,MAAM,CAAC,OAAO;AAChB,QAAQ,CAAC,SAAS,GAAG,QAAQ,EAAE,GAAG,EAAE,KAAK;AAAA,IACrC,aAAa,CAAC,GAAG,IAAI,KAAK;AAAA;AAAA,IAE1B,MAAM,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,GAIZ,MAAM,CAAC,MAAM;AAAA;AAAA,GAEb,SAAS,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS;AAAA,GAClD,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,SAAS;AAAA,IAC3C,KAAK,EAAE,MAAM,EAAE,IAAI;AAAA,IACnB,KAAK,EAAE,QAAQ,GAAG,IAAI;AAAA,IACtB,OAAO;AAAA;AAEX,QAAQ,CAAC,SAAS,GAAG,QAAQ,EAAE,IAAI,EAAE,IAAI;AAAA,IACrC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI;AAAA,QAC7B,EAAE,EAAE,MAAM,CAAC,IAAI,MAAM,SAAS;AAAA,YAC1B,OAAO,CAAC,IAAI,IAAI,IAAI;AAAA,UACtB,IAAI;AAAA,YACF,EAAE,EAAE,OAAO,CAAC,cAAc,CAAC,IAAI;AAAA,gBAC3B,MAAM,CAAC,OAAO,CAAC,IAAI;AAAA,cACrB,IAAI;AAAA,gBACF,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,KAAK,GAAG,CAAC,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQpE,KAAK,EAAE,MAAM,GAAG,gBAAgB;AAAA,IAChC,OAAO,GAAG,QAAQ,EAAE,QAAQ;AAAA;AAEhC,QAAQ,CAAC,SAAS,GAAG,QAAQ,EAAE,gBAAgB;AAAA;AAAA,IAE3C,gBAAgB,GAAG,gBAAgB;AAAA;AAAA,IAEnC,GAAG,CAAC,OAAO,GAAG,aAAa;AAAA,QACvB,WAAW;AAAA,aACN,KAAK;AAAA,aACL,eAAe;AAAA,cACd,qBAAqB;AAAA,aACtB,gBAAgB;AAAA,aAChB,cAAc;AAAA,aACd,oBAAoB;AAAA,aACpB,UAAU;AAAA,aACV,oBAAoB;AAAA;AAAA;AAAA,OAG1B,KAAK,CAAC,OAAO;AAAA,IAChB,EAAE,EAAE,MAAM,CAAC,gBAAgB,MAAM,MAAM;AAAA,QACnC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB;AAAA,YAC5B,EAAE,EAAE,gBAAgB,CAAC,cAAc,CAAC,GAAG;AAAA,gBACnC,OAAO,CAAC,GAAG,IAAI,gBAAgB,CAAC,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA,IAK/C,GAAG,CAAC,QAAQ,GAAG,QAAQ,EAAE,IAAI;AAAA;AAAA,UAEvB,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AAAA,QAC5B,EAAE,GAAG,IAAI;AAAA,YACL,MAAM,CAAC,IAAI;AAAA;AAAA;AAAA,QAGf,GAAG,CAAC,OAAO;AAAA,YACP,WAAW;AAAA,YACX,KAAK;AAAA,YACL,OAAO;AAAA,YACP,UAAU,EAAE,CAAC;AAAA;AAAA;AAAA,WAGd,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,CAAC;AAAA,WAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM;AAAA,WAC5D,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAAA,WACzD,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;AAAA,QAC9B,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC;AAAA;AAAA,WAE1B,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,CAAC;AAAA,WAC5B,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS;AAAA,WAC1C,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM;AAAA,QACpC,IAAI,GAAG,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC;AAAA;AAAA,WAE3B,WAAW,CAAC,IAAI,CAAC,OAAO;AAAA,QAC3B,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI;AAAA,QAClD,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA,WAE7C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;AAAA,QAC3D,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;AAAA;AAAA,WAEzB,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO;AAAA,QAC7B,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC;AAAA,YACvC,GAAG,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC;AAAA,YACxB,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA;AAAA,WAG5C,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK;AAAA,QAClC,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAAA;AAAA,WAEtB,SAAS,EAAE,OAAO,CAAC,MAAM;AAAA,QAC5B,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAAA;AAAA,WAEtB,GAAG,CAAC,MAAM,CAAC,SAAS;AAAA,UACrB,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,EAAE,CAAC;AAAA,cAC5C,IAAI,GAAG,iBAAiB,CAAC,CAAC,EAAE,IAAI;AAAA;AAAA;AAAA,QAGtC,MAAM,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,IAIf,MAAM;AAAA,QACF,QAAQ,EAAE,QAAQ;AAAA;AAAA;;AC9I1B;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAGnC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAAA,IACf,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,MAAM,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM;AAAA;AAAA;AAGxD,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ;AAAA,IAC1B,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,MAAM,QAAQ;AAAA,QAChC,GAAG,CAAC,OAAO,CAAC,QAAQ;AAAA,MACtB,IAAI;AAAA,QACF,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM;AAAA,QACvB,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;AAAA,YAClB,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG;AAAA;AAAA;AAAA;AAAA;AAKnC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAAA,IACd,MAAM,CAAC,CAAC,CAAC,WAAW,KAAK,KAAK;AAAA;AAAA;AAGlC,QAAQ,CAAC,WAAW,CAAC,KAAK;AAAA,IACtB,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,SAAS;AAAA;AAAA;AAGtC,GAAG,CAAC,wBAAwB,GAAG,QAAQ,EAAE,UAAU,EAAE,EAAE;AAAA,IACnD,GAAG,CAAC,gBAAgB,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;AAAA,IACtC,MAAM,GAAG,CAAC,IAAI,gBAAgB,IAAI,CAAC;AAAA;AAAA;AAGvC,GAAG,CAAC,gBAAgB,GAAG,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc;AAAA,OAC7D,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI;AAAA,OACrD,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI;AAAA,IAC7C,GAAG,CAAC,WAAW,UAAU,aAAa,CAAC,OAAO,aAAa,CAAC,MAAM,CAAC;AAAA;AAAA,IAEnE,EAAE,EAAE,cAAc;AAAA,QACd,WAAW,YAAY,WAAW;AAAA;AAAA;AAAA,IAGtC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC;AAAA,IACtC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,wBAAwB;AAAA;AAAA,IAEnD,MAAM,CAAC,IAAI;AAAA;AAAA;AAGf,EAAE,GAAG,QAAQ,CAAC,cAAc,EAAE,MAAM;AAAA,IAChC,QAAQ,CAAC,MAAM;AAAA;AAAA;AAAA;AAAA,GAIhB,QAAQ,CAAC,MAAM,CAAC,QAAQ;AAAA,IACvB,KAAK,CAAC,CAAC;AAAA,IACP,OAAO,EAAE,OAAO;AAAA;AAEpB,QAAQ,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ;AAAA;AAAA;AAAA,GAGhC,OAAO,CAAC,MAAM,CAAC,QAAQ;AAAA,IACtB,KAAK,KAAK,GAAG;AAAA,IACb,KAAK,CAAC,QAAQ;AAAA;AAElB,QAAQ,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO;AAAA;AAAA;AAAA,GAG9B,OAAO,CAAC,MAAM,CAAC,QAAQ;AAAA,IACtB,KAAK,KAAK,CAAC;AAAA,IACX,OAAO,EAAE,OAAO;AAAA;AAEpB,QAAQ,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO;AAAA;AAAA;AAAA,GAG9B,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS;AAAA;AAAA,IAE1B,MAAM;AAAA,IACN,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK;AAAA,IAClC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI,EAAE,KAAK;AAAA;AAE3E,QAAQ,CAAC,MAAM,CAAC,WAAW,GAAG,WAAW;AAAA;AAAA;AAAA,GAGtC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO;AAAA,IACrE,KAAK,EAAE,MAAM,EAAE,UAAU;AAAA,IACzB,KAAK,EAAE,MAAM,EAAE,EAAE;AAAA,IACjB,OAAO,EAAE,MAAM;AAAA;AAEnB,QAAQ,CAAC,MAAM,CAAC,wBAAwB,GAAG,wBAAwB;AAAA;AAAA;AAAA,GAGhE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;AAAA;AAAA,IAE5B,KAAK,EAAE,MAAM,EAAE,IAAI;AAAA,IACnB,KAAK,EAAE,MAAM,EAAE,aAAa;AAAA,IAC5B,KAAK,EAAE,OAAO,EAAE,cAAc;AAAA,IAC9B,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;AAAA;AAE5B,QAAQ,CAAC,MAAM,CAAC,gBAAgB,GAAG,gBAAgB;;ACjGnD;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,GAIhC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI;AAAA;AAEnD,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO;AAAA,KACxD,GAAG,CAAC,MAAM;AAAA;AAAA,IAEX,GAAG,CAAC,cAAc,GAAG,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAAA,QACjE,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AAAA,YAC9B,EAAE;AAAA;AAAA,QAEN,UAAU,GAAG,EAAE;AAAA,QACf,GAAG,CAAC,QAAQ,GAAG,EAAE;AAAA,YACb,MAAM,GAAG,EAAE,CAAC,WAAW;AAAA,YACvB,GAAG,GAAG,EAAE;AAAA,YACR,KAAK,GAAG,EAAE;AAAA;AAAA,QAEd,EAAE,GAAG,GAAG;AAAA,YACJ,EAAE,GAAG,MAAM;AAAA,mBACJ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM;AAAA,gBACpD,MAAM,GAAG,QAAQ,CAAC,WAAW,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC;AAAA;AAAA,YAEnD,GAAG,SAAS,MAAM;AAAA;AAAA,YAElB,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM;AAAA,gBACjD,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM;AAAA,gBAC1B,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;AAAA,oBACnD,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM;AAAA;AAAA;AAAA,YAGtC,IAAI;AAAA,gBACA,EAAE,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;AAAA,uBAChC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG;AAAA,oBACtC,GAAG;AAAA,kBACL,IAAI;AAAA,oBACF,MAAM,CAAC,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,QAK7B,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;AAAA,QAC/C,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,MAAM,GAAG;AAAA;AAAA,QAE9B,EAAE,EAAE,KAAK,WAAW,KAAK,KAAK,IAAI;AAAA,YAC9B,KAAK,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI;AAAA,YAClC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AAAA,YACnD,MAAM,MAAM,KAAK,MAAM,KAAK;AAAA;AAAA;AAAA,QAGhC,MAAM,UAAU,QAAQ,MAAM,CAAC;AAAA;AAAA,QAE/B,MAAM,CAAC,MAAM;AAAA;AAAA;AAAA,OAGd,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE;AAAA;AAAA,KAEtD,IAAI,GAAG,IAAI,CAAC,OAAO;AAAA,gBACR,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AAAA;AAAA;AAAA;AAAA,oBAIlB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;AAAA;AAAA,gBAEnC,EAAE,CAAC,QAAQ,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,iBAKf,GAAG,CAAC,QAAQ,CAAC,KAAK;AAAA,SAC1B,CAAC,aAAa,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM;AAAA;AAAA;AAAA,kBAG5C,EAAE,IAAI,CAAC;AAAA;AAAA,sBAEH,GAAG,CAAC,SAAS,CAAC,cAAc;AAAA,MAC5C,CAAC,CAAC,mBAAmB;AAAA;AAAA,IAEvB,IAAI,GAAG,IAAI,CAAC,OAAO,wCAAwC,CAAC,yBAAyB,CAAC,EAAE,cAAc;AAAA;AAAA;AAAA,OAGnG,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,KAAK;AAAA;AAAA;AAAA;AAAA,KAI3D,IAAI,GAAG,IAAI,CAAC,OAAO;AAAA,eACT,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AAAA;AAAA;AAAA;AAAA,mBAIlB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;AAAA;AAAA,kBAEhC,EAAE,CAAC,QAAQ,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,gBAIlB,OAAO,CAAC,KAAK;AAAA,QACrB,CAAC;AAAA,gBACO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK;AAAA,qBACnB,IAAI,IAAI,CAAC;AAAA,QACtB,CAAC;AAAA,gBACO,CAAC;AAAA,kBACC,KAAK,CAAC,IAAI,IAAI,CAAC;AAAA,iBAChB,KAAK,IAAI,CAAC;AAAA,MACrB,CAAC,QAAQ,QAAQ,CAAC,KAAK;AAAA,QACrB,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG;AAAA,gBAClD,KAAK,CAAC,EAAE,CAAC,QAAQ;AAAA;AAAA;AAAA,MAG3B,CAAC,CAAC,cAAc;AAAA;AAAA,IAElB,IAAI,GAAG,IAAI,CAAC,OAAO,qCAAqC,CAAC,+BAA+B,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,cAAc;AAAA;AAAA;AAAA,OAGnI,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI;AAAA,OAClD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAAA,OAC1D,EAAE,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG;AAAA;AAAA;AAAA;AAAA,KAIrB,IAAI,GAAG,IAAI,CAAC,OAAO;AAAA,iBACP,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AAAA;AAAA,sBAEjB,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE;AAAA;AAAA,wBAElC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc;AAAA,MAC5C,CAAC,EAAE,cAAc;AAAA;AAAA,IAEnB,IAAI,GAAG,IAAI,CAAC,OAAO,6BAA6B,CAAC,EAAE,cAAc;AAAA;AAAA,IAEjE,MAAM,CAAC,IAAI;AAAA;AAAA;AAAA;;ACpIf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAGnC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,QAAQ,EAAE,IAAI;AAAA,KACzC,GAAG,CAAC,MAAM;AAAA;AAAA,IAEX,IAAI,GAAG,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAAA;AAAA,OAE3E,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG;AAAA;AAAA;AAAA,KAGtC,IAAI,GAAG,IAAI,CAAC,OAAO;AAAA;AAAA,QAEhB,MAAM;AAAA;AAAA,SAEL,CAAC;AAAA;AAAA,OAEH,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAAA;AAAA;AAAA,MAG9B,EAAE,EAAE,qBAAqB;AAAA;AAAA,IAE3B,IAAI,GAAG,IAAI,CAAC,OAAO,MAAM,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;AAAA,QAC9E,QAAQ,EAAE,UAAU,EAAE,EAAE;AAAA,YACpB,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,SAAS,EAAE,oBAAoB,GAAG,EAAE;AAAA,YAChE,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,GAAG,YAAY;AAAA;AAAA;AAAA;AAAA,IAIpE,MAAM,CAAC,IAAI;AAAA;AAAA;;AC9Bf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,GAIhC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK;AAAA,GACvD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK;AAAA;AAEhD,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,KAC5D,GAAG,CAAC,MAAM;AAAA;AAAA,IAEX,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA,OAExD,EAAE,CAAC,UAAU,CAAC,KAAK;AAAA,IACtB,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,KAAK,EAAE,MAAM,OAAO,EAAE,OAAO;AAAA,IACpE,IAAI,GAAG,IAAI,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG;AAAA,IAC7D,IAAI,GAAG,IAAI,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG;AAAA,IAC7D,IAAI,GAAG,IAAI,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG;AAAA;AAAA,IAE7D,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,IACzD,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,IAC9D,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA,OAE5D,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,MAAM,EAAE,EAAE,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI;AAAA,OAChE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI;AAAA,OACjE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;AAAA,QAClE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;AAAA,IACnC,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,IAClE,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA,IAE9D,MAAM,CAAC,IAAI;AAAA;AAAA;;AC9Bf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAGnC,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,KAC7D,GAAG,CAAC,MAAM;AAAA;AAAA;AAAA,KAGV,IAAI,GAAG,IAAI,CAAC,OAAO;AAAA,iBACP,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AAAA;AAAA,SAE9B,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;AAAA,QAC3C,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;AAAA,SAC9B,CAAC,UAAU,UAAU,CAAC,WAAW,CAAC,KAAK;AAAA,MAC1C,CAAC,UAAU,MAAM;AAAA;AAAA;AAAA,MAGjB,EAAE,EAAE,QAAQ;AAAA;AAAA;AAAA,IAGd,IAAI,GAAG,IAAI,CAAC,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AAAA,QACrD,QAAQ,EAAE,UAAU,EAAE,EAAE;AAAA,YACpB,GAAG,CAAC,EAAE,GAAG,EAAE;AAAA;AAAA,eAER,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAAA,0BAC/B,GAAG,EAAE,OAAO,KAAK,CAAC,SAAS,GAAG;AAAA,YAC5C,EAAE,GAAG,EAAE,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO;AAAA;AAAA,eAEpE,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI;AAAA,YAC3B,EAAE,GAAG,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAAA;AAAA,YAErB,EAAE,GAAG,EAAE,CAAC,OAAO,MAAM,CAAC,IAAI,EAAE,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK;AAAA,YAChE,EAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,MAAM,OAAO;AAAA;AAAA,YAEvE,EAAE,GAAG,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;AAAA,eAC3B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAAA,YACxE,EAAE,GAAG,EAAE,CAAC,OAAO;AAAA,mBACR,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE;AAAA,gBAC5B,QAAQ,EAAE,UAAU,EAAE,EAAE;AAAA,oBACpB,GAAG,CAAC,GAAG,GAAG,EAAE;AAAA,uBACT,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAAA,oBAC7C,GAAG,GAAG,GAAG,CAAC,OAAO,MAAM,EAAE,IAAI,CAAC;AAAA,oBAC9B,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAAA,oBACvB,MAAM,CAAC,GAAG;AAAA;AAAA;AAAA,YAGlB,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,KAAK,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,UAAU,IAAI,OAAO,EAAE,OAAO;AAAA;AAAA,IAE1G,MAAM,CAAC,IAAI;AAAA;;AChDf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,GAIhC,OAAO,CAAC,QAAQ,GAAG,GAAG,EAAE,IAAI,GAAG,MAAM;AAAA;AAExC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,KAC5D,GAAG,CAAC,MAAM;AAAA;AAAA;AAAA,KAGV,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;AAAA,UACnB,CAAC,CAAC,CAAC;AAAA,kBACK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG;AAAA;AAAA,YAExE,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,SAAS,EAAE,WAAW;AAAA,QAC7F,CAAC;AAAA;AAAA;AAAA,OAGF,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,SAAS,EAAE,WAAW;AAAA,MACrD,CAAC,CAAC,QAAQ;AAAA;AAAA;AAAA,OAGT,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;AAAA,IAC1E,IAAI,MAAM,CAAC;AAAA;AAAA,IAEX,IAAI,GAAG,IAAI,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AAAA,QAClF,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE;AAAA,YACxB,GAAG,CAAC,SAAS,GAAG,EAAE;AAAA,gBACd,QAAQ,GAAG,EAAE;AAAA;AAAA,YAEjB,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS;AAAA,YACnD,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,SAAS;AAAA,YACtD,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS;AAAA,YACjD,SAAS,GAAG,SAAS,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,QAAQ;AAAA,YACpE,SAAS,GAAG,SAAS,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,UAAU;AAAA;AAAA,YAEvE,SAAS,KAAK,GAAG,EAAE,IAAI,KAAK,SAAS,KAAK,CAAC,EAAE,IAAI,GAAG,GAAG;AAAA;AAAA,YAEvD,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,IAAI,QAAQ;AAAA;AAAA;AAAA;AAAA,OAInF,SAAS,EAAE,KAAK,CAAC,QAAQ;AAAA,IAC5B,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC;AAAA;AAAA,IAEvB,MAAM,CAAC,IAAI;AAAA;;AC9Cf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,QAK3B,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK;AAAA;AAAA,QAEhD,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAAA,OAChE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK;AAAA;AAAA,WAEtD,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM;AAAA;AAAA,SAE3C,IAAI,CAAC,SAAS,CAAC,EAAE;AAAA;AAAA,YAEd,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;AAAA;AAAA,MAE9D,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG;AAAA,MACzD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS;AAAA,MAC7D,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG;AAAA;AAAA,OAEzC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AAAA;AAAA,eAEhD,IAAI,KAAK,GAAG;AAAA;AAAA,SAElB,KAAK,CAAC,EAAE;AAAA;AAAA,eAEF,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;AAAA;AAErC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,QAAQ,EAAE,IAAI;AAAA,KACzC,GAAG,CAAC,MAAM;AAAA;AAAA;AAAA,KAGV,IAAI,GAAG,IAAI,CAAC,OAAO;AAAA,sBACF,SAAS,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;AAAA,mBAClD,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE;AAAA,iBACpB,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK;AAAA,QAC3B,CAAC;AAAA,iBACQ,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU;AAAA;AAAA,MAEpD,CAAC,UAAU,QAAQ,CAAC,MAAM;AAAA;AAAA,MAE1B,EAAE,EAAE,QAAQ;AAAA;AAAA;AAAA,IAGd,IAAI,GAAG,IAAI,CAAC,OAAO,mBAAmB,CAAC,SAAS,CAAC,MAAM,EAAE;AAAA,QACrD,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAAA,YAC5B,GAAG,CAAC,CAAC,GAAG,EAAE;AAAA,YACV,CAAC,GAAG,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,UAAU;AAAA,YACtD,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,QAAQ,CAAC,UAAU;AAAA,YACrD,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,CAAC;AAAA,YACtC,MAAM,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI;AAAA;AAAA;AAAA,IAG1C,MAAM,CAAC,IAAI;AAAA;AAAA;;ACtDf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,GAIhC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAAA;AAE7B,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,QAAQ,EAAE,IAAI;AAAA,KACrC,GAAG,CAAC,MAAM;AAAA;AAAA,OAER,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAAA,IACxB,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,WAAW;AAAA;AAAA,OAErD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS;AAAA,IACrC,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAAA;AAAA,OAE7B,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;AAAA,IAC7D,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAAA,QAC5B,QAAQ,EAAE,UAAU,EAAE,EAAE;AAAA,YACpB,GAAG,CAAC,WAAW,GAAG,EAAE;AAAA,gBAChB,SAAS,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,MAAM,WAAW;AAAA;AAAA,eAExD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA,YAC1C,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC;AAAA,gBAC5B,WAAW;AAAA;AAAA;AAAA,YAGf,MAAM,CAAC,WAAW;AAAA;AAAA;AAAA;AAAA,OAIvB,KAAK,CAAC,EAAE,CAAC,SAAS;AAAA,IACrB,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,eAAe,WAAW;AAAA,IACnD,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAAA;AAAA,IAEzB,MAAM,CAAC,IAAI;AAAA;AAAA;;ACnCf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,GAIhC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO;AAAA;AAE7E,QAAQ,CAAC,SAAS,EAAE,mBAAmB,GAAG,QAAQ,EAAE,IAAI;AAAA,KACnD,GAAG,CAAC,MAAM;AAAA,OACR,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM;AAAA,OACpE,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS;AAAA,IACvC,IAAI,GAAG,IAAI,CAAC,OAAO,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG;AAAA;AAAA,OAE5D,MAAM,CAAC,KAAK,GAAG,CAAC;AAAA,IACnB,IAAI,GAAG,IAAI,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE;AAAA;AAAA,IAE9C,MAAM,CAAC,IAAI;AAAA;;AChBf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,GAIhC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS;AAAA;AAAA,GAElF,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,GAAG,QAAQ;AAAA;AAAA,MAE7E,IAAI,GAAG,gBAAgB,CAAC,IAAI,MAAM,IAAI;AAAA,MACtC,IAAI,GAAG,gBAAgB,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI;AAAA;AAAA,MAEnD,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW;AAAA,GAClE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AAAA;AAEnE,QAAQ,CAAC,SAAS,EAAE,sBAAsB,GAAG,QAAQ,EAAE,IAAI;AAAA,KACtD,GAAG,CAAC,MAAM;AAAA,IACX,IAAI,GAAG,IAAI,CAAC,OAAO,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,wBAAwB;AAAA,IACvE,IAAI,GAAG,IAAI,CAAC,OAAO,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,wBAAwB;AAAA,IACxF,MAAM,CAAC,IAAI;AAAA;;ACnBf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,GAIhC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;AAAA,GAC1D,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ;AAAA,GACxD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ;AAAA;AAE3C,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,QAAQ,EAAE,IAAI;AAAA,KAC1C,GAAG,CAAC,MAAM;AAAA;AAAA,OAER,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG;AAAA,OAC5C,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;AAAA,IACvC,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,GAAG;AAAA;AAAA,OAE5B,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;AAAA,IACtC,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE;AAAA,IAC9B,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE;AAAA;AAAA,OAE3B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ;AAAA,IACpD,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK;AAAA;AAAA,OAE5D,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI;AAAA;AAAA,QAE5B,IAAI;AAAA,SACH,CAAC,EAAE,OAAO;AAAA,kBACD,OAAO,CAAC,IAAI;AAAA;AAAA;AAAA,IAG1B,MAAM,CAAC,IAAI;AAAA;AAAA;;AC9Bf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,IAK/B,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG;AAAA;AAAA,IAE9C,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;AAAA,MAC7D,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE;AAAA,MAC5D,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAAA;AAAA,OAE1D,CAAC,CAAC,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG;AAAA,SACtE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG;AAAA,WACvE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA;AAAA,IAEzE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI;AAAA,IAChE,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK;AAAA;AAAA;AAG3C,QAAQ,CAAC,SAAS,EAAE,kBAAkB,GAAG,QAAQ,EAAE,IAAI;AAAA,KAClD,GAAG,CAAC,MAAM;AAAA;AAAA,IAEX,GAAG,CAAC,MAAM;AAAA,QACN,QAAQ,EAAE,EAAE;AAAA,YACR,MAAM,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC;AAAA;AAAA,QAEjC,QAAQ,EAAE,EAAE;AAAA,YACR,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE;AAAA;AAAA,QAE/C,QAAQ,EAAE,EAAE;AAAA,YACR,MAAM,CAAC,EAAE;AAAA;AAAA;AAAA;AAAA,IAIjB,IAAI,IAAI,MAAM,KAAK,IAAI;AAAA;AAAA,IAEvB,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE;AAAA,QAClC,EAAE,EAAE,EAAE;AAAA,eACC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM;AAAA,YACnC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE;AAAA,UAC/C,IAAI,CAAC,EAAE,EAAE,EAAE;AAAA,eACN,KAAK,KAAK,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK;AAAA,YACzC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM;AAAA,eAChB,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG;AAAA,YACpC,EAAE;AAAA,gBACE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE;AAAA,oBAClB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE;AAAA,wBACnB,MAAM,CAAC,CAAC,EAAE,EAAE;AAAA;AAAA;AAAA,QAG5B,MAAM,CAAC,EAAE;AAAA;AAAA;AAAA,IAGb,IAAI,KAAK,CAAC,CAAC,IAAI,MAAM,IAAI,UAAU,IAAI,MAAM,CAAC;AAAA,IAC9C,IAAI,GAAG,IAAI,CAAC,OAAO,QAAQ,CAAC,YAAY,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;AAAA;AAAA,IAE/E,MAAM,CAAC,IAAI;AAAA;AAAA;;ACzDf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,GAIhC,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,GAAG,GAAG,MAAM,MAAM,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAI;AAAA,GAClE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM;AAAA;AAEzE,QAAQ,CAAC,SAAS,EAAE,qCAAqC,GAAG,QAAQ,EAAE,IAAI;AAAA,KACrE,GAAG,CAAC,MAAM;AAAA;AAAA,OAER,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AAAA,QAC1D,SAAS,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG;AAAA,IACxD,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,2CAA2C,CAAC,MAAM,EAAE;AAAA;AAAA,IAEvE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU;AAAA,QAC3C,GAAG,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;AAAA,QACtD,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC;AAAA,QAClD,MAAM,CAAC,GAAG;AAAA;AAAA;AAAA,IAGd,MAAM,CAAC,IAAI;AAAA;;ACrBf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,GAIhC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI;AAAA,GAC1D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;AAAA,GACzD,OAAO;AAAA,MACJ,IAAI;AAAA,OACH,GAAG,CAAC,WAAW,CAAC,CAAC;AAAA,SACf,IAAI,EAAE,KAAK,IAAI,CAAC;AAAA,OAClB,GAAG;AAAA;AAAA;AAGV,QAAQ,CAAC,SAAS,EAAE,gBAAgB,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,KAClE,GAAG,CAAC,MAAM;AAAA;AAAA,IAEX,IAAI,MAAM,CAAC;AAAA;AAAA,IAEX,IAAI,GAAG,IAAI,CAAC,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;AAAA,QACnD,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE;AAAA,YACxB,GAAG,CAAC,QAAQ,GAAG,EAAE;AAAA,gBACb,SAAS,GAAG,EAAE;AAAA,gBACd,GAAG,KAAK,CAAC;AAAA;AAAA,YAEb,EAAE,EAAE,OAAO,CAAC,uBAAuB;AAAA,gBAC/B,GAAG;AAAA;AAAA;AAAA,YAGP,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,SAAS;AAAA,YACtD,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS;AAAA,YACjD,SAAS,GAAG,SAAS,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,QAAQ;AAAA,YACpE,SAAS,GAAG,SAAS,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,UAAU;AAAA;AAAA,YAEvE,SAAS,KAAK,GAAG,EAAE,IAAI,KAAK,QAAQ,KAAK,KAAK,MAAM,QAAQ,qBAAqB,SAAS,GAAG,GAAG,MAAM,IAAI,GAAG,GAAG;AAAA;AAAA,YAEhH,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA,OAIvE,SAAS,EAAE,KAAK,CAAC,QAAQ;AAAA,IAC5B,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC;AAAA;AAAA,IAEvB,MAAM,CAAC,IAAI;AAAA;AAAA;;AC3Cf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAGnC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,KAC3D,GAAG,CAAC,MAAM;AAAA,IACX,IAAI,GAAG,IAAI,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AAAA,IAClC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA;;ACPnE;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAGnC,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,KAC7D,GAAG,CAAC,MAAM;AAAA;AAAA,IAEX,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE;AAAA,QAC3B,GAAG,CAAC,SAAS,GAAG,EAAE;AAAA;AAAA,WAEf,IAAI,CAAC,MAAM,CAAC,KAAK;AAAA,QACpB,SAAS,GAAG,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAAA,QAC1C,SAAS,GAAG,SAAS,CAAC,OAAO,IAAI,CAAC;AAAA;AAAA,WAE/B,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK;AAAA,QAC7B,SAAS,GAAG,SAAS,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC;AAAA;AAAA,WAElC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AAAA,QACpE,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA;AAAA,QAEzE,MAAM,CAAC,SAAS;AAAA;AAAA;;ACpBxB;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAGnC,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,KAChE,GAAG,CAAC,MAAM;AAAA;AAAA,OAER,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU;AAAA,IACxD,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAAA;AAAA,OAE7B,OAAO,CAAC,IAAI,CAAC,MAAM;AAAA,OACnB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO;AAAA,OAClE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM;AAAA,QAClE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO;AAAA,OACtE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAAA,OACjE,IAAI,CAAC,KAAK;AAAA,MACX,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK;AAAA,MAC9J,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK;AAAA;AAAA,OAErJ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAAA,UAC/B,GAAG;AAAA,YACD,GAAG;AAAA,WACJ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ;AAAA,aACnC,GAAG;AAAA,WACL,GAAG;AAAA;AAAA,OAEP,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG;AAAA,OACvE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ;AAAA,OACtC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;AAAA,OACxE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG;AAAA;AAAA,OAElE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK;AAAA;AAAA,KAEtD,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO;AAAA,eACb,IAAI,CAAC,EAAE,EAAE,CAAC;AAAA,cACX,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;AAAA,QAC7B,YAAY,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC;AAAA,MACjC,CAAC,QAAQ,IAAI,CAAC,KAAK;AAAA,QACjB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG;AAAA,QACrC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ;AAAA,QACnD,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG;AAAA,QAC7B,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,IAAI;AAAA,SAC7B,CAAC,SAAS,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO;AAAA,eACzB,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ;AAAA,MAClE,EAAE,CAAC,QAAQ;AAAA;AAAA,IAEb,IAAI,GAAG,IAAI,CAAC,OAAO,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA;AAAA,OAG/M,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC;AAAA;AAAA;AAAA;AAAA,KAI9D,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO;AAAA,eACb,IAAI,CAAC,EAAE,EAAE,CAAC;AAAA,cACX,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;AAAA,QAC7B,YAAY,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC;AAAA,MACjC,CAAC,QAAQ,IAAI,CAAC,KAAK;AAAA,QACjB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG;AAAA,QACrC,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ;AAAA,QAClD,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG;AAAA,QAC7B,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,IAAI;AAAA,SAC7B,CAAC,SAAS,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO;AAAA,eACzB,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ;AAAA,MAClE,EAAE,CAAC,QAAQ;AAAA;AAAA,IAEb,IAAI,GAAG,IAAI,CAAC,OAAO,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA,OAErP,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;AAAA,OACvE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW;AAAA;AAAA;AAAA,KAG1C,IAAI,GAAG,IAAI,CAAC,OAAO;AAAA,eACT,IAAI,CAAC,EAAE,EAAE,CAAC;AAAA,MACnB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AAAA,SAClC,CAAC,CAAC,CAAC;AAAA,QACJ,EAAE,QAAQ,KAAK,CAAC,GAAG,IAAI,CAAC;AAAA,MAC1B,CAAC,QAAQ,IAAI,CAAC,KAAK;AAAA;AAAA,iBAER,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG;AAAA,QAC7B,CAAC;AAAA,SACA,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AAAA;AAAA,MAEvC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA,IAE5D,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA,OAEhI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ;AAAA;AAAA;AAAA,KAG3C,IAAI,GAAG,IAAI,CAAC,OAAO;AAAA,eACT,IAAI,CAAC,EAAE,EAAE,CAAC;AAAA,MACnB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AAAA,SAClC,CAAC,CAAC,CAAC,OAAO,SAAS,EAAE,WAAW,GAAG,CAAC;AAAA;AAAA,WAElC,CAAC,MAAM,CAAC;AAAA;AAAA,QAEX,CAAC;AAAA,SACA,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AAAA;AAAA,MAEvC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA,IAE5D,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA,OAEhI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,UAAU,GAAG;AAAA;AAAA;AAAA,KAGvD,IAAI,GAAG,IAAI,CAAC,OAAO;AAAA;AAAA,MAElB,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AAAA;AAAA,eAE5B,IAAI,CAAC,EAAE,EAAE,CAAC;AAAA,SAChB,CAAC,CAAC,CAAC,OAAO,SAAS,EAAE,WAAW,GAAG,CAAC;AAAA;AAAA,mBAE1B,CAAC;AAAA,QACZ,CAAC;AAAA,MACH,CAAC;AAAA;AAAA,QAEC,CAAC;AAAA,SACA,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AAAA;AAAA,MAEvC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA,IAE5D,IAAI,GAAG,IAAI,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA,OAErI,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ;AAAA,IACpE,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAAA,IAChC,MAAM,CAAC,IAAI;AAAA;AAAA;AAAA;;AC/Hf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAGnC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,KACzD,GAAG,CAAC,MAAM;AAAA;AAAA,OAER,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;AAAA,OACtB,MAAM,CAAC,CAAC;AAAA;AAAA;AAAA,OAGR,MAAM,CAAC,CAAC;AAAA;AAAA;AAAA,IAGX,IAAI,GAAG,IAAI,CAAC,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE;AAAA,QAC5C,QAAQ,EAAE,UAAU,EAAE,EAAE;AAAA,YACpB,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,KAAK,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC,EAAE;AAAA,YAC/D,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,OAAO,EAAE,IAAI,OAAO,EAAE,OAAO;AAAA;AAAA;AAAA,IAGzF,IAAI,GAAG,IAAI,CAAC,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE;AAAA,QAC5C,QAAQ,EAAE,UAAU,EAAE,EAAE;AAAA,YACpB,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,KAAK,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC,EAAE;AAAA,YAC/D,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,OAAO,EAAE,IAAI,OAAO,EAAE,OAAO;AAAA;AAAA;AAAA,OAGtF,GAAG,CAAC,KAAK,CAAC,OAAO;AAAA,UACd,MAAM,CAAC,CAAC;AAAA,WACP,MAAM,CAAC,CAAC;AAAA,WACR,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAAA;AAAA,eAExB,MAAM,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA,KAIlB,IAAI,GAAG,IAAI,CAAC,OAAO;AAAA,UACd,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC;AAAA,QAChC,CAAC;AAAA,mBACU,CAAC,GAAG,MAAM,CAAC,IAAI;AAAA,QAC1B,CAAC;AAAA,iBACQ,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO;AAAA,MAC5C,CAAC;AAAA,MACD,EAAE,EAAE,QAAQ;AAAA;AAAA;AAAA,IAGd,IAAI,GAAG,IAAI,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE;AAAA,QACrD,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE;AAAA,YACxB,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO;AAAA,gBAC3D,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,MAAM,QAAQ,CAAC,EAAE,WAAW,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM;AAAA;AAAA,YAExF,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA;AAAA,IAGvE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAAA,QACf,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC,MAAM,WAAW;AAAA;AAAA;AAAA,IAG9C,MAAM,CAAC,IAAI;AAAA;;ACzDf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,GAKhC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI;AAAA;AAEhD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,KACxD,GAAG,CAAC,MAAM;AAAA;AAAA,IAEX,GAAG,CAAC,aAAa,GAAG,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAAA;AAAA,QAEhE,UAAU,GAAG,EAAE;AAAA,QACf,GAAG,CAAC,OAAO,GAAG,EAAE;AAAA,YACZ,MAAM,GAAG,EAAE,CAAC,WAAW;AAAA,YACvB,GAAG,GAAG,EAAE;AAAA,YACR,KAAK,GAAG,EAAE;AAAA,YACV,KAAK,GAAG,OAAO,CAAC,KAAK;AAAA,YACrB,OAAO,GAAG,OAAO,CAAC,OAAO;AAAA;AAAA,QAE7B,EAAE,GAAG,KAAK;AAAA,YACN,KAAK;AAAA;AAAA;AAAA,QAGT,EAAE,EAAE,GAAG,WAAW,GAAG,KAAK,IAAI;AAAA,YAC1B,EAAE,EAAE,MAAM,WAAW,MAAM,KAAK,IAAI;AAAA,mBAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM;AAAA,gBACpD,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC;AAAA;AAAA,YAElD,GAAG,SAAS,MAAM;AAAA;AAAA,YAElB,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,OAAO,SAAS;AAAA,gBACnC,GAAG,GAAG,KAAK,CAAC,MAAM;AAAA,gBAClB,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,OAAO,SAAS;AAAA,oBACrC,KAAK,GAAG,OAAO,CAAC,MAAM;AAAA;AAAA;AAAA,YAG9B,IAAI;AAAA,gBACA,MAAM,CAAC,UAAU;AAAA;AAAA;AAAA;AAAA,QAIzB,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI;AAAA,QACtC,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;AAAA,QAC/C,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,OAAO;AAAA;AAAA,WAElD,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM;AAAA,WAC5D,SAAS,CAAC,IAAI,CAAC,GAAG;AAAA;AAAA,UAEnB,EAAE,EAAE,KAAK;AAAA,QACX,KAAK,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI;AAAA,QAClC,KAAK,GAAG,gBAAgB,CAAC,KAAK,IAAI,CAAC;AAAA,QACnC,MAAM,MAAM,KAAK,MAAM,KAAK;AAAA;AAAA;AAAA,QAG5B,MAAM;AAAA;AAAA,QAEN,MAAM,CAAC,MAAM;AAAA;AAAA;AAAA;AAAA,OAId,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE;AAAA;AAAA,KAE9D,IAAI,GAAG,IAAI,CAAC,OAAO;AAAA,eACT,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AAAA;AAAA,iBAEpB,GAAG,CAAC,IAAI,IAAI,CAAC;AAAA;AAAA;AAAA,gBAGd,GAAG,CAAC,QAAQ,CAAC,KAAK;AAAA,SACzB,CAAC,YAAY,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM;AAAA;AAAA;AAAA,iBAG5C,EAAE,IAAI,CAAC;AAAA;AAAA,qBAEH,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc;AAAA,MACzC,CAAC,CAAC,aAAa;AAAA;AAAA,IAEjB,IAAI,GAAG,IAAI,CAAC,OAAO,qBAAqB,CAAC,yBAAyB,CAAC,EAAE,aAAa;AAAA;AAAA,OAE/E,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,KAAK;AAAA,OAC5D,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC;AAAA;AAAA,KAE9B,IAAI,GAAG,IAAI,CAAC,OAAO;AAAA,eACT,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AAAA;AAAA,iBAEpB,GAAG,CAAC,IAAI,IAAI,CAAC;AAAA;AAAA,MAExB,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS;AAAA,eAClC,OAAO,CAAC,KAAK;AAAA,QACpB,CAAC;AAAA,eACM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK;AAAA,SAC9B,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC;AAAA,QACzB,CAAC;AAAA,eACM,CAAC;AAAA,iBACC,KAAK,CAAC,IAAI,IAAI,CAAC;AAAA,gBAChB,KAAK,IAAI,CAAC;AAAA,MACpB,CAAC,OAAO,QAAQ,CAAC,KAAK;AAAA,QACpB,CAAC;AAAA,eACM,KAAK,CAAC,EAAE,CAAC,QAAQ;AAAA;AAAA;AAAA,MAG1B,CAAC,CAAC,aAAa;AAAA;AAAA,IAEjB,IAAI,GAAG,IAAI,CAAC,OAAO,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,aAAa;AAAA;AAAA,IAEvG,MAAM,CAAC,IAAI;AAAA;;AC3Gf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAGnC,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,QAAQ,EAAE,IAAI;AAAA,KAC9C,GAAG,CAAC,MAAM;AAAA,QACP,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK;AAAA,IACzB,IAAI,GAAG,IAAI,CAAC,OAAO,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAAA,UAClD,MAAM,EAAE,CAAC,EAAE,MAAM;AAAA;AAAA,IAEvB,IAAI,GAAG,IAAI,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAAA,UAC1C,EAAE,EAAE,CAAC,EAAE,EAAE;AAAA;AAAA,IAEf,MAAM,CAAC,IAAI;AAAA;;ACbf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,GAIhC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK;AAAA;AAE9D,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,KACvD,GAAG,CAAC,MAAM;AAAA;AAAA;AAAA,OAGR,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;AAAA,OACxE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK;AAAA,QACzB,KAAK,CAAC,OAAO;AAAA,QACb,OAAO,EAAE,MAAM;AAAA;AAAA,IAEnB,GAAG,CAAC,gBAAgB,GAAG,QAAQ,EAAE,OAAO;AAAA,WACjC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;AAAA,WAChE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;AAAA,WAChE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;AAAA;AAAA,WAEvD,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK;AAAA,WACjE,SAAS,CAAC,IAAI,CAAC,IAAI;AAAA;AAAA,cAEhB,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO;AAAA,cAChC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO;AAAA,cACjC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI;AAAA;AAAA,WAEhB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;AAAA,WACnE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ;AAAA;AAAA,WAElC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAAA,WACjE,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE;AAAA,WAC/D,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS;AAAA,WAC7D,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAAA,WAC7D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAAA,WAC7D,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;AAAA;AAAA,QAE5C,OAAO,CAAC,UAAU;AAAA;AAAA,WAEf,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK;AAAA,QAC5B,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;AAAA;AAAA,WAErC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;AAAA,QACxC,OAAO,MAAM,CAAC;AAAA;AAAA;AAAA,SAGb,QAAQ,GAAG,QAAQ,CAAC,OAAO;AAAA,WACzB,CAAC,YAAY,OAAO,CAAC,IAAI,IAAI,CAAC;AAAA,cAC3B,CAAC,YAAY,OAAO,CAAC,UAAU,IAAI,CAAC;AAAA,iBACjC,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC;AAAA,aACvC,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;AAAA,WACpC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,cACF,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AAAA,UACnC,EAAE,EAAE,QAAQ;AAAA;AAAA,QAEd,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE;AAAA,YAChH,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAAA,gBAChC,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO;AAAA,kBAC3D,EAAE,GAAG,WAAW;AAAA;AAAA,gBAElB,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;AAAA,oBACjC,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,kBAChE,IAAI;AAAA,uBACC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK;AAAA,oBAC1B,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,oBACzD,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,IAAI;AAAA,oBAC7C,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA;AAAA,gBAGjE,MAAM,GAAG,EAAE,KAAK,IAAI,MAAM,EAAE,EAAE,CAAC;AAAA;AAAA;AAAA;AAAA,WAIpC,SAAS,EAAE,KAAK,CAAC,QAAQ;AAAA,QAC5B,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAAA;AAAA,QAE/B,OAAO,CAAC,UAAU;AAAA,QAClB,MAAM,CAAC,OAAO;AAAA;AAAA;AAAA;AAAA,OAIf,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG;AAAA,OACvD,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK;AAAA,IAC/C,IAAI,MAAM,CAAC;AAAA;AAAA,OAER,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA,KAGtD,GAAG,CAAC,UAAU;AAAA,mBACA,CAAC,GAAG,KAAK,CAAC,IAAI;AAAA,kBACf,CAAC;AAAA,SACV,CAAC,CAAC,CAAC,SAAS,SAAS,EAAE,WAAW,GAAG,CAAC;AAAA,aAClC,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;AAAA,QAC7C,CAAC;AAAA;AAAA,QAED,CAAC;AAAA,kBACS,CAAC;AAAA,MACb,CAAC,UAAU,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE;AAAA;AAAA,MAE7C,CAAC,CAAC,CAAC;AAAA,SACA,CAAC;AAAA,kBACQ,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;AAAA,QACzD,CAAC;AAAA,eACM,CAAC,QAAQ,CAAC;AAAA;AAAA;AAAA,OAGlB,CAAC;AAAA;AAAA,IAEJ,GAAG,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE;AAAA;AAAA,IAE7G,EAAE,EAAE,OAAO,CAAC,UAAU;AAAA,QAClB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE;AAAA,YACvD,GAAG,CAAC,IAAI,GAAG,EAAE;AAAA,gBACT,QAAQ,IAAI,EAAE,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE;AAAA;AAAA,eAEnD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAAA,eAC9D,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS;AAAA,YACtD,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA;AAAA,YAEtC,GAAG,CAAC,MAAM,GAAG,gBAAgB,CAAC,IAAI;AAAA;AAAA,eAE/B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS;AAAA,eAC9D,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM;AAAA,eAC3D,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ;AAAA,eAC7D,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;AAAA,YACrC,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC;AAAA,YAC3B,MAAM,SAAS,QAAQ,SAAS,MAAM,UAAU,QAAQ,MAAM,CAAC;AAAA,YAC/D,MAAM,CAAC,MAAM;AAAA;AAAA,MAEnB,IAAI;AAAA,QACF,SAAS,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;AAAA;AAAA,QAElH,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAAA;AAAA,mBAEhD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAAA,mBAC9D,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS;AAAA,YAC1D,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,gBACpC,QAAQ,IAAI,EAAE,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE;AAAA,gBAClD,MAAM,GAAG,gBAAgB,CAAC,IAAI;AAAA;AAAA,YAElC,MAAM,CAAC,EAAE,SAAS,QAAQ,MAAM,CAAC,IAAI,MAAM,UAAU,QAAQ,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA,OAIzE,SAAS,EAAE,KAAK,CAAC,QAAQ;AAAA,IAC5B,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC;AAAA;AAAA,IAEvB,MAAM,CAAC,IAAI;AAAA;;ACpJf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,GAIhC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAAA;AAElD,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,QAAQ,EAAE,IAAI;AAAA,KACvC,GAAG,CAAC,MAAM;AAAA;AAAA,OAER,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAAA,kBAC/B,GAAG,EAAE,OAAO,KAAK,CAAC,SAAS,GAAG;AAAA,IAC5C,IAAI,GAAG,IAAI,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,SAAS,EAAE,WAAW;AAAA;AAAA,OAErE,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI;AAAA,IAC3B,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAAA;AAAA,IAEzB,MAAM,CAAC,IAAI;AAAA;;ACjBf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAMnC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,KAC5D,GAAG,CAAC,MAAM;AAAA;AAAA,OAER,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK;AAAA,IACnC,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;AAAA,IAC3B,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC;AAAA;AAAA,IAE3B,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAAA,QAC5B,QAAQ;AAAA;AAAA,QAER,IAAI,EAAE,CAAC,EAAE,IAAI;AAAA,IACjB,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM;AAAA,IACtB,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;AAAA,QACtB,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;AAAA;AAAA,WAEd,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;AAAA,QACrC,EAAE,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAAA,YAC5B,QAAQ,CAAC,IAAI,CAAC,GAAG;AAAA;AAAA,QAErB,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC;AAAA,YAC1B,GAAG,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,GAAG,EAAE,OAAO,EAAE,OAAO;AAAA,YAC3D,GAAG,GAAG,GAAG,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,YACnC,GAAG,OAAO,CAAC;AAAA,YACX,QAAQ,CAAC,IAAI,CAAC,GAAG;AAAA;AAAA;AAAA;AAAA,QAIrB,SAAS,CAAC,IAAI,CAAC,MAAM;AAAA,IACzB,GAAG,GAAG,QAAQ,CAAC,MAAM;AAAA,IACrB,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;AAAA,WACf,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK;AAAA,QACxC,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC;AAAA,YACtC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;AAAA,YAC7C,SAAS,GAAG,SAAS,CAAC,OAAO,KAAK,CAAC,cAAc,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK;AAAA,YACxE,QAAQ,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;AAAA;AAAA;AAAA;AAAA,IAI7D,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AAAA;;AC7C9B;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,GAIhC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK;AAAA,GACjE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK;AAAA;AAEhD,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,KAC3D,GAAG,CAAC,MAAM;AAAA;AAAA;AAAA,IAGX,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,IAC7D,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,qCAAqC,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,IACzF,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA,OAEvE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;AAAA,OACrD,OAAO,GAAG,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAAA,IACzC,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,IAC1D,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA,OAExD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG;AAAA,OAClD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG;AAAA,OACvD,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG;AAAA,IAC9C,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,IAC7D,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,mBAAmB,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,IACvE,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA;AAAA,OAE/D,EAAE,CAAC,IAAI,CAAC,MAAM;AAAA,IACjB,IAAI,GAAG,IAAI,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC;AAAA;AAAA,IAExC,MAAM,CAAC,IAAI;AAAA;AAAA;;AC/Bf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,GAIhC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI;AAAA,GAClD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG;AAAA,GAC5D,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,SAAS;AAAA,GAC7D,SAAS,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC;AAAA;AAE3B,QAAQ,CAAC,SAAS,EAAE,eAAe,GAAG,QAAQ,EAAE,IAAI;AAAA,KAC/C,GAAG,CAAC,MAAM;AAAA,IACX,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,EAAE;AAAA;;ACZpC;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,GAIhC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAAA,GAChE,IAAI,CAAC,UAAU;AAAA,GACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,GAAG,GAAG,EAAE,QAAQ,CAAC,KAAK;AAAA;AAAA,QAEhD,CAAC,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,GAAG,CAAC;AAAA,MACtD,CAAC;AAAA,IACH,CAAC,sBAAsB,KAAK,EAAE,GAAG,EAAE,OAAO;AAAA,MACxC,CAAC;AAAA,OACA,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAAA,MAC5B,CAAC;AAAA,IACH,CAAC,oBAAoB,KAAK,CAAC,GAAG,CAAC,OAAO;AAAA,MACpC,CAAC;AAAA;AAAA,KAEF,CAAC,mBAAmB,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO;AAAA;AAAA,yBAEpD,KAAK,IAAI,CAAC;AAAA;AAAA,MAE7B,CAAC;AAAA,yBACkB,KAAK,CAAC,EAAE,CAAC,QAAQ;AAAA,OACnC,CAAC;AAAA,IACJ,EAAE;AAAA,GACH,QAAQ;AAAA;AAAA;AAGX,QAAQ,CAAC,SAAS,EAAE,oBAAoB,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;AAAA,KACtE,GAAG,CAAC,MAAM;AAAA;AAAA,OAER,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;AAAA,IAC1E,IAAI,MAAM,CAAC;AAAA;AAAA,IAEX,IAAI,GAAG,IAAI,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE;AAAA,QACxH,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAAA,YAChC,EAAE,GAAG,EAAE,CAAC,WAAW;AAAA,YACnB,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,QAAQ,CAAC,SAAS,EAAE,mBAAmB,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW;AAAA,YACpG,EAAE,EAAE,EAAE;AAAA,mBACC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AAAA,mBAC5C,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK;AAAA,gBAChD,MAAM,CAAC,EAAE,GAAG,EAAE;AAAA,cAChB,IAAI,CAAC,EAAE,EAAE,EAAE;AAAA,gBACT,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI;AAAA;AAAA;AAAA,eAG9C,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;AAAA,YACjD,MAAM;AAAA;AAAA;AAAA;AAAA,OAIX,SAAS,EAAE,KAAK,CAAC,QAAQ;AAAA,IAC5B,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC;AAAA;AAAA,IAEvB,MAAM,CAAC,IAAI;AAAA;;ACvDf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA,GAIhC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AAAA;AAEvD,QAAQ,CAAC,SAAS,EAAE,oBAAoB,GAAG,QAAQ,EAAE,IAAI;AAAA,KACpD,GAAG,CAAC,MAAM;AAAA;AAAA,IAEX,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAAA,QAC3B,QAAQ,EAAE,UAAU,EAAE,EAAE;AAAA,YACpB,GAAG,CAAC,iBAAiB,GAAG,QAAQ,CAAC,EAAE;AAAA,YACnC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,iBAAiB;AAAA;AAAA;AAAA,IAGpD,MAAM,CAAC,IAAI;AAAA;;AChBf;AAAA,GACG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA;AAGnC,GAAG,CAAC,IAAI,GAAG,IAAI;AAAA;AAAA,GAEZ,QAAQ,CAAC,MAAM,CAAC,MAAM;AACzB,EAAE,EAAE,MAAM,CAAC,MAAM,MAAM,SAAS,KAAK,MAAM,CAAC,OAAO;AAAA,IAC/C,MAAM,CAAC,OAAO,GAAG,QAAQ;AAAA;AAAA,GAE1B,GAAG,CAAC,MAAM;AACb,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,MAAM,QAAQ,KAAK,MAAM,CAAC,GAAG;AAAA,IAC/C,MAAM,EAAE,QAAQ,GAAG,QAAQ;AAAA,QACvB,MAAM,CAAC,QAAQ;AAAA;AAAA;AAAA,GAGpB,OAAO,CAAC,OAAO,CAAC,MAAM;AACzB,IAAI;AAAA,IACA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAAA","file":"showdown.js","sourcesContent":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false\r\n };\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// Public API\r\n//\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// API\r\n//\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n//Public methods\r\nshowdown.setOption = function (key, value) {\r\n globalOptions[key] = value;\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Static Method\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\n/**\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n parserOrder = [\r\n 'detab',\r\n 'stripBlankLines',\r\n //runLanguageExtensions,\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n var makeHtml = function (text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n //showdown.forEach(g_output_modifiers, function (x) {\r\n // text = _ExecuteExtension(x, text);\r\n //});\r\n\r\n return text;\r\n };\r\n\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nfunction isString(a) {\r\n return (typeof a === 'string' || a instanceof String);\r\n}\r\n\r\nfunction forEach(obj, callback) {\r\n if (typeof obj.forEach === 'function') {\r\n obj.forEach(callback);\r\n } else {\r\n var i, len = obj.length;\r\n for (i = 0; i < len; i++) {\r\n callback(obj[i], i, obj);\r\n }\r\n }\r\n}\r\n\r\nfunction isArray(a) {\r\n return a.constructor === Array;\r\n}\r\n\r\nfunction isUndefined(value) {\r\n return typeof value === 'undefined';\r\n}\r\n\r\nvar escapeCharactersCallback = function (wholeMatch, m1) {\r\n var charCodeToEscape = m1.charCodeAt(0);\r\n return '~E' + charCodeToEscape + 'E';\r\n};\r\n\r\nvar escapeCharacters = function (text, charsToEscape, afterBackslash) {\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\nif (!showdown.hasOwnProperty('helper')) {\r\n showdown.helper = {};\r\n}\r\n\r\n/**\r\n * isString helper function\r\n * @param a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isString = isString;\r\n\r\n/**\r\n * ForEach helper function\r\n * @param {*} obj\r\n * @param callback\r\n */\r\nshowdown.helper.forEach = forEach;\r\n\r\n/**\r\n * isArray helper function\r\n * @param {*} a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isArray = isArray;\r\n\r\n/**\r\n * Check if value is undefined\r\n *\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 = isUndefined;\r\n\r\n/**\r\n * Callback used to escape characters when passing through String.replace\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 *\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 = escapeCharacters;\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\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 }\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, '*_');\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, 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 (\t\t \t\t\t\t\t// wrap whole match in $1\r\n \\[\r\n ([^\\[\\]]+)\t\t\t\t// link text = $2; can't contain '[' or ']'\r\n \\]\r\n )()()()()()\t\t\t\t\t// 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});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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, _DoAutoLinks_callback());\r\n */\r\n text = text.replace(/<(?:mailto:)?([-.\\w]+\\@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\r\n function (wholeMatch, m1) {\r\n var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1);\r\n return showdown.subParser('encodeEmailAddress')(unescapedStr);\r\n }\r\n );\r\n\r\n return text;\r\n\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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,\r\n 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(\r\n                /(\\s*
    [^\\r]+?<\\/pre>)/gm,\r\n                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 * Created by Estevao on 12-01-2015.\r\n */\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    text = text.replace(/(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))/g,\r\n        function (wholeMatch, m1, m2) {\r\n            var codeblock = m1,\r\n                nextChar = m2;\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 whitespace\r\n\r\n            codeblock = '
    ' + codeblock + '\\n
    ';\r\n\r\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\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 * Created by Estevao on 11-01-2015.\r\n */\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,\r\n 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 * Created by Estevao on 11-01-2015.\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,\r\n 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\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 * Created by Estevao on 11-01-2015.\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 * Created by Estevao on 11-01-2015.\r\n */\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 * Created by Estevao on 11-01-2015.\r\n */\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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\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\n r > 0.45 ? encode[1](ch) :\r\n 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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\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, '\\\\`*_');\r\n return tag;\r\n });\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\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,\r\n 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\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 * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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 = '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 = '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, 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)\\b[^\\r]*?<\\/\\2>[ \\t]*(?=\\n+)\\n)/gm, 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, 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, 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, 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});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.subParser('headers', function (text, options, globals) {\r\n 'use strict';\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\r\n function (wholeMatch, m1) {\r\n return showdown.subParser('hashBlock')('

    ' +\r\n showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm,\r\n function (matchFound, m1) {\r\n return showdown.subParser('hashBlock')('

    ' +\r\n showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm,\r\n function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n return m.replace(/[^\\w]/g, '').toLowerCase();\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n\r\n/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n }\r\n else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_');\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.subParser('italicsAndBold', function (text) {\r\n 'use strict';\r\n // must go first:\r\n text = text.replace(/(\\*\\*|__)(?=\\S)([^\\r]*?\\S[*_]*)\\1/g,\r\n '$2');\r\n\r\n text = text.replace(/(\\*|_)(?=\\S)([^\\r]*?\\S)\\1/g,\r\n '$2');\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\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 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\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\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 * Created by Estevao on 12-01-2015.\r\n */\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 * Created by Estevao on 12-01-2015.\r\n */\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\r\n /** Wrap

    tags. */\r\n var end = grafs.length;\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 }\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 * Created by Estevao on 11-01-2015.\r\n */\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\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 * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(/^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm,\r\n function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * Created by Estevao on 12-01-2015.\r\n */\r\n\r\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,\r\n function (wholeMatch, m1) {\r\n var charCodeToReplace = parseInt(m1);\r\n return String.fromCharCode(charCodeToReplace);\r\n }\r\n );\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 15-01-2015.\r\n */\r\n\r\nvar 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\nelse if (typeof define === 'function' && define.amd) {\r\n define('showdown', function () {\r\n return showdown;\r\n });\r\n}\r\n// Regular Browser loader\r\nelse {\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 eb4338d2..9bd6f2e1 100644 --- a/dist/showdown.min.js +++ b/dist/showdown.min.js @@ -1,4 +1,4 @@ /*! showdown 16-01-2015 */ -(function(){"use strict";function a(a){return"string"==typeof a||a instanceof String}function b(a,b){if("function"==typeof a.forEach)a.forEach(b);else{var c,d=a.length;for(c=0;d>c;c++)b(a[c],c,a)}}function c(a){return a.constructor===Array}function d(a){return"undefined"==typeof a}var e={},f={},g={omitExtraWLInCodeBlocks:!1,allowBlockIndents:!0};e.helper={},e.extensions={},e.setOption=function(a,b){return g[a]=b,this},e.subParser=function(a,b){if(e.helper.isString(a)){if("undefined"==typeof b){if(f.hasOwnProperty(a))return f[a];throw Error("SubParser named "+a+" not registered!")}f[a]=b}},e.Converter=function(a){a=a||{};var b=g,c=["detab","stripBlankLines","githubCodeBlocks","hashHTMLBlocks","stripLinkDefinitions","blockGamut","unescapeSpecialChars"];if("object"==typeof a)for(var d in a)a.hasOwnProperty(d)&&(b[d]=a[d]);var e=function(a){if(!a)return a;var d={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n";for(var e=0;e0)){var f=d[c].match(/^(\s)*/)[0].length;(0===e||e>f)&&null!==d[c].match(/[^\s]$/)&&(e=f)}var g="^\\s{"+e+"}";for(c=0;c<=d.length;c++)void 0!==d[c]&&(d[c]=d[c].replace(new RegExp(g),""));return a=d.join("\n\n")}),e.subParser("anchors",function(a,b,c){var d=function(a,b,d,f,g,h,i,j){e.helper.isUndefined(j)&&(j=""),a=b;var k=d,l=f.toLowerCase(),m=g,n=j;if(!m)if(l||(l=k.toLowerCase().replace(/ ?\n/g," ")),m="#"+l,e.helper.isUndefined(c.gUrls[l])){if(!(a.search(/\(\s*\)$/m)>-1))return a;m=""}else m=c.gUrls[l],e.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=e.helper.escapeCharacters(m,"*_");var o='"};return a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,d),a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d),a=a.replace(/(\[([^\[\]]+)\])()()()()()/g,d)}),e.subParser("autoLinks",function(a){return a=a.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'$1'),a=a.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,function(a,b){var c=e.subParser("unescapeSpecialChars")(b);return e.subParser("encodeEmailAddress")(c)})}),e.subParser("blockGamut",function(a,b,c){a=e.subParser("headers")(a,b,c);var d=e.subParser("hashBlock")("
    ",b,c);return a=a.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,d),a=e.subParser("lists")(a,b,c),a=e.subParser("codeBlocks")(a,b,c),a=e.subParser("blockQuotes")(a,b,c),a=e.subParser("hashHTMLBlocks")(a,b,c),a=e.subParser("paragraphs")(a,b,c)}),e.subParser("blockQuotes",function(a,b,c){return a=a.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(a,d){var f=d;return f=f.replace(/^[ \t]*>[ \t]?/gm,"~0"),f=f.replace(/~0/g,""),f=f.replace(/^[ \t]+$/gm,""),f=e.subParser("blockGamut")(f,b,c),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,"")}),e.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)})}),e.subParser("codeBlocks",function(a,b,c){return a+="~0",a=a.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(a,d,f){var g=d,h=f;return g=e.subParser("outdent")(g),g=e.subParser("encodeCode")(g),g=e.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",e.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,"")}),e.subParser("codeSpans",function(a){return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,d){var f=d;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=e.subParser("encodeCode")(f),b+""+f+""})}),e.subParser("detab",function(a){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,"")}),e.subParser("encodeAmpsAndAngles",function(a){return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),e.subParser("encodeBackslashEscapes",function(a){return a=a.replace(/\\(\\)/g,e.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,e.helper.escapeCharactersCallback)}),e.subParser("encodeCode",function(a){return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=e.helper.escapeCharacters(a,"*_{}[]\\",!1)}),e.subParser("encodeEmailAddress",function(a){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,'">')}),e.subParser("escapeSpecialCharsWithinTagAttributes",function(a){var b=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;return a=a.replace(b,function(a){var b=a.replace(/(.)<\/?code>(?=.)/g,"$1`");return b=e.helper.escapeCharacters(b,"\\`*_")})}),e.subParser("githubCodeBlocks",function(a,b,c){return a+="~0",a=a.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,function(a,d,f){var g=d,h=f,i="\n";return b.omitExtraWLInCodeBlocks&&(i=""),h=e.subParser("encodeCode")(h),h=e.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",e.subParser("hashBlock")(h,b,c)}),a=a.replace(/~0/,"")}),e.subParser("hashBlock",function(a,b,c){return a=a.replace(/(^\n+|\n+$)/g,""),"\n\n~K"+(c.gHtmlBlocks.push(a)-1)+"K\n\n"}),e.subParser("hashElement",function(a,b,c){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"}}),e.subParser("hashHTMLBlocks",function(a,b,c){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,e.subParser("hashElement")(a,b,c)),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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/\n\n/g,"\n")}),e.subParser("headers",function(a,b,c){function d(a){return a.replace(/[^\w]/g,"").toLowerCase()}return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){return e.subParser("hashBlock")('

    '+e.subParser("spanGamut")(f,b,c)+"

    ",b,c)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){return e.subParser("hashBlock")('

    '+e.subParser("spanGamut")(f,b,c)+"

    ",b,c)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=e.subParser("spanGamut")(g,b,c),i="'+h+"";return e.subParser("hashBlock")(i,b,c)})}),e.subParser("images",function(a,b,c){var d=function(a,b,d,f,g,h,j,k){a=b;var l=d,m=f.toLowerCase(),n=g,o=k,p=c.gUrls,q=c.gTitles;if(o||(o=""),""===n||null===n){if((""===m||null===m)&&(m=l.toLowerCase().replace(/ ?\n/g," ")),n="#"+m,"undefined"==typeof p[m])return a;n=p[m],"undefined"!=typeof q[m]&&(o=q[m])}l=l.replace(/"/g,"""),n=e.helper.escapeCharacters(n,"*_");var r=''+l+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d)}),e.subParser("italicsAndBold",function(a){return a=a.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"$2"),a=a.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"$2")}),e.subParser("lists",function(a,b,c){var d=function(a){return c.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,d,f,g,h){var i=e.subParser("outdent")(h,b,c);return d||i.search(/\n{2,}/)>-1?i=e.subParser("blockGamut")(i,b,c):(i=e.subParser("lists")(i,b,c),i=i.replace(/\n$/,""),i=e.subParser("spanGamut")(i,b,c)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),c.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.gListLevel?a=a.replace(f,function(a,b,c){var e=b,f=c.search(/[*+-]/g)>-1?"ul":"ol";e=e.replace(/\n{2,}/g,"\n\n\n");var g=d(e);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,e){var f=c.replace(/\n{2,}/g,"\n\n\n"),g=e.search(/[*+-]/g)>-1?"ul":"ol",h=d(f);return b+"<"+g+">\n"+h+"\n"})),a=a.replace(/~0/,"")}),e.subParser("outdent",function(a){return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),e.subParser("paragraphs",function(a,b,c){a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,"");for(var d=a.split(/\n{2,}/g),f=[],g=d.length,h=0;g>h;h++){var i=d[h];i.search(/~K(\d+)K/g)>=0?f.push(i):i.search(/\S/)>=0&&(i=e.subParser("spanGamut")(i,b,c),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=c.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),e.subParser("spanGamut",function(a,b,c){return a=e.subParser("codeSpans")(a,b,c),a=e.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=e.subParser("encodeBackslashEscapes")(a,b,c),a=e.subParser("images")(a,b,c),a=e.subParser("anchors")(a,b,c),a=e.subParser("autoLinks")(a,b,c),a=e.subParser("encodeAmpsAndAngles")(a,b,c),a=e.subParser("italicsAndBold")(a,b,c),a=a.replace(/ +\n/g,"
    \n")}),e.subParser("stripBlankLines",function(a){return a.replace(/^[ \t]+$/gm,"")}),e.subParser("stripLinkDefinitions",function(a,b,c){return a+="~0",a=a.replace(/^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm,function(a,b,d,f,g){return b=b.toLowerCase(),c.gUrls[b]=e.subParser("encodeAmpsAndAngles")(d),f?f+g:(g&&(c.gTitles[b]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),e.subParser("unescapeSpecialChars",function(a){return a=a.replace(/~E(\d+)E/g,function(a,b){var c=parseInt(b);return String.fromCharCode(c)})});var j=this;"undefined"!=typeof module&&module.exports?module.exports=e:"function"==typeof define&&define.amd?define("showdown",function(){return e}):j.showdown=e}).call(this); +(function(){"use strict";function a(a){return"string"==typeof a||a instanceof String}function b(a,b){if("function"==typeof a.forEach)a.forEach(b);else{var c,d=a.length;for(c=0;d>c;c++)b(a[c],c,a)}}function c(a){return a.constructor===Array}function d(a){return"undefined"==typeof a}var e={},f={},g={omitExtraWLInCodeBlocks:!1};e.helper={},e.extensions={},e.setOption=function(a,b){return g[a]=b,this},e.subParser=function(a,b){if(e.helper.isString(a)){if("undefined"==typeof b){if(f.hasOwnProperty(a))return f[a];throw Error("SubParser named "+a+" not registered!")}f[a]=b}},e.Converter=function(a){a=a||{};var b=g,c=["detab","stripBlankLines","githubCodeBlocks","hashHTMLBlocks","stripLinkDefinitions","blockGamut","unescapeSpecialChars"];if("object"==typeof a)for(var d in a)a.hasOwnProperty(d)&&(b[d]=a[d]);var e=function(a){if(!a)return a;var d={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n";for(var e=0;e-1))return a;m=""}else m=c.gUrls[l],e.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=e.helper.escapeCharacters(m,"*_");var o='"};return a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,d),a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d),a=a.replace(/(\[([^\[\]]+)\])()()()()()/g,d)}),e.subParser("autoLinks",function(a){return a=a.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'$1'),a=a.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,function(a,b){var c=e.subParser("unescapeSpecialChars")(b);return e.subParser("encodeEmailAddress")(c)})}),e.subParser("blockGamut",function(a,b,c){a=e.subParser("headers")(a,b,c);var d=e.subParser("hashBlock")("
    ",b,c);return a=a.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,d),a=e.subParser("lists")(a,b,c),a=e.subParser("codeBlocks")(a,b,c),a=e.subParser("blockQuotes")(a,b,c),a=e.subParser("hashHTMLBlocks")(a,b,c),a=e.subParser("paragraphs")(a,b,c)}),e.subParser("blockQuotes",function(a,b,c){return a=a.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(a,d){var f=d;return f=f.replace(/^[ \t]*>[ \t]?/gm,"~0"),f=f.replace(/~0/g,""),f=f.replace(/^[ \t]+$/gm,""),f=e.subParser("blockGamut")(f,b,c),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,"")}),e.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)})}),e.subParser("codeBlocks",function(a,b,c){return a+="~0",a=a.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(a,d,f){var g=d,h=f;return g=e.subParser("outdent")(g),g=e.subParser("encodeCode")(g),g=e.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",e.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,"")}),e.subParser("codeSpans",function(a){return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,d){var f=d;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=e.subParser("encodeCode")(f),b+""+f+""})}),e.subParser("detab",function(a){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,"")}),e.subParser("encodeAmpsAndAngles",function(a){return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),e.subParser("encodeBackslashEscapes",function(a){return a=a.replace(/\\(\\)/g,e.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,e.helper.escapeCharactersCallback)}),e.subParser("encodeCode",function(a){return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=e.helper.escapeCharacters(a,"*_{}[]\\",!1)}),e.subParser("encodeEmailAddress",function(a){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,'">')}),e.subParser("escapeSpecialCharsWithinTagAttributes",function(a){var b=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;return a=a.replace(b,function(a){var b=a.replace(/(.)<\/?code>(?=.)/g,"$1`");return b=e.helper.escapeCharacters(b,"\\`*_")})}),e.subParser("githubCodeBlocks",function(a,b,c){return a+="~0",a=a.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,function(a,d,f){var g=d,h=f,i="\n";return b.omitExtraWLInCodeBlocks&&(i=""),h=e.subParser("encodeCode")(h),h=e.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",e.subParser("hashBlock")(h,b,c)}),a=a.replace(/~0/,"")}),e.subParser("hashBlock",function(a,b,c){return a=a.replace(/(^\n+|\n+$)/g,""),"\n\n~K"+(c.gHtmlBlocks.push(a)-1)+"K\n\n"}),e.subParser("hashElement",function(a,b,c){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"}}),e.subParser("hashHTMLBlocks",function(a,b,c){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,e.subParser("hashElement")(a,b,c)),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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/\n\n/g,"\n")}),e.subParser("headers",function(a,b,c){function d(a){return a.replace(/[^\w]/g,"").toLowerCase()}return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){return e.subParser("hashBlock")('

    '+e.subParser("spanGamut")(f,b,c)+"

    ",b,c)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){return e.subParser("hashBlock")('

    '+e.subParser("spanGamut")(f,b,c)+"

    ",b,c)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=e.subParser("spanGamut")(g,b,c),i="'+h+"";return e.subParser("hashBlock")(i,b,c)})}),e.subParser("images",function(a,b,c){var d=function(a,b,d,f,g,h,j,k){a=b;var l=d,m=f.toLowerCase(),n=g,o=k,p=c.gUrls,q=c.gTitles;if(o||(o=""),""===n||null===n){if((""===m||null===m)&&(m=l.toLowerCase().replace(/ ?\n/g," ")),n="#"+m,"undefined"==typeof p[m])return a;n=p[m],"undefined"!=typeof q[m]&&(o=q[m])}l=l.replace(/"/g,"""),n=e.helper.escapeCharacters(n,"*_");var r=''+l+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d)}),e.subParser("italicsAndBold",function(a){return a=a.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"$2"),a=a.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"$2")}),e.subParser("lists",function(a,b,c){var d=function(a){return c.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,d,f,g,h){var i=e.subParser("outdent")(h,b,c);return d||i.search(/\n{2,}/)>-1?i=e.subParser("blockGamut")(i,b,c):(i=e.subParser("lists")(i,b,c),i=i.replace(/\n$/,""),i=e.subParser("spanGamut")(i,b,c)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),c.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.gListLevel?a=a.replace(f,function(a,b,c){var e=b,f=c.search(/[*+-]/g)>-1?"ul":"ol";e=e.replace(/\n{2,}/g,"\n\n\n");var g=d(e);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,e){var f=c.replace(/\n{2,}/g,"\n\n\n"),g=e.search(/[*+-]/g)>-1?"ul":"ol",h=d(f);return b+"<"+g+">\n"+h+"\n"})),a=a.replace(/~0/,"")}),e.subParser("outdent",function(a){return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),e.subParser("paragraphs",function(a,b,c){a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,"");for(var d=a.split(/\n{2,}/g),f=[],g=d.length,h=0;g>h;h++){var i=d[h];i.search(/~K(\d+)K/g)>=0?f.push(i):i.search(/\S/)>=0&&(i=e.subParser("spanGamut")(i,b,c),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=c.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),e.subParser("spanGamut",function(a,b,c){return a=e.subParser("codeSpans")(a,b,c),a=e.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=e.subParser("encodeBackslashEscapes")(a,b,c),a=e.subParser("images")(a,b,c),a=e.subParser("anchors")(a,b,c),a=e.subParser("autoLinks")(a,b,c),a=e.subParser("encodeAmpsAndAngles")(a,b,c),a=e.subParser("italicsAndBold")(a,b,c),a=a.replace(/ +\n/g,"
    \n")}),e.subParser("stripBlankLines",function(a){return a.replace(/^[ \t]+$/gm,"")}),e.subParser("stripLinkDefinitions",function(a,b,c){return a+="~0",a=a.replace(/^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm,function(a,b,d,f,g){return b=b.toLowerCase(),c.gUrls[b]=e.subParser("encodeAmpsAndAngles")(d),f?f+g:(g&&(c.gTitles[b]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),e.subParser("unescapeSpecialChars",function(a){return a=a.replace(/~E(\d+)E/g,function(a,b){var c=parseInt(b);return String.fromCharCode(c)})});var j=this;"undefined"!=typeof module&&module.exports?module.exports=e:"function"==typeof define&&define.amd?define("showdown",function(){return e}):j.showdown=e}).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 8903f1ab..ce0f7b9c 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":["isString","a","String","forEach","obj","callback","i","len","length","isArray","constructor","Array","isUndefined","value","showdown","parsers","globalOptions","omitExtraWLInCodeBlocks","allowBlockIndents","helper","extensions","setOption","key","this","subParser","name","func","hasOwnProperty","Error","Converter","converterOptions","options","parserOrder","opt","makeHtml","text","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","replace","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","escapeCharacters","charsToEscape","afterBackslash","regexString","regex","RegExp","config","textSplitArr","split","leadingWhiteChars","undefined","lineLeadingWhiteChars","match","reg","join","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","toLowerCase","url","title","search","result","unescapedStr","bq","pre","codeblock","nextChar","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","language","end","push","blockText","headerId","m","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","grafsOut","str","$1","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":["isString","a","String","forEach","obj","callback","i","len","length","isArray","constructor","Array","isUndefined","value","showdown","parsers","globalOptions","omitExtraWLInCodeBlocks","helper","extensions","setOption","key","this","subParser","name","func","hasOwnProperty","Error","Converter","converterOptions","options","parserOrder","opt","makeHtml","text","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","replace","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","escapeCharacters","charsToEscape","afterBackslash","regexString","regex","RegExp","config","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","toLowerCase","url","title","search","result","unescapedStr","bq","pre","codeblock","nextChar","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","language","end","push","blockText","headerId","m","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","split","grafsOut","str","$1","join","charCodeToReplace","parseInt","fromCharCode","root","module","exports","define","amd","call"],"mappings":"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"} \ No newline at end of file diff --git a/src/showdown.js b/src/showdown.js index 83785868..ef17ba9b 100644 --- a/src/showdown.js +++ b/src/showdown.js @@ -6,8 +6,7 @@ var showdown = {}, parsers = {}, globalOptions = { - omitExtraWLInCodeBlocks: false, - allowBlockIndents: true + omitExtraWLInCodeBlocks: false }; /////////////////////////////////////////////////////////////////////////// diff --git a/src/subParsers/allowBlockIndents.js b/src/subParsers/allowBlockIndents.js deleted file mode 100644 index 0bee7581..00000000 --- a/src/subParsers/allowBlockIndents.js +++ /dev/null @@ -1,62 +0,0 @@ -/** - * Credits to Christopher (https://github.com/cwalker107) - */ - -/** - * If text is being pulled from indented HTML elements, i.e. - * - *
    - * ## Content to be converted - *
    - * - */ -showdown.subParser('allowBlockIndents', function (text, config, globals) { - 'use strict'; - - if (!config.allowBlockIndents) { - return text; - } - - //Split the given array by it's new line characters - var textSplitArr = text.split('\n'); - //We'll use this later to determine if there are leading whitespace characters - var leadingWhiteChars = 0; - var i; - - for(i=0; i<=textSplitArr.length;i++) { - if(textSplitArr[i] !== undefined) { - - // Trim all trailing whitespaces from each line - textSplitArr[i].replace(/[\s]*$/,''); - - // roots out empty array values - if(textSplitArr[i].length > 0) { - - // Defines this single line's leading whitespace - var lineLeadingWhiteChars = (textSplitArr[i].match(/^(\s)*/))[0].length; - - // Determine how much the text is indented - // by. This fixes nesting issues and also - // doesn't break MarkDown syntax if code is on - // the first lines - if(leadingWhiteChars === 0 || (lineLeadingWhiteChars < leadingWhiteChars)) { - if(textSplitArr[i].match(/[^\s]$/) !== null) { - leadingWhiteChars = lineLeadingWhiteChars; - } - } - } - } - } - - // Only a regex that will replace how much it is indented by - var reg = '^\\s{'+leadingWhiteChars+'}'; - for(i=0; i<=textSplitArr.length;i++) { - if(textSplitArr[i] !== undefined) { - // Replace leading indents - textSplitArr[i] = textSplitArr[i].replace(new RegExp(reg),''); - } - } - text = textSplitArr.join('\n\n'); //Join it all back together - - return text; -}); From c367a4b9a18530ac662bb67ca4b09419680f0c34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Sun, 18 Jan 2015 02:12:32 +0000 Subject: [PATCH 12/34] feat(uniqueHeaderId): add unique id prefix and suffix to headers If two headers have similar texts, the generated id could be equal. In order to prevent id clash: - A unique suffix is added if a header id already exists - Option to add a prefix to header id - Update of correspondent tests - (credits to nicovalencia) Closes #81, closes #82 --- dist/showdown.js | 39 ++++++++++++++++++++++++++++---- dist/showdown.js.map | 2 +- dist/showdown.min.js | 4 ++-- dist/showdown.min.js.map | 2 +- src/showdown.js | 15 +++++++++--- src/subParsers/headers.js | 22 +++++++++++++++++- test/cases/repeated-headers.html | 5 ++++ test/cases/repeated-headers.md | 5 ++++ 8 files changed, 81 insertions(+), 13 deletions(-) create mode 100644 test/cases/repeated-headers.html create mode 100644 test/cases/repeated-headers.md diff --git a/dist/showdown.js b/dist/showdown.js index f7f0afd5..dbec2e3b 100644 --- a/dist/showdown.js +++ b/dist/showdown.js @@ -1,4 +1,4 @@ -;/*! showdown 16-01-2015 */ +;/*! showdown 18-01-2015 */ (function(){ 'use strict'; /** @@ -9,7 +9,8 @@ var showdown = {}, parsers = {}, globalOptions = { - omitExtraWLInCodeBlocks: false + omitExtraWLInCodeBlocks: false, + prefixHeaderId: false }; /////////////////////////////////////////////////////////////////////////// @@ -32,10 +33,17 @@ showdown.extensions = {}; //Public methods showdown.setOption = function (key, value) { globalOptions[key] = value; - return this; }; +showdown.getOption = function (key) { + return globalOptions[key]; +}; + +showdown.getOptions = function () { + return globalOptions; +}; + /** * Static Method * @@ -100,7 +108,8 @@ showdown.Converter = function (converterOptions) { gHtmlBlocks: [], gUrls: {}, gTitles: {}, - gListLevel: 0 + gListLevel: 0, + hashLinkCounts: {} }; // attacklab: Replace ~ with ~T @@ -1028,6 +1037,8 @@ showdown.subParser('hashHTMLBlocks', function (text, options, globals) { showdown.subParser('headers', function (text, options, globals) { 'use strict'; + var prefixHeader = options.prefixHeaderId; + // Set text-style headers: // Header 1 // ======== @@ -1075,7 +1086,25 @@ showdown.subParser('headers', function (text, options, globals) { }); function headerId(m) { - return m.replace(/[^\w]/g, '').toLowerCase(); + var title, + escapedId = m.replace(/[^\w]/g, '').toLowerCase(); + + if (globals.hashLinkCounts[escapedId]) { + title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++); + } else { + title = escapedId; + globals.hashLinkCounts[escapedId] = 1; + } + + // Prefix id to prevent causing inadvertent pre-existing style matches. + if (prefixHeader === true) { + prefixHeader = 'section'; + } + + if (showdown.helper.isString(prefixHeader)) { + return prefixHeader + title; + } + return title; } return text; diff --git a/dist/showdown.js.map b/dist/showdown.js.map index 7655b9b4..ee3f236b 100644 --- a/dist/showdown.js.map +++ b/dist/showdown.js.map @@ -1 +1 @@ -{"version":3,"sources":["..\\src\\showdown.js","..\\src\\helpers.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\\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":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false\r\n };\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// Public API\r\n//\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// API\r\n//\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n//Public methods\r\nshowdown.setOption = function (key, value) {\r\n globalOptions[key] = value;\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Static Method\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\n/**\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n parserOrder = [\r\n 'detab',\r\n 'stripBlankLines',\r\n //runLanguageExtensions,\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n var makeHtml = function (text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n //showdown.forEach(g_output_modifiers, function (x) {\r\n // text = _ExecuteExtension(x, text);\r\n //});\r\n\r\n return text;\r\n };\r\n\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nfunction isString(a) {\r\n return (typeof a === 'string' || a instanceof String);\r\n}\r\n\r\nfunction forEach(obj, callback) {\r\n if (typeof obj.forEach === 'function') {\r\n obj.forEach(callback);\r\n } else {\r\n var i, len = obj.length;\r\n for (i = 0; i < len; i++) {\r\n callback(obj[i], i, obj);\r\n }\r\n }\r\n}\r\n\r\nfunction isArray(a) {\r\n return a.constructor === Array;\r\n}\r\n\r\nfunction isUndefined(value) {\r\n return typeof value === 'undefined';\r\n}\r\n\r\nvar escapeCharactersCallback = function (wholeMatch, m1) {\r\n var charCodeToEscape = m1.charCodeAt(0);\r\n return '~E' + charCodeToEscape + 'E';\r\n};\r\n\r\nvar escapeCharacters = function (text, charsToEscape, afterBackslash) {\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\nif (!showdown.hasOwnProperty('helper')) {\r\n showdown.helper = {};\r\n}\r\n\r\n/**\r\n * isString helper function\r\n * @param a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isString = isString;\r\n\r\n/**\r\n * ForEach helper function\r\n * @param {*} obj\r\n * @param callback\r\n */\r\nshowdown.helper.forEach = forEach;\r\n\r\n/**\r\n * isArray helper function\r\n * @param {*} a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isArray = isArray;\r\n\r\n/**\r\n * Check if value is undefined\r\n *\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 = isUndefined;\r\n\r\n/**\r\n * Callback used to escape characters when passing through String.replace\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 *\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 = escapeCharacters;\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\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 }\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, '*_');\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, 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 (\t\t \t\t\t\t\t// wrap whole match in $1\r\n \\[\r\n ([^\\[\\]]+)\t\t\t\t// link text = $2; can't contain '[' or ']'\r\n \\]\r\n )()()()()()\t\t\t\t\t// 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});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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, _DoAutoLinks_callback());\r\n */\r\n text = text.replace(/<(?:mailto:)?([-.\\w]+\\@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\r\n function (wholeMatch, m1) {\r\n var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1);\r\n return showdown.subParser('encodeEmailAddress')(unescapedStr);\r\n }\r\n );\r\n\r\n return text;\r\n\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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,\r\n 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(\r\n                /(\\s*
    [^\\r]+?<\\/pre>)/gm,\r\n                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 * Created by Estevao on 12-01-2015.\r\n */\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    text = text.replace(/(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))/g,\r\n        function (wholeMatch, m1, m2) {\r\n            var codeblock = m1,\r\n                nextChar = m2;\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 whitespace\r\n\r\n            codeblock = '
    ' + codeblock + '\\n
    ';\r\n\r\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\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 * Created by Estevao on 11-01-2015.\r\n */\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,\r\n 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 * Created by Estevao on 11-01-2015.\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,\r\n 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\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 * Created by Estevao on 11-01-2015.\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 * Created by Estevao on 11-01-2015.\r\n */\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 * Created by Estevao on 11-01-2015.\r\n */\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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\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\n r > 0.45 ? encode[1](ch) :\r\n 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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\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, '\\\\`*_');\r\n return tag;\r\n });\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\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,\r\n 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\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 * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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 = '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 = '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, 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)\\b[^\\r]*?<\\/\\2>[ \\t]*(?=\\n+)\\n)/gm, 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, 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, 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, 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});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.subParser('headers', function (text, options, globals) {\r\n 'use strict';\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\r\n function (wholeMatch, m1) {\r\n return showdown.subParser('hashBlock')('

    ' +\r\n showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm,\r\n function (matchFound, m1) {\r\n return showdown.subParser('hashBlock')('

    ' +\r\n showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm,\r\n function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n return m.replace(/[^\\w]/g, '').toLowerCase();\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n\r\n/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n }\r\n else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_');\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.subParser('italicsAndBold', function (text) {\r\n 'use strict';\r\n // must go first:\r\n text = text.replace(/(\\*\\*|__)(?=\\S)([^\\r]*?\\S[*_]*)\\1/g,\r\n '$2');\r\n\r\n text = text.replace(/(\\*|_)(?=\\S)([^\\r]*?\\S)\\1/g,\r\n '$2');\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\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 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\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\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 * Created by Estevao on 12-01-2015.\r\n */\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 * Created by Estevao on 12-01-2015.\r\n */\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\r\n /** Wrap

    tags. */\r\n var end = grafs.length;\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 }\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 * Created by Estevao on 11-01-2015.\r\n */\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\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 * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(/^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm,\r\n function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * Created by Estevao on 12-01-2015.\r\n */\r\n\r\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,\r\n function (wholeMatch, m1) {\r\n var charCodeToReplace = parseInt(m1);\r\n return String.fromCharCode(charCodeToReplace);\r\n }\r\n );\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 15-01-2015.\r\n */\r\n\r\nvar 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\nelse if (typeof define === 'function' && define.amd) {\r\n define('showdown', function () {\r\n return showdown;\r\n });\r\n}\r\n// Regular Browser loader\r\nelse {\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\\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\\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":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false,\r\n prefixHeaderId: false\r\n };\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// Public API\r\n//\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// API\r\n//\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n//Public methods\r\nshowdown.setOption = function (key, value) {\r\n globalOptions[key] = value;\r\n return this;\r\n};\r\n\r\nshowdown.getOption = function (key) {\r\n return globalOptions[key];\r\n};\r\n\r\nshowdown.getOptions = function () {\r\n return globalOptions;\r\n};\r\n\r\n/**\r\n * Static Method\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\n/**\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n parserOrder = [\r\n 'detab',\r\n 'stripBlankLines',\r\n //runLanguageExtensions,\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n var makeHtml = function (text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0,\r\n hashLinkCounts: {}\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n //showdown.forEach(g_output_modifiers, function (x) {\r\n // text = _ExecuteExtension(x, text);\r\n //});\r\n\r\n return text;\r\n };\r\n\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nfunction isString(a) {\r\n return (typeof a === 'string' || a instanceof String);\r\n}\r\n\r\nfunction forEach(obj, callback) {\r\n if (typeof obj.forEach === 'function') {\r\n obj.forEach(callback);\r\n } else {\r\n var i, len = obj.length;\r\n for (i = 0; i < len; i++) {\r\n callback(obj[i], i, obj);\r\n }\r\n }\r\n}\r\n\r\nfunction isArray(a) {\r\n return a.constructor === Array;\r\n}\r\n\r\nfunction isUndefined(value) {\r\n return typeof value === 'undefined';\r\n}\r\n\r\nvar escapeCharactersCallback = function (wholeMatch, m1) {\r\n var charCodeToEscape = m1.charCodeAt(0);\r\n return '~E' + charCodeToEscape + 'E';\r\n};\r\n\r\nvar escapeCharacters = function (text, charsToEscape, afterBackslash) {\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\nif (!showdown.hasOwnProperty('helper')) {\r\n showdown.helper = {};\r\n}\r\n\r\n/**\r\n * isString helper function\r\n * @param a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isString = isString;\r\n\r\n/**\r\n * ForEach helper function\r\n * @param {*} obj\r\n * @param callback\r\n */\r\nshowdown.helper.forEach = forEach;\r\n\r\n/**\r\n * isArray helper function\r\n * @param {*} a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isArray = isArray;\r\n\r\n/**\r\n * Check if value is undefined\r\n *\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 = isUndefined;\r\n\r\n/**\r\n * Callback used to escape characters when passing through String.replace\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 *\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 = escapeCharacters;\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\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 }\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, '*_');\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, 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 (\t\t \t\t\t\t\t// wrap whole match in $1\r\n \\[\r\n ([^\\[\\]]+)\t\t\t\t// link text = $2; can't contain '[' or ']'\r\n \\]\r\n )()()()()()\t\t\t\t\t// 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});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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, _DoAutoLinks_callback());\r\n */\r\n text = text.replace(/<(?:mailto:)?([-.\\w]+\\@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\r\n function (wholeMatch, m1) {\r\n var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1);\r\n return showdown.subParser('encodeEmailAddress')(unescapedStr);\r\n }\r\n );\r\n\r\n return text;\r\n\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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,\r\n 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(\r\n                /(\\s*
    [^\\r]+?<\\/pre>)/gm,\r\n                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 * Created by Estevao on 12-01-2015.\r\n */\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    text = text.replace(/(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))/g,\r\n        function (wholeMatch, m1, m2) {\r\n            var codeblock = m1,\r\n                nextChar = m2;\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 whitespace\r\n\r\n            codeblock = '
    ' + codeblock + '\\n
    ';\r\n\r\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\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 * Created by Estevao on 11-01-2015.\r\n */\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,\r\n 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 * Created by Estevao on 11-01-2015.\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,\r\n 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\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 * Created by Estevao on 11-01-2015.\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 * Created by Estevao on 11-01-2015.\r\n */\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 * Created by Estevao on 11-01-2015.\r\n */\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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\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\n r > 0.45 ? encode[1](ch) :\r\n 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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\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, '\\\\`*_');\r\n return tag;\r\n });\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\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,\r\n 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\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 * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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 = '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 = '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, 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)\\b[^\\r]*?<\\/\\2>[ \\t]*(?=\\n+)\\n)/gm, 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, 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, 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, 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});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.subParser('headers', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var prefixHeader = options.prefixHeaderId;\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\r\n function (wholeMatch, m1) {\r\n return showdown.subParser('hashBlock')('

    ' +\r\n showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm,\r\n function (matchFound, m1) {\r\n return showdown.subParser('hashBlock')('

    ' +\r\n showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm,\r\n function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n var title,\r\n escapedId = m.replace(/[^\\w]/g, '').toLowerCase();\r\n\r\n if (globals.hashLinkCounts[escapedId]) {\r\n title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);\r\n } else {\r\n title = escapedId;\r\n globals.hashLinkCounts[escapedId] = 1;\r\n }\r\n\r\n // Prefix id to prevent causing inadvertent pre-existing style matches.\r\n if (prefixHeader === true) {\r\n prefixHeader = 'section';\r\n }\r\n\r\n if (showdown.helper.isString(prefixHeader)) {\r\n return prefixHeader + title;\r\n }\r\n return title;\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n\r\n/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n }\r\n else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_');\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.subParser('italicsAndBold', function (text) {\r\n 'use strict';\r\n // must go first:\r\n text = text.replace(/(\\*\\*|__)(?=\\S)([^\\r]*?\\S[*_]*)\\1/g,\r\n '$2');\r\n\r\n text = text.replace(/(\\*|_)(?=\\S)([^\\r]*?\\S)\\1/g,\r\n '$2');\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\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 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\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\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 * Created by Estevao on 12-01-2015.\r\n */\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 * Created by Estevao on 12-01-2015.\r\n */\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\r\n /** Wrap

    tags. */\r\n var end = grafs.length;\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 }\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 * Created by Estevao on 11-01-2015.\r\n */\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\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 * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(/^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm,\r\n function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * Created by Estevao on 12-01-2015.\r\n */\r\n\r\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,\r\n function (wholeMatch, m1) {\r\n var charCodeToReplace = parseInt(m1);\r\n return String.fromCharCode(charCodeToReplace);\r\n }\r\n );\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 15-01-2015.\r\n */\r\n\r\nvar 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\nelse if (typeof define === 'function' && define.amd) {\r\n define('showdown', function () {\r\n return showdown;\r\n });\r\n}\r\n// Regular Browser loader\r\nelse {\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 9bd6f2e1..b95e39d2 100644 --- a/dist/showdown.min.js +++ b/dist/showdown.min.js @@ -1,4 +1,4 @@ -/*! showdown 16-01-2015 */ +/*! showdown 18-01-2015 */ -(function(){"use strict";function a(a){return"string"==typeof a||a instanceof String}function b(a,b){if("function"==typeof a.forEach)a.forEach(b);else{var c,d=a.length;for(c=0;d>c;c++)b(a[c],c,a)}}function c(a){return a.constructor===Array}function d(a){return"undefined"==typeof a}var e={},f={},g={omitExtraWLInCodeBlocks:!1};e.helper={},e.extensions={},e.setOption=function(a,b){return g[a]=b,this},e.subParser=function(a,b){if(e.helper.isString(a)){if("undefined"==typeof b){if(f.hasOwnProperty(a))return f[a];throw Error("SubParser named "+a+" not registered!")}f[a]=b}},e.Converter=function(a){a=a||{};var b=g,c=["detab","stripBlankLines","githubCodeBlocks","hashHTMLBlocks","stripLinkDefinitions","blockGamut","unescapeSpecialChars"];if("object"==typeof a)for(var d in a)a.hasOwnProperty(d)&&(b[d]=a[d]);var e=function(a){if(!a)return a;var d={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n";for(var e=0;e-1))return a;m=""}else m=c.gUrls[l],e.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=e.helper.escapeCharacters(m,"*_");var o='"};return a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,d),a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d),a=a.replace(/(\[([^\[\]]+)\])()()()()()/g,d)}),e.subParser("autoLinks",function(a){return a=a.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'$1'),a=a.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,function(a,b){var c=e.subParser("unescapeSpecialChars")(b);return e.subParser("encodeEmailAddress")(c)})}),e.subParser("blockGamut",function(a,b,c){a=e.subParser("headers")(a,b,c);var d=e.subParser("hashBlock")("
    ",b,c);return a=a.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,d),a=e.subParser("lists")(a,b,c),a=e.subParser("codeBlocks")(a,b,c),a=e.subParser("blockQuotes")(a,b,c),a=e.subParser("hashHTMLBlocks")(a,b,c),a=e.subParser("paragraphs")(a,b,c)}),e.subParser("blockQuotes",function(a,b,c){return a=a.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(a,d){var f=d;return f=f.replace(/^[ \t]*>[ \t]?/gm,"~0"),f=f.replace(/~0/g,""),f=f.replace(/^[ \t]+$/gm,""),f=e.subParser("blockGamut")(f,b,c),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,"")}),e.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)})}),e.subParser("codeBlocks",function(a,b,c){return a+="~0",a=a.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(a,d,f){var g=d,h=f;return g=e.subParser("outdent")(g),g=e.subParser("encodeCode")(g),g=e.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",e.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,"")}),e.subParser("codeSpans",function(a){return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,d){var f=d;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=e.subParser("encodeCode")(f),b+""+f+""})}),e.subParser("detab",function(a){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,"")}),e.subParser("encodeAmpsAndAngles",function(a){return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),e.subParser("encodeBackslashEscapes",function(a){return a=a.replace(/\\(\\)/g,e.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,e.helper.escapeCharactersCallback)}),e.subParser("encodeCode",function(a){return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=e.helper.escapeCharacters(a,"*_{}[]\\",!1)}),e.subParser("encodeEmailAddress",function(a){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,'">')}),e.subParser("escapeSpecialCharsWithinTagAttributes",function(a){var b=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;return a=a.replace(b,function(a){var b=a.replace(/(.)<\/?code>(?=.)/g,"$1`");return b=e.helper.escapeCharacters(b,"\\`*_")})}),e.subParser("githubCodeBlocks",function(a,b,c){return a+="~0",a=a.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,function(a,d,f){var g=d,h=f,i="\n";return b.omitExtraWLInCodeBlocks&&(i=""),h=e.subParser("encodeCode")(h),h=e.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",e.subParser("hashBlock")(h,b,c)}),a=a.replace(/~0/,"")}),e.subParser("hashBlock",function(a,b,c){return a=a.replace(/(^\n+|\n+$)/g,""),"\n\n~K"+(c.gHtmlBlocks.push(a)-1)+"K\n\n"}),e.subParser("hashElement",function(a,b,c){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"}}),e.subParser("hashHTMLBlocks",function(a,b,c){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,e.subParser("hashElement")(a,b,c)),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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/\n\n/g,"\n")}),e.subParser("headers",function(a,b,c){function d(a){return a.replace(/[^\w]/g,"").toLowerCase()}return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){return e.subParser("hashBlock")('

    '+e.subParser("spanGamut")(f,b,c)+"

    ",b,c)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){return e.subParser("hashBlock")('

    '+e.subParser("spanGamut")(f,b,c)+"

    ",b,c)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=e.subParser("spanGamut")(g,b,c),i="'+h+"";return e.subParser("hashBlock")(i,b,c)})}),e.subParser("images",function(a,b,c){var d=function(a,b,d,f,g,h,j,k){a=b;var l=d,m=f.toLowerCase(),n=g,o=k,p=c.gUrls,q=c.gTitles;if(o||(o=""),""===n||null===n){if((""===m||null===m)&&(m=l.toLowerCase().replace(/ ?\n/g," ")),n="#"+m,"undefined"==typeof p[m])return a;n=p[m],"undefined"!=typeof q[m]&&(o=q[m])}l=l.replace(/"/g,"""),n=e.helper.escapeCharacters(n,"*_");var r=''+l+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d)}),e.subParser("italicsAndBold",function(a){return a=a.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"$2"),a=a.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"$2")}),e.subParser("lists",function(a,b,c){var d=function(a){return c.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,d,f,g,h){var i=e.subParser("outdent")(h,b,c);return d||i.search(/\n{2,}/)>-1?i=e.subParser("blockGamut")(i,b,c):(i=e.subParser("lists")(i,b,c),i=i.replace(/\n$/,""),i=e.subParser("spanGamut")(i,b,c)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),c.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.gListLevel?a=a.replace(f,function(a,b,c){var e=b,f=c.search(/[*+-]/g)>-1?"ul":"ol";e=e.replace(/\n{2,}/g,"\n\n\n");var g=d(e);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,e){var f=c.replace(/\n{2,}/g,"\n\n\n"),g=e.search(/[*+-]/g)>-1?"ul":"ol",h=d(f);return b+"<"+g+">\n"+h+"\n"})),a=a.replace(/~0/,"")}),e.subParser("outdent",function(a){return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),e.subParser("paragraphs",function(a,b,c){a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,"");for(var d=a.split(/\n{2,}/g),f=[],g=d.length,h=0;g>h;h++){var i=d[h];i.search(/~K(\d+)K/g)>=0?f.push(i):i.search(/\S/)>=0&&(i=e.subParser("spanGamut")(i,b,c),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=c.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),e.subParser("spanGamut",function(a,b,c){return a=e.subParser("codeSpans")(a,b,c),a=e.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=e.subParser("encodeBackslashEscapes")(a,b,c),a=e.subParser("images")(a,b,c),a=e.subParser("anchors")(a,b,c),a=e.subParser("autoLinks")(a,b,c),a=e.subParser("encodeAmpsAndAngles")(a,b,c),a=e.subParser("italicsAndBold")(a,b,c),a=a.replace(/ +\n/g,"
    \n")}),e.subParser("stripBlankLines",function(a){return a.replace(/^[ \t]+$/gm,"")}),e.subParser("stripLinkDefinitions",function(a,b,c){return a+="~0",a=a.replace(/^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm,function(a,b,d,f,g){return b=b.toLowerCase(),c.gUrls[b]=e.subParser("encodeAmpsAndAngles")(d),f?f+g:(g&&(c.gTitles[b]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),e.subParser("unescapeSpecialChars",function(a){return a=a.replace(/~E(\d+)E/g,function(a,b){var c=parseInt(b);return String.fromCharCode(c)})});var j=this;"undefined"!=typeof module&&module.exports?module.exports=e:"function"==typeof define&&define.amd?define("showdown",function(){return e}):j.showdown=e}).call(this); +(function(){"use strict";function a(a){return"string"==typeof a||a instanceof String}function b(a,b){if("function"==typeof a.forEach)a.forEach(b);else{var c,d=a.length;for(c=0;d>c;c++)b(a[c],c,a)}}function c(a){return a.constructor===Array}function d(a){return"undefined"==typeof a}var e={},f={},g={omitExtraWLInCodeBlocks:!1,prefixHeaderId:!1};e.helper={},e.extensions={},e.setOption=function(a,b){return g[a]=b,this},e.getOption=function(a){return g[a]},e.getOptions=function(){return g},e.subParser=function(a,b){if(e.helper.isString(a)){if("undefined"==typeof b){if(f.hasOwnProperty(a))return f[a];throw Error("SubParser named "+a+" not registered!")}f[a]=b}},e.Converter=function(a){a=a||{};var b=g,c=["detab","stripBlankLines","githubCodeBlocks","hashHTMLBlocks","stripLinkDefinitions","blockGamut","unescapeSpecialChars"];if("object"==typeof a)for(var d in a)a.hasOwnProperty(d)&&(b[d]=a[d]);var e=function(a){if(!a)return a;var d={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0,hashLinkCounts:{}};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n";for(var e=0;e-1))return a;m=""}else m=c.gUrls[l],e.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=e.helper.escapeCharacters(m,"*_");var o='"};return a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,d),a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d),a=a.replace(/(\[([^\[\]]+)\])()()()()()/g,d)}),e.subParser("autoLinks",function(a){return a=a.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'$1'),a=a.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,function(a,b){var c=e.subParser("unescapeSpecialChars")(b);return e.subParser("encodeEmailAddress")(c)})}),e.subParser("blockGamut",function(a,b,c){a=e.subParser("headers")(a,b,c);var d=e.subParser("hashBlock")("
    ",b,c);return a=a.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,d),a=e.subParser("lists")(a,b,c),a=e.subParser("codeBlocks")(a,b,c),a=e.subParser("blockQuotes")(a,b,c),a=e.subParser("hashHTMLBlocks")(a,b,c),a=e.subParser("paragraphs")(a,b,c)}),e.subParser("blockQuotes",function(a,b,c){return a=a.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(a,d){var f=d;return f=f.replace(/^[ \t]*>[ \t]?/gm,"~0"),f=f.replace(/~0/g,""),f=f.replace(/^[ \t]+$/gm,""),f=e.subParser("blockGamut")(f,b,c),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,"")}),e.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)})}),e.subParser("codeBlocks",function(a,b,c){return a+="~0",a=a.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(a,d,f){var g=d,h=f;return g=e.subParser("outdent")(g),g=e.subParser("encodeCode")(g),g=e.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",e.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,"")}),e.subParser("codeSpans",function(a){return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,d){var f=d;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=e.subParser("encodeCode")(f),b+""+f+""})}),e.subParser("detab",function(a){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,"")}),e.subParser("encodeAmpsAndAngles",function(a){return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),e.subParser("encodeBackslashEscapes",function(a){return a=a.replace(/\\(\\)/g,e.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,e.helper.escapeCharactersCallback)}),e.subParser("encodeCode",function(a){return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=e.helper.escapeCharacters(a,"*_{}[]\\",!1)}),e.subParser("encodeEmailAddress",function(a){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,'">')}),e.subParser("escapeSpecialCharsWithinTagAttributes",function(a){var b=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;return a=a.replace(b,function(a){var b=a.replace(/(.)<\/?code>(?=.)/g,"$1`");return b=e.helper.escapeCharacters(b,"\\`*_")})}),e.subParser("githubCodeBlocks",function(a,b,c){return a+="~0",a=a.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,function(a,d,f){var g=d,h=f,i="\n";return b.omitExtraWLInCodeBlocks&&(i=""),h=e.subParser("encodeCode")(h),h=e.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",e.subParser("hashBlock")(h,b,c)}),a=a.replace(/~0/,"")}),e.subParser("hashBlock",function(a,b,c){return a=a.replace(/(^\n+|\n+$)/g,""),"\n\n~K"+(c.gHtmlBlocks.push(a)-1)+"K\n\n"}),e.subParser("hashElement",function(a,b,c){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"}}),e.subParser("hashHTMLBlocks",function(a,b,c){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,e.subParser("hashElement")(a,b,c)),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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/\n\n/g,"\n")}),e.subParser("headers",function(a,b,c){function d(a){var b,d=a.replace(/[^\w]/g,"").toLowerCase();return c.hashLinkCounts[d]?b=d+"-"+c.hashLinkCounts[d]++:(b=d,c.hashLinkCounts[d]=1),f===!0&&(f="section"),e.helper.isString(f)?f+b:b}var f=b.prefixHeaderId;return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){return e.subParser("hashBlock")('

    '+e.subParser("spanGamut")(f,b,c)+"

    ",b,c)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){return e.subParser("hashBlock")('

    '+e.subParser("spanGamut")(f,b,c)+"

    ",b,c)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=e.subParser("spanGamut")(g,b,c),i="'+h+"";return e.subParser("hashBlock")(i,b,c)})}),e.subParser("images",function(a,b,c){var d=function(a,b,d,f,g,h,j,k){a=b;var l=d,m=f.toLowerCase(),n=g,o=k,p=c.gUrls,q=c.gTitles;if(o||(o=""),""===n||null===n){if((""===m||null===m)&&(m=l.toLowerCase().replace(/ ?\n/g," ")),n="#"+m,"undefined"==typeof p[m])return a;n=p[m],"undefined"!=typeof q[m]&&(o=q[m])}l=l.replace(/"/g,"""),n=e.helper.escapeCharacters(n,"*_");var r=''+l+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d)}),e.subParser("italicsAndBold",function(a){return a=a.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"$2"),a=a.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"$2")}),e.subParser("lists",function(a,b,c){var d=function(a){return c.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,d,f,g,h){var i=e.subParser("outdent")(h,b,c);return d||i.search(/\n{2,}/)>-1?i=e.subParser("blockGamut")(i,b,c):(i=e.subParser("lists")(i,b,c),i=i.replace(/\n$/,""),i=e.subParser("spanGamut")(i,b,c)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),c.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.gListLevel?a=a.replace(f,function(a,b,c){var e=b,f=c.search(/[*+-]/g)>-1?"ul":"ol";e=e.replace(/\n{2,}/g,"\n\n\n");var g=d(e);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,e){var f=c.replace(/\n{2,}/g,"\n\n\n"),g=e.search(/[*+-]/g)>-1?"ul":"ol",h=d(f);return b+"<"+g+">\n"+h+"\n"})),a=a.replace(/~0/,"")}),e.subParser("outdent",function(a){return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),e.subParser("paragraphs",function(a,b,c){a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,"");for(var d=a.split(/\n{2,}/g),f=[],g=d.length,h=0;g>h;h++){var i=d[h];i.search(/~K(\d+)K/g)>=0?f.push(i):i.search(/\S/)>=0&&(i=e.subParser("spanGamut")(i,b,c),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=c.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),e.subParser("spanGamut",function(a,b,c){return a=e.subParser("codeSpans")(a,b,c),a=e.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=e.subParser("encodeBackslashEscapes")(a,b,c),a=e.subParser("images")(a,b,c),a=e.subParser("anchors")(a,b,c),a=e.subParser("autoLinks")(a,b,c),a=e.subParser("encodeAmpsAndAngles")(a,b,c),a=e.subParser("italicsAndBold")(a,b,c),a=a.replace(/ +\n/g,"
    \n")}),e.subParser("stripBlankLines",function(a){return a.replace(/^[ \t]+$/gm,"")}),e.subParser("stripLinkDefinitions",function(a,b,c){return a+="~0",a=a.replace(/^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm,function(a,b,d,f,g){return b=b.toLowerCase(),c.gUrls[b]=e.subParser("encodeAmpsAndAngles")(d),f?f+g:(g&&(c.gTitles[b]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),e.subParser("unescapeSpecialChars",function(a){return a=a.replace(/~E(\d+)E/g,function(a,b){var c=parseInt(b);return String.fromCharCode(c)})});var j=this;"undefined"!=typeof module&&module.exports?module.exports=e:"function"==typeof define&&define.amd?define("showdown",function(){return e}):j.showdown=e}).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 ce0f7b9c..71a943d7 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":["isString","a","String","forEach","obj","callback","i","len","length","isArray","constructor","Array","isUndefined","value","showdown","parsers","globalOptions","omitExtraWLInCodeBlocks","helper","extensions","setOption","key","this","subParser","name","func","hasOwnProperty","Error","Converter","converterOptions","options","parserOrder","opt","makeHtml","text","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","replace","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","escapeCharacters","charsToEscape","afterBackslash","regexString","regex","RegExp","config","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","toLowerCase","url","title","search","result","unescapedStr","bq","pre","codeblock","nextChar","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","language","end","push","blockText","headerId","m","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","split","grafsOut","str","$1","join","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":["isString","a","String","forEach","obj","callback","i","len","length","isArray","constructor","Array","isUndefined","value","showdown","parsers","globalOptions","omitExtraWLInCodeBlocks","prefixHeaderId","helper","extensions","setOption","key","this","getOption","getOptions","subParser","name","func","hasOwnProperty","Error","Converter","converterOptions","options","parserOrder","opt","makeHtml","text","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","hashLinkCounts","replace","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","escapeCharacters","charsToEscape","afterBackslash","regexString","regex","RegExp","config","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","toLowerCase","url","title","search","result","unescapedStr","bq","pre","codeblock","nextChar","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","language","end","push","blockText","headerId","m","escapedId","prefixHeader","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","split","grafsOut","str","$1","join","charCodeToReplace","parseInt","fromCharCode","root","module","exports","define","amd","call"],"mappings":"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"} \ No newline at end of file diff --git a/src/showdown.js b/src/showdown.js index ef17ba9b..0ff94bd3 100644 --- a/src/showdown.js +++ b/src/showdown.js @@ -6,7 +6,8 @@ var showdown = {}, parsers = {}, globalOptions = { - omitExtraWLInCodeBlocks: false + omitExtraWLInCodeBlocks: false, + prefixHeaderId: false }; /////////////////////////////////////////////////////////////////////////// @@ -29,10 +30,17 @@ showdown.extensions = {}; //Public methods showdown.setOption = function (key, value) { globalOptions[key] = value; - return this; }; +showdown.getOption = function (key) { + return globalOptions[key]; +}; + +showdown.getOptions = function () { + return globalOptions; +}; + /** * Static Method * @@ -97,7 +105,8 @@ showdown.Converter = function (converterOptions) { gHtmlBlocks: [], gUrls: {}, gTitles: {}, - gListLevel: 0 + gListLevel: 0, + hashLinkCounts: {} }; // attacklab: Replace ~ with ~T diff --git a/src/subParsers/headers.js b/src/subParsers/headers.js index 8af27392..80cc1d37 100644 --- a/src/subParsers/headers.js +++ b/src/subParsers/headers.js @@ -5,6 +5,8 @@ showdown.subParser('headers', function (text, options, globals) { 'use strict'; + var prefixHeader = options.prefixHeaderId; + // Set text-style headers: // Header 1 // ======== @@ -52,7 +54,25 @@ showdown.subParser('headers', function (text, options, globals) { }); function headerId(m) { - return m.replace(/[^\w]/g, '').toLowerCase(); + var title, + escapedId = m.replace(/[^\w]/g, '').toLowerCase(); + + if (globals.hashLinkCounts[escapedId]) { + title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++); + } else { + title = escapedId; + globals.hashLinkCounts[escapedId] = 1; + } + + // Prefix id to prevent causing inadvertent pre-existing style matches. + if (prefixHeader === true) { + prefixHeader = 'section'; + } + + if (showdown.helper.isString(prefixHeader)) { + return prefixHeader + title; + } + return title; } return text; diff --git a/test/cases/repeated-headers.html b/test/cases/repeated-headers.html new file mode 100644 index 00000000..97acc54c --- /dev/null +++ b/test/cases/repeated-headers.html @@ -0,0 +1,5 @@ +

    Same Title

    + +

    some text

    + +

    Same Title

    diff --git a/test/cases/repeated-headers.md b/test/cases/repeated-headers.md new file mode 100644 index 00000000..43693188 --- /dev/null +++ b/test/cases/repeated-headers.md @@ -0,0 +1,5 @@ +# Same Title + +some text + +# Same Title From 4a0e05900ca16831fba45ffa7cbaf847d6a3c395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Sun, 18 Jan 2015 02:13:20 +0000 Subject: [PATCH 13/34] chore(jshint): update jshintrc to use strict option --- .jshintrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.jshintrc b/.jshintrc index 03d59610..a830c8ed 100644 --- a/.jshintrc +++ b/.jshintrc @@ -14,7 +14,7 @@ "quotmark": "single", "undef": false, "unused": true, - "strict": false, + "strict": true, "trailing": true, "smarttabs": true, "globals": { From 8b000b134aadca4cf4307f36dc4efc3d3f969826 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Mon, 19 Jan 2015 11:37:21 +0000 Subject: [PATCH 14/34] chore(all): code style change --- Gruntfile.js | 2 +- src/angular.js | 254 ++++++++--------- src/helpers.js | 50 ++-- src/loader.js | 10 +- src/showdown.js | 187 ++++++------ src/subParsers/anchors.js | 247 ++++++++-------- src/subParsers/autoLinks.js | 42 ++- src/subParsers/blockGamut.js | 34 +-- src/subParsers/blockQuotes.js | 85 +++--- src/subParsers/codeBlocks.js | 76 +++-- src/subParsers/codeSpans.js | 43 ++- src/subParsers/detab.js | 39 ++- src/subParsers/encodeAmpsAndAngles.js | 14 +- src/subParsers/encodeBackslashEscapes.js | 8 +- src/subParsers/encodeCode.js | 32 +-- src/subParsers/encodeEmailAddress.js | 71 +++-- .../escapeSpecialCharsWithinTagAttributes.js | 20 +- src/subParsers/githubCodeBlocks.js | 38 ++- src/subParsers/hashBlock.js | 6 +- src/subParsers/hashElement.js | 24 +- src/subParsers/hashHTMLBlocks.js | 254 +++++++++-------- src/subParsers/headers.js | 120 ++++---- src/subParsers/images.js | 182 ++++++------ src/subParsers/italicsAndBold.js | 12 +- src/subParsers/lists.js | 268 +++++++++--------- src/subParsers/outdent.js | 14 +- src/subParsers/paragraphs.js | 58 ++-- src/subParsers/spanGamut.js | 35 ++- src/subParsers/stripBlankLines.js | 4 +- src/subParsers/stripLinkDefinitions.js | 42 +-- src/subParsers/unescapeSpecialChars.js | 14 +- test/cases/anchors-by-reference.html | 6 +- test/cases/blockquote-nested-markdown.html | 12 +- test/cases/blockquote.html | 4 +- test/cases/doubline-list.html | 4 +- test/cases/emphasis.html | 2 +- test/cases/escaped-number-period.html | 2 +- test/cases/github-style-at-start.html | 4 +- test/cases/github-style-codeblock.html | 4 +- test/cases/github-style-linebreaks.html | 2 +- test/cases/horizontal-rules.html | 10 +- test/cases/html5-strutural-tags.html | 5 +- test/cases/images.html | 6 +- test/cases/implicit-anchors.html | 3 +- test/cases/inline-escaped-chars.html | 2 +- test/cases/inline-style-tag.html | 4 +- test/cases/lazy-blockquote.html | 4 +- test/cases/list-with-blockquote.html | 7 +- test/cases/list-with-code.html | 5 +- test/cases/multi-paragraph-list.html | 4 +- test/cases/multiline-unordered-list.html | 7 +- test/cases/nested-blockquote.html | 10 +- test/cases/ordered-list-same-number.html | 6 +- test/cases/ordered-list-wrong-numbers.html | 6 +- test/cases/ordered-list.html | 6 +- test/cases/unordered-list-asterisk.html | 6 +- test/cases/unordered-list-minus.html | 6 +- test/cases/unordered-list-plus.html | 6 +- test/cases/url-with-parenthesis.html | 3 +- test/node/Container/testMakeHtml.js | 158 +++++------ 60 files changed, 1280 insertions(+), 1309 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 843e7b2e..9de8c274 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -10,7 +10,7 @@ module.exports = function (grunt) { concat: { options: { sourceMap: true, - banner: ";/*! <%= pkg.name %> <%= grunt.template.today('dd-mm-yyyy') %> */\n(function(){\n 'use strict';\n", + banner: ";/*! <%= pkg.name %> <%= grunt.template.today('dd-mm-yyyy') %> */\n(function(){\n", footer: "}).call(this)" }, dist: { diff --git a/src/angular.js b/src/angular.js index e2bc6068..459753d1 100644 --- a/src/angular.js +++ b/src/angular.js @@ -6,145 +6,145 @@ //Check if AngularJs and Showdown is defined and only load ng-Showdown if both are present if (typeof angular !== 'undefined' && typeof showdown !== 'undefined') { - (function (module, showdown) { - 'use strict'; + (function (module, showdown) { + 'use strict'; + + module.provider('$showdown', provider).directive('sdModelToHtml', + ['$showdown', markdownToHtmlDirective]).filter('sdStripHtml', + stripHtmlFilter); + + /** + * Angular Provider + * Enables configuration of showdown via angular.config and Dependency Injection into controllers, views + * directives, etc... This assures the directives and filters provided by the library itself stay consistent + * with the user configurations. + * If the user wants to use a different configuration in a determined context, he can use the "classic" Showdown + * object instead. + */ + function provider() { + + // Configuration parameters for Showdown + var config = { + extensions: [], + stripHtml: true + }; + + /** + * Sets a configuration option + * + * @param {string} key Config parameter key + * @param {string} value Config parameter value + */ + /* jshint validthis: true */ + this.setOption = function (key, value) { + config[key] = value; + + return this; + }; + + /** + * Gets the value of the configuration parameter specified by key + * + * @param {string} key The config parameter key + * @returns {string|null} Returns the value of the config parameter. (or null if the config parameter is not set) + */ + this.getOption = function (key) { + if (config.hasOwnProperty(key)) { + return config.key; + } else { + return null; + } + }; - module - .provider('$showdown', provider) - .directive('sdModelToHtml', ['$showdown', markdownToHtmlDirective]) - .filter('sdStripHtml', stripHtmlFilter); + /** + * Loads a Showdown Extension + * + * @param {string} extensionName The name of the extension to load + */ + this.loadExtension = function (extensionName) { + config.extensions.push(extensionName); - /** - * Angular Provider - * Enables configuration of showdown via angular.config and Dependency Injection into controllers, views - * directives, etc... This assures the directives and filters provided by the library itself stay consistent - * with the user configurations. - * If the user wants to use a different configuration in a determined context, he can use the "classic" Showdown - * object instead. - */ - function provider() { - - // Configuration parameters for Showdown - var config = { - extensions: [], - stripHtml: true - }; - - /** - * Sets a configuration option - * - * @param {string} key Config parameter key - * @param {string} value Config parameter value - */ /* jshint validthis: true */ - this.setOption = function (key, value) { - config[key] = value; - - return this; - }; - - /** - * Gets the value of the configuration parameter specified by key - * - * @param {string} key The config parameter key - * @returns {string|null} Returns the value of the config parameter. (or null if the config parameter is not set) - */ - this.getOption = function (key) { - if (config.hasOwnProperty(key)) { - return config.key; - } else { - return null; - } - }; - - /** - * Loads a Showdown Extension - * - * @param {string} extensionName The name of the extension to load - */ - this.loadExtension = function (extensionName) { - config.extensions.push(extensionName); - - return this; - }; - - function SDObject() { - var converter = new showdown.Converter(config); - - /** - * Converts a markdown text into HTML - * - * @param {string} markdown The markdown string to be converted to HTML - * @returns {string} The converted HTML - */ - this.makeHtml = function (markdown) { - return converter.makeHtml(markdown); - }; - - /** - * Strips a text of it's HTML tags - * - * @param {string} text - * @returns {string} - */ - this.stripHtml = function (text) { - return String(text).replace(/<[^>]+>/gm, ''); - }; - } - - // The object returned by service provider - this.$get = function () { - return new SDObject(); - }; - } + return this; + }; + + function SDObject() { + var converter = new showdown.Converter(config); /** - * AngularJS Directive to Md to HTML transformation - * - * Usage example: - *
    + * Converts a markdown text into HTML * - * @param $showdown - * @returns {*} + * @param {string} markdown The markdown string to be converted to HTML + * @returns {string} The converted HTML */ - function markdownToHtmlDirective($showdown) { - - var link = function (scope, element) { - scope.$watch('model', function (newValue) { - var val; - if (typeof newValue === 'string') { - val = $showdown.makeHtml(newValue); - } else { - val = typeof newValue; - } - element.html(val); - }); - }; - - return { - restrict: 'A', - link: link, - scope: { - model: '=sdModelToHtml' - } - }; - } + this.makeHtml = function (markdown) { + return converter.makeHtml(markdown); + }; /** - * AngularJS Filter to Strip HTML tags from text + * Strips a text of it's HTML tags * - * @returns {Function} + * @param {string} text + * @returns {string} */ - function stripHtmlFilter() { - return function (text) { - return String(text).replace(/<[^>]+>/gm, ''); - }; + this.stripHtml = function (text) { + return String(text).replace(/<[^>]+>/gm, ''); + }; + } + + // The object returned by service provider + this.$get = function () { + return new SDObject(); + }; + } + + /** + * AngularJS Directive to Md to HTML transformation + * + * Usage example: + *
    + * + * @param $showdown + * @returns {*} + */ + function markdownToHtmlDirective($showdown) { + + var link = function (scope, element) { + scope.$watch('model', function (newValue) { + var val; + if (typeof newValue === 'string') { + val = $showdown.makeHtml(newValue); + } else { + val = typeof newValue; + } + element.html(val); + }); + }; + + return { + restrict: 'A', + link: link, + scope: { + model: '=sdModelToHtml' } - - })(angular.module('showdown', []), showdown); + }; + } + + /** + * AngularJS Filter to Strip HTML tags from text + * + * @returns {Function} + */ + function stripHtmlFilter() { + return function (text) { + return String(text).replace(/<[^>]+>/gm, ''); + }; + } + + })(angular.module('showdown', []), showdown); } else { - /** TODO Since this library is opt out, maybe we should not throw an error so we can concatenate this - script with the main lib */ - // throw new Error("ng-showdown was not loaded because one of it's dependencies (AngularJS or Showdown) wasn't met"); + /** TODO Since this library is opt out, maybe we should not throw an error so we can concatenate this + script with the main lib */ + // throw new Error("ng-showdown was not loaded because one of it's dependencies (AngularJS or Showdown) wasn't met"); } diff --git a/src/helpers.js b/src/helpers.js index 9cc87319..c0000f55 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -3,50 +3,56 @@ */ function isString(a) { - return (typeof a === 'string' || a instanceof String); + 'use strict'; + return (typeof a === 'string' || a instanceof String); } function forEach(obj, callback) { - if (typeof obj.forEach === 'function') { - obj.forEach(callback); - } else { - var i, len = obj.length; - for (i = 0; i < len; i++) { - callback(obj[i], i, obj); - } + 'use strict'; + if (typeof obj.forEach === 'function') { + obj.forEach(callback); + } else { + var i, len = obj.length; + for (i = 0; i < len; i++) { + callback(obj[i], i, obj); } + } } function isArray(a) { - return a.constructor === Array; + 'use strict'; + return a.constructor === Array; } function isUndefined(value) { - return typeof value === 'undefined'; + 'use strict'; + return typeof value === 'undefined'; } var escapeCharactersCallback = function (wholeMatch, m1) { - var charCodeToEscape = m1.charCodeAt(0); - return '~E' + charCodeToEscape + 'E'; + 'use strict'; + var charCodeToEscape = m1.charCodeAt(0); + return '~E' + charCodeToEscape + 'E'; }; var escapeCharacters = function (text, charsToEscape, afterBackslash) { - // First we have to escape the escape characters so that - // we can build a character class out of them - var regexString = '([' + charsToEscape.replace(/([\[\]\\])/g, '\\$1') + '])'; + 'use strict'; + // First we have to escape the escape characters so that + // we can build a character class out of them + var regexString = '([' + charsToEscape.replace(/([\[\]\\])/g, '\\$1') + '])'; - if (afterBackslash) { - regexString = '\\\\' + regexString; - } + if (afterBackslash) { + regexString = '\\\\' + regexString; + } - var regex = new RegExp(regexString, 'g'); - text = text.replace(regex, escapeCharactersCallback); + var regex = new RegExp(regexString, 'g'); + text = text.replace(regex, escapeCharactersCallback); - return text; + return text; }; if (!showdown.hasOwnProperty('helper')) { - showdown.helper = {}; + showdown.helper = {}; } /** diff --git a/src/loader.js b/src/loader.js index 8c044dfe..2d6b05be 100644 --- a/src/loader.js +++ b/src/loader.js @@ -6,15 +6,15 @@ var root = this; // CommonJS/nodeJS Loader if (typeof module !== 'undefined' && module.exports) { - module.exports = showdown; + module.exports = showdown; } // AMD Loader else if (typeof define === 'function' && define.amd) { - define('showdown', function () { - return showdown; - }); + define('showdown', function () { + return showdown; + }); } // Regular Browser loader else { - root.showdown = showdown; + root.showdown = showdown; } diff --git a/src/showdown.js b/src/showdown.js index 0ff94bd3..a051cd6f 100644 --- a/src/showdown.js +++ b/src/showdown.js @@ -6,8 +6,8 @@ var showdown = {}, parsers = {}, globalOptions = { - omitExtraWLInCodeBlocks: false, - prefixHeaderId: false + omitExtraWLInCodeBlocks: false, + prefixHeaderId: false }; /////////////////////////////////////////////////////////////////////////// @@ -19,7 +19,6 @@ var showdown = {}, */ showdown.helper = {}; - /////////////////////////////////////////////////////////////////////////// // API // @@ -29,16 +28,19 @@ showdown.extensions = {}; //Public methods showdown.setOption = function (key, value) { - globalOptions[key] = value; - return this; + 'use strict'; + globalOptions[key] = value; + return this; }; showdown.getOption = function (key) { - return globalOptions[key]; + 'use strict'; + return globalOptions[key]; }; showdown.getOptions = function () { - return globalOptions; + 'use strict'; + return globalOptions; }; /** @@ -51,17 +53,18 @@ showdown.getOptions = function () { * @returns {*} */ showdown.subParser = function (name, func) { - if (showdown.helper.isString(name)) { - if (typeof func !== 'undefined') { - parsers[name] = func; - } else { - if (parsers.hasOwnProperty(name)) { - return parsers[name]; - } else { - throw Error('SubParser named ' + name + ' not registered!'); - } - } + 'use strict'; + if (showdown.helper.isString(name)) { + if (typeof func !== 'undefined') { + parsers[name] = func; + } else { + if (parsers.hasOwnProperty(name)) { + return parsers[name]; + } else { + throw Error('SubParser named ' + name + ' not registered!'); + } } + } }; /** @@ -70,85 +73,85 @@ showdown.subParser = function (name, func) { * @returns {{makeHtml: Function}} */ showdown.Converter = function (converterOptions) { + 'use strict'; + + converterOptions = converterOptions || {}; + + var options = globalOptions, + parserOrder = [ + 'detab', + 'stripBlankLines', + //runLanguageExtensions, + 'githubCodeBlocks', + 'hashHTMLBlocks', + 'stripLinkDefinitions', + 'blockGamut', + 'unescapeSpecialChars' + ]; + + // Merge options + if (typeof converterOptions === 'object') { + for (var opt in converterOptions) { + if (converterOptions.hasOwnProperty(opt)) { + options[opt] = converterOptions[opt]; + } + } + } - converterOptions = converterOptions || {}; - - var options = globalOptions, - parserOrder = [ - 'detab', - 'stripBlankLines', - //runLanguageExtensions, - 'githubCodeBlocks', - 'hashHTMLBlocks', - 'stripLinkDefinitions', - 'blockGamut', - 'unescapeSpecialChars' - ]; - - // Merge options - if (typeof converterOptions === 'object') { - for (var opt in converterOptions) { - if (converterOptions.hasOwnProperty(opt)) { - options[opt] = converterOptions[opt]; - } - } + var makeHtml = function (text) { + + //check if text is not falsy + if (!text) { + return text; } - var makeHtml = function (text) { - - //check if text is not falsy - if (!text) { - return text; - } - - var globals = { - gHtmlBlocks: [], - gUrls: {}, - gTitles: {}, - gListLevel: 0, - hashLinkCounts: {} - }; - - // attacklab: Replace ~ with ~T - // This lets us use tilde as an escape char to avoid md5 hashes - // The choice of character is arbitrary; anything that isn't - // magic in Markdown will work. - text = text.replace(/~/g, '~T'); - - // attacklab: Replace $ with ~D - // RegExp interprets $ as a special character - // when it's in a replacement string - text = text.replace(/\$/g, '~D'); - - // Standardize line endings - text = text.replace(/\r\n/g, '\n'); // DOS to Unix - text = text.replace(/\r/g, '\n'); // Mac to Unix - - // Make sure text begins and ends with a couple of newlines: - text = '\n\n' + text + '\n\n'; - - // Run all registered parsers - for (var i = 0; i < parserOrder.length; ++i) { - var name = parserOrder[i]; - text = parsers[name](text, options, globals); - } - - // attacklab: Restore dollar signs - text = text.replace(/~D/g, '$$'); - - // attacklab: Restore tildes - text = text.replace(/~T/g, '~'); - - // Run output modifiers - //showdown.forEach(g_output_modifiers, function (x) { - // text = _ExecuteExtension(x, text); - //}); - - return text; + var globals = { + gHtmlBlocks: [], + gUrls: {}, + gTitles: {}, + gListLevel: 0, + hashLinkCounts: {} }; + // attacklab: Replace ~ with ~T + // This lets us use tilde as an escape char to avoid md5 hashes + // The choice of character is arbitrary; anything that isn't + // magic in Markdown will work. + text = text.replace(/~/g, '~T'); - return { - makeHtml: makeHtml - }; + // attacklab: Replace $ with ~D + // RegExp interprets $ as a special character + // when it's in a replacement string + text = text.replace(/\$/g, '~D'); + + // Standardize line endings + text = text.replace(/\r\n/g, '\n'); // DOS to Unix + text = text.replace(/\r/g, '\n'); // Mac to Unix + + // Make sure text begins and ends with a couple of newlines: + text = '\n\n' + text + '\n\n'; + + // Run all registered parsers + for (var i = 0; i < parserOrder.length; ++i) { + var name = parserOrder[i]; + text = parsers[name](text, options, globals); + } + + // attacklab: Restore dollar signs + text = text.replace(/~D/g, '$$'); + + // attacklab: Restore tildes + text = text.replace(/~T/g, '~'); + + // Run output modifiers + //showdown.forEach(g_output_modifiers, function (x) { + // text = _ExecuteExtension(x, text); + //}); + + return text; + }; + + return { + makeHtml: makeHtml + }; }; diff --git a/src/subParsers/anchors.js b/src/subParsers/anchors.js index 27610bec..d54a674e 100644 --- a/src/subParsers/anchors.js +++ b/src/subParsers/anchors.js @@ -6,131 +6,130 @@ * Turn Markdown link shortcuts into XHTML tags. */ showdown.subParser('anchors', function (text, config, globals) { - 'use strict'; - - var writeAnchorTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) { - if (showdown.helper.isUndefined(m7)) { - m7 = ''; - } - wholeMatch = m1; - var linkText = m2, - linkId = m3.toLowerCase(), - url = m4, - title = m7; - - if (!url) { - if (!linkId) { - // lower-case and turn embedded newlines into spaces - linkId = linkText.toLowerCase().replace(/ ?\n/g, ' '); - } - url = '#' + linkId; - - if (!showdown.helper.isUndefined(globals.gUrls[linkId])) { - url = globals.gUrls[linkId]; - if (!showdown.helper.isUndefined(globals.gTitles[linkId])) { - title = globals.gTitles[linkId]; - } - } - else { - if (wholeMatch.search(/\(\s*\)$/m) > -1) { - // Special case for explicit empty url - url = ''; - } else { - return wholeMatch; - } - } + 'use strict'; + + var writeAnchorTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) { + if (showdown.helper.isUndefined(m7)) { + m7 = ''; + } + wholeMatch = m1; + var linkText = m2, + linkId = m3.toLowerCase(), + url = m4, + title = m7; + + if (!url) { + if (!linkId) { + // lower-case and turn embedded newlines into spaces + linkId = linkText.toLowerCase().replace(/ ?\n/g, ' '); + } + url = '#' + linkId; + + if (!showdown.helper.isUndefined(globals.gUrls[linkId])) { + url = globals.gUrls[linkId]; + if (!showdown.helper.isUndefined(globals.gTitles[linkId])) { + title = globals.gTitles[linkId]; } - - url = showdown.helper.escapeCharacters(url, '*_'); - var result = ' -1) { + // Special case for explicit empty url + url = ''; + } else { + return wholeMatch; } - - result += '>' + linkText + ''; - - return result; - }; - - // First, handle reference-style links: [link text] [id] - /* - text = text.replace(/ - ( // wrap whole match in $1 - \[ - ( - (?: - \[[^\]]*\] // allow brackets nested one level - | - [^\[] // or anything else - )* - ) - \] - - [ ]? // one optional space - (?:\n[ ]*)? // one optional newline followed by spaces - - \[ - (.*?) // id = $3 - \] - )()()()() // pad remaining backreferences - /g,_DoAnchors_callback); - */ - text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g, writeAnchorTag); - - // - // Next, inline-style links: [link text](url "optional title") - // - - /* - text = text.replace(/ - ( // wrap whole match in $1 - \[ - ( - (?: - \[[^\]]*\] // allow brackets nested one level - | - [^\[\]] // or anything else - ) - ) - \] - \( // literal paren - [ \t]* - () // no id, so leave $3 empty - ? // href = $4 - [ \t]* - ( // $5 - (['"]) // quote char = $6 - (.*?) // Title = $7 - \6 // matching quote - [ \t]* // ignore any spaces/tabs between closing quote and ) - )? // title is optional - \) - ) - /g,writeAnchorTag); - */ - text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, writeAnchorTag); - - // - // Last, handle reference-style shortcuts: [link text] - // These must come last in case you've also got [link test][1] - // or [link test](/foo) - // - - /* - text = text.replace(/ - ( // wrap whole match in $1 - \[ - ([^\[\]]+) // link text = $2; can't contain '[' or ']' - \] - )()()()()() // pad rest of backreferences - /g, writeAnchorTag); - */ - text = text.replace(/(\[([^\[\]]+)\])()()()()()/g, writeAnchorTag); - - return text; - + } + } + + url = showdown.helper.escapeCharacters(url, '*_'); + var result = ''; + + return result; + }; + + // First, handle reference-style links: [link text] [id] + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ( + (?: + \[[^\]]*\] // allow brackets nested one level + | + [^\[] // or anything else + )* + ) + \] + + [ ]? // one optional space + (?:\n[ ]*)? // one optional newline followed by spaces + + \[ + (.*?) // id = $3 + \] + )()()()() // pad remaining backreferences + /g,_DoAnchors_callback); + */ + text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g, writeAnchorTag); + + // + // Next, inline-style links: [link text](url "optional title") + // + + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ( + (?: + \[[^\]]*\] // allow brackets nested one level + | + [^\[\]] // or anything else + ) + ) + \] + \( // literal paren + [ \t]* + () // no id, so leave $3 empty + ? // href = $4 + [ \t]* + ( // $5 + (['"]) // quote char = $6 + (.*?) // Title = $7 + \6 // matching quote + [ \t]* // ignore any spaces/tabs between closing quote and ) + )? // title is optional + \) + ) + /g,writeAnchorTag); + */ + text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, + writeAnchorTag); + + // + // Last, handle reference-style shortcuts: [link text] + // These must come last in case you've also got [link test][1] + // or [link test](/foo) + // + + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ([^\[\]]+) // link text = $2; can't contain '[' or ']' + \] + )()()()()() // pad rest of backreferences + /g, writeAnchorTag); + */ + text = text.replace(/(\[([^\[\]]+)\])()()()()()/g, writeAnchorTag); + + return text; }); diff --git a/src/subParsers/autoLinks.js b/src/subParsers/autoLinks.js index 86a9e347..e7857e83 100644 --- a/src/subParsers/autoLinks.js +++ b/src/subParsers/autoLinks.js @@ -3,31 +3,29 @@ */ showdown.subParser('autoLinks', function (text) { - 'use strict'; + 'use strict'; - text = text.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi, "$1"); + text = text.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi, "$1"); - // Email addresses: + // Email addresses: - /* - text = text.replace(/ - < - (?:mailto:)? - ( - [-.\w]+ - \@ - [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+ - ) - > - /gi, _DoAutoLinks_callback()); - */ - text = text.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi, - function (wholeMatch, m1) { - var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1); - return showdown.subParser('encodeEmailAddress')(unescapedStr); - } - ); + /* + text = text.replace(/ + < + (?:mailto:)? + ( + [-.\w]+ + \@ + [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+ + ) + > + /gi, _DoAutoLinks_callback()); + */ + text = text.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi, function (wholeMatch, m1) { + var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1); + return showdown.subParser('encodeEmailAddress')(unescapedStr); + }); - return text; + return text; }); diff --git a/src/subParsers/blockGamut.js b/src/subParsers/blockGamut.js index 11f62088..d3beb173 100644 --- a/src/subParsers/blockGamut.js +++ b/src/subParsers/blockGamut.js @@ -7,27 +7,27 @@ * tags like paragraphs, headers, and list items. */ showdown.subParser('blockGamut', function (text, options, globals) { - 'use strict'; + 'use strict'; - text = showdown.subParser('headers')(text, options, globals); + text = showdown.subParser('headers')(text, options, globals); - // Do Horizontal Rules: - var key = showdown.subParser('hashBlock')('
    ', options, globals); - text = text.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm, key); - text = text.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm, key); - text = text.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm, key); + // Do Horizontal Rules: + var key = showdown.subParser('hashBlock')('
    ', options, globals); + text = text.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm, key); + text = text.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm, key); + text = text.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm, key); - text = showdown.subParser('lists')(text, options, globals); - text = showdown.subParser('codeBlocks')(text, options, globals); - text = showdown.subParser('blockQuotes')(text, options, globals); + text = showdown.subParser('lists')(text, options, globals); + text = showdown.subParser('codeBlocks')(text, options, globals); + text = showdown.subParser('blockQuotes')(text, options, globals); - // We already ran _HashHTMLBlocks() before, in Markdown(), but that - // was to escape raw HTML in the original Markdown source. This time, - // we're escaping the markup we've just created, so that we don't wrap - //

    tags around block-level tags. - text = showdown.subParser('hashHTMLBlocks')(text, options, globals); - text = showdown.subParser('paragraphs')(text, options, globals); + // We already ran _HashHTMLBlocks() before, in Markdown(), but that + // was to escape raw HTML in the original Markdown source. This time, + // we're escaping the markup we've just created, so that we don't wrap + //

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

     content, so we need to fix that:
    -            bq = bq.replace(
    -                /(\s*
    [^\r]+?<\/pre>)/gm,
    -                function (wholeMatch, m1) {
    -                    var pre = m1;
    -                    // attacklab: hack around Konqueror 3.5.4 bug:
    -                    pre = pre.replace(/^  /mg, '~0');
    -                    pre = pre.replace(/~0/g, '');
    -                    return pre;
    -                });
    -
    -            return showdown.subParser('hashBlock')('
    \n' + bq + '\n
    ', options, globals); - }); - return text; + 'use strict'; + + /* + text = text.replace(/ + ( // Wrap whole match in $1 + ( + ^[ \t]*>[ \t]? // '>' at the start of a line + .+\n // rest of the first line + (.+\n)* // subsequent consecutive lines + \n* // blanks + )+ + ) + /gm, function(){...}); + */ + + text = text.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm, function (wholeMatch, m1) { + var bq = m1; + + // attacklab: hack around Konqueror 3.5.4 bug: + // "----------bug".replace(/^-/g,"") == "bug" + bq = bq.replace(/^[ \t]*>[ \t]?/gm, '~0'); // trim one level of quoting + + // attacklab: clean up hack + bq = bq.replace(/~0/g, ''); + + bq = bq.replace(/^[ \t]+$/gm, ''); // trim whitespace-only lines + bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse + + bq = bq.replace(/(^|\n)/g, '$1 '); + // These leading spaces screw with
     content, so we need to fix that:
    +    bq = bq.replace(/(\s*
    [^\r]+?<\/pre>)/gm, function (wholeMatch, m1) {
    +      var pre = m1;
    +      // attacklab: hack around Konqueror 3.5.4 bug:
    +      pre = pre.replace(/^  /mg, '~0');
    +      pre = pre.replace(/~0/g, '');
    +      return pre;
    +    });
    +
    +    return showdown.subParser('hashBlock')('
    \n' + bq + '\n
    ', options, globals); + }); + return text; }); diff --git a/src/subParsers/codeBlocks.js b/src/subParsers/codeBlocks.js index b11de329..97c80ed9 100644 --- a/src/subParsers/codeBlocks.js +++ b/src/subParsers/codeBlocks.js @@ -6,43 +6,41 @@ * Process Markdown `
    ` blocks.
      */
     showdown.subParser('codeBlocks', function (text, options, globals) {
    -    'use strict';
    -
    -    /*
    -     text = text.replace(text,
    -     /(?:\n\n|^)
    -     (								// $1 = the code block -- one or more lines, starting with a space/tab
    -     (?:
    -     (?:[ ]{4}|\t)			// Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width
    -     .*\n+
    -     )+
    -     )
    -     (\n*[ ]{0,3}[^ \t\n]|(?=~0))	// attacklab: g_tab_width
    -     /g,function(){...});
    -     */
    -
    -    // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
    -    text += '~0';
    -
    -    text = text.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,
    -        function (wholeMatch, m1, m2) {
    -            var codeblock = m1,
    -                nextChar = m2;
    -
    -            codeblock = showdown.subParser('outdent')(codeblock);
    -            codeblock = showdown.subParser('encodeCode')(codeblock);
    -            codeblock = showdown.subParser('detab')(codeblock);
    -            codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines
    -            codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing whitespace
    -
    -            codeblock = '
    ' + codeblock + '\n
    '; - - return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar; - } - ); - - // attacklab: strip sentinel - text = text.replace(/~0/, ''); - - return text; + 'use strict'; + + /* + text = text.replace(text, + /(?:\n\n|^) + ( // $1 = the code block -- one or more lines, starting with a space/tab + (?: + (?:[ ]{4}|\t) // Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width + .*\n+ + )+ + ) + (\n*[ ]{0,3}[^ \t\n]|(?=~0)) // attacklab: g_tab_width + /g,function(){...}); + */ + + // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug + text += '~0'; + + text = text.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g, + function (wholeMatch, m1, m2) { + var codeblock = m1, nextChar = m2; + + codeblock = showdown.subParser('outdent')(codeblock); + codeblock = showdown.subParser('encodeCode')(codeblock); + codeblock = showdown.subParser('detab')(codeblock); + codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines + codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing whitespace + + codeblock = '
    ' + codeblock + '\n
    '; + + return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar; + }); + + // attacklab: strip sentinel + text = text.replace(/~0/, ''); + + return text; }); diff --git a/src/subParsers/codeSpans.js b/src/subParsers/codeSpans.js index 002eb639..a2feb9bf 100644 --- a/src/subParsers/codeSpans.js +++ b/src/subParsers/codeSpans.js @@ -28,30 +28,29 @@ * ... type `bar` ... */ showdown.subParser('codeSpans', function (text) { - 'use strict'; + 'use strict'; - /* - text = text.replace(/ - (^|[^\\]) // Character before opening ` can't be a backslash - (`+) // $2 = Opening run of ` - ( // $3 = The code block - [^\r]*? - [^`] // attacklab: work around lack of lookbehind - ) - \2 // Matching closer - (?!`) - /gm, function(){...}); - */ + /* + text = text.replace(/ + (^|[^\\]) // Character before opening ` can't be a backslash + (`+) // $2 = Opening run of ` + ( // $3 = The code block + [^\r]*? + [^`] // attacklab: work around lack of lookbehind + ) + \2 // Matching closer + (?!`) + /gm, function(){...}); + */ - text = text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm, - function (wholeMatch, m1, m2, m3) { - var c = m3; - c = c.replace(/^([ \t]*)/g, ''); // leading whitespace - c = c.replace(/[ \t]*$/g, ''); // trailing whitespace - c = showdown.subParser('encodeCode')(c); - return m1 + '' + c + ''; - }); + text = text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm, function (wholeMatch, m1, m2, m3) { + var c = m3; + c = c.replace(/^([ \t]*)/g, ''); // leading whitespace + c = c.replace(/[ \t]*$/g, ''); // trailing whitespace + c = showdown.subParser('encodeCode')(c); + return m1 + '' + c + ''; + }); - return text; + return text; }); diff --git a/src/subParsers/detab.js b/src/subParsers/detab.js index 8ed13492..8bd4307b 100644 --- a/src/subParsers/detab.js +++ b/src/subParsers/detab.js @@ -6,33 +6,30 @@ * Convert all tabs to spaces */ showdown.subParser('detab', function (text) { - 'use strict'; + 'use strict'; - // expand first n-1 tabs - text = text.replace(/\t(?=\t)/g, ' '); // g_tab_width + // expand first n-1 tabs + text = text.replace(/\t(?=\t)/g, ' '); // g_tab_width - // replace the nth with two sentinels - text = text.replace(/\t/g, '~A~B'); + // replace the nth with two sentinels + text = text.replace(/\t/g, '~A~B'); - // use the sentinel to anchor our regex so it doesn't explode - text = text.replace(/~B(.+?)~A/g, - function (wholeMatch, m1) { - var leadingText = m1, - numSpaces = 4 - leadingText.length % 4; // g_tab_width + // use the sentinel to anchor our regex so it doesn't explode + text = text.replace(/~B(.+?)~A/g, function (wholeMatch, m1) { + var leadingText = m1, numSpaces = 4 - leadingText.length % 4; // g_tab_width - // there *must* be a better way to do this: - for (var i = 0; i < numSpaces; i++) { - leadingText += ' '; - } + // there *must* be a better way to do this: + for (var i = 0; i < numSpaces; i++) { + leadingText += ' '; + } - return leadingText; - } - ); + return leadingText; + }); - // clean up sentinels - text = text.replace(/~A/g, ' '); // g_tab_width - text = text.replace(/~B/g, ''); + // clean up sentinels + text = text.replace(/~A/g, ' '); // g_tab_width + text = text.replace(/~B/g, ''); - return text; + return text; }); diff --git a/src/subParsers/encodeAmpsAndAngles.js b/src/subParsers/encodeAmpsAndAngles.js index f6123a50..370aff08 100644 --- a/src/subParsers/encodeAmpsAndAngles.js +++ b/src/subParsers/encodeAmpsAndAngles.js @@ -6,13 +6,13 @@ * Smart processing for ampersands and angle brackets that need to be encoded. */ showdown.subParser('encodeAmpsAndAngles', function (text) { - 'use strict'; - // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin: - // http://bumppo.net/projects/amputator/ - text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, '&'); + 'use strict'; + // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin: + // http://bumppo.net/projects/amputator/ + text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, '&'); - // Encode naked <'s - text = text.replace(/<(?![a-z\/?\$!])/gi, '<'); + // Encode naked <'s + text = text.replace(/<(?![a-z\/?\$!])/gi, '<'); - return text; + return text; }); diff --git a/src/subParsers/encodeBackslashEscapes.js b/src/subParsers/encodeBackslashEscapes.js index c8acee2e..cbf48172 100644 --- a/src/subParsers/encodeBackslashEscapes.js +++ b/src/subParsers/encodeBackslashEscapes.js @@ -14,8 +14,8 @@ * as an optimization for Firefox. This function gets called a LOT. */ showdown.subParser('encodeBackslashEscapes', function (text) { - 'use strict'; - text = text.replace(/\\(\\)/g, showdown.helper.escapeCharactersCallback); - text = text.replace(/\\([`*_{}\[\]()>#+-.!])/g, showdown.helper.escapeCharactersCallback); - return text; + 'use strict'; + text = text.replace(/\\(\\)/g, showdown.helper.escapeCharactersCallback); + text = text.replace(/\\([`*_{}\[\]()>#+-.!])/g, showdown.helper.escapeCharactersCallback); + return text; }); diff --git a/src/subParsers/encodeCode.js b/src/subParsers/encodeCode.js index e3a6feaf..27b51e53 100644 --- a/src/subParsers/encodeCode.js +++ b/src/subParsers/encodeCode.js @@ -8,26 +8,26 @@ * and lose their special Markdown meanings. */ showdown.subParser('encodeCode', function (text) { - 'use strict'; + 'use strict'; - // Encode all ampersands; HTML entities are not - // entities within a Markdown code span. - text = text.replace(/&/g, '&'); + // Encode all ampersands; HTML entities are not + // entities within a Markdown code span. + text = text.replace(/&/g, '&'); - // Do the angle bracket song and dance: - text = text.replace(//g, '>'); + // Do the angle bracket song and dance: + text = text.replace(//g, '>'); - // Now, escape characters that are magic in Markdown: - text = showdown.helper.escapeCharacters(text, '*_{}[]\\', false); + // Now, escape characters that are magic in Markdown: + text = showdown.helper.escapeCharacters(text, '*_{}[]\\', false); - // jj the line above breaks this: - //--- - //* Item - // 1. Subitem - // special char: * - // --- + // jj the line above breaks this: + //--- + //* Item + // 1. Subitem + // special char: * + // --- - return text; + return text; }); diff --git a/src/subParsers/encodeEmailAddress.js b/src/subParsers/encodeEmailAddress.js index 0f231745..9e15b5fc 100644 --- a/src/subParsers/encodeEmailAddress.js +++ b/src/subParsers/encodeEmailAddress.js @@ -2,7 +2,6 @@ * Created by Estevao on 12-01-2015. */ - /** * Input: an email address, e.g. "foo@example.com" * @@ -19,42 +18,38 @@ * */ showdown.subParser('encodeEmailAddress', function (addr) { - 'use strict'; - - var encode = [ - function (ch) { - return '&#' + ch.charCodeAt(0) + ';'; - }, - function (ch) { - return '&#x' + ch.charCodeAt(0).toString(16) + ';'; - }, - function (ch) { - return ch; - } - ]; - - addr = 'mailto:' + addr; - - addr = addr.replace(/./g, function (ch) { - if (ch === '@') { - // this *must* be encoded. I insist. - ch = encode[Math.floor(Math.random() * 2)](ch); - } else if (ch !== ':') { - // leave ':' alone (to spot mailto: later) - var r = Math.random(); - // roughly 10% raw, 45% hex, 45% dec - ch = ( - r > 0.9 ? encode[2](ch) : - r > 0.45 ? encode[1](ch) : - encode[0](ch) - ); - } - return ch; - }); - - addr = '' + addr + ''; - addr = addr.replace(/">.+:/g, '">'); // strip the mailto: from the visible part - - return addr; + 'use strict'; + + var encode = [ + function (ch) { + return '&#' + ch.charCodeAt(0) + ';'; + }, function (ch) { + return '&#x' + ch.charCodeAt(0).toString(16) + ';'; + }, function (ch) { + return ch; + } + ]; + + addr = 'mailto:' + addr; + + addr = addr.replace(/./g, function (ch) { + if (ch === '@') { + // this *must* be encoded. I insist. + ch = encode[Math.floor(Math.random() * 2)](ch); + } else if (ch !== ':') { + // leave ':' alone (to spot mailto: later) + var r = Math.random(); + // roughly 10% raw, 45% hex, 45% dec + ch = ( + r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch) + ); + } + return ch; + }); + + addr = '' + addr + ''; + addr = addr.replace(/">.+:/g, '">'); // strip the mailto: from the visible part + + return addr; }); diff --git a/src/subParsers/escapeSpecialCharsWithinTagAttributes.js b/src/subParsers/escapeSpecialCharsWithinTagAttributes.js index 2f95b4a7..46dac216 100644 --- a/src/subParsers/escapeSpecialCharsWithinTagAttributes.js +++ b/src/subParsers/escapeSpecialCharsWithinTagAttributes.js @@ -7,17 +7,17 @@ * don't conflict with their use in Markdown for code, italics and strong. */ showdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text) { - 'use strict'; + 'use strict'; - // Build a regex to find HTML tags and comments. See Friedl's - // "Mastering Regular Expressions", 2nd Ed., pp. 200-201. - var regex = /(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi; + // Build a regex to find HTML tags and comments. See Friedl's + // "Mastering Regular Expressions", 2nd Ed., pp. 200-201. + var regex = /(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi; - text = text.replace(regex, function (wholeMatch) { - var tag = wholeMatch.replace(/(.)<\/?code>(?=.)/g, '$1`'); - tag = showdown.helper.escapeCharacters(tag, '\\`*_'); - return tag; - }); + text = text.replace(regex, function (wholeMatch) { + var tag = wholeMatch.replace(/(.)<\/?code>(?=.)/g, '$1`'); + tag = showdown.helper.escapeCharacters(tag, '\\`*_'); + return tag; + }); - return text; + return text; }); diff --git a/src/subParsers/githubCodeBlocks.js b/src/subParsers/githubCodeBlocks.js index b40cc875..f8141bca 100644 --- a/src/subParsers/githubCodeBlocks.js +++ b/src/subParsers/githubCodeBlocks.js @@ -13,34 +13,30 @@ * ``` */ showdown.subParser('githubCodeBlocks', function (text, options, globals) { - 'use strict'; + 'use strict'; - text += '~0'; + text += '~0'; - text = text.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g, - function (wholeMatch, m1, m2) { - var language = m1, - codeblock = m2, - end = '\n'; + text = text.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g, function (wholeMatch, m1, m2) { + var language = m1, codeblock = m2, end = '\n'; - if (options.omitExtraWLInCodeBlocks) { - end = ''; - } + if (options.omitExtraWLInCodeBlocks) { + end = ''; + } - codeblock = showdown.subParser('encodeCode')(codeblock); - codeblock = showdown.subParser('detab')(codeblock); - codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines - codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing whitespace + codeblock = showdown.subParser('encodeCode')(codeblock); + codeblock = showdown.subParser('detab')(codeblock); + codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines + codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing whitespace - codeblock = '
    ' + codeblock + end + '
    '; + codeblock = '
    ' + codeblock + end + '
    '; - return showdown.subParser('hashBlock')(codeblock, options, globals); - } - ); + return showdown.subParser('hashBlock')(codeblock, options, globals); + }); - // attacklab: strip sentinel - text = text.replace(/~0/, ''); + // attacklab: strip sentinel + text = text.replace(/~0/, ''); - return text; + return text; }); diff --git a/src/subParsers/hashBlock.js b/src/subParsers/hashBlock.js index 99cc0dc5..ccd0c1a0 100644 --- a/src/subParsers/hashBlock.js +++ b/src/subParsers/hashBlock.js @@ -3,7 +3,7 @@ */ showdown.subParser('hashBlock', function (text, options, globals) { - 'use strict'; - text = text.replace(/(^\n+|\n+$)/g, ''); - return '\n\n~K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\n\n'; + 'use strict'; + text = text.replace(/(^\n+|\n+$)/g, ''); + return '\n\n~K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\n\n'; }); diff --git a/src/subParsers/hashElement.js b/src/subParsers/hashElement.js index 7747fbe9..6a836d7f 100644 --- a/src/subParsers/hashElement.js +++ b/src/subParsers/hashElement.js @@ -3,21 +3,21 @@ */ showdown.subParser('hashElement', function (text, options, globals) { - 'use strict'; + 'use strict'; - return function (wholeMatch, m1) { - var blockText = m1; + return function (wholeMatch, m1) { + var blockText = m1; - // Undo double lines - blockText = blockText.replace(/\n\n/g, '\n'); - blockText = blockText.replace(/^\n/, ''); + // Undo double lines + blockText = blockText.replace(/\n\n/g, '\n'); + blockText = blockText.replace(/^\n/, ''); - // strip trailing blank lines - blockText = blockText.replace(/\n+$/g, ''); + // strip trailing blank lines + blockText = blockText.replace(/\n+$/g, ''); - // Replace the element text with a marker ("~KxK" where x is its key) - blockText = '\n\n~K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\n\n'; + // Replace the element text with a marker ("~KxK" where x is its key) + blockText = '\n\n~K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\n\n'; - return blockText; - }; + return blockText; + }; }); diff --git a/src/subParsers/hashHTMLBlocks.js b/src/subParsers/hashHTMLBlocks.js index 03a63723..013f4d6e 100644 --- a/src/subParsers/hashHTMLBlocks.js +++ b/src/subParsers/hashHTMLBlocks.js @@ -3,129 +3,135 @@ */ showdown.subParser('hashHTMLBlocks', function (text, options, globals) { - 'use strict'; - - // attacklab: Double up blank lines to reduce lookaround - text = text.replace(/\n/g, '\n\n'); - - // Hashify HTML blocks: - // We only want to do this for block-level HTML tags, such as headers, - // lists, and tables. That's because we still want to wrap

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

    - //
    - // tags for inner block must be indented. - //
    - //
    - // - // The outermost tags must start at the left margin for this to match, and - // the inner nested divs must be indented. - // We need to do this before the next, more liberal match, because the next - // match will start at the first `
    ` and stop at the first `
    `. - - // attacklab: This regex can be expensive when it fails. - /* - var text = text.replace(/ - ( // save in $1 - ^ // start of line (with /m) - <($block_tags_a) // start tag = $2 - \b // word break - // attacklab: hack around khtml/pcre bug... - [^\r]*?\n // any number of lines, minimally matching - // the matching end tag - [ \t]* // trailing spaces/tabs - (?=\n+) // followed by a newline - ) // attacklab: there are sentinel newlines at end of document - /gm,function(){...}}; - */ - 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, showdown.subParser('hashElement')(text, options, globals)); - - // - // Now match more liberally, simply from `\n` to `\n` - // - - /* - var text = text.replace(/ - ( // save in $1 - ^ // start of line (with /m) - <($block_tags_b) // start tag = $2 - \b // word break - // attacklab: hack around khtml/pcre bug... - [^\r]*? // any number of lines, minimally matching - // the matching end tag - [ \t]* // trailing spaces/tabs - (?=\n+) // followed by a newline - ) // attacklab: there are sentinel newlines at end of document - /gm,function(){...}}; - */ - 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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm, showdown.subParser('hashElement')(text, options, globals)); - - // Special case just for
    . It was easier to make a special case than - // to make the other regex more complicated. - - /* - text = text.replace(/ - ( // save in $1 - \n\n // Starting after a blank line - [ ]{0,3} - (<(hr) // start tag = $2 - \b // word break - ([^<>])*? // - \/?>) // the matching end tag - [ \t]* - (?=\n{2,}) // followed by a blank line - ) - /g,showdown.subParser('hashElement')(text, options, globals)); - */ - text = text.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g, showdown.subParser('hashElement')(text, options, globals)); - - // Special case for standalone HTML comments: - - /* - text = text.replace(/ - ( // save in $1 - \n\n // Starting after a blank line - [ ]{0,3} // attacklab: g_tab_width - 1 - - [ \t]* - (?=\n{2,}) // followed by a blank line - ) - /g,showdown.subParser('hashElement')(text, options, globals)); - */ - text = text.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g, showdown.subParser('hashElement')(text, options, globals)); - - // PHP and ASP-style processor instructions ( and <%...%>) - - /* - text = text.replace(/ - (?: - \n\n // Starting after a blank line - ) - ( // save in $1 - [ ]{0,3} // attacklab: g_tab_width - 1 - (?: - <([?%]) // $2 - [^\r]*? - \2> - ) - [ \t]* - (?=\n{2,}) // followed by a blank line - ) - /g,showdown.subParser('hashElement')(text, options, globals)); - */ - text = text.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g, showdown.subParser('hashElement')(text, options, globals)); - - // attacklab: Undo double lines (see comment at top of this function) - text = text.replace(/\n\n/g, '\n'); - return text; - + 'use strict'; + + // attacklab: Double up blank lines to reduce lookaround + text = text.replace(/\n/g, '\n\n'); + + // Hashify HTML blocks: + // We only want to do this for block-level HTML tags, such as headers, + // lists, and tables. That's because we still want to wrap

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

    + //
    + // tags for inner block must be indented. + //
    + //
    + // + // The outermost tags must start at the left margin for this to match, and + // the inner nested divs must be indented. + // We need to do this before the next, more liberal match, because the next + // match will start at the first `
    ` and stop at the first `
    `. + + // attacklab: This regex can be expensive when it fails. + /* + var text = text.replace(/ + ( // save in $1 + ^ // start of line (with /m) + <($block_tags_a) // start tag = $2 + \b // word break + // attacklab: hack around khtml/pcre bug... + [^\r]*?\n // any number of lines, minimally matching + // the matching end tag + [ \t]* // trailing spaces/tabs + (?=\n+) // followed by a newline + ) // attacklab: there are sentinel newlines at end of document + /gm,function(){...}}; + */ + 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, + showdown.subParser('hashElement')(text, options, globals)); + + // + // Now match more liberally, simply from `\n` to `\n` + // + + /* + var text = text.replace(/ + ( // save in $1 + ^ // start of line (with /m) + <($block_tags_b) // start tag = $2 + \b // word break + // attacklab: hack around khtml/pcre bug... + [^\r]*? // any number of lines, minimally matching + // the matching end tag + [ \t]* // trailing spaces/tabs + (?=\n+) // followed by a newline + ) // attacklab: there are sentinel newlines at end of document + /gm,function(){...}}; + */ + 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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm, + showdown.subParser('hashElement')(text, options, globals)); + + // Special case just for
    . It was easier to make a special case than + // to make the other regex more complicated. + + /* + text = text.replace(/ + ( // save in $1 + \n\n // Starting after a blank line + [ ]{0,3} + (<(hr) // start tag = $2 + \b // word break + ([^<>])*? // + \/?>) // the matching end tag + [ \t]* + (?=\n{2,}) // followed by a blank line + ) + /g,showdown.subParser('hashElement')(text, options, globals)); + */ + text = text.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g, + showdown.subParser('hashElement')(text, options, globals)); + + // Special case for standalone HTML comments: + + /* + text = text.replace(/ + ( // save in $1 + \n\n // Starting after a blank line + [ ]{0,3} // attacklab: g_tab_width - 1 + + [ \t]* + (?=\n{2,}) // followed by a blank line + ) + /g,showdown.subParser('hashElement')(text, options, globals)); + */ + text = text.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g, + showdown.subParser('hashElement')(text, options, globals)); + + // PHP and ASP-style processor instructions ( and <%...%>) + + /* + text = text.replace(/ + (?: + \n\n // Starting after a blank line + ) + ( // save in $1 + [ ]{0,3} // attacklab: g_tab_width - 1 + (?: + <([?%]) // $2 + [^\r]*? + \2> + ) + [ \t]* + (?=\n{2,}) // followed by a blank line + ) + /g,showdown.subParser('hashElement')(text, options, globals)); + */ + text = text.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g, + showdown.subParser('hashElement')(text, options, globals)); + + // attacklab: Undo double lines (see comment at top of this function) + text = text.replace(/\n\n/g, '\n'); + return text; }); diff --git a/src/subParsers/headers.js b/src/subParsers/headers.js index 80cc1d37..d19f2493 100644 --- a/src/subParsers/headers.js +++ b/src/subParsers/headers.js @@ -3,77 +3,77 @@ */ showdown.subParser('headers', function (text, options, globals) { - 'use strict'; + 'use strict'; - var prefixHeader = options.prefixHeaderId; + var prefixHeader = options.prefixHeaderId; - // Set text-style headers: - // Header 1 - // ======== - // - // Header 2 - // -------- - // - text = text.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm, - function (wholeMatch, m1) { - return showdown.subParser('hashBlock')('

    ' + - showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals); - }); + // Set text-style headers: + // Header 1 + // ======== + // + // Header 2 + // -------- + // + text = text.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm, function (wholeMatch, m1) { + return showdown.subParser('hashBlock')('

    ' + showdown.subParser('spanGamut')(m1, + options, + globals) + '

    ', + options, globals); + }); - text = text.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm, - function (matchFound, m1) { - return showdown.subParser('hashBlock')('

    ' + - showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals); - }); + text = text.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm, function (matchFound, m1) { + return showdown.subParser('hashBlock')('

    ' + showdown.subParser('spanGamut')(m1, + options, + globals) + '

    ', + options, globals); + }); - // atx-style headers: - // # Header 1 - // ## Header 2 - // ## Header 2 with closing hashes ## - // ... - // ###### Header 6 - // + // atx-style headers: + // # Header 1 + // ## Header 2 + // ## Header 2 with closing hashes ## + // ... + // ###### Header 6 + // - /* - text = text.replace(/ - ^(\#{1,6}) // $1 = string of #'s - [ \t]* - (.+?) // $2 = Header text - [ \t]* - \#* // optional closing #'s (not counted) - \n+ - /gm, function() {...}); - */ + /* + text = text.replace(/ + ^(\#{1,6}) // $1 = string of #'s + [ \t]* + (.+?) // $2 = Header text + [ \t]* + \#* // optional closing #'s (not counted) + \n+ + /gm, function() {...}); + */ - text = text.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm, - function (wholeMatch, m1, m2) { - var span = showdown.subParser('spanGamut')(m2, options, globals), - header = '' + span + ''; + text = text.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm, function (wholeMatch, m1, m2) { + var span = showdown.subParser('spanGamut')(m2, options, + globals), header = '' + span + ''; - return showdown.subParser('hashBlock')(header, options, globals); - }); + return showdown.subParser('hashBlock')(header, options, globals); + }); - function headerId(m) { - var title, - escapedId = m.replace(/[^\w]/g, '').toLowerCase(); + function headerId(m) { + var title, escapedId = m.replace(/[^\w]/g, '').toLowerCase(); - if (globals.hashLinkCounts[escapedId]) { - title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++); - } else { - title = escapedId; - globals.hashLinkCounts[escapedId] = 1; - } + if (globals.hashLinkCounts[escapedId]) { + title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++); + } else { + title = escapedId; + globals.hashLinkCounts[escapedId] = 1; + } - // Prefix id to prevent causing inadvertent pre-existing style matches. - if (prefixHeader === true) { - prefixHeader = 'section'; - } + // Prefix id to prevent causing inadvertent pre-existing style matches. + if (prefixHeader === true) { + prefixHeader = 'section'; + } - if (showdown.helper.isString(prefixHeader)) { - return prefixHeader + title; - } - return title; + if (showdown.helper.isString(prefixHeader)) { + return prefixHeader + title; } + return title; + } - return text; + return text; }); diff --git a/src/subParsers/images.js b/src/subParsers/images.js index 99a78902..cf961742 100644 --- a/src/subParsers/images.js +++ b/src/subParsers/images.js @@ -2,108 +2,100 @@ * Created by Estevao on 11-01-2015. */ - /** * Turn Markdown image shortcuts into tags. */ showdown.subParser('images', function (text, options, globals) { - 'use strict'; + 'use strict'; - var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) { + var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) { - wholeMatch = m1; - var altText = m2, - linkId = m3.toLowerCase(), - url = m4, - title = m7, - gUrls = globals.gUrls, - gTitles = globals.gTitles; + wholeMatch = m1; + var altText = m2, linkId = m3.toLowerCase(), url = m4, title = m7, gUrls = globals.gUrls, gTitles = globals.gTitles; - if (!title) { - title = ''; - } + if (!title) { + title = ''; + } - if (url === '' || url === null) { - if (linkId === '' || linkId === null) { - // lower-case and turn embedded newlines into spaces - linkId = altText.toLowerCase().replace(/ ?\n/g, ' '); - } - url = '#' + linkId; - - if (typeof gUrls[linkId] !== 'undefined') { - url = gUrls[linkId]; - if (typeof gTitles[linkId] !== 'undefined') { - title = gTitles[linkId]; - } - } - else { - return wholeMatch; - } - } + if (url === '' || url === null) { + if (linkId === '' || linkId === null) { + // lower-case and turn embedded newlines into spaces + linkId = altText.toLowerCase().replace(/ ?\n/g, ' '); + } + url = '#' + linkId; - altText = altText.replace(/"/g, '"'); - url = showdown.helper.escapeCharacters(url, '*_'); - var result = '' + altText + '? // src url = $4 - [ \t]* - ( // $5 - (['"]) // quote char = $6 - (.*?) // title = $7 - \6 // matching quote - [ \t]* - )? // title is optional - \) - ) - /g,writeImageTag); - */ - text = text.replace(/(!\[(.*?)\]\s?\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, writeImageTag); - - return text; + if (typeof gUrls[linkId] !== 'undefined') { + url = gUrls[linkId]; + if (typeof gTitles[linkId] !== 'undefined') { + title = gTitles[linkId]; + } + } else { + return wholeMatch; + } + } + + altText = altText.replace(/"/g, '"'); + url = showdown.helper.escapeCharacters(url, '*_'); + var result = '' + altText + '? // src url = $4 + [ \t]* + ( // $5 + (['"]) // quote char = $6 + (.*?) // title = $7 + \6 // matching quote + [ \t]* + )? // title is optional + \) + ) + /g,writeImageTag); + */ + text = text.replace(/(!\[(.*?)\]\s?\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, writeImageTag); + + return text; }); diff --git a/src/subParsers/italicsAndBold.js b/src/subParsers/italicsAndBold.js index 77906729..f008a32d 100644 --- a/src/subParsers/italicsAndBold.js +++ b/src/subParsers/italicsAndBold.js @@ -3,13 +3,11 @@ */ showdown.subParser('italicsAndBold', function (text) { - 'use strict'; - // must go first: - text = text.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g, - '$2'); + 'use strict'; + // must go first: + text = text.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g, '$2'); - text = text.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g, - '$2'); + text = text.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g, '$2'); - return text; + return text; }); diff --git a/src/subParsers/lists.js b/src/subParsers/lists.js index e216d897..c8256ef3 100644 --- a/src/subParsers/lists.js +++ b/src/subParsers/lists.js @@ -6,145 +6,141 @@ * Form HTML ordered (numbered) and unordered (bulleted) lists. */ showdown.subParser('lists', function (text, options, globals) { - 'use strict'; - - /** - * Process the contents of a single ordered or unordered list, splitting it - * into individual list items. - * @param listStr - * @returns {string|*} - */ - var processListItems = function (listStr) { - // The $g_list_level global keeps track of when we're inside a list. - // Each time we enter a list, we increment it; when we leave a list, - // we decrement. If it's zero, we're not in a list anymore. - // - // We do this because when we're not inside a list, we want to treat - // something like this: - // - // I recommend upgrading to version - // 8. Oops, now this line is treated - // as a sub-list. - // - // As a single paragraph, despite the fact that the second line starts - // with a digit-period-space sequence. - // - // Whereas when we're inside a list (or sub-list), that line will be - // treated as the start of a sub-list. What a kludge, huh? This is - // an aspect of Markdown's syntax that's hard to parse perfectly - // without resorting to mind-reading. Perhaps the solution is to - // change the syntax rules such that sub-lists must start with a - // starting cardinal number; e.g. "1." or "a.". - - globals.gListLevel++; - - // trim trailing blank lines: - listStr = listStr.replace(/\n{2,}$/, '\n'); - - // attacklab: add sentinel to emulate \z - listStr += '~0'; - - /* - list_str = list_str.replace(/ - (\n)? // leading line = $1 - (^[ \t]*) // leading whitespace = $2 - ([*+-]|\d+[.]) [ \t]+ // list marker = $3 - ([^\r]+? // list item text = $4 - (\n{1,2})) - (?= \n* (~0 | \2 ([*+-]|\d+[.]) [ \t]+)) - /gm, function(){...}); - */ - listStr = listStr.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm, - function (wholeMatch, m1, m2, m3, m4) { - var item = showdown.subParser('outdent')(m4, options, globals); - //m1 - LeadingLine - - if (m1 || (item.search(/\n{2,}/) > -1)) { - item = showdown.subParser('blockGamut')(item, options, globals); - } else { - // Recursion for sub-lists: - item = showdown.subParser('lists')(item, options, globals); - item = item.replace(/\n$/, ''); // chomp(item) - item = showdown.subParser('spanGamut')(item, options, globals); - } - - return '
  • ' + item + '
  • \n'; - } - ); - - // attacklab: strip sentinel - listStr = listStr.replace(/~0/g, ''); - - globals.gListLevel--; - return listStr; - }; - - - // attacklab: add sentinel to hack around khtml/safari bug: - // http://bugs.webkit.org/show_bug.cgi?id=11231 - text += '~0'; - - // Re-usable pattern to match any entirel ul or ol list: + 'use strict'; + + /** + * Process the contents of a single ordered or unordered list, splitting it + * into individual list items. + * @param listStr + * @returns {string|*} + */ + var processListItems = function (listStr) { + // The $g_list_level global keeps track of when we're inside a list. + // Each time we enter a list, we increment it; when we leave a list, + // we decrement. If it's zero, we're not in a list anymore. + // + // We do this because when we're not inside a list, we want to treat + // something like this: + // + // I recommend upgrading to version + // 8. Oops, now this line is treated + // as a sub-list. + // + // As a single paragraph, despite the fact that the second line starts + // with a digit-period-space sequence. + // + // Whereas when we're inside a list (or sub-list), that line will be + // treated as the start of a sub-list. What a kludge, huh? This is + // an aspect of Markdown's syntax that's hard to parse perfectly + // without resorting to mind-reading. Perhaps the solution is to + // change the syntax rules such that sub-lists must start with a + // starting cardinal number; e.g. "1." or "a.". + + globals.gListLevel++; + + // trim trailing blank lines: + listStr = listStr.replace(/\n{2,}$/, '\n'); + + // attacklab: add sentinel to emulate \z + listStr += '~0'; /* - var whole_list = / - ( // $1 = whole list - ( // $2 - [ ]{0,3} // attacklab: g_tab_width - 1 - ([*+-]|\d+[.]) // $3 = first list item marker - [ \t]+ - ) - [^\r]+? - ( // $4 - ~0 // sentinel for workaround; should be $ - | - \n{2,} - (?=\S) - (?! // Negative lookahead for another list item marker - [ \t]* - (?:[*+-]|\d+[.])[ \t]+ - ) - ) - )/g + list_str = list_str.replace(/ + (\n)? // leading line = $1 + (^[ \t]*) // leading whitespace = $2 + ([*+-]|\d+[.]) [ \t]+ // list marker = $3 + ([^\r]+? // list item text = $4 + (\n{1,2})) + (?= \n* (~0 | \2 ([*+-]|\d+[.]) [ \t]+)) + /gm, function(){...}); */ - var wholeList = /^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm; - - if (globals.gListLevel) { - text = text.replace(wholeList, function (wholeMatch, m1, m2) { - var list = m1, - listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol'; - - // Turn double returns into triple returns, so that we can make a - // paragraph for the last item in a list, if necessary: - list = list.replace(/\n{2,}/g, '\n\n\n'); - - var result = processListItems(list); - - // Trim any trailing whitespace, to put the closing `` - // up on the preceding line, to get it past the current stupid - // HTML block parser. This is a hack to work around the terrible - // hack that is the HTML block parser. - result = result.replace(/\s+$/, ''); - result = '<' + listType + '>' + result + '\n'; - return result; - }); - } else { - wholeList = /(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g; - - text = text.replace(wholeList, function(wholeMatch,m1,m2,m3) { - - // Turn double returns into triple returns, so that we can make a - // paragraph for the last item in a list, if necessary: - var list = m2.replace(/\n{2,}/g, '\n\n\n'), - listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol', - result = processListItems(list); - - return m1 + '<' + listType + '>\n' + result + '\n'; - }); - } + listStr = listStr.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm, + function (wholeMatch, m1, m2, m3, m4) { + var item = showdown.subParser('outdent')(m4, options, globals); + //m1 - LeadingLine + + if (m1 || (item.search(/\n{2,}/) > -1)) { + item = showdown.subParser('blockGamut')(item, options, globals); + } else { + // Recursion for sub-lists: + item = showdown.subParser('lists')(item, options, globals); + item = item.replace(/\n$/, ''); // chomp(item) + item = showdown.subParser('spanGamut')(item, options, globals); + } + + return '
  • ' + item + '
  • \n'; + }); // attacklab: strip sentinel - text = text.replace(/~0/, ''); - - return text; + listStr = listStr.replace(/~0/g, ''); + + globals.gListLevel--; + return listStr; + }; + + // attacklab: add sentinel to hack around khtml/safari bug: + // http://bugs.webkit.org/show_bug.cgi?id=11231 + text += '~0'; + + // Re-usable pattern to match any entirel ul or ol list: + + /* + var whole_list = / + ( // $1 = whole list + ( // $2 + [ ]{0,3} // attacklab: g_tab_width - 1 + ([*+-]|\d+[.]) // $3 = first list item marker + [ \t]+ + ) + [^\r]+? + ( // $4 + ~0 // sentinel for workaround; should be $ + | + \n{2,} + (?=\S) + (?! // Negative lookahead for another list item marker + [ \t]* + (?:[*+-]|\d+[.])[ \t]+ + ) + ) + )/g + */ + var wholeList = /^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm; + + if (globals.gListLevel) { + text = text.replace(wholeList, function (wholeMatch, m1, m2) { + var list = m1, listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol'; + + // Turn double returns into triple returns, so that we can make a + // paragraph for the last item in a list, if necessary: + list = list.replace(/\n{2,}/g, '\n\n\n'); + + var result = processListItems(list); + + // Trim any trailing whitespace, to put the closing `` + // up on the preceding line, to get it past the current stupid + // HTML block parser. This is a hack to work around the terrible + // hack that is the HTML block parser. + result = result.replace(/\s+$/, ''); + result = '<' + listType + '>' + result + '\n'; + return result; + }); + } else { + wholeList = /(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g; + + text = text.replace(wholeList, function (wholeMatch, m1, m2, m3) { + + // Turn double returns into triple returns, so that we can make a + // paragraph for the last item in a list, if necessary: + var list = m2.replace(/\n{2,}/g, + '\n\n\n'), listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol', result = processListItems(list); + + return m1 + '<' + listType + '>\n' + result + '\n'; + }); + } + + // attacklab: strip sentinel + text = text.replace(/~0/, ''); + + return text; }); diff --git a/src/subParsers/outdent.js b/src/subParsers/outdent.js index a6e37ac6..ae9ed09f 100644 --- a/src/subParsers/outdent.js +++ b/src/subParsers/outdent.js @@ -6,14 +6,14 @@ * Remove one level of line-leading tabs or spaces */ showdown.subParser('outdent', function (text) { - 'use strict'; + 'use strict'; - // attacklab: hack around Konqueror 3.5.4 bug: - // "----------bug".replace(/^-/g,"") == "bug" - text = text.replace(/^(\t|[ ]{1,4})/gm, '~0'); // attacklab: g_tab_width + // attacklab: hack around Konqueror 3.5.4 bug: + // "----------bug".replace(/^-/g,"") == "bug" + text = text.replace(/^(\t|[ ]{1,4})/gm, '~0'); // attacklab: g_tab_width - // attacklab: clean up hack - text = text.replace(/~0/g, ''); + // attacklab: clean up hack + text = text.replace(/~0/g, ''); - return text; + return text; }); diff --git a/src/subParsers/paragraphs.js b/src/subParsers/paragraphs.js index 5af839cf..dc2db8e7 100644 --- a/src/subParsers/paragraphs.js +++ b/src/subParsers/paragraphs.js @@ -6,42 +6,40 @@ * */ showdown.subParser('paragraphs', function (text, options, globals) { - 'use strict'; + 'use strict'; - // Strip leading and trailing lines: - text = text.replace(/^\n+/g, ''); - text = text.replace(/\n+$/g, ''); + // Strip leading and trailing lines: + text = text.replace(/^\n+/g, ''); + text = text.replace(/\n+$/g, ''); - var grafs = text.split(/\n{2,}/g), - grafsOut = []; + var grafs = text.split(/\n{2,}/g), grafsOut = []; - /** Wrap

    tags. */ - var end = grafs.length; - for (var i = 0; i < end; i++) { - var str = grafs[i]; + /** Wrap

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

    '); - str += '

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

    '); + str += '

    '; + grafsOut.push(str); } + } - /** Unhashify HTML blocks */ - end = grafsOut.length; - for (i = 0; i < end; i++) { - // if this is a marker for an html block... - while (grafsOut[i].search(/~K(\d+)K/) >= 0) { - var blockText = globals.gHtmlBlocks[RegExp.$1]; - blockText = blockText.replace(/\$/g, '$$$$'); // Escape any dollar signs - grafsOut[i] = grafsOut[i].replace(/~K\d+K/, blockText); - } + /** Unhashify HTML blocks */ + end = grafsOut.length; + for (i = 0; i < end; i++) { + // if this is a marker for an html block... + while (grafsOut[i].search(/~K(\d+)K/) >= 0) { + var blockText = globals.gHtmlBlocks[RegExp.$1]; + blockText = blockText.replace(/\$/g, '$$$$'); // Escape any dollar signs + grafsOut[i] = grafsOut[i].replace(/~K\d+K/, blockText); } + } - return grafsOut.join('\n\n'); + return grafsOut.join('\n\n'); }); diff --git a/src/subParsers/spanGamut.js b/src/subParsers/spanGamut.js index 6aae7234..2d9374bf 100644 --- a/src/subParsers/spanGamut.js +++ b/src/subParsers/spanGamut.js @@ -7,28 +7,27 @@ * tags like paragraphs, headers, and list items. */ showdown.subParser('spanGamut', function (text, options, globals) { - 'use strict'; + 'use strict'; + text = showdown.subParser('codeSpans')(text, options, globals); + text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals); + text = showdown.subParser('encodeBackslashEscapes')(text, options, globals); - text = showdown.subParser('codeSpans')(text, options, globals); - text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals); - text = showdown.subParser('encodeBackslashEscapes')(text, options, globals); + // Process anchor and image tags. Images must come first, + // because ![foo][f] looks like an anchor. + text = showdown.subParser('images')(text, options, globals); + text = showdown.subParser('anchors')(text, options, globals); - // Process anchor and image tags. Images must come first, - // because ![foo][f] looks like an anchor. - text = showdown.subParser('images')(text, options, globals); - text = showdown.subParser('anchors')(text, options, globals); + // Make links out of things like `` + // Must come after _DoAnchors(), because you can use < and > + // delimiters in inline links like [this](). + text = showdown.subParser('autoLinks')(text, options, globals); + text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals); + text = showdown.subParser('italicsAndBold')(text, options, globals); - // Make links out of things like `` - // Must come after _DoAnchors(), because you can use < and > - // delimiters in inline links like [this](). - text = showdown.subParser('autoLinks')(text, options, globals); - text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals); - text = showdown.subParser('italicsAndBold')(text, options, globals); + // Do hard breaks: + text = text.replace(/ +\n/g, '
    \n'); - // Do hard breaks: - text = text.replace(/ +\n/g, '
    \n'); - - return text; + return text; }); diff --git a/src/subParsers/stripBlankLines.js b/src/subParsers/stripBlankLines.js index ef4969b9..42407dc3 100644 --- a/src/subParsers/stripBlankLines.js +++ b/src/subParsers/stripBlankLines.js @@ -9,6 +9,6 @@ * contorted like /[ \t]*\n+/ */ showdown.subParser('stripBlankLines', function (text) { - 'use strict'; - return text.replace(/^[ \t]+$/mg, ''); + 'use strict'; + return text.replace(/^[ \t]+$/mg, ''); }); diff --git a/src/subParsers/stripLinkDefinitions.js b/src/subParsers/stripLinkDefinitions.js index 4bb474fb..e7dacec1 100644 --- a/src/subParsers/stripLinkDefinitions.js +++ b/src/subParsers/stripLinkDefinitions.js @@ -28,30 +28,30 @@ * */ showdown.subParser('stripLinkDefinitions', function (text, options, globals) { - 'use strict'; + 'use strict'; - // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug - text += '~0'; + // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug + text += '~0'; - text = text.replace(/^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm, - function (wholeMatch, m1, m2, m3, m4) { - m1 = m1.toLowerCase(); - globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive - if (m3) { - // Oops, found blank lines, so it's not a title. - // Put back the parenthetical statement we stole. - return m3 + m4; - } else if (m4) { - globals.gTitles[m1] = m4.replace(/"/g, '"'); - } + text = text.replace(/^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm, + function (wholeMatch, m1, m2, m3, m4) { + m1 = m1.toLowerCase(); + globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are + // case-insensitive + if (m3) { + // Oops, found blank lines, so it's not a title. + // Put back the parenthetical statement we stole. + return m3 + m4; + } else if (m4) { + globals.gTitles[m1] = m4.replace(/"/g, '"'); + } - // Completely remove the definition from the text - return ''; - } - ); + // Completely remove the definition from the text + return ''; + }); - // attacklab: strip sentinel - text = text.replace(/~0/, ''); + // attacklab: strip sentinel + text = text.replace(/~0/, ''); - return text; + return text; }); diff --git a/src/subParsers/unescapeSpecialChars.js b/src/subParsers/unescapeSpecialChars.js index 28e17c37..4776d1f6 100644 --- a/src/subParsers/unescapeSpecialChars.js +++ b/src/subParsers/unescapeSpecialChars.js @@ -6,13 +6,11 @@ * Swap back in all the special characters we've hidden. */ showdown.subParser('unescapeSpecialChars', function (text) { - 'use strict'; + 'use strict'; - text = text.replace(/~E(\d+)E/g, - function (wholeMatch, m1) { - var charCodeToReplace = parseInt(m1); - return String.fromCharCode(charCodeToReplace); - } - ); - return text; + text = text.replace(/~E(\d+)E/g, function (wholeMatch, m1) { + var charCodeToReplace = parseInt(m1); + return String.fromCharCode(charCodeToReplace); + }); + return text; }); diff --git a/test/cases/anchors-by-reference.html b/test/cases/anchors-by-reference.html index 6115d50e..1bba3333 100644 --- a/test/cases/anchors-by-reference.html +++ b/test/cases/anchors-by-reference.html @@ -1,4 +1,4 @@

    This is an example reference-style link. -This is another reference-style link. -This is a third reference-style link. -This is a fourth reference-style link.

    + This is another reference-style link. + This is a third reference-style link. + This is a fourth reference-style link.

    diff --git a/test/cases/blockquote-nested-markdown.html b/test/cases/blockquote-nested-markdown.html index 25800d7c..5022edcf 100644 --- a/test/cases/blockquote-nested-markdown.html +++ b/test/cases/blockquote-nested-markdown.html @@ -1,12 +1,12 @@
    -

    This is a header.

    +

    This is a header.

    -
      -
    1. This is the first list item.
    2. -
    3. This is the second list item.
    4. -
    +
      +
    1. This is the first list item.
    2. +
    3. This is the second list item.
    4. +
    -

    Here's some example code:

    +

    Here's some example code:

    return shell_exec("echo $input | $markdown_script");
         
    diff --git a/test/cases/blockquote.html b/test/cases/blockquote.html index 85cabf47..c74d3f62 100644 --- a/test/cases/blockquote.html +++ b/test/cases/blockquote.html @@ -1,5 +1,5 @@
    -

    This is a multi line blockquote test

    +

    This is a multi line blockquote test

    -

    With more than one line.

    +

    With more than one line.

    diff --git a/test/cases/doubline-list.html b/test/cases/doubline-list.html index a2c72162..a2fe2042 100644 --- a/test/cases/doubline-list.html +++ b/test/cases/doubline-list.html @@ -1,4 +1,4 @@
      -
    • Bird

    • -
    • Magic

    • +
    • Bird

    • +
    • Magic

    diff --git a/test/cases/emphasis.html b/test/cases/emphasis.html index 5e30c108..e33c510f 100644 --- a/test/cases/emphasis.html +++ b/test/cases/emphasis.html @@ -11,7 +11,7 @@

    text with bold sentence in middle

    text with bold text that -spans across multiple lines

    + spans across multiple
    lines

    underscored_word

    diff --git a/test/cases/escaped-number-period.html b/test/cases/escaped-number-period.html index 0ea83bac..42f286dc 100644 --- a/test/cases/escaped-number-period.html +++ b/test/cases/escaped-number-period.html @@ -1 +1 @@ -

    It happened in 1986. What a great season.

    +

    It happened in 1986. What a great season.

    diff --git a/test/cases/github-style-at-start.html b/test/cases/github-style-at-start.html index 4f119a76..5cfec092 100644 --- a/test/cases/github-style-at-start.html +++ b/test/cases/github-style-at-start.html @@ -1,6 +1,6 @@
    function MyFunc(a) {
    -    // ...
    -}
    +  // ...
    +  }
     

    That is some code!

    diff --git a/test/cases/github-style-codeblock.html b/test/cases/github-style-codeblock.html index 5daca2f9..0499ce45 100644 --- a/test/cases/github-style-codeblock.html +++ b/test/cases/github-style-codeblock.html @@ -1,8 +1,8 @@

    Define a function in javascript:

    function MyFunc(a) {
    -    var s = '`';
    -}
    +  var s = '`';
    +  }
     

    And some HTML

    diff --git a/test/cases/github-style-linebreaks.html b/test/cases/github-style-linebreaks.html index 276dbf03..e92a482e 100644 --- a/test/cases/github-style-linebreaks.html +++ b/test/cases/github-style-linebreaks.html @@ -1,3 +1,3 @@
    code can go here
    -this is rendered on a second line
    +  this is rendered on a second line
     
    diff --git a/test/cases/horizontal-rules.html b/test/cases/horizontal-rules.html index aaef23eb..5dd0402b 100644 --- a/test/cases/horizontal-rules.html +++ b/test/cases/horizontal-rules.html @@ -1,9 +1,9 @@ -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    diff --git a/test/cases/html5-strutural-tags.html b/test/cases/html5-strutural-tags.html index 528731f5..8e0d4b45 100644 --- a/test/cases/html5-strutural-tags.html +++ b/test/cases/html5-strutural-tags.html @@ -13,10 +13,11 @@
    read -me
    + me +

    the end

    diff --git a/test/cases/images.html b/test/cases/images.html index 7df58552..6ba06707 100644 --- a/test/cases/images.html +++ b/test/cases/images.html @@ -1,5 +1,5 @@ -

    Alt text

    +

    Alt text

    -

    Alt text

    +

    Alt text

    -

    Alt text

    +

    Alt text

    diff --git a/test/cases/implicit-anchors.html b/test/cases/implicit-anchors.html index 01e62d9a..5dfafdce 100644 --- a/test/cases/implicit-anchors.html +++ b/test/cases/implicit-anchors.html @@ -1 +1,2 @@ -

    Search the web at Google or Daring Fireball.

    +

    Search the web at Google or Daring Fireball. +

    diff --git a/test/cases/inline-escaped-chars.html b/test/cases/inline-escaped-chars.html index 9192f3e4..5ee58e6a 100644 --- a/test/cases/inline-escaped-chars.html +++ b/test/cases/inline-escaped-chars.html @@ -1,2 +1,2 @@

    Hello.this_is_a_variable -and.this.is.another_one

    + and.this.is.another_one

    diff --git a/test/cases/inline-style-tag.html b/test/cases/inline-style-tag.html index 1006aa8f..4bb6faf9 100644 --- a/test/cases/inline-style-tag.html +++ b/test/cases/inline-style-tag.html @@ -1,5 +1,7 @@

    An exciting sentence.

    diff --git a/test/cases/lazy-blockquote.html b/test/cases/lazy-blockquote.html index 85cabf47..c74d3f62 100644 --- a/test/cases/lazy-blockquote.html +++ b/test/cases/lazy-blockquote.html @@ -1,5 +1,5 @@
    -

    This is a multi line blockquote test

    +

    This is a multi line blockquote test

    -

    With more than one line.

    +

    With more than one line.

    diff --git a/test/cases/list-with-blockquote.html b/test/cases/list-with-blockquote.html index 6bfd077c..46256505 100644 --- a/test/cases/list-with-blockquote.html +++ b/test/cases/list-with-blockquote.html @@ -1,8 +1,9 @@
      -
    • A list item with a blockquote:

      +
    • A list item with a blockquote:

      -

      This is a blockquote +

      This is a blockquote inside a list item.

      -
    • +
    + diff --git a/test/cases/list-with-code.html b/test/cases/list-with-code.html index dbea279b..a4c4b35d 100644 --- a/test/cases/list-with-code.html +++ b/test/cases/list-with-code.html @@ -1,6 +1,7 @@
      -
    • A list item with code:

      +
    • A list item with code:

      alert('Hello world!');
      -    
    • +
    + diff --git a/test/cases/multi-paragraph-list.html b/test/cases/multi-paragraph-list.html index 1f08bd0e..b5b2946a 100644 --- a/test/cases/multi-paragraph-list.html +++ b/test/cases/multi-paragraph-list.html @@ -1,6 +1,6 @@
      -
    1. This is a major bullet point.

      +
    2. This is a major bullet point.

      That contains multiple paragraphs.

    3. -
    4. And another line

    5. +
    6. And another line

    diff --git a/test/cases/multiline-unordered-list.html b/test/cases/multiline-unordered-list.html index ab56450e..a20becb7 100644 --- a/test/cases/multiline-unordered-list.html +++ b/test/cases/multiline-unordered-list.html @@ -1,5 +1,6 @@
      -
    • This line spans - more than one line and is lazy
    • -
    • Similar to this line
    • +
    • This line spans + more than one line and is lazy +
    • +
    • Similar to this line
    diff --git a/test/cases/nested-blockquote.html b/test/cases/nested-blockquote.html index 91ae5ea9..b91c9d92 100644 --- a/test/cases/nested-blockquote.html +++ b/test/cases/nested-blockquote.html @@ -1,9 +1,9 @@
    -

    This is a multi line blockquote test

    +

    This is a multi line blockquote test

    -
    -

    And nesting!

    -
    +
    +

    And nesting!

    +
    -

    With more than one line.

    +

    With more than one line.

    diff --git a/test/cases/ordered-list-same-number.html b/test/cases/ordered-list-same-number.html index 95b3803f..a48b0b78 100644 --- a/test/cases/ordered-list-same-number.html +++ b/test/cases/ordered-list-same-number.html @@ -1,5 +1,5 @@
      -
    1. Red
    2. -
    3. Green
    4. -
    5. Blue
    6. +
    7. Red
    8. +
    9. Green
    10. +
    11. Blue
    diff --git a/test/cases/ordered-list-wrong-numbers.html b/test/cases/ordered-list-wrong-numbers.html index 95b3803f..a48b0b78 100644 --- a/test/cases/ordered-list-wrong-numbers.html +++ b/test/cases/ordered-list-wrong-numbers.html @@ -1,5 +1,5 @@
      -
    1. Red
    2. -
    3. Green
    4. -
    5. Blue
    6. +
    7. Red
    8. +
    9. Green
    10. +
    11. Blue
    diff --git a/test/cases/ordered-list.html b/test/cases/ordered-list.html index 95b3803f..a48b0b78 100644 --- a/test/cases/ordered-list.html +++ b/test/cases/ordered-list.html @@ -1,5 +1,5 @@
      -
    1. Red
    2. -
    3. Green
    4. -
    5. Blue
    6. +
    7. Red
    8. +
    9. Green
    10. +
    11. Blue
    diff --git a/test/cases/unordered-list-asterisk.html b/test/cases/unordered-list-asterisk.html index f02abb7c..62dba34a 100644 --- a/test/cases/unordered-list-asterisk.html +++ b/test/cases/unordered-list-asterisk.html @@ -1,5 +1,5 @@
      -
    • Red
    • -
    • Green
    • -
    • Blue
    • +
    • Red
    • +
    • Green
    • +
    • Blue
    diff --git a/test/cases/unordered-list-minus.html b/test/cases/unordered-list-minus.html index f02abb7c..62dba34a 100644 --- a/test/cases/unordered-list-minus.html +++ b/test/cases/unordered-list-minus.html @@ -1,5 +1,5 @@
      -
    • Red
    • -
    • Green
    • -
    • Blue
    • +
    • Red
    • +
    • Green
    • +
    • Blue
    diff --git a/test/cases/unordered-list-plus.html b/test/cases/unordered-list-plus.html index f02abb7c..62dba34a 100644 --- a/test/cases/unordered-list-plus.html +++ b/test/cases/unordered-list-plus.html @@ -1,5 +1,5 @@
      -
    • Red
    • -
    • Green
    • -
    • Blue
    • +
    • Red
    • +
    • Green
    • +
    • Blue
    diff --git a/test/cases/url-with-parenthesis.html b/test/cases/url-with-parenthesis.html index 9e1e7cc9..293af09c 100644 --- a/test/cases/url-with-parenthesis.html +++ b/test/cases/url-with-parenthesis.html @@ -1 +1,2 @@ -

    There's an episode of Star Trek: The Next Generation

    +

    There's an episode of Star Trek: The Next Generation +

    diff --git a/test/node/Container/testMakeHtml.js b/test/node/Container/testMakeHtml.js index 589d2114..c12e6a17 100644 --- a/test/node/Container/testMakeHtml.js +++ b/test/node/Container/testMakeHtml.js @@ -3,95 +3,83 @@ */ (function () { - 'use strict'; - - require('source-map-support').install(); - require('chai').should(); - - var fs = require('fs'), - showdown = require('../../../dist/showdown.js'), - converter = new showdown.Converter(), - cases = fs - .readdirSync('test/cases/') - .filter(filter()) - .map(map('test/cases/')), - issues = fs - .readdirSync('test/issues/') - .filter(filter()) - .map(map('test/issues/')); - - //Tests - describe('Converter.makeHtml() simple testcases', function () { - for (var i = 0; i < cases.length; ++i) { - it(cases[i].name, assertion(cases[i])); - } - }); - - describe('Converter.makeHtml() issues testcase', function () { - for (var i = 0; i < issues.length; ++i) { - it(issues[i].name, assertion(issues[i])); - } - }); - - - 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 - }; - }; - } - - //Normalize input/output - function normalize(testCase) { + 'use strict'; - // Normalize line returns - testCase.expected = testCase.expected.replace(/\r/g, ''); - testCase.actual = testCase.actual.replace(/\r/g, ''); + require('source-map-support').install(); + require('chai').should(); - // 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; + var fs = require('fs'), showdown = require('../../../dist/showdown.js'), converter = new showdown.Converter(), cases = fs.readdirSync('test/cases/').filter(filter()).map(map('test/cases/')), issues = fs.readdirSync('test/issues/').filter(filter()).map(map('test/issues/')); + //Tests + describe('Converter.makeHtml() simple testcases', function () { + for (var i = 0; i < cases.length; ++i) { + it(cases[i].name, assertion(cases[i])); } + }); - function assertion(testCase) { - return function () { - testCase.actual = converter.makeHtml(testCase.input); - testCase = normalize(testCase); - - // Compare - testCase.actual.should.equal(testCase.expected); - }; + describe('Converter.makeHtml() issues testcase', function () { + for (var i = 0; i < issues.length; ++i) { + it(issues[i].name, assertion(issues[i])); } + }); + + + 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 + }; + }; + } + + //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; + + } + + function assertion(testCase) { + return function () { + testCase.actual = converter.makeHtml(testCase.input); + testCase = normalize(testCase); + + // Compare + testCase.actual.should.equal(testCase.expected); + }; + } })(); From 29c108d5a5cbb672d1737159c44a415fd0ddb674 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Mon, 19 Jan 2015 11:38:05 +0000 Subject: [PATCH 15/34] chore(.editorconfig): add editorconfig --- .editorconfig | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..4c1b2fcf --- /dev/null +++ b/.editorconfig @@ -0,0 +1,11 @@ +[*.js] +indent_style = space; +indent_size = 2; +insert_final_newline = true; +quote_type = single; +space_after_anonymous_functions = true; +space_after_control_statements = true; +spaces_around_operators = true; +trim_trailing_whitespace = true; +spaces_in_brackets = false; +end_of_line = lf; From 79829dbbf14263bb33ecbba84410be1445a16dd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Mon, 19 Jan 2015 12:04:22 +0000 Subject: [PATCH 16/34] chore(): code style fix and tests fix due to code style changes --- dist/showdown.js | 2053 +++++++++++----------- dist/showdown.js.map | 2 +- dist/showdown.min.js | 4 +- dist/showdown.min.js.map | 2 +- src/angular.js | 7 +- src/loader.js | 1 + src/subParsers/autoLinks.js | 7 +- src/subParsers/codeBlocks.js | 22 +- src/subParsers/detab.js | 3 +- src/subParsers/encodeCode.js | 1 - src/subParsers/encodeEmailAddress.js | 7 +- src/subParsers/githubCodeBlocks.js | 4 +- src/subParsers/headers.js | 18 +- src/subParsers/images.js | 7 +- src/subParsers/lists.js | 8 +- src/subParsers/stripLinkDefinitions.js | 33 +- test/cases/escaped-number-period.md | 2 +- test/cases/horizontal-rules.html | 10 +- test/cases/html5-strutural-tags.html | 3 +- test/cases/images.html | 6 +- test/cases/implicit-anchors.html | 3 +- test/cases/inline-style-tag.html | 4 +- test/cases/list-with-blockquote.html | 3 +- test/cases/list-with-code.html | 3 +- test/cases/multiline-unordered-list.html | 3 +- test/cases/url-with-parenthesis.html | 3 +- test/cases/url-with-parenthesis.md | 3 +- 27 files changed, 1105 insertions(+), 1117 deletions(-) diff --git a/dist/showdown.js b/dist/showdown.js index dbec2e3b..1c23ba77 100644 --- a/dist/showdown.js +++ b/dist/showdown.js @@ -1,6 +1,5 @@ -;/*! showdown 18-01-2015 */ +;/*! showdown 19-01-2015 */ (function(){ - 'use strict'; /** * Created by Tivie on 06-01-2015. */ @@ -9,8 +8,8 @@ var showdown = {}, parsers = {}, globalOptions = { - omitExtraWLInCodeBlocks: false, - prefixHeaderId: false + omitExtraWLInCodeBlocks: false, + prefixHeaderId: false }; /////////////////////////////////////////////////////////////////////////// @@ -22,7 +21,6 @@ var showdown = {}, */ showdown.helper = {}; - /////////////////////////////////////////////////////////////////////////// // API // @@ -32,16 +30,19 @@ showdown.extensions = {}; //Public methods showdown.setOption = function (key, value) { - globalOptions[key] = value; - return this; + 'use strict'; + globalOptions[key] = value; + return this; }; showdown.getOption = function (key) { - return globalOptions[key]; + 'use strict'; + return globalOptions[key]; }; showdown.getOptions = function () { - return globalOptions; + 'use strict'; + return globalOptions; }; /** @@ -54,17 +55,18 @@ showdown.getOptions = function () { * @returns {*} */ showdown.subParser = function (name, func) { - if (showdown.helper.isString(name)) { - if (typeof func !== 'undefined') { - parsers[name] = func; - } else { - if (parsers.hasOwnProperty(name)) { - return parsers[name]; - } else { - throw Error('SubParser named ' + name + ' not registered!'); - } - } + 'use strict'; + if (showdown.helper.isString(name)) { + if (typeof func !== 'undefined') { + parsers[name] = func; + } else { + if (parsers.hasOwnProperty(name)) { + return parsers[name]; + } else { + throw Error('SubParser named ' + name + ' not registered!'); + } } + } }; /** @@ -73,87 +75,87 @@ showdown.subParser = function (name, func) { * @returns {{makeHtml: Function}} */ showdown.Converter = function (converterOptions) { + 'use strict'; + + converterOptions = converterOptions || {}; + + var options = globalOptions, + parserOrder = [ + 'detab', + 'stripBlankLines', + //runLanguageExtensions, + 'githubCodeBlocks', + 'hashHTMLBlocks', + 'stripLinkDefinitions', + 'blockGamut', + 'unescapeSpecialChars' + ]; + + // Merge options + if (typeof converterOptions === 'object') { + for (var opt in converterOptions) { + if (converterOptions.hasOwnProperty(opt)) { + options[opt] = converterOptions[opt]; + } + } + } - converterOptions = converterOptions || {}; - - var options = globalOptions, - parserOrder = [ - 'detab', - 'stripBlankLines', - //runLanguageExtensions, - 'githubCodeBlocks', - 'hashHTMLBlocks', - 'stripLinkDefinitions', - 'blockGamut', - 'unescapeSpecialChars' - ]; - - // Merge options - if (typeof converterOptions === 'object') { - for (var opt in converterOptions) { - if (converterOptions.hasOwnProperty(opt)) { - options[opt] = converterOptions[opt]; - } - } + var makeHtml = function (text) { + + //check if text is not falsy + if (!text) { + return text; } - var makeHtml = function (text) { + var globals = { + gHtmlBlocks: [], + gUrls: {}, + gTitles: {}, + gListLevel: 0, + hashLinkCounts: {} + }; - //check if text is not falsy - if (!text) { - return text; - } + // attacklab: Replace ~ with ~T + // This lets us use tilde as an escape char to avoid md5 hashes + // The choice of character is arbitrary; anything that isn't + // magic in Markdown will work. + text = text.replace(/~/g, '~T'); - var globals = { - gHtmlBlocks: [], - gUrls: {}, - gTitles: {}, - gListLevel: 0, - hashLinkCounts: {} - }; - - // attacklab: Replace ~ with ~T - // This lets us use tilde as an escape char to avoid md5 hashes - // The choice of character is arbitrary; anything that isn't - // magic in Markdown will work. - text = text.replace(/~/g, '~T'); - - // attacklab: Replace $ with ~D - // RegExp interprets $ as a special character - // when it's in a replacement string - text = text.replace(/\$/g, '~D'); - - // Standardize line endings - text = text.replace(/\r\n/g, '\n'); // DOS to Unix - text = text.replace(/\r/g, '\n'); // Mac to Unix - - // Make sure text begins and ends with a couple of newlines: - text = '\n\n' + text + '\n\n'; - - // Run all registered parsers - for (var i = 0; i < parserOrder.length; ++i) { - var name = parserOrder[i]; - text = parsers[name](text, options, globals); - } + // attacklab: Replace $ with ~D + // RegExp interprets $ as a special character + // when it's in a replacement string + text = text.replace(/\$/g, '~D'); - // attacklab: Restore dollar signs - text = text.replace(/~D/g, '$$'); + // Standardize line endings + text = text.replace(/\r\n/g, '\n'); // DOS to Unix + text = text.replace(/\r/g, '\n'); // Mac to Unix - // attacklab: Restore tildes - text = text.replace(/~T/g, '~'); + // Make sure text begins and ends with a couple of newlines: + text = '\n\n' + text + '\n\n'; - // Run output modifiers - //showdown.forEach(g_output_modifiers, function (x) { - // text = _ExecuteExtension(x, text); - //}); + // Run all registered parsers + for (var i = 0; i < parserOrder.length; ++i) { + var name = parserOrder[i]; + text = parsers[name](text, options, globals); + } - return text; - }; + // attacklab: Restore dollar signs + text = text.replace(/~D/g, '$$'); + // attacklab: Restore tildes + text = text.replace(/~T/g, '~'); - return { - makeHtml: makeHtml - }; + // Run output modifiers + //showdown.forEach(g_output_modifiers, function (x) { + // text = _ExecuteExtension(x, text); + //}); + + return text; + }; + + return { + makeHtml: makeHtml + }; }; /** @@ -161,50 +163,56 @@ showdown.Converter = function (converterOptions) { */ function isString(a) { - return (typeof a === 'string' || a instanceof String); + 'use strict'; + return (typeof a === 'string' || a instanceof String); } function forEach(obj, callback) { - if (typeof obj.forEach === 'function') { - obj.forEach(callback); - } else { - var i, len = obj.length; - for (i = 0; i < len; i++) { - callback(obj[i], i, obj); - } + 'use strict'; + if (typeof obj.forEach === 'function') { + obj.forEach(callback); + } else { + var i, len = obj.length; + for (i = 0; i < len; i++) { + callback(obj[i], i, obj); } + } } function isArray(a) { - return a.constructor === Array; + 'use strict'; + return a.constructor === Array; } function isUndefined(value) { - return typeof value === 'undefined'; + 'use strict'; + return typeof value === 'undefined'; } var escapeCharactersCallback = function (wholeMatch, m1) { - var charCodeToEscape = m1.charCodeAt(0); - return '~E' + charCodeToEscape + 'E'; + 'use strict'; + var charCodeToEscape = m1.charCodeAt(0); + return '~E' + charCodeToEscape + 'E'; }; var escapeCharacters = function (text, charsToEscape, afterBackslash) { - // First we have to escape the escape characters so that - // we can build a character class out of them - var regexString = '([' + charsToEscape.replace(/([\[\]\\])/g, '\\$1') + '])'; + 'use strict'; + // First we have to escape the escape characters so that + // we can build a character class out of them + var regexString = '([' + charsToEscape.replace(/([\[\]\\])/g, '\\$1') + '])'; - if (afterBackslash) { - regexString = '\\\\' + regexString; - } + if (afterBackslash) { + regexString = '\\\\' + regexString; + } - var regex = new RegExp(regexString, 'g'); - text = text.replace(regex, escapeCharactersCallback); + var regex = new RegExp(regexString, 'g'); + text = text.replace(regex, escapeCharactersCallback); - return text; + return text; }; if (!showdown.hasOwnProperty('helper')) { - showdown.helper = {}; + showdown.helper = {}; } /** @@ -263,132 +271,131 @@ showdown.helper.escapeCharacters = escapeCharacters; * Turn Markdown link shortcuts into XHTML tags. */ showdown.subParser('anchors', function (text, config, globals) { - 'use strict'; + 'use strict'; - var writeAnchorTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) { - if (showdown.helper.isUndefined(m7)) { - m7 = ''; - } - wholeMatch = m1; - var linkText = m2, - linkId = m3.toLowerCase(), - url = m4, - title = m7; - - if (!url) { - if (!linkId) { - // lower-case and turn embedded newlines into spaces - linkId = linkText.toLowerCase().replace(/ ?\n/g, ' '); - } - url = '#' + linkId; - - if (!showdown.helper.isUndefined(globals.gUrls[linkId])) { - url = globals.gUrls[linkId]; - if (!showdown.helper.isUndefined(globals.gTitles[linkId])) { - title = globals.gTitles[linkId]; - } - } - else { - if (wholeMatch.search(/\(\s*\)$/m) > -1) { - // Special case for explicit empty url - url = ''; - } else { - return wholeMatch; - } - } + var writeAnchorTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) { + if (showdown.helper.isUndefined(m7)) { + m7 = ''; + } + wholeMatch = m1; + var linkText = m2, + linkId = m3.toLowerCase(), + url = m4, + title = m7; + + if (!url) { + if (!linkId) { + // lower-case and turn embedded newlines into spaces + linkId = linkText.toLowerCase().replace(/ ?\n/g, ' '); + } + url = '#' + linkId; + + if (!showdown.helper.isUndefined(globals.gUrls[linkId])) { + url = globals.gUrls[linkId]; + if (!showdown.helper.isUndefined(globals.gTitles[linkId])) { + title = globals.gTitles[linkId]; } - - url = showdown.helper.escapeCharacters(url, '*_'); - var result = ' -1) { + // Special case for explicit empty url + url = ''; + } else { + return wholeMatch; } + } + } - result += '>' + linkText + ''; - - return result; - }; - - // First, handle reference-style links: [link text] [id] - /* - text = text.replace(/ - ( // wrap whole match in $1 - \[ - ( - (?: - \[[^\]]*\] // allow brackets nested one level - | - [^\[] // or anything else - )* - ) - \] - - [ ]? // one optional space - (?:\n[ ]*)? // one optional newline followed by spaces - - \[ - (.*?) // id = $3 - \] - )()()()() // pad remaining backreferences - /g,_DoAnchors_callback); - */ - text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g, writeAnchorTag); - - // - // Next, inline-style links: [link text](url "optional title") - // - - /* - text = text.replace(/ - ( // wrap whole match in $1 - \[ - ( - (?: - \[[^\]]*\] // allow brackets nested one level - | - [^\[\]] // or anything else - ) - ) - \] - \( // literal paren - [ \t]* - () // no id, so leave $3 empty - ? // href = $4 - [ \t]* - ( // $5 - (['"]) // quote char = $6 - (.*?) // Title = $7 - \6 // matching quote - [ \t]* // ignore any spaces/tabs between closing quote and ) - )? // title is optional - \) - ) - /g,writeAnchorTag); - */ - text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, writeAnchorTag); - - // - // Last, handle reference-style shortcuts: [link text] - // These must come last in case you've also got [link test][1] - // or [link test](/foo) - // + url = showdown.helper.escapeCharacters(url, '*_'); + var result = ''; + + return result; + }; + + // First, handle reference-style links: [link text] [id] + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ( + (?: + \[[^\]]*\] // allow brackets nested one level + | + [^\[] // or anything else + )* + ) + \] + + [ ]? // one optional space + (?:\n[ ]*)? // one optional newline followed by spaces + + \[ + (.*?) // id = $3 + \] + )()()()() // pad remaining backreferences + /g,_DoAnchors_callback); + */ + text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g, writeAnchorTag); + + // + // Next, inline-style links: [link text](url "optional title") + // + + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ( + (?: + \[[^\]]*\] // allow brackets nested one level + | + [^\[\]] // or anything else + ) + ) + \] + \( // literal paren + [ \t]* + () // no id, so leave $3 empty + ? // href = $4 + [ \t]* + ( // $5 + (['"]) // quote char = $6 + (.*?) // Title = $7 + \6 // matching quote + [ \t]* // ignore any spaces/tabs between closing quote and ) + )? // title is optional + \) + ) + /g,writeAnchorTag); + */ + text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, + writeAnchorTag); + + // + // Last, handle reference-style shortcuts: [link text] + // These must come last in case you've also got [link test][1] + // or [link test](/foo) + // + + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ([^\[\]]+) // link text = $2; can't contain '[' or ']' + \] + )()()()()() // pad rest of backreferences + /g, writeAnchorTag); + */ + text = text.replace(/(\[([^\[\]]+)\])()()()()()/g, writeAnchorTag); + + return text; }); @@ -397,32 +404,31 @@ showdown.subParser('anchors', function (text, config, globals) { */ showdown.subParser('autoLinks', function (text) { - 'use strict'; - - text = text.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi, "$1"); - - // Email addresses: - - /* - text = text.replace(/ - < - (?:mailto:)? - ( - [-.\w]+ - \@ - [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+ - ) - > - /gi, _DoAutoLinks_callback()); - */ - text = text.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi, - function (wholeMatch, m1) { - var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1); - return showdown.subParser('encodeEmailAddress')(unescapedStr); - } - ); - - return text; + 'use strict'; + + text = text.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi, '$1'); + + // Email addresses: + + /* + text = text.replace(/ + < + (?:mailto:)? + ( + [-.\w]+ + \@ + [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+ + ) + > + /gi); + */ + var pattern = /<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi; + text = text.replace(pattern, function (wholeMatch, m1) { + var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1); + return showdown.subParser('encodeEmailAddress')(unescapedStr); + }); + + return text; }); @@ -435,28 +441,28 @@ showdown.subParser('autoLinks', function (text) { * tags like paragraphs, headers, and list items. */ showdown.subParser('blockGamut', function (text, options, globals) { - 'use strict'; + 'use strict'; - text = showdown.subParser('headers')(text, options, globals); + text = showdown.subParser('headers')(text, options, globals); - // Do Horizontal Rules: - var key = showdown.subParser('hashBlock')('
    ', options, globals); - text = text.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm, key); - text = text.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm, key); - text = text.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm, key); + // Do Horizontal Rules: + var key = showdown.subParser('hashBlock')('
    ', options, globals); + text = text.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm, key); + text = text.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm, key); + text = text.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm, key); - text = showdown.subParser('lists')(text, options, globals); - text = showdown.subParser('codeBlocks')(text, options, globals); - text = showdown.subParser('blockQuotes')(text, options, globals); + text = showdown.subParser('lists')(text, options, globals); + text = showdown.subParser('codeBlocks')(text, options, globals); + text = showdown.subParser('blockQuotes')(text, options, globals); - // We already ran _HashHTMLBlocks() before, in Markdown(), but that - // was to escape raw HTML in the original Markdown source. This time, - // we're escaping the markup we've just created, so that we don't wrap - //

    tags around block-level tags. - text = showdown.subParser('hashHTMLBlocks')(text, options, globals); - text = showdown.subParser('paragraphs')(text, options, globals); + // We already ran _HashHTMLBlocks() before, in Markdown(), but that + // was to escape raw HTML in the original Markdown source. This time, + // we're escaping the markup we've just created, so that we don't wrap + //

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

     content, so we need to fix that:
    -            bq = bq.replace(
    -                /(\s*
    [^\r]+?<\/pre>)/gm,
    -                function (wholeMatch, m1) {
    -                    var pre = m1;
    -                    // attacklab: hack around Konqueror 3.5.4 bug:
    -                    pre = pre.replace(/^  /mg, '~0');
    -                    pre = pre.replace(/~0/g, '');
    -                    return pre;
    -                });
    -
    -            return showdown.subParser('hashBlock')('
    \n' + bq + '\n
    ', options, globals); - }); - return text; + // attacklab: clean up hack + bq = bq.replace(/~0/g, ''); + + bq = bq.replace(/^[ \t]+$/gm, ''); // trim whitespace-only lines + bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse + + bq = bq.replace(/(^|\n)/g, '$1 '); + // These leading spaces screw with
     content, so we need to fix that:
    +    bq = bq.replace(/(\s*
    [^\r]+?<\/pre>)/gm, function (wholeMatch, m1) {
    +      var pre = m1;
    +      // attacklab: hack around Konqueror 3.5.4 bug:
    +      pre = pre.replace(/^  /mg, '~0');
    +      pre = pre.replace(/~0/g, '');
    +      return pre;
    +    });
    +
    +    return showdown.subParser('hashBlock')('
    \n' + bq + '\n
    ', options, globals); + }); + return text; }); /** @@ -519,45 +522,43 @@ showdown.subParser('blockQuotes', function (text, options, globals) { * Process Markdown `
    ` blocks.
      */
     showdown.subParser('codeBlocks', function (text, options, globals) {
    -    'use strict';
    -
    -    /*
    -     text = text.replace(text,
    -     /(?:\n\n|^)
    -     (								// $1 = the code block -- one or more lines, starting with a space/tab
    -     (?:
    -     (?:[ ]{4}|\t)			// Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width
    -     .*\n+
    -     )+
    -     )
    -     (\n*[ ]{0,3}[^ \t\n]|(?=~0))	// attacklab: g_tab_width
    -     /g,function(){...});
    -     */
    -
    -    // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
    -    text += '~0';
    -
    -    text = text.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,
    -        function (wholeMatch, m1, m2) {
    -            var codeblock = m1,
    -                nextChar = m2;
    -
    -            codeblock = showdown.subParser('outdent')(codeblock);
    -            codeblock = showdown.subParser('encodeCode')(codeblock);
    -            codeblock = showdown.subParser('detab')(codeblock);
    -            codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines
    -            codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing whitespace
    -
    -            codeblock = '
    ' + codeblock + '\n
    '; - - return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar; - } - ); - - // attacklab: strip sentinel - text = text.replace(/~0/, ''); - - return text; + 'use strict'; + + /* + text = text.replace(text, + /(?:\n\n|^) + ( // $1 = the code block -- one or more lines, starting with a space/tab + (?: + (?:[ ]{4}|\t) // Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width + .*\n+ + )+ + ) + (\n*[ ]{0,3}[^ \t\n]|(?=~0)) // attacklab: g_tab_width + /g,function(){...}); + */ + + // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug + text += '~0'; + + var pattern = /(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g; + text = text.replace(pattern, function (wholeMatch, m1, m2) { + var codeblock = m1, nextChar = m2; + + codeblock = showdown.subParser('outdent')(codeblock); + codeblock = showdown.subParser('encodeCode')(codeblock); + codeblock = showdown.subParser('detab')(codeblock); + codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines + codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing whitespace + + codeblock = '
    ' + codeblock + '\n
    '; + + return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar; + }); + + // attacklab: strip sentinel + text = text.replace(/~0/, ''); + + return text; }); /** @@ -590,31 +591,30 @@ showdown.subParser('codeBlocks', function (text, options, globals) { * ... type `bar` ... */ showdown.subParser('codeSpans', function (text) { - 'use strict'; - - /* - text = text.replace(/ - (^|[^\\]) // Character before opening ` can't be a backslash - (`+) // $2 = Opening run of ` - ( // $3 = The code block - [^\r]*? - [^`] // attacklab: work around lack of lookbehind - ) - \2 // Matching closer - (?!`) - /gm, function(){...}); - */ - - text = text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm, - function (wholeMatch, m1, m2, m3) { - var c = m3; - c = c.replace(/^([ \t]*)/g, ''); // leading whitespace - c = c.replace(/[ \t]*$/g, ''); // trailing whitespace - c = showdown.subParser('encodeCode')(c); - return m1 + '' + c + ''; - }); - - return text; + 'use strict'; + + /* + text = text.replace(/ + (^|[^\\]) // Character before opening ` can't be a backslash + (`+) // $2 = Opening run of ` + ( // $3 = The code block + [^\r]*? + [^`] // attacklab: work around lack of lookbehind + ) + \2 // Matching closer + (?!`) + /gm, function(){...}); + */ + + text = text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm, function (wholeMatch, m1, m2, m3) { + var c = m3; + c = c.replace(/^([ \t]*)/g, ''); // leading whitespace + c = c.replace(/[ \t]*$/g, ''); // trailing whitespace + c = showdown.subParser('encodeCode')(c); + return m1 + '' + c + ''; + }); + + return text; }); @@ -626,34 +626,32 @@ showdown.subParser('codeSpans', function (text) { * Convert all tabs to spaces */ showdown.subParser('detab', function (text) { - 'use strict'; + 'use strict'; - // expand first n-1 tabs - text = text.replace(/\t(?=\t)/g, ' '); // g_tab_width + // expand first n-1 tabs + text = text.replace(/\t(?=\t)/g, ' '); // g_tab_width - // replace the nth with two sentinels - text = text.replace(/\t/g, '~A~B'); + // replace the nth with two sentinels + text = text.replace(/\t/g, '~A~B'); - // use the sentinel to anchor our regex so it doesn't explode - text = text.replace(/~B(.+?)~A/g, - function (wholeMatch, m1) { - var leadingText = m1, - numSpaces = 4 - leadingText.length % 4; // g_tab_width + // use the sentinel to anchor our regex so it doesn't explode + text = text.replace(/~B(.+?)~A/g, function (wholeMatch, m1) { + var leadingText = m1, + numSpaces = 4 - leadingText.length % 4; // g_tab_width - // there *must* be a better way to do this: - for (var i = 0; i < numSpaces; i++) { - leadingText += ' '; - } + // there *must* be a better way to do this: + for (var i = 0; i < numSpaces; i++) { + leadingText += ' '; + } - return leadingText; - } - ); + return leadingText; + }); - // clean up sentinels - text = text.replace(/~A/g, ' '); // g_tab_width - text = text.replace(/~B/g, ''); + // clean up sentinels + text = text.replace(/~A/g, ' '); // g_tab_width + text = text.replace(/~B/g, ''); - return text; + return text; }); @@ -665,15 +663,15 @@ showdown.subParser('detab', function (text) { * Smart processing for ampersands and angle brackets that need to be encoded. */ showdown.subParser('encodeAmpsAndAngles', function (text) { - 'use strict'; - // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin: - // http://bumppo.net/projects/amputator/ - text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, '&'); + 'use strict'; + // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin: + // http://bumppo.net/projects/amputator/ + text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, '&'); - // Encode naked <'s - text = text.replace(/<(?![a-z\/?\$!])/gi, '<'); + // Encode naked <'s + text = text.replace(/<(?![a-z\/?\$!])/gi, '<'); - return text; + return text; }); /** @@ -692,10 +690,10 @@ showdown.subParser('encodeAmpsAndAngles', function (text) { * as an optimization for Firefox. This function gets called a LOT. */ showdown.subParser('encodeBackslashEscapes', function (text) { - 'use strict'; - text = text.replace(/\\(\\)/g, showdown.helper.escapeCharactersCallback); - text = text.replace(/\\([`*_{}\[\]()>#+-.!])/g, showdown.helper.escapeCharactersCallback); - return text; + 'use strict'; + text = text.replace(/\\(\\)/g, showdown.helper.escapeCharactersCallback); + text = text.replace(/\\([`*_{}\[\]()>#+-.!])/g, showdown.helper.escapeCharactersCallback); + return text; }); /** @@ -708,35 +706,33 @@ showdown.subParser('encodeBackslashEscapes', function (text) { * and lose their special Markdown meanings. */ showdown.subParser('encodeCode', function (text) { - 'use strict'; + 'use strict'; - // Encode all ampersands; HTML entities are not - // entities within a Markdown code span. - text = text.replace(/&/g, '&'); + // Encode all ampersands; HTML entities are not + // entities within a Markdown code span. + text = text.replace(/&/g, '&'); - // Do the angle bracket song and dance: - text = text.replace(//g, '>'); + // Do the angle bracket song and dance: + text = text.replace(//g, '>'); - // Now, escape characters that are magic in Markdown: - text = showdown.helper.escapeCharacters(text, '*_{}[]\\', false); + // Now, escape characters that are magic in Markdown: + text = showdown.helper.escapeCharacters(text, '*_{}[]\\', false); - // jj the line above breaks this: - //--- - //* Item - // 1. Subitem - // special char: * - // --- - - return text; + // jj the line above breaks this: + //--- + //* Item + // 1. Subitem + // special char: * + // --- + return text; }); /** * Created by Estevao on 12-01-2015. */ - /** * Input: an email address, e.g. "foo@example.com" * @@ -753,44 +749,41 @@ showdown.subParser('encodeCode', function (text) { * */ showdown.subParser('encodeEmailAddress', function (addr) { - 'use strict'; - - var encode = [ - function (ch) { - return '&#' + ch.charCodeAt(0) + ';'; - }, - function (ch) { - return '&#x' + ch.charCodeAt(0).toString(16) + ';'; - }, - function (ch) { - return ch; - } - ]; - - addr = 'mailto:' + addr; - - addr = addr.replace(/./g, function (ch) { - if (ch === '@') { - // this *must* be encoded. I insist. - ch = encode[Math.floor(Math.random() * 2)](ch); - } else if (ch !== ':') { - // leave ':' alone (to spot mailto: later) - var r = Math.random(); - // roughly 10% raw, 45% hex, 45% dec - ch = ( - r > 0.9 ? encode[2](ch) : - r > 0.45 ? encode[1](ch) : - encode[0](ch) - ); - } - return ch; - }); - - addr = '' + addr + ''; - addr = addr.replace(/">.+:/g, '">'); // strip the mailto: from the visible part + 'use strict'; + + var encode = [ + function (ch) { + return '&#' + ch.charCodeAt(0) + ';'; + }, + function (ch) { + return '&#x' + ch.charCodeAt(0).toString(16) + ';'; + }, + function (ch) { + return ch; + } + ]; + + addr = 'mailto:' + addr; + + addr = addr.replace(/./g, function (ch) { + if (ch === '@') { + // this *must* be encoded. I insist. + ch = encode[Math.floor(Math.random() * 2)](ch); + } else if (ch !== ':') { + // leave ':' alone (to spot mailto: later) + var r = Math.random(); + // roughly 10% raw, 45% hex, 45% dec + ch = ( + r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch) + ); + } + return ch; + }); - return addr; + addr = '' + addr + ''; + addr = addr.replace(/">.+:/g, '">'); // strip the mailto: from the visible part + return addr; }); /** @@ -802,19 +795,19 @@ showdown.subParser('encodeEmailAddress', function (addr) { * don't conflict with their use in Markdown for code, italics and strong. */ showdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text) { - 'use strict'; + 'use strict'; - // Build a regex to find HTML tags and comments. See Friedl's - // "Mastering Regular Expressions", 2nd Ed., pp. 200-201. - var regex = /(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi; + // Build a regex to find HTML tags and comments. See Friedl's + // "Mastering Regular Expressions", 2nd Ed., pp. 200-201. + var regex = /(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi; - text = text.replace(regex, function (wholeMatch) { - var tag = wholeMatch.replace(/(.)<\/?code>(?=.)/g, '$1`'); - tag = showdown.helper.escapeCharacters(tag, '\\`*_'); - return tag; - }); + text = text.replace(regex, function (wholeMatch) { + var tag = wholeMatch.replace(/(.)<\/?code>(?=.)/g, '$1`'); + tag = showdown.helper.escapeCharacters(tag, '\\`*_'); + return tag; + }); - return text; + return text; }); /** @@ -832,35 +825,33 @@ showdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text) { * ``` */ showdown.subParser('githubCodeBlocks', function (text, options, globals) { - 'use strict'; + 'use strict'; - text += '~0'; + text += '~0'; - text = text.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g, - function (wholeMatch, m1, m2) { - var language = m1, - codeblock = m2, - end = '\n'; + text = text.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g, function (wholeMatch, m1, m2) { + var language = m1, + codeblock = m2, + end = '\n'; - if (options.omitExtraWLInCodeBlocks) { - end = ''; - } + if (options.omitExtraWLInCodeBlocks) { + end = ''; + } - codeblock = showdown.subParser('encodeCode')(codeblock); - codeblock = showdown.subParser('detab')(codeblock); - codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines - codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing whitespace + codeblock = showdown.subParser('encodeCode')(codeblock); + codeblock = showdown.subParser('detab')(codeblock); + codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines + codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing whitespace - codeblock = '
    ' + codeblock + end + '
    '; + codeblock = '
    ' + codeblock + end + '
    '; - return showdown.subParser('hashBlock')(codeblock, options, globals); - } - ); + return showdown.subParser('hashBlock')(codeblock, options, globals); + }); - // attacklab: strip sentinel - text = text.replace(/~0/, ''); + // attacklab: strip sentinel + text = text.replace(/~0/, ''); - return text; + return text; }); @@ -869,9 +860,9 @@ showdown.subParser('githubCodeBlocks', function (text, options, globals) { */ showdown.subParser('hashBlock', function (text, options, globals) { - 'use strict'; - text = text.replace(/(^\n+|\n+$)/g, ''); - return '\n\n~K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\n\n'; + 'use strict'; + text = text.replace(/(^\n+|\n+$)/g, ''); + return '\n\n~K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\n\n'; }); /** @@ -879,23 +870,23 @@ showdown.subParser('hashBlock', function (text, options, globals) { */ showdown.subParser('hashElement', function (text, options, globals) { - 'use strict'; + 'use strict'; - return function (wholeMatch, m1) { - var blockText = m1; + return function (wholeMatch, m1) { + var blockText = m1; - // Undo double lines - blockText = blockText.replace(/\n\n/g, '\n'); - blockText = blockText.replace(/^\n/, ''); + // Undo double lines + blockText = blockText.replace(/\n\n/g, '\n'); + blockText = blockText.replace(/^\n/, ''); - // strip trailing blank lines - blockText = blockText.replace(/\n+$/g, ''); + // strip trailing blank lines + blockText = blockText.replace(/\n+$/g, ''); - // Replace the element text with a marker ("~KxK" where x is its key) - blockText = '\n\n~K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\n\n'; + // Replace the element text with a marker ("~KxK" where x is its key) + blockText = '\n\n~K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\n\n'; - return blockText; - }; + return blockText; + }; }); /** @@ -903,130 +894,136 @@ showdown.subParser('hashElement', function (text, options, globals) { */ showdown.subParser('hashHTMLBlocks', function (text, options, globals) { - 'use strict'; - - // attacklab: Double up blank lines to reduce lookaround - text = text.replace(/\n/g, '\n\n'); - - // Hashify HTML blocks: - // We only want to do this for block-level HTML tags, such as headers, - // lists, and tables. That's because we still want to wrap

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

    - //
    - // tags for inner block must be indented. - //
    - //
    - // - // The outermost tags must start at the left margin for this to match, and - // the inner nested divs must be indented. - // We need to do this before the next, more liberal match, because the next - // match will start at the first `
    ` and stop at the first `
    `. - - // attacklab: This regex can be expensive when it fails. - /* - var text = text.replace(/ - ( // save in $1 - ^ // start of line (with /m) - <($block_tags_a) // start tag = $2 - \b // word break - // attacklab: hack around khtml/pcre bug... - [^\r]*?\n // any number of lines, minimally matching - // the matching end tag - [ \t]* // trailing spaces/tabs - (?=\n+) // followed by a newline - ) // attacklab: there are sentinel newlines at end of document - /gm,function(){...}}; - */ - 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, showdown.subParser('hashElement')(text, options, globals)); - - // - // Now match more liberally, simply from `\n` to `\n` - // - - /* - var text = text.replace(/ - ( // save in $1 - ^ // start of line (with /m) - <($block_tags_b) // start tag = $2 - \b // word break - // attacklab: hack around khtml/pcre bug... - [^\r]*? // any number of lines, minimally matching - // the matching end tag - [ \t]* // trailing spaces/tabs - (?=\n+) // followed by a newline - ) // attacklab: there are sentinel newlines at end of document - /gm,function(){...}}; - */ - 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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm, showdown.subParser('hashElement')(text, options, globals)); - - // Special case just for
    . It was easier to make a special case than - // to make the other regex more complicated. - - /* - text = text.replace(/ - ( // save in $1 - \n\n // Starting after a blank line - [ ]{0,3} - (<(hr) // start tag = $2 - \b // word break - ([^<>])*? // - \/?>) // the matching end tag - [ \t]* - (?=\n{2,}) // followed by a blank line - ) - /g,showdown.subParser('hashElement')(text, options, globals)); - */ - text = text.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g, showdown.subParser('hashElement')(text, options, globals)); - - // Special case for standalone HTML comments: - - /* - text = text.replace(/ - ( // save in $1 - \n\n // Starting after a blank line - [ ]{0,3} // attacklab: g_tab_width - 1 - - [ \t]* - (?=\n{2,}) // followed by a blank line - ) - /g,showdown.subParser('hashElement')(text, options, globals)); - */ - text = text.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g, showdown.subParser('hashElement')(text, options, globals)); - - // PHP and ASP-style processor instructions ( and <%...%>) - - /* - text = text.replace(/ - (?: - \n\n // Starting after a blank line - ) - ( // save in $1 - [ ]{0,3} // attacklab: g_tab_width - 1 - (?: - <([?%]) // $2 - [^\r]*? - \2> - ) - [ \t]* - (?=\n{2,}) // followed by a blank line - ) - /g,showdown.subParser('hashElement')(text, options, globals)); - */ - text = text.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g, showdown.subParser('hashElement')(text, options, globals)); - - // attacklab: Undo double lines (see comment at top of this function) - text = text.replace(/\n\n/g, '\n'); - return text; - + 'use strict'; + + // attacklab: Double up blank lines to reduce lookaround + text = text.replace(/\n/g, '\n\n'); + + // Hashify HTML blocks: + // We only want to do this for block-level HTML tags, such as headers, + // lists, and tables. That's because we still want to wrap

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

    + //
    + // tags for inner block must be indented. + //
    + //
    + // + // The outermost tags must start at the left margin for this to match, and + // the inner nested divs must be indented. + // We need to do this before the next, more liberal match, because the next + // match will start at the first `
    ` and stop at the first `
    `. + + // attacklab: This regex can be expensive when it fails. + /* + var text = text.replace(/ + ( // save in $1 + ^ // start of line (with /m) + <($block_tags_a) // start tag = $2 + \b // word break + // attacklab: hack around khtml/pcre bug... + [^\r]*?\n // any number of lines, minimally matching + // the matching end tag + [ \t]* // trailing spaces/tabs + (?=\n+) // followed by a newline + ) // attacklab: there are sentinel newlines at end of document + /gm,function(){...}}; + */ + 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, + showdown.subParser('hashElement')(text, options, globals)); + + // + // Now match more liberally, simply from `\n` to `\n` + // + + /* + var text = text.replace(/ + ( // save in $1 + ^ // start of line (with /m) + <($block_tags_b) // start tag = $2 + \b // word break + // attacklab: hack around khtml/pcre bug... + [^\r]*? // any number of lines, minimally matching + // the matching end tag + [ \t]* // trailing spaces/tabs + (?=\n+) // followed by a newline + ) // attacklab: there are sentinel newlines at end of document + /gm,function(){...}}; + */ + 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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm, + showdown.subParser('hashElement')(text, options, globals)); + + // Special case just for
    . It was easier to make a special case than + // to make the other regex more complicated. + + /* + text = text.replace(/ + ( // save in $1 + \n\n // Starting after a blank line + [ ]{0,3} + (<(hr) // start tag = $2 + \b // word break + ([^<>])*? // + \/?>) // the matching end tag + [ \t]* + (?=\n{2,}) // followed by a blank line + ) + /g,showdown.subParser('hashElement')(text, options, globals)); + */ + text = text.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g, + showdown.subParser('hashElement')(text, options, globals)); + + // Special case for standalone HTML comments: + + /* + text = text.replace(/ + ( // save in $1 + \n\n // Starting after a blank line + [ ]{0,3} // attacklab: g_tab_width - 1 + + [ \t]* + (?=\n{2,}) // followed by a blank line + ) + /g,showdown.subParser('hashElement')(text, options, globals)); + */ + text = text.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g, + showdown.subParser('hashElement')(text, options, globals)); + + // PHP and ASP-style processor instructions ( and <%...%>) + + /* + text = text.replace(/ + (?: + \n\n // Starting after a blank line + ) + ( // save in $1 + [ ]{0,3} // attacklab: g_tab_width - 1 + (?: + <([?%]) // $2 + [^\r]*? + \2> + ) + [ \t]* + (?=\n{2,}) // followed by a blank line + ) + /g,showdown.subParser('hashElement')(text, options, globals)); + */ + text = text.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g, + showdown.subParser('hashElement')(text, options, globals)); + + // attacklab: Undo double lines (see comment at top of this function) + text = text.replace(/\n\n/g, '\n'); + return text; }); @@ -1035,189 +1032,184 @@ showdown.subParser('hashHTMLBlocks', function (text, options, globals) { */ showdown.subParser('headers', function (text, options, globals) { - 'use strict'; - - var prefixHeader = options.prefixHeaderId; - - // Set text-style headers: - // Header 1 - // ======== - // - // Header 2 - // -------- - // - text = text.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm, - function (wholeMatch, m1) { - return showdown.subParser('hashBlock')('

    ' + - showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals); - }); - - text = text.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm, - function (matchFound, m1) { - return showdown.subParser('hashBlock')('

    ' + - showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals); - }); - - // atx-style headers: - // # Header 1 - // ## Header 2 - // ## Header 2 with closing hashes ## - // ... - // ###### Header 6 - // - - /* - text = text.replace(/ - ^(\#{1,6}) // $1 = string of #'s - [ \t]* - (.+?) // $2 = Header text - [ \t]* - \#* // optional closing #'s (not counted) - \n+ - /gm, function() {...}); - */ - - text = text.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm, - function (wholeMatch, m1, m2) { - var span = showdown.subParser('spanGamut')(m2, options, globals), - header = '' + span + ''; - - return showdown.subParser('hashBlock')(header, options, globals); - }); - - function headerId(m) { - var title, - escapedId = m.replace(/[^\w]/g, '').toLowerCase(); - - if (globals.hashLinkCounts[escapedId]) { - title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++); - } else { - title = escapedId; - globals.hashLinkCounts[escapedId] = 1; - } + 'use strict'; + + var prefixHeader = options.prefixHeaderId; + + // Set text-style headers: + // Header 1 + // ======== + // + // Header 2 + // -------- + // + text = text.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm, function (wholeMatch, m1) { + var spanGamut = showdown.subParser('spanGamut')(m1, options, globals), + hashBlock = '

    ' + spanGamut + '

    '; + return showdown.subParser('hashBlock')(hashBlock, options, globals); + }); + + text = text.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm, function (matchFound, m1) { + var spanGamut = showdown.subParser('spanGamut')(m1, options, globals), + hashBlock = '

    ' + spanGamut + '

    '; + return showdown.subParser('hashBlock')(hashBlock, options, globals); + }); + + // atx-style headers: + // # Header 1 + // ## Header 2 + // ## Header 2 with closing hashes ## + // ... + // ###### Header 6 + // + + /* + text = text.replace(/ + ^(\#{1,6}) // $1 = string of #'s + [ \t]* + (.+?) // $2 = Header text + [ \t]* + \#* // optional closing #'s (not counted) + \n+ + /gm, function() {...}); + */ + + text = text.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm, function (wholeMatch, m1, m2) { + var span = showdown.subParser('spanGamut')(m2, options, globals), + header = '' + span + ''; + + return showdown.subParser('hashBlock')(header, options, globals); + }); + + function headerId(m) { + var title, escapedId = m.replace(/[^\w]/g, '').toLowerCase(); + + if (globals.hashLinkCounts[escapedId]) { + title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++); + } else { + title = escapedId; + globals.hashLinkCounts[escapedId] = 1; + } - // Prefix id to prevent causing inadvertent pre-existing style matches. - if (prefixHeader === true) { - prefixHeader = 'section'; - } + // Prefix id to prevent causing inadvertent pre-existing style matches. + if (prefixHeader === true) { + prefixHeader = 'section'; + } - if (showdown.helper.isString(prefixHeader)) { - return prefixHeader + title; - } - return title; + if (showdown.helper.isString(prefixHeader)) { + return prefixHeader + title; } + return title; + } - return text; + return text; }); /** * Created by Estevao on 11-01-2015. */ - /** * Turn Markdown image shortcuts into tags. */ showdown.subParser('images', function (text, options, globals) { - 'use strict'; + 'use strict'; - var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) { + var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) { - wholeMatch = m1; - var altText = m2, - linkId = m3.toLowerCase(), - url = m4, - title = m7, - gUrls = globals.gUrls, - gTitles = globals.gTitles; + wholeMatch = m1; + var altText = m2, + linkId = m3.toLowerCase(), + url = m4, + title = m7, + gUrls = globals.gUrls, + gTitles = globals.gTitles; - if (!title) { - title = ''; - } + if (!title) { + title = ''; + } - if (url === '' || url === null) { - if (linkId === '' || linkId === null) { - // lower-case and turn embedded newlines into spaces - linkId = altText.toLowerCase().replace(/ ?\n/g, ' '); - } - url = '#' + linkId; - - if (typeof gUrls[linkId] !== 'undefined') { - url = gUrls[linkId]; - if (typeof gTitles[linkId] !== 'undefined') { - title = gTitles[linkId]; - } - } - else { - return wholeMatch; - } + if (url === '' || url === null) { + if (linkId === '' || linkId === null) { + // lower-case and turn embedded newlines into spaces + linkId = altText.toLowerCase().replace(/ ?\n/g, ' '); + } + url = '#' + linkId; + + if (typeof gUrls[linkId] !== 'undefined') { + url = gUrls[linkId]; + if (typeof gTitles[linkId] !== 'undefined') { + title = gTitles[linkId]; } + } else { + return wholeMatch; + } + } - altText = altText.replace(/"/g, '"'); - url = showdown.helper.escapeCharacters(url, '*_'); - var result = '' + altText + '? // src url = $4 - [ \t]* - ( // $5 - (['"]) // quote char = $6 - (.*?) // title = $7 - \6 // matching quote - [ \t]* - )? // title is optional - \) - ) - /g,writeImageTag); - */ - text = text.replace(/(!\[(.*?)\]\s?\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, writeImageTag); - - return text; + altText = altText.replace(/"/g, '"'); + url = showdown.helper.escapeCharacters(url, '*_'); + var result = '' + altText + '? // src url = $4 + [ \t]* + ( // $5 + (['"]) // quote char = $6 + (.*?) // title = $7 + \6 // matching quote + [ \t]* + )? // title is optional + \) + ) + /g,writeImageTag); + */ + text = text.replace(/(!\[(.*?)\]\s?\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, writeImageTag); + + return text; }); /** @@ -1225,15 +1217,13 @@ showdown.subParser('images', function (text, options, globals) { */ showdown.subParser('italicsAndBold', function (text) { - 'use strict'; - // must go first: - text = text.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g, - '$2'); + 'use strict'; + // must go first: + text = text.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g, '$2'); - text = text.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g, - '$2'); + text = text.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g, '$2'); - return text; + return text; }); /** @@ -1244,147 +1234,145 @@ showdown.subParser('italicsAndBold', function (text) { * Form HTML ordered (numbered) and unordered (bulleted) lists. */ showdown.subParser('lists', function (text, options, globals) { - 'use strict'; - - /** - * Process the contents of a single ordered or unordered list, splitting it - * into individual list items. - * @param listStr - * @returns {string|*} - */ - var processListItems = function (listStr) { - // The $g_list_level global keeps track of when we're inside a list. - // Each time we enter a list, we increment it; when we leave a list, - // we decrement. If it's zero, we're not in a list anymore. - // - // We do this because when we're not inside a list, we want to treat - // something like this: - // - // I recommend upgrading to version - // 8. Oops, now this line is treated - // as a sub-list. - // - // As a single paragraph, despite the fact that the second line starts - // with a digit-period-space sequence. - // - // Whereas when we're inside a list (or sub-list), that line will be - // treated as the start of a sub-list. What a kludge, huh? This is - // an aspect of Markdown's syntax that's hard to parse perfectly - // without resorting to mind-reading. Perhaps the solution is to - // change the syntax rules such that sub-lists must start with a - // starting cardinal number; e.g. "1." or "a.". - - globals.gListLevel++; - - // trim trailing blank lines: - listStr = listStr.replace(/\n{2,}$/, '\n'); - - // attacklab: add sentinel to emulate \z - listStr += '~0'; - - /* - list_str = list_str.replace(/ - (\n)? // leading line = $1 - (^[ \t]*) // leading whitespace = $2 - ([*+-]|\d+[.]) [ \t]+ // list marker = $3 - ([^\r]+? // list item text = $4 - (\n{1,2})) - (?= \n* (~0 | \2 ([*+-]|\d+[.]) [ \t]+)) - /gm, function(){...}); - */ - listStr = listStr.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm, - function (wholeMatch, m1, m2, m3, m4) { - var item = showdown.subParser('outdent')(m4, options, globals); - //m1 - LeadingLine - - if (m1 || (item.search(/\n{2,}/) > -1)) { - item = showdown.subParser('blockGamut')(item, options, globals); - } else { - // Recursion for sub-lists: - item = showdown.subParser('lists')(item, options, globals); - item = item.replace(/\n$/, ''); // chomp(item) - item = showdown.subParser('spanGamut')(item, options, globals); - } - - return '
  • ' + item + '
  • \n'; - } - ); - - // attacklab: strip sentinel - listStr = listStr.replace(/~0/g, ''); - - globals.gListLevel--; - return listStr; - }; + 'use strict'; + + /** + * Process the contents of a single ordered or unordered list, splitting it + * into individual list items. + * @param listStr + * @returns {string|*} + */ + var processListItems = function (listStr) { + // The $g_list_level global keeps track of when we're inside a list. + // Each time we enter a list, we increment it; when we leave a list, + // we decrement. If it's zero, we're not in a list anymore. + // + // We do this because when we're not inside a list, we want to treat + // something like this: + // + // I recommend upgrading to version + // 8. Oops, now this line is treated + // as a sub-list. + // + // As a single paragraph, despite the fact that the second line starts + // with a digit-period-space sequence. + // + // Whereas when we're inside a list (or sub-list), that line will be + // treated as the start of a sub-list. What a kludge, huh? This is + // an aspect of Markdown's syntax that's hard to parse perfectly + // without resorting to mind-reading. Perhaps the solution is to + // change the syntax rules such that sub-lists must start with a + // starting cardinal number; e.g. "1." or "a.". + globals.gListLevel++; - // attacklab: add sentinel to hack around khtml/safari bug: - // http://bugs.webkit.org/show_bug.cgi?id=11231 - text += '~0'; + // trim trailing blank lines: + listStr = listStr.replace(/\n{2,}$/, '\n'); - // Re-usable pattern to match any entirel ul or ol list: + // attacklab: add sentinel to emulate \z + listStr += '~0'; /* - var whole_list = / - ( // $1 = whole list - ( // $2 - [ ]{0,3} // attacklab: g_tab_width - 1 - ([*+-]|\d+[.]) // $3 = first list item marker - [ \t]+ - ) - [^\r]+? - ( // $4 - ~0 // sentinel for workaround; should be $ - | - \n{2,} - (?=\S) - (?! // Negative lookahead for another list item marker - [ \t]* - (?:[*+-]|\d+[.])[ \t]+ - ) - ) - )/g + list_str = list_str.replace(/ + (\n)? // leading line = $1 + (^[ \t]*) // leading whitespace = $2 + ([*+-]|\d+[.]) [ \t]+ // list marker = $3 + ([^\r]+? // list item text = $4 + (\n{1,2})) + (?= \n* (~0 | \2 ([*+-]|\d+[.]) [ \t]+)) + /gm, function(){...}); */ - var wholeList = /^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm; - - if (globals.gListLevel) { - text = text.replace(wholeList, function (wholeMatch, m1, m2) { - var list = m1, - listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol'; - - // Turn double returns into triple returns, so that we can make a - // paragraph for the last item in a list, if necessary: - list = list.replace(/\n{2,}/g, '\n\n\n'); - - var result = processListItems(list); - - // Trim any trailing whitespace, to put the closing `` - // up on the preceding line, to get it past the current stupid - // HTML block parser. This is a hack to work around the terrible - // hack that is the HTML block parser. - result = result.replace(/\s+$/, ''); - result = '<' + listType + '>' + result + '\n'; - return result; - }); - } else { - wholeList = /(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g; + listStr = listStr.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm, + function (wholeMatch, m1, m2, m3, m4) { + var item = showdown.subParser('outdent')(m4, options, globals); + //m1 - LeadingLine + + if (m1 || (item.search(/\n{2,}/) > -1)) { + item = showdown.subParser('blockGamut')(item, options, globals); + } else { + // Recursion for sub-lists: + item = showdown.subParser('lists')(item, options, globals); + item = item.replace(/\n$/, ''); // chomp(item) + item = showdown.subParser('spanGamut')(item, options, globals); + } + + return '
  • ' + item + '
  • \n'; + }); - text = text.replace(wholeList, function(wholeMatch,m1,m2,m3) { + // attacklab: strip sentinel + listStr = listStr.replace(/~0/g, ''); + + globals.gListLevel--; + return listStr; + }; + + // attacklab: add sentinel to hack around khtml/safari bug: + // http://bugs.webkit.org/show_bug.cgi?id=11231 + text += '~0'; + + // Re-usable pattern to match any entirel ul or ol list: + + /* + var whole_list = / + ( // $1 = whole list + ( // $2 + [ ]{0,3} // attacklab: g_tab_width - 1 + ([*+-]|\d+[.]) // $3 = first list item marker + [ \t]+ + ) + [^\r]+? + ( // $4 + ~0 // sentinel for workaround; should be $ + | + \n{2,} + (?=\S) + (?! // Negative lookahead for another list item marker + [ \t]* + (?:[*+-]|\d+[.])[ \t]+ + ) + ) + )/g + */ + var wholeList = /^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm; + + if (globals.gListLevel) { + text = text.replace(wholeList, function (wholeMatch, m1, m2) { + var list = m1, + listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol'; + + // Turn double returns into triple returns, so that we can make a + // paragraph for the last item in a list, if necessary: + list = list.replace(/\n{2,}/g, '\n\n\n'); + + var result = processListItems(list); + + // Trim any trailing whitespace, to put the closing `` + // up on the preceding line, to get it past the current stupid + // HTML block parser. This is a hack to work around the terrible + // hack that is the HTML block parser. + result = result.replace(/\s+$/, ''); + result = '<' + listType + '>' + result + '\n'; + return result; + }); + } else { + wholeList = /(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g; - // Turn double returns into triple returns, so that we can make a - // paragraph for the last item in a list, if necessary: - var list = m2.replace(/\n{2,}/g, '\n\n\n'), - listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol', - result = processListItems(list); + text = text.replace(wholeList, function (wholeMatch, m1, m2, m3) { - return m1 + '<' + listType + '>\n' + result + '\n'; - }); - } + // Turn double returns into triple returns, so that we can make a + // paragraph for the last item in a list, if necessary: + var list = m2.replace(/\n{2,}/g, '\n\n\n'), + listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol', + result = processListItems(list); - // attacklab: strip sentinel - text = text.replace(/~0/, ''); + return m1 + '<' + listType + '>\n' + result + '\n'; + }); + } - return text; + // attacklab: strip sentinel + text = text.replace(/~0/, ''); + + return text; }); /** @@ -1395,16 +1383,16 @@ showdown.subParser('lists', function (text, options, globals) { * Remove one level of line-leading tabs or spaces */ showdown.subParser('outdent', function (text) { - 'use strict'; + 'use strict'; - // attacklab: hack around Konqueror 3.5.4 bug: - // "----------bug".replace(/^-/g,"") == "bug" - text = text.replace(/^(\t|[ ]{1,4})/gm, '~0'); // attacklab: g_tab_width + // attacklab: hack around Konqueror 3.5.4 bug: + // "----------bug".replace(/^-/g,"") == "bug" + text = text.replace(/^(\t|[ ]{1,4})/gm, '~0'); // attacklab: g_tab_width - // attacklab: clean up hack - text = text.replace(/~0/g, ''); + // attacklab: clean up hack + text = text.replace(/~0/g, ''); - return text; + return text; }); /** @@ -1415,44 +1403,42 @@ showdown.subParser('outdent', function (text) { * */ showdown.subParser('paragraphs', function (text, options, globals) { - 'use strict'; - - // Strip leading and trailing lines: - text = text.replace(/^\n+/g, ''); - text = text.replace(/\n+$/g, ''); - - var grafs = text.split(/\n{2,}/g), - grafsOut = []; - - /** Wrap

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

    '); - str += '

    '; - grafsOut.push(str); - } + 'use strict'; + + // Strip leading and trailing lines: + text = text.replace(/^\n+/g, ''); + text = text.replace(/\n+$/g, ''); + + var grafs = text.split(/\n{2,}/g), grafsOut = []; + + /** Wrap

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

    '); + str += '

    '; + grafsOut.push(str); } - - /** Unhashify HTML blocks */ - end = grafsOut.length; - for (i = 0; i < end; i++) { - // if this is a marker for an html block... - while (grafsOut[i].search(/~K(\d+)K/) >= 0) { - var blockText = globals.gHtmlBlocks[RegExp.$1]; - blockText = blockText.replace(/\$/g, '$$$$'); // Escape any dollar signs - grafsOut[i] = grafsOut[i].replace(/~K\d+K/, blockText); - } + } + + /** Unhashify HTML blocks */ + end = grafsOut.length; + for (i = 0; i < end; i++) { + // if this is a marker for an html block... + while (grafsOut[i].search(/~K(\d+)K/) >= 0) { + var blockText = globals.gHtmlBlocks[RegExp.$1]; + blockText = blockText.replace(/\$/g, '$$$$'); // Escape any dollar signs + grafsOut[i] = grafsOut[i].replace(/~K\d+K/, blockText); } + } - return grafsOut.join('\n\n'); + return grafsOut.join('\n\n'); }); /** @@ -1464,29 +1450,28 @@ showdown.subParser('paragraphs', function (text, options, globals) { * tags like paragraphs, headers, and list items. */ showdown.subParser('spanGamut', function (text, options, globals) { - 'use strict'; + 'use strict'; + text = showdown.subParser('codeSpans')(text, options, globals); + text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals); + text = showdown.subParser('encodeBackslashEscapes')(text, options, globals); - text = showdown.subParser('codeSpans')(text, options, globals); - text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals); - text = showdown.subParser('encodeBackslashEscapes')(text, options, globals); + // Process anchor and image tags. Images must come first, + // because ![foo][f] looks like an anchor. + text = showdown.subParser('images')(text, options, globals); + text = showdown.subParser('anchors')(text, options, globals); - // Process anchor and image tags. Images must come first, - // because ![foo][f] looks like an anchor. - text = showdown.subParser('images')(text, options, globals); - text = showdown.subParser('anchors')(text, options, globals); + // Make links out of things like `` + // Must come after _DoAnchors(), because you can use < and > + // delimiters in inline links like [this](). + text = showdown.subParser('autoLinks')(text, options, globals); + text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals); + text = showdown.subParser('italicsAndBold')(text, options, globals); - // Make links out of things like `` - // Must come after _DoAnchors(), because you can use < and > - // delimiters in inline links like [this](). - text = showdown.subParser('autoLinks')(text, options, globals); - text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals); - text = showdown.subParser('italicsAndBold')(text, options, globals); + // Do hard breaks: + text = text.replace(/ +\n/g, '
    \n'); - // Do hard breaks: - text = text.replace(/ +\n/g, '
    \n'); - - return text; + return text; }); @@ -1501,8 +1486,8 @@ showdown.subParser('spanGamut', function (text, options, globals) { * contorted like /[ \t]*\n+/ */ showdown.subParser('stripBlankLines', function (text) { - 'use strict'; - return text.replace(/^[ \t]+$/mg, ''); + 'use strict'; + return text.replace(/^[ \t]+$/mg, ''); }); /** @@ -1535,32 +1520,33 @@ showdown.subParser('stripBlankLines', function (text) { * */ showdown.subParser('stripLinkDefinitions', function (text, options, globals) { - 'use strict'; + 'use strict'; - // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug - text += '~0'; - - text = text.replace(/^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm, - function (wholeMatch, m1, m2, m3, m4) { - m1 = m1.toLowerCase(); - globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive - if (m3) { - // Oops, found blank lines, so it's not a title. - // Put back the parenthetical statement we stole. - return m3 + m4; - } else if (m4) { - globals.gTitles[m1] = m4.replace(/"/g, '"'); - } - - // Completely remove the definition from the text - return ''; - } - ); + var regex = /^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm; - // attacklab: strip sentinel - text = text.replace(/~0/, ''); + // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug + text += '~0'; - return text; + text = text.replace(regex, function (wholeMatch, m1, m2, m3, m4) { + m1 = m1.toLowerCase(); + globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive + if (m3) { + // Oops, found blank lines, so it's not a title. + // Put back the parenthetical statement we stole. + return m3 + m4; + + } else if (m4) { + globals.gTitles[m1] = m4.replace(/"/g, '"'); + } + + // Completely remove the definition from the text + return ''; + }); + + // attacklab: strip sentinel + text = text.replace(/~0/, ''); + + return text; }); /** @@ -1571,15 +1557,13 @@ showdown.subParser('stripLinkDefinitions', function (text, options, globals) { * Swap back in all the special characters we've hidden. */ showdown.subParser('unescapeSpecialChars', function (text) { - 'use strict'; + 'use strict'; - text = text.replace(/~E(\d+)E/g, - function (wholeMatch, m1) { - var charCodeToReplace = parseInt(m1); - return String.fromCharCode(charCodeToReplace); - } - ); - return text; + text = text.replace(/~E(\d+)E/g, function (wholeMatch, m1) { + var charCodeToReplace = parseInt(m1); + return String.fromCharCode(charCodeToReplace); + }); + return text; }); /** @@ -1590,17 +1574,18 @@ var root = this; // CommonJS/nodeJS Loader if (typeof module !== 'undefined' && module.exports) { - module.exports = showdown; + module.exports = showdown; } // AMD Loader else if (typeof define === 'function' && define.amd) { - define('showdown', function () { - return showdown; - }); + define('showdown', function () { + 'use strict'; + return showdown; + }); } // Regular Browser loader else { - root.showdown = showdown; + root.showdown = showdown; } }).call(this) //# sourceMappingURL=showdown.js.map \ No newline at end of file diff --git a/dist/showdown.js.map b/dist/showdown.js.map index ee3f236b..690562e9 100644 --- a/dist/showdown.js.map +++ b/dist/showdown.js.map @@ -1 +1 @@ -{"version":3,"sources":["..\\src\\showdown.js","..\\src\\helpers.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\\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":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false,\r\n prefixHeaderId: false\r\n };\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// Public API\r\n//\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// API\r\n//\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n//Public methods\r\nshowdown.setOption = function (key, value) {\r\n globalOptions[key] = value;\r\n return this;\r\n};\r\n\r\nshowdown.getOption = function (key) {\r\n return globalOptions[key];\r\n};\r\n\r\nshowdown.getOptions = function () {\r\n return globalOptions;\r\n};\r\n\r\n/**\r\n * Static Method\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\n/**\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n parserOrder = [\r\n 'detab',\r\n 'stripBlankLines',\r\n //runLanguageExtensions,\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n var makeHtml = function (text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0,\r\n hashLinkCounts: {}\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n //showdown.forEach(g_output_modifiers, function (x) {\r\n // text = _ExecuteExtension(x, text);\r\n //});\r\n\r\n return text;\r\n };\r\n\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nfunction isString(a) {\r\n return (typeof a === 'string' || a instanceof String);\r\n}\r\n\r\nfunction forEach(obj, callback) {\r\n if (typeof obj.forEach === 'function') {\r\n obj.forEach(callback);\r\n } else {\r\n var i, len = obj.length;\r\n for (i = 0; i < len; i++) {\r\n callback(obj[i], i, obj);\r\n }\r\n }\r\n}\r\n\r\nfunction isArray(a) {\r\n return a.constructor === Array;\r\n}\r\n\r\nfunction isUndefined(value) {\r\n return typeof value === 'undefined';\r\n}\r\n\r\nvar escapeCharactersCallback = function (wholeMatch, m1) {\r\n var charCodeToEscape = m1.charCodeAt(0);\r\n return '~E' + charCodeToEscape + 'E';\r\n};\r\n\r\nvar escapeCharacters = function (text, charsToEscape, afterBackslash) {\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\nif (!showdown.hasOwnProperty('helper')) {\r\n showdown.helper = {};\r\n}\r\n\r\n/**\r\n * isString helper function\r\n * @param a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isString = isString;\r\n\r\n/**\r\n * ForEach helper function\r\n * @param {*} obj\r\n * @param callback\r\n */\r\nshowdown.helper.forEach = forEach;\r\n\r\n/**\r\n * isArray helper function\r\n * @param {*} a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isArray = isArray;\r\n\r\n/**\r\n * Check if value is undefined\r\n *\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 = isUndefined;\r\n\r\n/**\r\n * Callback used to escape characters when passing through String.replace\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 *\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 = escapeCharacters;\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\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 }\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, '*_');\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, 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 (\t\t \t\t\t\t\t// wrap whole match in $1\r\n \\[\r\n ([^\\[\\]]+)\t\t\t\t// link text = $2; can't contain '[' or ']'\r\n \\]\r\n )()()()()()\t\t\t\t\t// 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});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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, _DoAutoLinks_callback());\r\n */\r\n text = text.replace(/<(?:mailto:)?([-.\\w]+\\@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\r\n function (wholeMatch, m1) {\r\n var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1);\r\n return showdown.subParser('encodeEmailAddress')(unescapedStr);\r\n }\r\n );\r\n\r\n return text;\r\n\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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,\r\n 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(\r\n                /(\\s*
    [^\\r]+?<\\/pre>)/gm,\r\n                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 * Created by Estevao on 12-01-2015.\r\n */\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    text = text.replace(/(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))/g,\r\n        function (wholeMatch, m1, m2) {\r\n            var codeblock = m1,\r\n                nextChar = m2;\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 whitespace\r\n\r\n            codeblock = '
    ' + codeblock + '\\n
    ';\r\n\r\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\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 * Created by Estevao on 11-01-2015.\r\n */\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,\r\n 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 * Created by Estevao on 11-01-2015.\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,\r\n 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\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 * Created by Estevao on 11-01-2015.\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 * Created by Estevao on 11-01-2015.\r\n */\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 * Created by Estevao on 11-01-2015.\r\n */\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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\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\n r > 0.45 ? encode[1](ch) :\r\n 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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\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, '\\\\`*_');\r\n return tag;\r\n });\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\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,\r\n 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\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 * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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 = '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 = '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, 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)\\b[^\\r]*?<\\/\\2>[ \\t]*(?=\\n+)\\n)/gm, 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, 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, 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, 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});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.subParser('headers', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var prefixHeader = options.prefixHeaderId;\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\r\n function (wholeMatch, m1) {\r\n return showdown.subParser('hashBlock')('

    ' +\r\n showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm,\r\n function (matchFound, m1) {\r\n return showdown.subParser('hashBlock')('

    ' +\r\n showdown.subParser('spanGamut')(m1, options, globals) + '

    ', options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm,\r\n function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n var title,\r\n escapedId = m.replace(/[^\\w]/g, '').toLowerCase();\r\n\r\n if (globals.hashLinkCounts[escapedId]) {\r\n title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);\r\n } else {\r\n title = escapedId;\r\n globals.hashLinkCounts[escapedId] = 1;\r\n }\r\n\r\n // Prefix id to prevent causing inadvertent pre-existing style matches.\r\n if (prefixHeader === true) {\r\n prefixHeader = 'section';\r\n }\r\n\r\n if (showdown.helper.isString(prefixHeader)) {\r\n return prefixHeader + title;\r\n }\r\n return title;\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n\r\n/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n }\r\n else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_');\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.subParser('italicsAndBold', function (text) {\r\n 'use strict';\r\n // must go first:\r\n text = text.replace(/(\\*\\*|__)(?=\\S)([^\\r]*?\\S[*_]*)\\1/g,\r\n '$2');\r\n\r\n text = text.replace(/(\\*|_)(?=\\S)([^\\r]*?\\S)\\1/g,\r\n '$2');\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\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 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\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\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 * Created by Estevao on 12-01-2015.\r\n */\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 * Created by Estevao on 12-01-2015.\r\n */\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\r\n /** Wrap

    tags. */\r\n var end = grafs.length;\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 }\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 * Created by Estevao on 11-01-2015.\r\n */\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\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 * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(/^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm,\r\n function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * Created by Estevao on 12-01-2015.\r\n */\r\n\r\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,\r\n function (wholeMatch, m1) {\r\n var charCodeToReplace = parseInt(m1);\r\n return String.fromCharCode(charCodeToReplace);\r\n }\r\n );\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 15-01-2015.\r\n */\r\n\r\nvar 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\nelse if (typeof define === 'function' && define.amd) {\r\n define('showdown', function () {\r\n return showdown;\r\n });\r\n}\r\n// Regular Browser loader\r\nelse {\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\\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\\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":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false,\r\n prefixHeaderId: false\r\n };\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// Public API\r\n//\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// API\r\n//\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n//Public methods\r\nshowdown.setOption = function (key, value) {\r\n 'use strict';\r\n globalOptions[key] = value;\r\n return this;\r\n};\r\n\r\nshowdown.getOption = function (key) {\r\n 'use strict';\r\n return globalOptions[key];\r\n};\r\n\r\nshowdown.getOptions = function () {\r\n 'use strict';\r\n return globalOptions;\r\n};\r\n\r\n/**\r\n * Static Method\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n 'use strict';\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\n/**\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n 'use strict';\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n parserOrder = [\r\n 'detab',\r\n 'stripBlankLines',\r\n //runLanguageExtensions,\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n var makeHtml = function (text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0,\r\n hashLinkCounts: {}\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n //showdown.forEach(g_output_modifiers, function (x) {\r\n // text = _ExecuteExtension(x, text);\r\n //});\r\n\r\n return text;\r\n };\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nfunction isString(a) {\r\n 'use strict';\r\n return (typeof a === 'string' || a instanceof String);\r\n}\r\n\r\nfunction forEach(obj, callback) {\r\n 'use strict';\r\n if (typeof obj.forEach === 'function') {\r\n obj.forEach(callback);\r\n } else {\r\n var i, len = obj.length;\r\n for (i = 0; i < len; i++) {\r\n callback(obj[i], i, obj);\r\n }\r\n }\r\n}\r\n\r\nfunction isArray(a) {\r\n 'use strict';\r\n return a.constructor === Array;\r\n}\r\n\r\nfunction isUndefined(value) {\r\n 'use strict';\r\n return typeof value === 'undefined';\r\n}\r\n\r\nvar escapeCharactersCallback = function (wholeMatch, m1) {\r\n 'use strict';\r\n var charCodeToEscape = m1.charCodeAt(0);\r\n return '~E' + charCodeToEscape + 'E';\r\n};\r\n\r\nvar escapeCharacters = function (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\nif (!showdown.hasOwnProperty('helper')) {\r\n showdown.helper = {};\r\n}\r\n\r\n/**\r\n * isString helper function\r\n * @param a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isString = isString;\r\n\r\n/**\r\n * ForEach helper function\r\n * @param {*} obj\r\n * @param callback\r\n */\r\nshowdown.helper.forEach = forEach;\r\n\r\n/**\r\n * isArray helper function\r\n * @param {*} a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isArray = isArray;\r\n\r\n/**\r\n * Check if value is undefined\r\n *\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 = isUndefined;\r\n\r\n/**\r\n * Callback used to escape characters when passing through String.replace\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 *\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 = escapeCharacters;\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\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, '*_');\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 (\t\t \t\t\t\t\t// wrap whole match in $1\r\n \\[\r\n ([^\\[\\]]+)\t\t\t\t// link text = $2; can't contain '[' or ']'\r\n \\]\r\n )()()()()()\t\t\t\t\t// 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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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 * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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 * Created by Estevao on 12-01-2015.\r\n */\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, nextChar = m2;\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 whitespace\r\n\r\n    codeblock = '
    ' + codeblock + '\\n
    ';\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 * Created by Estevao on 11-01-2015.\r\n */\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 * Created by Estevao on 11-01-2015.\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 * Created by Estevao on 11-01-2015.\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 * Created by Estevao on 11-01-2015.\r\n */\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 * Created by Estevao on 11-01-2015.\r\n */\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 * Created by Estevao on 12-01-2015.\r\n */\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 * Created by Estevao on 11-01-2015.\r\n */\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, '\\\\`*_');\r\n return tag;\r\n });\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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)\\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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.subParser('headers', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var prefixHeader = options.prefixHeaderId;\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm, function (wholeMatch, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm, function (matchFound, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm, function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n var title, escapedId = m.replace(/[^\\w]/g, '').toLowerCase();\r\n\r\n if (globals.hashLinkCounts[escapedId]) {\r\n title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);\r\n } else {\r\n title = escapedId;\r\n globals.hashLinkCounts[escapedId] = 1;\r\n }\r\n\r\n // Prefix id to prevent causing inadvertent pre-existing style matches.\r\n if (prefixHeader === true) {\r\n prefixHeader = 'section';\r\n }\r\n\r\n if (showdown.helper.isString(prefixHeader)) {\r\n return prefixHeader + title;\r\n }\r\n return title;\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n } else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_');\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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 * Created by Estevao on 12-01-2015.\r\n */\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 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 * Created by Estevao on 12-01-2015.\r\n */\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 * Created by Estevao on 12-01-2015.\r\n */\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), grafsOut = [];\r\n\r\n /** Wrap

    tags. */\r\n var end = grafs.length;\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 * Created by Estevao on 11-01-2015.\r\n */\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 * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var regex = /^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm;\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(regex, function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * Created by Estevao on 12-01-2015.\r\n */\r\n\r\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","/**\r\n * Created by Estevao on 15-01-2015.\r\n */\r\n\r\nvar 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\nelse 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\nelse {\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 b95e39d2..32129b8c 100644 --- a/dist/showdown.min.js +++ b/dist/showdown.min.js @@ -1,4 +1,4 @@ -/*! showdown 18-01-2015 */ +/*! showdown 19-01-2015 */ -(function(){"use strict";function a(a){return"string"==typeof a||a instanceof String}function b(a,b){if("function"==typeof a.forEach)a.forEach(b);else{var c,d=a.length;for(c=0;d>c;c++)b(a[c],c,a)}}function c(a){return a.constructor===Array}function d(a){return"undefined"==typeof a}var e={},f={},g={omitExtraWLInCodeBlocks:!1,prefixHeaderId:!1};e.helper={},e.extensions={},e.setOption=function(a,b){return g[a]=b,this},e.getOption=function(a){return g[a]},e.getOptions=function(){return g},e.subParser=function(a,b){if(e.helper.isString(a)){if("undefined"==typeof b){if(f.hasOwnProperty(a))return f[a];throw Error("SubParser named "+a+" not registered!")}f[a]=b}},e.Converter=function(a){a=a||{};var b=g,c=["detab","stripBlankLines","githubCodeBlocks","hashHTMLBlocks","stripLinkDefinitions","blockGamut","unescapeSpecialChars"];if("object"==typeof a)for(var d in a)a.hasOwnProperty(d)&&(b[d]=a[d]);var e=function(a){if(!a)return a;var d={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0,hashLinkCounts:{}};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n";for(var e=0;e-1))return a;m=""}else m=c.gUrls[l],e.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=e.helper.escapeCharacters(m,"*_");var o='"};return a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,d),a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d),a=a.replace(/(\[([^\[\]]+)\])()()()()()/g,d)}),e.subParser("autoLinks",function(a){return a=a.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'$1'),a=a.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,function(a,b){var c=e.subParser("unescapeSpecialChars")(b);return e.subParser("encodeEmailAddress")(c)})}),e.subParser("blockGamut",function(a,b,c){a=e.subParser("headers")(a,b,c);var d=e.subParser("hashBlock")("
    ",b,c);return a=a.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,d),a=e.subParser("lists")(a,b,c),a=e.subParser("codeBlocks")(a,b,c),a=e.subParser("blockQuotes")(a,b,c),a=e.subParser("hashHTMLBlocks")(a,b,c),a=e.subParser("paragraphs")(a,b,c)}),e.subParser("blockQuotes",function(a,b,c){return a=a.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(a,d){var f=d;return f=f.replace(/^[ \t]*>[ \t]?/gm,"~0"),f=f.replace(/~0/g,""),f=f.replace(/^[ \t]+$/gm,""),f=e.subParser("blockGamut")(f,b,c),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,"")}),e.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)})}),e.subParser("codeBlocks",function(a,b,c){return a+="~0",a=a.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(a,d,f){var g=d,h=f;return g=e.subParser("outdent")(g),g=e.subParser("encodeCode")(g),g=e.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",e.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,"")}),e.subParser("codeSpans",function(a){return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,d){var f=d;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=e.subParser("encodeCode")(f),b+""+f+""})}),e.subParser("detab",function(a){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,"")}),e.subParser("encodeAmpsAndAngles",function(a){return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),e.subParser("encodeBackslashEscapes",function(a){return a=a.replace(/\\(\\)/g,e.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,e.helper.escapeCharactersCallback)}),e.subParser("encodeCode",function(a){return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=e.helper.escapeCharacters(a,"*_{}[]\\",!1)}),e.subParser("encodeEmailAddress",function(a){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,'">')}),e.subParser("escapeSpecialCharsWithinTagAttributes",function(a){var b=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;return a=a.replace(b,function(a){var b=a.replace(/(.)<\/?code>(?=.)/g,"$1`");return b=e.helper.escapeCharacters(b,"\\`*_")})}),e.subParser("githubCodeBlocks",function(a,b,c){return a+="~0",a=a.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,function(a,d,f){var g=d,h=f,i="\n";return b.omitExtraWLInCodeBlocks&&(i=""),h=e.subParser("encodeCode")(h),h=e.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",e.subParser("hashBlock")(h,b,c)}),a=a.replace(/~0/,"")}),e.subParser("hashBlock",function(a,b,c){return a=a.replace(/(^\n+|\n+$)/g,""),"\n\n~K"+(c.gHtmlBlocks.push(a)-1)+"K\n\n"}),e.subParser("hashElement",function(a,b,c){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"}}),e.subParser("hashHTMLBlocks",function(a,b,c){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,e.subParser("hashElement")(a,b,c)),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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/\n\n/g,"\n")}),e.subParser("headers",function(a,b,c){function d(a){var b,d=a.replace(/[^\w]/g,"").toLowerCase();return c.hashLinkCounts[d]?b=d+"-"+c.hashLinkCounts[d]++:(b=d,c.hashLinkCounts[d]=1),f===!0&&(f="section"),e.helper.isString(f)?f+b:b}var f=b.prefixHeaderId;return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){return e.subParser("hashBlock")('

    '+e.subParser("spanGamut")(f,b,c)+"

    ",b,c)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){return e.subParser("hashBlock")('

    '+e.subParser("spanGamut")(f,b,c)+"

    ",b,c)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=e.subParser("spanGamut")(g,b,c),i="'+h+"";return e.subParser("hashBlock")(i,b,c)})}),e.subParser("images",function(a,b,c){var d=function(a,b,d,f,g,h,j,k){a=b;var l=d,m=f.toLowerCase(),n=g,o=k,p=c.gUrls,q=c.gTitles;if(o||(o=""),""===n||null===n){if((""===m||null===m)&&(m=l.toLowerCase().replace(/ ?\n/g," ")),n="#"+m,"undefined"==typeof p[m])return a;n=p[m],"undefined"!=typeof q[m]&&(o=q[m])}l=l.replace(/"/g,"""),n=e.helper.escapeCharacters(n,"*_");var r=''+l+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d)}),e.subParser("italicsAndBold",function(a){return a=a.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"$2"),a=a.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"$2")}),e.subParser("lists",function(a,b,c){var d=function(a){return c.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,d,f,g,h){var i=e.subParser("outdent")(h,b,c);return d||i.search(/\n{2,}/)>-1?i=e.subParser("blockGamut")(i,b,c):(i=e.subParser("lists")(i,b,c),i=i.replace(/\n$/,""),i=e.subParser("spanGamut")(i,b,c)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),c.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.gListLevel?a=a.replace(f,function(a,b,c){var e=b,f=c.search(/[*+-]/g)>-1?"ul":"ol";e=e.replace(/\n{2,}/g,"\n\n\n");var g=d(e);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,e){var f=c.replace(/\n{2,}/g,"\n\n\n"),g=e.search(/[*+-]/g)>-1?"ul":"ol",h=d(f);return b+"<"+g+">\n"+h+"\n"})),a=a.replace(/~0/,"")}),e.subParser("outdent",function(a){return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),e.subParser("paragraphs",function(a,b,c){a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,"");for(var d=a.split(/\n{2,}/g),f=[],g=d.length,h=0;g>h;h++){var i=d[h];i.search(/~K(\d+)K/g)>=0?f.push(i):i.search(/\S/)>=0&&(i=e.subParser("spanGamut")(i,b,c),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=c.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),e.subParser("spanGamut",function(a,b,c){return a=e.subParser("codeSpans")(a,b,c),a=e.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=e.subParser("encodeBackslashEscapes")(a,b,c),a=e.subParser("images")(a,b,c),a=e.subParser("anchors")(a,b,c),a=e.subParser("autoLinks")(a,b,c),a=e.subParser("encodeAmpsAndAngles")(a,b,c),a=e.subParser("italicsAndBold")(a,b,c),a=a.replace(/ +\n/g,"
    \n")}),e.subParser("stripBlankLines",function(a){return a.replace(/^[ \t]+$/gm,"")}),e.subParser("stripLinkDefinitions",function(a,b,c){return a+="~0",a=a.replace(/^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm,function(a,b,d,f,g){return b=b.toLowerCase(),c.gUrls[b]=e.subParser("encodeAmpsAndAngles")(d),f?f+g:(g&&(c.gTitles[b]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),e.subParser("unescapeSpecialChars",function(a){return a=a.replace(/~E(\d+)E/g,function(a,b){var c=parseInt(b);return String.fromCharCode(c)})});var j=this;"undefined"!=typeof module&&module.exports?module.exports=e:"function"==typeof define&&define.amd?define("showdown",function(){return e}):j.showdown=e}).call(this); +(function(){function a(a){"use strict";return"string"==typeof a||a instanceof String}function b(a,b){"use strict";if("function"==typeof a.forEach)a.forEach(b);else{var c,d=a.length;for(c=0;d>c;c++)b(a[c],c,a)}}function c(a){"use strict";return a.constructor===Array}function d(a){"use strict";return"undefined"==typeof a}var e={},f={},g={omitExtraWLInCodeBlocks:!1,prefixHeaderId:!1};e.helper={},e.extensions={},e.setOption=function(a,b){"use strict";return g[a]=b,this},e.getOption=function(a){"use strict";return g[a]},e.getOptions=function(){"use strict";return g},e.subParser=function(a,b){"use strict";if(e.helper.isString(a)){if("undefined"==typeof b){if(f.hasOwnProperty(a))return f[a];throw Error("SubParser named "+a+" not registered!")}f[a]=b}},e.Converter=function(a){"use strict";a=a||{};var b=g,c=["detab","stripBlankLines","githubCodeBlocks","hashHTMLBlocks","stripLinkDefinitions","blockGamut","unescapeSpecialChars"];if("object"==typeof a)for(var d in a)a.hasOwnProperty(d)&&(b[d]=a[d]);var e=function(a){if(!a)return a;var d={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0,hashLinkCounts:{}};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n";for(var e=0;e-1))return a;m=""}else m=c.gUrls[l],e.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=e.helper.escapeCharacters(m,"*_");var o='"};return a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,d),a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d),a=a.replace(/(\[([^\[\]]+)\])()()()()()/g,d)}),e.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 c=e.subParser("unescapeSpecialChars")(b);return e.subParser("encodeEmailAddress")(c)})}),e.subParser("blockGamut",function(a,b,c){"use strict";a=e.subParser("headers")(a,b,c);var d=e.subParser("hashBlock")("
    ",b,c);return a=a.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,d),a=e.subParser("lists")(a,b,c),a=e.subParser("codeBlocks")(a,b,c),a=e.subParser("blockQuotes")(a,b,c),a=e.subParser("hashHTMLBlocks")(a,b,c),a=e.subParser("paragraphs")(a,b,c)}),e.subParser("blockQuotes",function(a,b,c){"use strict";return a=a.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(a,d){var f=d;return f=f.replace(/^[ \t]*>[ \t]?/gm,"~0"),f=f.replace(/~0/g,""),f=f.replace(/^[ \t]+$/gm,""),f=e.subParser("blockGamut")(f,b,c),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,"")}),e.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)})}),e.subParser("codeBlocks",function(a,b,c){"use strict";a+="~0";var d=/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g;return a=a.replace(d,function(a,d,f){var g=d,h=f;return g=e.subParser("outdent")(g),g=e.subParser("encodeCode")(g),g=e.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",e.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,"")}),e.subParser("codeSpans",function(a){"use strict";return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,d){var f=d;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=e.subParser("encodeCode")(f),b+""+f+""})}),e.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,"")}),e.subParser("encodeAmpsAndAngles",function(a){"use strict";return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),e.subParser("encodeBackslashEscapes",function(a){"use strict";return a=a.replace(/\\(\\)/g,e.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,e.helper.escapeCharactersCallback)}),e.subParser("encodeCode",function(a){"use strict";return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=e.helper.escapeCharacters(a,"*_{}[]\\",!1)}),e.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,'">')}),e.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=e.helper.escapeCharacters(b,"\\`*_")})}),e.subParser("githubCodeBlocks",function(a,b,c){"use strict";return a+="~0",a=a.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,function(a,d,f){var g=d,h=f,i="\n";return b.omitExtraWLInCodeBlocks&&(i=""),h=e.subParser("encodeCode")(h),h=e.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",e.subParser("hashBlock")(h,b,c)}),a=a.replace(/~0/,"")}),e.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"}),e.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"}}),e.subParser("hashHTMLBlocks",function(a,b,c){"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,e.subParser("hashElement")(a,b,c)),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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/\n\n/g,"\n")}),e.subParser("headers",function(a,b,c){"use strict";function d(a){var b,d=a.replace(/[^\w]/g,"").toLowerCase();return c.hashLinkCounts[d]?b=d+"-"+c.hashLinkCounts[d]++:(b=d,c.hashLinkCounts[d]=1),f===!0&&(f="section"),e.helper.isString(f)?f+b:b}var f=b.prefixHeaderId;return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){var g=e.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return e.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){var g=e.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return e.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=e.subParser("spanGamut")(g,b,c),i="'+h+"";return e.subParser("hashBlock")(i,b,c)})}),e.subParser("images",function(a,b,c){"use strict";var d=function(a,b,d,f,g,h,j,k){a=b;var l=d,m=f.toLowerCase(),n=g,o=k,p=c.gUrls,q=c.gTitles;if(o||(o=""),""===n||null===n){if((""===m||null===m)&&(m=l.toLowerCase().replace(/ ?\n/g," ")),n="#"+m,"undefined"==typeof p[m])return a;n=p[m],"undefined"!=typeof q[m]&&(o=q[m])}l=l.replace(/"/g,"""),n=e.helper.escapeCharacters(n,"*_");var r=''+l+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d)}),e.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")}),e.subParser("lists",function(a,b,c){"use strict";var d=function(a){return c.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,d,f,g,h){var i=e.subParser("outdent")(h,b,c);return d||i.search(/\n{2,}/)>-1?i=e.subParser("blockGamut")(i,b,c):(i=e.subParser("lists")(i,b,c),i=i.replace(/\n$/,""),i=e.subParser("spanGamut")(i,b,c)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),c.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.gListLevel?a=a.replace(f,function(a,b,c){var e=b,f=c.search(/[*+-]/g)>-1?"ul":"ol";e=e.replace(/\n{2,}/g,"\n\n\n");var g=d(e);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,e){var f=c.replace(/\n{2,}/g,"\n\n\n"),g=e.search(/[*+-]/g)>-1?"ul":"ol",h=d(f);return b+"<"+g+">\n"+h+"\n"})),a=a.replace(/~0/,"")}),e.subParser("outdent",function(a){"use strict";return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),e.subParser("paragraphs",function(a,b,c){"use strict";a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,"");for(var d=a.split(/\n{2,}/g),f=[],g=d.length,h=0;g>h;h++){var i=d[h];i.search(/~K(\d+)K/g)>=0?f.push(i):i.search(/\S/)>=0&&(i=e.subParser("spanGamut")(i,b,c),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=c.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),e.subParser("spanGamut",function(a,b,c){"use strict";return a=e.subParser("codeSpans")(a,b,c),a=e.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=e.subParser("encodeBackslashEscapes")(a,b,c),a=e.subParser("images")(a,b,c),a=e.subParser("anchors")(a,b,c),a=e.subParser("autoLinks")(a,b,c),a=e.subParser("encodeAmpsAndAngles")(a,b,c),a=e.subParser("italicsAndBold")(a,b,c),a=a.replace(/ +\n/g,"
    \n")}),e.subParser("stripBlankLines",function(a){"use strict";return a.replace(/^[ \t]+$/gm,"")}),e.subParser("stripLinkDefinitions",function(a,b,c){"use strict";var d=/^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm;return a+="~0",a=a.replace(d,function(a,b,d,f,g){return b=b.toLowerCase(),c.gUrls[b]=e.subParser("encodeAmpsAndAngles")(d),f?f+g:(g&&(c.gTitles[b]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),e.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 j=this;"undefined"!=typeof module&&module.exports?module.exports=e:"function"==typeof define&&define.amd?define("showdown",function(){"use strict";return e}):j.showdown=e}).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 71a943d7..bb085ef6 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":["isString","a","String","forEach","obj","callback","i","len","length","isArray","constructor","Array","isUndefined","value","showdown","parsers","globalOptions","omitExtraWLInCodeBlocks","prefixHeaderId","helper","extensions","setOption","key","this","getOption","getOptions","subParser","name","func","hasOwnProperty","Error","Converter","converterOptions","options","parserOrder","opt","makeHtml","text","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","hashLinkCounts","replace","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","escapeCharacters","charsToEscape","afterBackslash","regexString","regex","RegExp","config","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","toLowerCase","url","title","search","result","unescapedStr","bq","pre","codeblock","nextChar","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","language","end","push","blockText","headerId","m","escapedId","prefixHeader","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","split","grafsOut","str","$1","join","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":["isString","a","String","forEach","obj","callback","i","len","length","isArray","constructor","Array","isUndefined","value","showdown","parsers","globalOptions","omitExtraWLInCodeBlocks","prefixHeaderId","helper","extensions","setOption","key","this","getOption","getOptions","subParser","name","func","hasOwnProperty","Error","Converter","converterOptions","options","parserOrder","opt","makeHtml","text","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","hashLinkCounts","replace","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","escapeCharacters","charsToEscape","afterBackslash","regexString","regex","RegExp","config","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","toLowerCase","url","title","search","result","pattern","unescapedStr","bq","pre","codeblock","nextChar","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","language","end","push","blockText","headerId","m","escapedId","prefixHeader","spanGamut","hashBlock","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","split","grafsOut","str","$1","join","charCodeToReplace","parseInt","fromCharCode","root","module","exports","define","amd","call"],"mappings":"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"} \ No newline at end of file diff --git a/src/angular.js b/src/angular.js index 459753d1..f652dbcc 100644 --- a/src/angular.js +++ b/src/angular.js @@ -9,9 +9,10 @@ if (typeof angular !== 'undefined' && typeof showdown !== 'undefined') { (function (module, showdown) { 'use strict'; - module.provider('$showdown', provider).directive('sdModelToHtml', - ['$showdown', markdownToHtmlDirective]).filter('sdStripHtml', - stripHtmlFilter); + module + .provider('$showdown', provider) + .directive('sdModelToHtml',['$showdown', markdownToHtmlDirective]) + .filter('sdStripHtml', stripHtmlFilter); /** * Angular Provider diff --git a/src/loader.js b/src/loader.js index 2d6b05be..6fceaa5d 100644 --- a/src/loader.js +++ b/src/loader.js @@ -11,6 +11,7 @@ if (typeof module !== 'undefined' && module.exports) { // AMD Loader else if (typeof define === 'function' && define.amd) { define('showdown', function () { + 'use strict'; return showdown; }); } diff --git a/src/subParsers/autoLinks.js b/src/subParsers/autoLinks.js index e7857e83..3931978c 100644 --- a/src/subParsers/autoLinks.js +++ b/src/subParsers/autoLinks.js @@ -5,7 +5,7 @@ showdown.subParser('autoLinks', function (text) { 'use strict'; - text = text.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi, "$1"); + text = text.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi, '$1'); // Email addresses: @@ -19,9 +19,10 @@ showdown.subParser('autoLinks', function (text) { [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+ ) > - /gi, _DoAutoLinks_callback()); + /gi); */ - text = text.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi, function (wholeMatch, m1) { + var pattern = /<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi; + text = text.replace(pattern, function (wholeMatch, m1) { var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1); return showdown.subParser('encodeEmailAddress')(unescapedStr); }); diff --git a/src/subParsers/codeBlocks.js b/src/subParsers/codeBlocks.js index 97c80ed9..32d50ec4 100644 --- a/src/subParsers/codeBlocks.js +++ b/src/subParsers/codeBlocks.js @@ -24,20 +24,20 @@ showdown.subParser('codeBlocks', function (text, options, globals) { // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug text += '~0'; - text = text.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g, - function (wholeMatch, m1, m2) { - var codeblock = m1, nextChar = m2; + var pattern = /(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g; + text = text.replace(pattern, function (wholeMatch, m1, m2) { + var codeblock = m1, nextChar = m2; - codeblock = showdown.subParser('outdent')(codeblock); - codeblock = showdown.subParser('encodeCode')(codeblock); - codeblock = showdown.subParser('detab')(codeblock); - codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines - codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing whitespace + codeblock = showdown.subParser('outdent')(codeblock); + codeblock = showdown.subParser('encodeCode')(codeblock); + codeblock = showdown.subParser('detab')(codeblock); + codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines + codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing whitespace - codeblock = '
    ' + codeblock + '\n
    '; + codeblock = '
    ' + codeblock + '\n
    '; - return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar; - }); + return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar; + }); // attacklab: strip sentinel text = text.replace(/~0/, ''); diff --git a/src/subParsers/detab.js b/src/subParsers/detab.js index 8bd4307b..08ba0dbe 100644 --- a/src/subParsers/detab.js +++ b/src/subParsers/detab.js @@ -16,7 +16,8 @@ showdown.subParser('detab', function (text) { // use the sentinel to anchor our regex so it doesn't explode text = text.replace(/~B(.+?)~A/g, function (wholeMatch, m1) { - var leadingText = m1, numSpaces = 4 - leadingText.length % 4; // g_tab_width + var leadingText = m1, + numSpaces = 4 - leadingText.length % 4; // g_tab_width // there *must* be a better way to do this: for (var i = 0; i < numSpaces; i++) { diff --git a/src/subParsers/encodeCode.js b/src/subParsers/encodeCode.js index 27b51e53..9feb4f23 100644 --- a/src/subParsers/encodeCode.js +++ b/src/subParsers/encodeCode.js @@ -29,5 +29,4 @@ showdown.subParser('encodeCode', function (text) { // --- return text; - }); diff --git a/src/subParsers/encodeEmailAddress.js b/src/subParsers/encodeEmailAddress.js index 9e15b5fc..6a7b734b 100644 --- a/src/subParsers/encodeEmailAddress.js +++ b/src/subParsers/encodeEmailAddress.js @@ -23,9 +23,11 @@ showdown.subParser('encodeEmailAddress', function (addr) { var encode = [ function (ch) { return '&#' + ch.charCodeAt(0) + ';'; - }, function (ch) { + }, + function (ch) { return '&#x' + ch.charCodeAt(0).toString(16) + ';'; - }, function (ch) { + }, + function (ch) { return ch; } ]; @@ -51,5 +53,4 @@ showdown.subParser('encodeEmailAddress', function (addr) { addr = addr.replace(/">.+:/g, '">'); // strip the mailto: from the visible part return addr; - }); diff --git a/src/subParsers/githubCodeBlocks.js b/src/subParsers/githubCodeBlocks.js index f8141bca..2bbaa6ea 100644 --- a/src/subParsers/githubCodeBlocks.js +++ b/src/subParsers/githubCodeBlocks.js @@ -18,7 +18,9 @@ showdown.subParser('githubCodeBlocks', function (text, options, globals) { text += '~0'; text = text.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g, function (wholeMatch, m1, m2) { - var language = m1, codeblock = m2, end = '\n'; + var language = m1, + codeblock = m2, + end = '\n'; if (options.omitExtraWLInCodeBlocks) { end = ''; diff --git a/src/subParsers/headers.js b/src/subParsers/headers.js index d19f2493..a4ab4c43 100644 --- a/src/subParsers/headers.js +++ b/src/subParsers/headers.js @@ -15,17 +15,15 @@ showdown.subParser('headers', function (text, options, globals) { // -------- // text = text.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm, function (wholeMatch, m1) { - return showdown.subParser('hashBlock')('

    ' + showdown.subParser('spanGamut')(m1, - options, - globals) + '

    ', - options, globals); + var spanGamut = showdown.subParser('spanGamut')(m1, options, globals), + hashBlock = '

    ' + spanGamut + '

    '; + return showdown.subParser('hashBlock')(hashBlock, options, globals); }); text = text.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm, function (matchFound, m1) { - return showdown.subParser('hashBlock')('

    ' + showdown.subParser('spanGamut')(m1, - options, - globals) + '

    ', - options, globals); + var spanGamut = showdown.subParser('spanGamut')(m1, options, globals), + hashBlock = '

    ' + spanGamut + '

    '; + return showdown.subParser('hashBlock')(hashBlock, options, globals); }); // atx-style headers: @@ -48,8 +46,8 @@ showdown.subParser('headers', function (text, options, globals) { */ text = text.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm, function (wholeMatch, m1, m2) { - var span = showdown.subParser('spanGamut')(m2, options, - globals), header = '' + span + ''; + var span = showdown.subParser('spanGamut')(m2, options, globals), + header = '' + span + ''; return showdown.subParser('hashBlock')(header, options, globals); }); diff --git a/src/subParsers/images.js b/src/subParsers/images.js index cf961742..03675599 100644 --- a/src/subParsers/images.js +++ b/src/subParsers/images.js @@ -11,7 +11,12 @@ showdown.subParser('images', function (text, options, globals) { var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) { wholeMatch = m1; - var altText = m2, linkId = m3.toLowerCase(), url = m4, title = m7, gUrls = globals.gUrls, gTitles = globals.gTitles; + var altText = m2, + linkId = m3.toLowerCase(), + url = m4, + title = m7, + gUrls = globals.gUrls, + gTitles = globals.gTitles; if (!title) { title = ''; diff --git a/src/subParsers/lists.js b/src/subParsers/lists.js index c8256ef3..ef9e2ca6 100644 --- a/src/subParsers/lists.js +++ b/src/subParsers/lists.js @@ -109,7 +109,8 @@ showdown.subParser('lists', function (text, options, globals) { if (globals.gListLevel) { text = text.replace(wholeList, function (wholeMatch, m1, m2) { - var list = m1, listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol'; + var list = m1, + listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol'; // Turn double returns into triple returns, so that we can make a // paragraph for the last item in a list, if necessary: @@ -132,8 +133,9 @@ showdown.subParser('lists', function (text, options, globals) { // Turn double returns into triple returns, so that we can make a // paragraph for the last item in a list, if necessary: - var list = m2.replace(/\n{2,}/g, - '\n\n\n'), listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol', result = processListItems(list); + var list = m2.replace(/\n{2,}/g, '\n\n\n'), + listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol', + result = processListItems(list); return m1 + '<' + listType + '>\n' + result + '\n'; }); diff --git a/src/subParsers/stripLinkDefinitions.js b/src/subParsers/stripLinkDefinitions.js index e7dacec1..7e7dad41 100644 --- a/src/subParsers/stripLinkDefinitions.js +++ b/src/subParsers/stripLinkDefinitions.js @@ -30,25 +30,26 @@ showdown.subParser('stripLinkDefinitions', function (text, options, globals) { 'use strict'; + var regex = /^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm; + // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug text += '~0'; - text = text.replace(/^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm, - function (wholeMatch, m1, m2, m3, m4) { - m1 = m1.toLowerCase(); - globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are - // case-insensitive - if (m3) { - // Oops, found blank lines, so it's not a title. - // Put back the parenthetical statement we stole. - return m3 + m4; - } else if (m4) { - globals.gTitles[m1] = m4.replace(/"/g, '"'); - } - - // Completely remove the definition from the text - return ''; - }); + text = text.replace(regex, function (wholeMatch, m1, m2, m3, m4) { + m1 = m1.toLowerCase(); + globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive + if (m3) { + // Oops, found blank lines, so it's not a title. + // Put back the parenthetical statement we stole. + return m3 + m4; + + } else if (m4) { + globals.gTitles[m1] = m4.replace(/"/g, '"'); + } + + // Completely remove the definition from the text + return ''; + }); // attacklab: strip sentinel text = text.replace(/~0/, ''); diff --git a/test/cases/escaped-number-period.md b/test/cases/escaped-number-period.md index d321a38c..654761b2 100644 --- a/test/cases/escaped-number-period.md +++ b/test/cases/escaped-number-period.md @@ -1 +1 @@ -It happened in 1986\. What a great season. \ No newline at end of file +It happened in 1986\. What a great season. diff --git a/test/cases/horizontal-rules.html b/test/cases/horizontal-rules.html index 5dd0402b..aaef23eb 100644 --- a/test/cases/horizontal-rules.html +++ b/test/cases/horizontal-rules.html @@ -1,9 +1,9 @@ -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    diff --git a/test/cases/html5-strutural-tags.html b/test/cases/html5-strutural-tags.html index 8e0d4b45..372c7f30 100644 --- a/test/cases/html5-strutural-tags.html +++ b/test/cases/html5-strutural-tags.html @@ -13,8 +13,7 @@
    read - me -
    + me
    diff --git a/test/cases/multiline-unordered-list.html b/test/cases/multiline-unordered-list.html index a20becb7..6af8aacc 100644 --- a/test/cases/multiline-unordered-list.html +++ b/test/cases/multiline-unordered-list.html @@ -1,6 +1,5 @@
    • This line spans - more than one line and is lazy -
    • + more than one line and is lazy
    • Similar to this line
    diff --git a/test/cases/url-with-parenthesis.html b/test/cases/url-with-parenthesis.html index 293af09c..9e1e7cc9 100644 --- a/test/cases/url-with-parenthesis.html +++ b/test/cases/url-with-parenthesis.html @@ -1,2 +1 @@ -

    There's an episode of Star Trek: The Next Generation -

    +

    There's an episode of Star Trek: The Next Generation

    diff --git a/test/cases/url-with-parenthesis.md b/test/cases/url-with-parenthesis.md index f271d265..d1777abc 100644 --- a/test/cases/url-with-parenthesis.md +++ b/test/cases/url-with-parenthesis.md @@ -1,2 +1 @@ - -There's an [episode](http://en.memory-alpha.org/wiki/Darmok_(episode)) of Star Trek: The Next Generation \ No newline at end of file +There's an [episode](http://en.memory-alpha.org/wiki/Darmok_(episode)) of Star Trek: The Next Generation From 9ad3ac5cc0f29fb6712c02ce54e05bd37626fde4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Mon, 19 Jan 2015 14:53:53 +0000 Subject: [PATCH 17/34] chore(): add support for jscs --- .editorconfig | 4 +++ .jscs.json | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++ .jshintrc | 1 + package.json | 1 + 4 files changed, 99 insertions(+) create mode 100644 .jscs.json diff --git a/.editorconfig b/.editorconfig index 4c1b2fcf..563987c7 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,6 +1,7 @@ [*.js] indent_style = space; indent_size = 2; +continuation_indent_size = 2; insert_final_newline = true; quote_type = single; space_after_anonymous_functions = true; @@ -8,4 +9,7 @@ space_after_control_statements = true; spaces_around_operators = true; trim_trailing_whitespace = true; spaces_in_brackets = false; +curly_bracket_next_line = true; +indent_brace_style = 1TBS; end_of_line = lf; +charset = utf-8; diff --git a/.jscs.json b/.jscs.json new file mode 100644 index 00000000..c348b552 --- /dev/null +++ b/.jscs.json @@ -0,0 +1,93 @@ +{ + "requireCurlyBraces": [ + "if", + "else", + "for", + "while", + "do", + "try", + "catch" + ], + "requireOperatorBeforeLineBreak": true, + "requireCamelCaseOrUpperCaseIdentifiers": true, + "maximumLineLength": { + "value": 80, + "allowComments": true, + "allowRegex": true + }, + "validateIndentation": 2, + "validateQuoteMarks": "'", + "disallowMultipleLineStrings": true, + "disallowMixedSpacesAndTabs": true, + "disallowTrailingWhitespace": true, + "disallowSpaceAfterPrefixUnaryOperators": true, + "requireMultipleVarDecl": true, + "disallowKeywordsOnNewLine": ["else"], + "requireSpaceAfterKeywords": [ + "if", + "else", + "for", + "while", + "do", + "switch", + "return", + "try", + "catch" + ], + "requireSpaceBeforeBinaryOperators": [ + "=", + "+=", + "-=", + "*=", + "/=", + "%=", + "<<=", + ">>=", + ">>>=", + "&=", + "|=", + "^=", + "+=", + "+", + "-", + "*", + "/", + "%", + "<<", + ">>", + ">>>", + "&", + "|", + "^", + "&&", + "||", + "===", + "==", + ">=", + "<=", + "<", + ">", + "!=", + "!==" + ], + "requireSpaceAfterBinaryOperators": true, + "requireSpacesInConditionalExpression": true, + "requireSpaceBeforeBlockStatements": true, + "requireSpacesInForStatement": true, + "requireLineFeedAtFileEnd": true, + "requireSpacesInFunctionExpression": { + "beforeOpeningCurlyBrace": true + }, + "disallowSpacesInAnonymousFunctionExpression": { + "beforeOpeningRoundBrace": true + }, + "disallowSpacesInsideObjectBrackets": "all", + "disallowSpacesInsideArrayBrackets": "all", + "disallowSpacesInsideParentheses": true, + "validateJSDoc": { + "checkParamNames": true, + "requireParamTypes": true + }, + "disallowMultipleLineBreaks": true, + "disallowNewlineBeforeBlockStatements": true +} diff --git a/.jshintrc b/.jshintrc index a830c8ed..0dfea06a 100644 --- a/.jshintrc +++ b/.jshintrc @@ -17,6 +17,7 @@ "strict": true, "trailing": true, "smarttabs": true, + "onevar": true, "globals": { "angular": true, "module": true, diff --git a/package.json b/package.json index fc730db9..70d9e577 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "grunt-contrib-jshint": "^0.10.0", "grunt-contrib-uglify": "^0.6.0", "grunt-simple-mocha": "^0.4.0", + "jscs": "^1.10.0", "mocha": "*", "should": "^4.4.2", "source-map-support": "^0.2.9" From a79f5810948fefc19ccfef811c5c94a9a6935e28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Mon, 19 Jan 2015 14:54:45 +0000 Subject: [PATCH 18/34] chore(.jscs.json): fix .jscs.json to match our code-style --- .jscs.json | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/.jscs.json b/.jscs.json index c348b552..9d0b1cf5 100644 --- a/.jscs.json +++ b/.jscs.json @@ -10,11 +10,6 @@ ], "requireOperatorBeforeLineBreak": true, "requireCamelCaseOrUpperCaseIdentifiers": true, - "maximumLineLength": { - "value": 80, - "allowComments": true, - "allowRegex": true - }, "validateIndentation": 2, "validateQuoteMarks": "'", "disallowMultipleLineStrings": true, @@ -78,8 +73,9 @@ "requireSpacesInFunctionExpression": { "beforeOpeningCurlyBrace": true }, - "disallowSpacesInAnonymousFunctionExpression": { - "beforeOpeningRoundBrace": true + "requireSpacesInAnonymousFunctionExpression": { + "beforeOpeningRoundBrace": true, + "beforeOpeningCurlyBrace": true }, "disallowSpacesInsideObjectBrackets": "all", "disallowSpacesInsideArrayBrackets": "all", From 0da96264080ea3cabd1f40d8417b91d8bd842c8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Mon, 19 Jan 2015 14:57:43 +0000 Subject: [PATCH 19/34] chore(): code fix to pass jscs linter --- src/angular.js | 9 +- src/helpers.js | 104 ++++++++---------- src/loader.js | 12 +- src/subParsers/anchors.js | 14 +-- src/subParsers/autoLinks.js | 4 - src/subParsers/blockGamut.js | 6 +- src/subParsers/blockQuotes.js | 4 - src/subParsers/codeBlocks.js | 4 - src/subParsers/codeSpans.js | 4 - src/subParsers/detab.js | 4 - src/subParsers/encodeAmpsAndAngles.js | 4 - src/subParsers/encodeBackslashEscapes.js | 4 - src/subParsers/encodeCode.js | 4 - src/subParsers/encodeEmailAddress.js | 4 - .../escapeSpecialCharsWithinTagAttributes.js | 6 +- src/subParsers/githubCodeBlocks.js | 4 - src/subParsers/hashBlock.js | 4 - src/subParsers/hashElement.js | 4 - src/subParsers/hashHTMLBlocks.js | 4 - src/subParsers/headers.js | 4 - src/subParsers/images.js | 6 +- src/subParsers/italicsAndBold.js | 4 - src/subParsers/lists.js | 6 +- src/subParsers/outdent.js | 4 - src/subParsers/paragraphs.js | 10 +- src/subParsers/spanGamut.js | 4 - src/subParsers/stripBlankLines.js | 4 - src/subParsers/stripLinkDefinitions.js | 4 - src/subParsers/unescapeSpecialChars.js | 4 - test/node/Container/testMakeHtml.js | 19 +++- 30 files changed, 78 insertions(+), 194 deletions(-) diff --git a/src/angular.js b/src/angular.js index f652dbcc..46220f1a 100644 --- a/src/angular.js +++ b/src/angular.js @@ -1,8 +1,3 @@ -/** - * Created by Tivie on 04-11-2014. - */ - - //Check if AngularJs and Showdown is defined and only load ng-Showdown if both are present if (typeof angular !== 'undefined' && typeof showdown !== 'undefined') { @@ -11,7 +6,7 @@ if (typeof angular !== 'undefined' && typeof showdown !== 'undefined') { module .provider('$showdown', provider) - .directive('sdModelToHtml',['$showdown', markdownToHtmlDirective]) + .directive('sdModelToHtml', ['$showdown', markdownToHtmlDirective]) .filter('sdStripHtml', stripHtmlFilter); /** @@ -104,7 +99,7 @@ if (typeof angular !== 'undefined' && typeof showdown !== 'undefined') { * Usage example: *
    * - * @param $showdown + * @param {showdown.Converter} $showdown * @returns {*} */ function markdownToHtmlDirective($showdown) { diff --git a/src/helpers.js b/src/helpers.js index c0000f55..1e82b870 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -1,13 +1,27 @@ /** - * Created by Estevao on 11-01-2015. + * showdownjs helper functions */ -function isString(a) { +if (!showdown.hasOwnProperty('helper')) { + showdown.helper = {}; +} + +/** + * Check if var is string + * @param {string} a + * @returns {boolean} + */ +showdown.helper.isString = function isString(a) { 'use strict'; return (typeof a === 'string' || a instanceof String); -} +}; -function forEach(obj, callback) { +/** + * ForEach helper function + * @param {*} obj + * @param {function} callback + */ +showdown.helper.forEach = function forEach(obj, callback) { 'use strict'; if (typeof obj.forEach === 'function') { obj.forEach(callback); @@ -17,64 +31,17 @@ function forEach(obj, callback) { callback(obj[i], i, obj); } } -} - -function isArray(a) { - 'use strict'; - return a.constructor === Array; -} - -function isUndefined(value) { - 'use strict'; - return typeof value === 'undefined'; -} - -var escapeCharactersCallback = function (wholeMatch, m1) { - 'use strict'; - var charCodeToEscape = m1.charCodeAt(0); - return '~E' + charCodeToEscape + 'E'; -}; - -var escapeCharacters = function (text, charsToEscape, afterBackslash) { - 'use strict'; - // First we have to escape the escape characters so that - // we can build a character class out of them - var regexString = '([' + charsToEscape.replace(/([\[\]\\])/g, '\\$1') + '])'; - - if (afterBackslash) { - regexString = '\\\\' + regexString; - } - - var regex = new RegExp(regexString, 'g'); - text = text.replace(regex, escapeCharactersCallback); - - return text; }; -if (!showdown.hasOwnProperty('helper')) { - showdown.helper = {}; -} - -/** - * isString helper function - * @param a - * @returns {boolean} - */ -showdown.helper.isString = isString; - -/** - * ForEach helper function - * @param {*} obj - * @param callback - */ -showdown.helper.forEach = forEach; - /** * isArray helper function * @param {*} a * @returns {boolean} */ -showdown.helper.isArray = isArray; +showdown.helper.isArray = function isArray(a) { + 'use strict'; + return a.constructor === Array; +}; /** * Check if value is undefined @@ -83,7 +50,10 @@ showdown.helper.isArray = isArray; * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. */ -showdown.helper.isUndefined = isUndefined; +showdown.helper.isUndefined = function isUndefined(value) { + 'use strict'; + return typeof value === 'undefined'; +}; /** * Callback used to escape characters when passing through String.replace @@ -91,7 +61,11 @@ showdown.helper.isUndefined = isUndefined; * @param {string} m1 * @returns {string} */ -showdown.helper.escapeCharactersCallback = escapeCharactersCallback; +showdown.helper.escapeCharactersCallback = function escapeCharactersCallback(wholeMatch, m1) { + 'use strict'; + var charCodeToEscape = m1.charCodeAt(0); + return '~E' + charCodeToEscape + 'E'; +}; /** * Escape characters in a string @@ -101,4 +75,18 @@ showdown.helper.escapeCharactersCallback = escapeCharactersCallback; * @param {boolean} afterBackslash * @returns {XML|string|void|*} */ -showdown.helper.escapeCharacters = escapeCharacters; +showdown.helper.escapeCharacters = function escapeCharacters(text, charsToEscape, afterBackslash) { + 'use strict'; + // First we have to escape the escape characters so that + // we can build a character class out of them + var regexString = '([' + charsToEscape.replace(/([\[\]\\])/g, '\\$1') + '])'; + + if (afterBackslash) { + regexString = '\\\\' + regexString; + } + + var regex = new RegExp(regexString, 'g'); + text = text.replace(regex, escapeCharactersCallback); + + return text; +}; diff --git a/src/loader.js b/src/loader.js index 6fceaa5d..255ed92a 100644 --- a/src/loader.js +++ b/src/loader.js @@ -1,21 +1,17 @@ -/** - * Created by Estevao on 15-01-2015. - */ - var root = this; // CommonJS/nodeJS Loader if (typeof module !== 'undefined' && module.exports) { module.exports = showdown; -} + // AMD Loader -else if (typeof define === 'function' && define.amd) { +} else if (typeof define === 'function' && define.amd) { define('showdown', function () { 'use strict'; return showdown; }); -} + // Regular Browser loader -else { +} else { root.showdown = showdown; } diff --git a/src/subParsers/anchors.js b/src/subParsers/anchors.js index d54a674e..65513847 100644 --- a/src/subParsers/anchors.js +++ b/src/subParsers/anchors.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 11-01-2015. - */ - /** * Turn Markdown link shortcuts into XHTML tags. */ @@ -40,12 +36,12 @@ showdown.subParser('anchors', function (text, config, globals) { } } - url = showdown.helper.escapeCharacters(url, '*_'); + url = showdown.helper.escapeCharacters(url, '*_', false); var result = '` blocks. */ diff --git a/src/subParsers/codeSpans.js b/src/subParsers/codeSpans.js index a2feb9bf..639ffa80 100644 --- a/src/subParsers/codeSpans.js +++ b/src/subParsers/codeSpans.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 11-01-2015. - */ - /** * * * Backtick quotes are used for spans. diff --git a/src/subParsers/detab.js b/src/subParsers/detab.js index 08ba0dbe..b3c6d65c 100644 --- a/src/subParsers/detab.js +++ b/src/subParsers/detab.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 11-01-2015. - */ - /** * Convert all tabs to spaces */ diff --git a/src/subParsers/encodeAmpsAndAngles.js b/src/subParsers/encodeAmpsAndAngles.js index 370aff08..984cd2ee 100644 --- a/src/subParsers/encodeAmpsAndAngles.js +++ b/src/subParsers/encodeAmpsAndAngles.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 11-01-2015. - */ - /** * Smart processing for ampersands and angle brackets that need to be encoded. */ diff --git a/src/subParsers/encodeBackslashEscapes.js b/src/subParsers/encodeBackslashEscapes.js index cbf48172..ee2cce21 100644 --- a/src/subParsers/encodeBackslashEscapes.js +++ b/src/subParsers/encodeBackslashEscapes.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 11-01-2015. - */ - /** * Returns the string, with after processing the following backslash escape sequences. * diff --git a/src/subParsers/encodeCode.js b/src/subParsers/encodeCode.js index 9feb4f23..0ae9645a 100644 --- a/src/subParsers/encodeCode.js +++ b/src/subParsers/encodeCode.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 11-01-2015. - */ - /** * Encode/escape certain characters inside Markdown code runs. * The point is that in code, these characters are literals, diff --git a/src/subParsers/encodeEmailAddress.js b/src/subParsers/encodeEmailAddress.js index 6a7b734b..925b3cce 100644 --- a/src/subParsers/encodeEmailAddress.js +++ b/src/subParsers/encodeEmailAddress.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 12-01-2015. - */ - /** * Input: an email address, e.g. "foo@example.com" * diff --git a/src/subParsers/escapeSpecialCharsWithinTagAttributes.js b/src/subParsers/escapeSpecialCharsWithinTagAttributes.js index 46dac216..a363f190 100644 --- a/src/subParsers/escapeSpecialCharsWithinTagAttributes.js +++ b/src/subParsers/escapeSpecialCharsWithinTagAttributes.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 11-01-2015. - */ - /** * Within tags -- meaning between < and > -- encode [\ ` * _] so they * don't conflict with their use in Markdown for code, italics and strong. @@ -15,7 +11,7 @@ showdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text) { text = text.replace(regex, function (wholeMatch) { var tag = wholeMatch.replace(/(.)<\/?code>(?=.)/g, '$1`'); - tag = showdown.helper.escapeCharacters(tag, '\\`*_'); + tag = showdown.helper.escapeCharacters(tag, '\\`*_', false); return tag; }); diff --git a/src/subParsers/githubCodeBlocks.js b/src/subParsers/githubCodeBlocks.js index 2bbaa6ea..c59a2b01 100644 --- a/src/subParsers/githubCodeBlocks.js +++ b/src/subParsers/githubCodeBlocks.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 11-01-2015. - */ - /** * Handle github codeblocks prior to running HashHTML so that * HTML contained within the codeblock gets escaped properly diff --git a/src/subParsers/hashBlock.js b/src/subParsers/hashBlock.js index ccd0c1a0..3196f1d2 100644 --- a/src/subParsers/hashBlock.js +++ b/src/subParsers/hashBlock.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 11-01-2015. - */ - showdown.subParser('hashBlock', function (text, options, globals) { 'use strict'; text = text.replace(/(^\n+|\n+$)/g, ''); diff --git a/src/subParsers/hashElement.js b/src/subParsers/hashElement.js index 6a836d7f..7bf12915 100644 --- a/src/subParsers/hashElement.js +++ b/src/subParsers/hashElement.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 11-01-2015. - */ - showdown.subParser('hashElement', function (text, options, globals) { 'use strict'; diff --git a/src/subParsers/hashHTMLBlocks.js b/src/subParsers/hashHTMLBlocks.js index 013f4d6e..27aa8b62 100644 --- a/src/subParsers/hashHTMLBlocks.js +++ b/src/subParsers/hashHTMLBlocks.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 11-01-2015. - */ - showdown.subParser('hashHTMLBlocks', function (text, options, globals) { 'use strict'; diff --git a/src/subParsers/headers.js b/src/subParsers/headers.js index a4ab4c43..e7230987 100644 --- a/src/subParsers/headers.js +++ b/src/subParsers/headers.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 11-01-2015. - */ - showdown.subParser('headers', function (text, options, globals) { 'use strict'; diff --git a/src/subParsers/images.js b/src/subParsers/images.js index 03675599..8c3d811d 100644 --- a/src/subParsers/images.js +++ b/src/subParsers/images.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 11-01-2015. - */ - /** * Turn Markdown image shortcuts into tags. */ @@ -40,7 +36,7 @@ showdown.subParser('images', function (text, options, globals) { } altText = altText.replace(/"/g, '"'); - url = showdown.helper.escapeCharacters(url, '*_'); + url = showdown.helper.escapeCharacters(url, '*_', false); var result = '' + altText + ' must go first: diff --git a/src/subParsers/lists.js b/src/subParsers/lists.js index ef9e2ca6..ddd223a0 100644 --- a/src/subParsers/lists.js +++ b/src/subParsers/lists.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 12-01-2015. - */ - /** * Form HTML ordered (numbered) and unordered (bulleted) lists. */ @@ -11,7 +7,7 @@ showdown.subParser('lists', function (text, options, globals) { /** * Process the contents of a single ordered or unordered list, splitting it * into individual list items. - * @param listStr + * @param {string} listStr * @returns {string|*} */ var processListItems = function (listStr) { diff --git a/src/subParsers/outdent.js b/src/subParsers/outdent.js index ae9ed09f..d27db2ee 100644 --- a/src/subParsers/outdent.js +++ b/src/subParsers/outdent.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 12-01-2015. - */ - /** * Remove one level of line-leading tabs or spaces */ diff --git a/src/subParsers/paragraphs.js b/src/subParsers/paragraphs.js index dc2db8e7..2fb1f42a 100644 --- a/src/subParsers/paragraphs.js +++ b/src/subParsers/paragraphs.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 12-01-2015. - */ - /** * */ @@ -12,10 +8,10 @@ showdown.subParser('paragraphs', function (text, options, globals) { text = text.replace(/^\n+/g, ''); text = text.replace(/\n+$/g, ''); - var grafs = text.split(/\n{2,}/g), grafsOut = []; + var grafs = text.split(/\n{2,}/g), + grafsOut = [], + end = grafs.length; // Wrap

    tags - /** Wrap

    tags. */ - var end = grafs.length; for (var i = 0; i < end; i++) { var str = grafs[i]; diff --git a/src/subParsers/spanGamut.js b/src/subParsers/spanGamut.js index 2d9374bf..0193c3d5 100644 --- a/src/subParsers/spanGamut.js +++ b/src/subParsers/spanGamut.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 11-01-2015. - */ - /** * These are all the transformations that occur *within* block-level * tags like paragraphs, headers, and list items. diff --git a/src/subParsers/stripBlankLines.js b/src/subParsers/stripBlankLines.js index 42407dc3..c507d5a7 100644 --- a/src/subParsers/stripBlankLines.js +++ b/src/subParsers/stripBlankLines.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 11-01-2015. - */ - /** * Strip any lines consisting only of spaces and tabs. * This makes subsequent regexs easier to write, because we can diff --git a/src/subParsers/stripLinkDefinitions.js b/src/subParsers/stripLinkDefinitions.js index 7e7dad41..754ddc58 100644 --- a/src/subParsers/stripLinkDefinitions.js +++ b/src/subParsers/stripLinkDefinitions.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 11-01-2015. - */ - /** * Strips link definitions from text, stores the URLs and titles in * hash references. diff --git a/src/subParsers/unescapeSpecialChars.js b/src/subParsers/unescapeSpecialChars.js index 4776d1f6..1873f432 100644 --- a/src/subParsers/unescapeSpecialChars.js +++ b/src/subParsers/unescapeSpecialChars.js @@ -1,7 +1,3 @@ -/** - * Created by Estevao on 12-01-2015. - */ - /** * Swap back in all the special characters we've hidden. */ diff --git a/test/node/Container/testMakeHtml.js b/test/node/Container/testMakeHtml.js index c12e6a17..cd74bfe4 100644 --- a/test/node/Container/testMakeHtml.js +++ b/test/node/Container/testMakeHtml.js @@ -8,7 +8,15 @@ require('source-map-support').install(); require('chai').should(); - var fs = require('fs'), showdown = require('../../../dist/showdown.js'), converter = new showdown.Converter(), cases = fs.readdirSync('test/cases/').filter(filter()).map(map('test/cases/')), issues = fs.readdirSync('test/issues/').filter(filter()).map(map('test/issues/')); + var fs = require('fs'), + showdown = require('../../../dist/showdown.js'), + converter = new showdown.Converter(), + cases = fs.readdirSync('test/cases/') + .filter(filter()) + .map(map('test/cases/')), + issues = fs.readdirSync('test/issues/') + .filter(filter()) + .map(map('test/issues/')); //Tests describe('Converter.makeHtml() simple testcases', function () { @@ -23,7 +31,6 @@ } }); - function filter() { return function (file) { var ext = file.slice(-3); @@ -33,9 +40,11 @@ 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'); + 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, From 18ba4e756f542c04a062d01feb014db1e5eeb6cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Mon, 19 Jan 2015 15:42:20 +0000 Subject: [PATCH 20/34] fix(helpers): fix wrong function call 'escapeCharacters' due to old strayed code --- dist/showdown.js | 244 ++++++++++----------------------------- dist/showdown.js.map | 2 +- dist/showdown.min.js | 2 +- dist/showdown.min.js.map | 2 +- src/helpers.js | 12 +- src/subParsers/images.js | 2 +- 6 files changed, 74 insertions(+), 190 deletions(-) diff --git a/dist/showdown.js b/dist/showdown.js index 1c23ba77..12401e63 100644 --- a/dist/showdown.js +++ b/dist/showdown.js @@ -159,15 +159,29 @@ showdown.Converter = function (converterOptions) { }; /** - * Created by Estevao on 11-01-2015. + * showdownjs helper functions */ -function isString(a) { +if (!showdown.hasOwnProperty('helper')) { + showdown.helper = {}; +} + +/** + * Check if var is string + * @param {string} a + * @returns {boolean} + */ +showdown.helper.isString = function isString(a) { 'use strict'; return (typeof a === 'string' || a instanceof String); -} +}; -function forEach(obj, callback) { +/** + * ForEach helper function + * @param {*} obj + * @param {function} callback + */ +showdown.helper.forEach = function forEach(obj, callback) { 'use strict'; if (typeof obj.forEach === 'function') { obj.forEach(callback); @@ -177,64 +191,17 @@ function forEach(obj, callback) { callback(obj[i], i, obj); } } -} - -function isArray(a) { - 'use strict'; - return a.constructor === Array; -} - -function isUndefined(value) { - 'use strict'; - return typeof value === 'undefined'; -} - -var escapeCharactersCallback = function (wholeMatch, m1) { - 'use strict'; - var charCodeToEscape = m1.charCodeAt(0); - return '~E' + charCodeToEscape + 'E'; -}; - -var escapeCharacters = function (text, charsToEscape, afterBackslash) { - 'use strict'; - // First we have to escape the escape characters so that - // we can build a character class out of them - var regexString = '([' + charsToEscape.replace(/([\[\]\\])/g, '\\$1') + '])'; - - if (afterBackslash) { - regexString = '\\\\' + regexString; - } - - var regex = new RegExp(regexString, 'g'); - text = text.replace(regex, escapeCharactersCallback); - - return text; }; -if (!showdown.hasOwnProperty('helper')) { - showdown.helper = {}; -} - -/** - * isString helper function - * @param a - * @returns {boolean} - */ -showdown.helper.isString = isString; - -/** - * ForEach helper function - * @param {*} obj - * @param callback - */ -showdown.helper.forEach = forEach; - /** * isArray helper function * @param {*} a * @returns {boolean} */ -showdown.helper.isArray = isArray; +showdown.helper.isArray = function isArray(a) { + 'use strict'; + return a.constructor === Array; +}; /** * Check if value is undefined @@ -243,7 +210,16 @@ showdown.helper.isArray = isArray; * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. */ -showdown.helper.isUndefined = isUndefined; +showdown.helper.isUndefined = function isUndefined(value) { + 'use strict'; + return typeof value === 'undefined'; +}; + +function escapeCharactersCallback(wholeMatch, m1) { + 'use strict'; + var charCodeToEscape = m1.charCodeAt(0); + return '~E' + charCodeToEscape + 'E'; +} /** * Callback used to escape characters when passing through String.replace @@ -261,11 +237,21 @@ showdown.helper.escapeCharactersCallback = escapeCharactersCallback; * @param {boolean} afterBackslash * @returns {XML|string|void|*} */ -showdown.helper.escapeCharacters = escapeCharacters; +showdown.helper.escapeCharacters = function escapeCharacters(text, charsToEscape, afterBackslash) { + 'use strict'; + // First we have to escape the escape characters so that + // we can build a character class out of them + var regexString = '([' + charsToEscape.replace(/([\[\]\\])/g, '\\$1') + '])'; -/** - * Created by Estevao on 11-01-2015. - */ + if (afterBackslash) { + regexString = '\\\\' + regexString; + } + + var regex = new RegExp(regexString, 'g'); + text = text.replace(regex, escapeCharactersCallback); + + return text; +}; /** * Turn Markdown link shortcuts into XHTML tags. @@ -305,12 +291,12 @@ showdown.subParser('anchors', function (text, config, globals) { } } - url = showdown.helper.escapeCharacters(url, '*_'); + url = showdown.helper.escapeCharacters(url, '*_', false); var result = '` blocks. */ @@ -561,10 +531,6 @@ showdown.subParser('codeBlocks', function (text, options, globals) { return text; }); -/** - * Created by Estevao on 11-01-2015. - */ - /** * * * Backtick quotes are used for spans. @@ -618,10 +584,6 @@ showdown.subParser('codeSpans', function (text) { }); -/** - * Created by Estevao on 11-01-2015. - */ - /** * Convert all tabs to spaces */ @@ -655,10 +617,6 @@ showdown.subParser('detab', function (text) { }); -/** - * Created by Estevao on 11-01-2015. - */ - /** * Smart processing for ampersands and angle brackets that need to be encoded. */ @@ -674,10 +632,6 @@ showdown.subParser('encodeAmpsAndAngles', function (text) { return text; }); -/** - * Created by Estevao on 11-01-2015. - */ - /** * Returns the string, with after processing the following backslash escape sequences. * @@ -696,10 +650,6 @@ showdown.subParser('encodeBackslashEscapes', function (text) { return text; }); -/** - * Created by Estevao on 11-01-2015. - */ - /** * Encode/escape certain characters inside Markdown code runs. * The point is that in code, these characters are literals, @@ -729,10 +679,6 @@ showdown.subParser('encodeCode', function (text) { return text; }); -/** - * Created by Estevao on 12-01-2015. - */ - /** * Input: an email address, e.g. "foo@example.com" * @@ -786,10 +732,6 @@ showdown.subParser('encodeEmailAddress', function (addr) { return addr; }); -/** - * Created by Estevao on 11-01-2015. - */ - /** * Within tags -- meaning between < and > -- encode [\ ` * _] so they * don't conflict with their use in Markdown for code, italics and strong. @@ -803,17 +745,13 @@ showdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text) { text = text.replace(regex, function (wholeMatch) { var tag = wholeMatch.replace(/(.)<\/?code>(?=.)/g, '$1`'); - tag = showdown.helper.escapeCharacters(tag, '\\`*_'); + tag = showdown.helper.escapeCharacters(tag, '\\`*_', false); return tag; }); return text; }); -/** - * Created by Estevao on 11-01-2015. - */ - /** * Handle github codeblocks prior to running HashHTML so that * HTML contained within the codeblock gets escaped properly @@ -855,20 +793,12 @@ showdown.subParser('githubCodeBlocks', function (text, options, globals) { }); -/** - * Created by Estevao on 11-01-2015. - */ - showdown.subParser('hashBlock', function (text, options, globals) { 'use strict'; text = text.replace(/(^\n+|\n+$)/g, ''); return '\n\n~K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\n\n'; }); -/** - * Created by Estevao on 11-01-2015. - */ - showdown.subParser('hashElement', function (text, options, globals) { 'use strict'; @@ -889,10 +819,6 @@ showdown.subParser('hashElement', function (text, options, globals) { }; }); -/** - * Created by Estevao on 11-01-2015. - */ - showdown.subParser('hashHTMLBlocks', function (text, options, globals) { 'use strict'; @@ -1027,10 +953,6 @@ showdown.subParser('hashHTMLBlocks', function (text, options, globals) { }); -/** - * Created by Estevao on 11-01-2015. - */ - showdown.subParser('headers', function (text, options, globals) { 'use strict'; @@ -1105,10 +1027,6 @@ showdown.subParser('headers', function (text, options, globals) { return text; }); -/** - * Created by Estevao on 11-01-2015. - */ - /** * Turn Markdown image shortcuts into tags. */ @@ -1147,7 +1065,7 @@ showdown.subParser('images', function (text, options, globals) { } altText = altText.replace(/"/g, '"'); - url = showdown.helper.escapeCharacters(url, '*_'); + url = showdown.helper.escapeCharacters(url, '*_', false); var result = '' + altText + ' must go first: @@ -1226,10 +1140,6 @@ showdown.subParser('italicsAndBold', function (text) { return text; }); -/** - * Created by Estevao on 12-01-2015. - */ - /** * Form HTML ordered (numbered) and unordered (bulleted) lists. */ @@ -1239,7 +1149,7 @@ showdown.subParser('lists', function (text, options, globals) { /** * Process the contents of a single ordered or unordered list, splitting it * into individual list items. - * @param listStr + * @param {string} listStr * @returns {string|*} */ var processListItems = function (listStr) { @@ -1375,10 +1285,6 @@ showdown.subParser('lists', function (text, options, globals) { return text; }); -/** - * Created by Estevao on 12-01-2015. - */ - /** * Remove one level of line-leading tabs or spaces */ @@ -1395,10 +1301,6 @@ showdown.subParser('outdent', function (text) { return text; }); -/** - * Created by Estevao on 12-01-2015. - */ - /** * */ @@ -1409,10 +1311,10 @@ showdown.subParser('paragraphs', function (text, options, globals) { text = text.replace(/^\n+/g, ''); text = text.replace(/\n+$/g, ''); - var grafs = text.split(/\n{2,}/g), grafsOut = []; + var grafs = text.split(/\n{2,}/g), + grafsOut = [], + end = grafs.length; // Wrap

    tags - /** Wrap

    tags. */ - var end = grafs.length; for (var i = 0; i < end; i++) { var str = grafs[i]; @@ -1441,10 +1343,6 @@ showdown.subParser('paragraphs', function (text, options, globals) { return grafsOut.join('\n\n'); }); -/** - * Created by Estevao on 11-01-2015. - */ - /** * These are all the transformations that occur *within* block-level * tags like paragraphs, headers, and list items. @@ -1475,10 +1373,6 @@ showdown.subParser('spanGamut', function (text, options, globals) { }); -/** - * Created by Estevao on 11-01-2015. - */ - /** * Strip any lines consisting only of spaces and tabs. * This makes subsequent regexs easier to write, because we can @@ -1490,10 +1384,6 @@ showdown.subParser('stripBlankLines', function (text) { return text.replace(/^[ \t]+$/mg, ''); }); -/** - * Created by Estevao on 11-01-2015. - */ - /** * Strips link definitions from text, stores the URLs and titles in * hash references. @@ -1549,10 +1439,6 @@ showdown.subParser('stripLinkDefinitions', function (text, options, globals) { return text; }); -/** - * Created by Estevao on 12-01-2015. - */ - /** * Swap back in all the special characters we've hidden. */ @@ -1566,25 +1452,21 @@ showdown.subParser('unescapeSpecialChars', function (text) { return text; }); -/** - * Created by Estevao on 15-01-2015. - */ - var root = this; // CommonJS/nodeJS Loader if (typeof module !== 'undefined' && module.exports) { module.exports = showdown; -} + // AMD Loader -else if (typeof define === 'function' && define.amd) { +} else if (typeof define === 'function' && define.amd) { define('showdown', function () { 'use strict'; return showdown; }); -} + // Regular Browser loader -else { +} else { root.showdown = showdown; } }).call(this) diff --git a/dist/showdown.js.map b/dist/showdown.js.map index 690562e9..6977fb4f 100644 --- a/dist/showdown.js.map +++ b/dist/showdown.js.map @@ -1 +1 @@ -{"version":3,"sources":["..\\src\\showdown.js","..\\src\\helpers.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\\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":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false,\r\n prefixHeaderId: false\r\n };\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// Public API\r\n//\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// API\r\n//\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n//Public methods\r\nshowdown.setOption = function (key, value) {\r\n 'use strict';\r\n globalOptions[key] = value;\r\n return this;\r\n};\r\n\r\nshowdown.getOption = function (key) {\r\n 'use strict';\r\n return globalOptions[key];\r\n};\r\n\r\nshowdown.getOptions = function () {\r\n 'use strict';\r\n return globalOptions;\r\n};\r\n\r\n/**\r\n * Static Method\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n 'use strict';\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\n/**\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n 'use strict';\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n parserOrder = [\r\n 'detab',\r\n 'stripBlankLines',\r\n //runLanguageExtensions,\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n var makeHtml = function (text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0,\r\n hashLinkCounts: {}\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n //showdown.forEach(g_output_modifiers, function (x) {\r\n // text = _ExecuteExtension(x, text);\r\n //});\r\n\r\n return text;\r\n };\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nfunction isString(a) {\r\n 'use strict';\r\n return (typeof a === 'string' || a instanceof String);\r\n}\r\n\r\nfunction forEach(obj, callback) {\r\n 'use strict';\r\n if (typeof obj.forEach === 'function') {\r\n obj.forEach(callback);\r\n } else {\r\n var i, len = obj.length;\r\n for (i = 0; i < len; i++) {\r\n callback(obj[i], i, obj);\r\n }\r\n }\r\n}\r\n\r\nfunction isArray(a) {\r\n 'use strict';\r\n return a.constructor === Array;\r\n}\r\n\r\nfunction isUndefined(value) {\r\n 'use strict';\r\n return typeof value === 'undefined';\r\n}\r\n\r\nvar escapeCharactersCallback = function (wholeMatch, m1) {\r\n 'use strict';\r\n var charCodeToEscape = m1.charCodeAt(0);\r\n return '~E' + charCodeToEscape + 'E';\r\n};\r\n\r\nvar escapeCharacters = function (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\nif (!showdown.hasOwnProperty('helper')) {\r\n showdown.helper = {};\r\n}\r\n\r\n/**\r\n * isString helper function\r\n * @param a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isString = isString;\r\n\r\n/**\r\n * ForEach helper function\r\n * @param {*} obj\r\n * @param callback\r\n */\r\nshowdown.helper.forEach = forEach;\r\n\r\n/**\r\n * isArray helper function\r\n * @param {*} a\r\n * @returns {boolean}\r\n */\r\nshowdown.helper.isArray = isArray;\r\n\r\n/**\r\n * Check if value is undefined\r\n *\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 = isUndefined;\r\n\r\n/**\r\n * Callback used to escape characters when passing through String.replace\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 *\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 = escapeCharacters;\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\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, '*_');\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 (\t\t \t\t\t\t\t// wrap whole match in $1\r\n \\[\r\n ([^\\[\\]]+)\t\t\t\t// link text = $2; can't contain '[' or ']'\r\n \\]\r\n )()()()()()\t\t\t\t\t// 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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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 * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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 * Created by Estevao on 12-01-2015.\r\n */\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, nextChar = m2;\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 whitespace\r\n\r\n    codeblock = '
    ' + codeblock + '\\n
    ';\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 * Created by Estevao on 11-01-2015.\r\n */\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 * Created by Estevao on 11-01-2015.\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 * Created by Estevao on 11-01-2015.\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 * Created by Estevao on 11-01-2015.\r\n */\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 * Created by Estevao on 11-01-2015.\r\n */\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 * Created by Estevao on 12-01-2015.\r\n */\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 * Created by Estevao on 11-01-2015.\r\n */\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, '\\\\`*_');\r\n return tag;\r\n });\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.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)\\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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\nshowdown.subParser('headers', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var prefixHeader = options.prefixHeaderId;\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm, function (wholeMatch, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm, function (matchFound, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm, function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n var title, escapedId = m.replace(/[^\\w]/g, '').toLowerCase();\r\n\r\n if (globals.hashLinkCounts[escapedId]) {\r\n title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);\r\n } else {\r\n title = escapedId;\r\n globals.hashLinkCounts[escapedId] = 1;\r\n }\r\n\r\n // Prefix id to prevent causing inadvertent pre-existing style matches.\r\n if (prefixHeader === true) {\r\n prefixHeader = 'section';\r\n }\r\n\r\n if (showdown.helper.isString(prefixHeader)) {\r\n return prefixHeader + title;\r\n }\r\n return title;\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n } else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_');\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\n","/**\r\n * Created by Estevao on 12-01-2015.\r\n */\r\n\r\nshowdown.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 * Created by Estevao on 12-01-2015.\r\n */\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 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 * Created by Estevao on 12-01-2015.\r\n */\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 * Created by Estevao on 12-01-2015.\r\n */\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), grafsOut = [];\r\n\r\n /** Wrap

    tags. */\r\n var end = grafs.length;\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 * Created by Estevao on 11-01-2015.\r\n */\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 * Created by Estevao on 11-01-2015.\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","/**\r\n * Created by Estevao on 11-01-2015.\r\n */\r\n\r\n/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var regex = /^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm;\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(regex, function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * Created by Estevao on 12-01-2015.\r\n */\r\n\r\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","/**\r\n * Created by Estevao on 15-01-2015.\r\n */\r\n\r\nvar 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\nelse 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\nelse {\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\\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\\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":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false,\r\n prefixHeaderId: false\r\n };\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// Public API\r\n//\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// API\r\n//\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n//Public methods\r\nshowdown.setOption = function (key, value) {\r\n 'use strict';\r\n globalOptions[key] = value;\r\n return this;\r\n};\r\n\r\nshowdown.getOption = function (key) {\r\n 'use strict';\r\n return globalOptions[key];\r\n};\r\n\r\nshowdown.getOptions = function () {\r\n 'use strict';\r\n return globalOptions;\r\n};\r\n\r\n/**\r\n * Static Method\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n 'use strict';\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\n/**\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n 'use strict';\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n parserOrder = [\r\n 'detab',\r\n 'stripBlankLines',\r\n //runLanguageExtensions,\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n var makeHtml = function (text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0,\r\n hashLinkCounts: {}\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n //showdown.forEach(g_output_modifiers, function (x) {\r\n // text = _ExecuteExtension(x, text);\r\n //});\r\n\r\n return text;\r\n };\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\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 * @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 * @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 var i, len = obj.length;\r\n for (i = 0; i < len; 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 * @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 *\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\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 * @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 *\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 * 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, nextChar = m2;\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 whitespace\r\n\r\n    codeblock = '
    ' + codeblock + '\\n
    ';\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)\\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) {\r\n 'use strict';\r\n\r\n var prefixHeader = options.prefixHeaderId;\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm, function (wholeMatch, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm, function (matchFound, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm, function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n var title, escapedId = m.replace(/[^\\w]/g, '').toLowerCase();\r\n\r\n if (globals.hashLinkCounts[escapedId]) {\r\n title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);\r\n } else {\r\n title = escapedId;\r\n globals.hashLinkCounts[escapedId] = 1;\r\n }\r\n\r\n // Prefix id to prevent causing inadvertent pre-existing style matches.\r\n if (prefixHeader === true) {\r\n prefixHeader = 'section';\r\n }\r\n\r\n if (showdown.helper.isString(prefixHeader)) {\r\n return prefixHeader + title;\r\n }\r\n return title;\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n } else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_', false);\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\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 * 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","/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var regex = /^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm;\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(regex, function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * 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 32129b8c..88320d62 100644 --- a/dist/showdown.min.js +++ b/dist/showdown.min.js @@ -1,4 +1,4 @@ /*! showdown 19-01-2015 */ -(function(){function a(a){"use strict";return"string"==typeof a||a instanceof String}function b(a,b){"use strict";if("function"==typeof a.forEach)a.forEach(b);else{var c,d=a.length;for(c=0;d>c;c++)b(a[c],c,a)}}function c(a){"use strict";return a.constructor===Array}function d(a){"use strict";return"undefined"==typeof a}var e={},f={},g={omitExtraWLInCodeBlocks:!1,prefixHeaderId:!1};e.helper={},e.extensions={},e.setOption=function(a,b){"use strict";return g[a]=b,this},e.getOption=function(a){"use strict";return g[a]},e.getOptions=function(){"use strict";return g},e.subParser=function(a,b){"use strict";if(e.helper.isString(a)){if("undefined"==typeof b){if(f.hasOwnProperty(a))return f[a];throw Error("SubParser named "+a+" not registered!")}f[a]=b}},e.Converter=function(a){"use strict";a=a||{};var b=g,c=["detab","stripBlankLines","githubCodeBlocks","hashHTMLBlocks","stripLinkDefinitions","blockGamut","unescapeSpecialChars"];if("object"==typeof a)for(var d in a)a.hasOwnProperty(d)&&(b[d]=a[d]);var e=function(a){if(!a)return a;var d={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0,hashLinkCounts:{}};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n";for(var e=0;e-1))return a;m=""}else m=c.gUrls[l],e.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=e.helper.escapeCharacters(m,"*_");var o='"};return a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,d),a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d),a=a.replace(/(\[([^\[\]]+)\])()()()()()/g,d)}),e.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 c=e.subParser("unescapeSpecialChars")(b);return e.subParser("encodeEmailAddress")(c)})}),e.subParser("blockGamut",function(a,b,c){"use strict";a=e.subParser("headers")(a,b,c);var d=e.subParser("hashBlock")("
    ",b,c);return a=a.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,d),a=a.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,d),a=e.subParser("lists")(a,b,c),a=e.subParser("codeBlocks")(a,b,c),a=e.subParser("blockQuotes")(a,b,c),a=e.subParser("hashHTMLBlocks")(a,b,c),a=e.subParser("paragraphs")(a,b,c)}),e.subParser("blockQuotes",function(a,b,c){"use strict";return a=a.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(a,d){var f=d;return f=f.replace(/^[ \t]*>[ \t]?/gm,"~0"),f=f.replace(/~0/g,""),f=f.replace(/^[ \t]+$/gm,""),f=e.subParser("blockGamut")(f,b,c),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,"")}),e.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)})}),e.subParser("codeBlocks",function(a,b,c){"use strict";a+="~0";var d=/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g;return a=a.replace(d,function(a,d,f){var g=d,h=f;return g=e.subParser("outdent")(g),g=e.subParser("encodeCode")(g),g=e.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",e.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,"")}),e.subParser("codeSpans",function(a){"use strict";return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,d){var f=d;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=e.subParser("encodeCode")(f),b+""+f+""})}),e.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,"")}),e.subParser("encodeAmpsAndAngles",function(a){"use strict";return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),e.subParser("encodeBackslashEscapes",function(a){"use strict";return a=a.replace(/\\(\\)/g,e.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,e.helper.escapeCharactersCallback)}),e.subParser("encodeCode",function(a){"use strict";return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=e.helper.escapeCharacters(a,"*_{}[]\\",!1)}),e.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,'">')}),e.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=e.helper.escapeCharacters(b,"\\`*_")})}),e.subParser("githubCodeBlocks",function(a,b,c){"use strict";return a+="~0",a=a.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,function(a,d,f){var g=d,h=f,i="\n";return b.omitExtraWLInCodeBlocks&&(i=""),h=e.subParser("encodeCode")(h),h=e.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",e.subParser("hashBlock")(h,b,c)}),a=a.replace(/~0/,"")}),e.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"}),e.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"}}),e.subParser("hashHTMLBlocks",function(a,b,c){"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,e.subParser("hashElement")(a,b,c)),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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,e.subParser("hashElement")(a,b,c)),a=a.replace(/\n\n/g,"\n")}),e.subParser("headers",function(a,b,c){"use strict";function d(a){var b,d=a.replace(/[^\w]/g,"").toLowerCase();return c.hashLinkCounts[d]?b=d+"-"+c.hashLinkCounts[d]++:(b=d,c.hashLinkCounts[d]=1),f===!0&&(f="section"),e.helper.isString(f)?f+b:b}var f=b.prefixHeaderId;return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){var g=e.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return e.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){var g=e.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return e.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=e.subParser("spanGamut")(g,b,c),i="'+h+"";return e.subParser("hashBlock")(i,b,c)})}),e.subParser("images",function(a,b,c){"use strict";var d=function(a,b,d,f,g,h,j,k){a=b;var l=d,m=f.toLowerCase(),n=g,o=k,p=c.gUrls,q=c.gTitles;if(o||(o=""),""===n||null===n){if((""===m||null===m)&&(m=l.toLowerCase().replace(/ ?\n/g," ")),n="#"+m,"undefined"==typeof p[m])return a;n=p[m],"undefined"!=typeof q[m]&&(o=q[m])}l=l.replace(/"/g,"""),n=e.helper.escapeCharacters(n,"*_");var r=''+l+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,d)}),e.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")}),e.subParser("lists",function(a,b,c){"use strict";var d=function(a){return c.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,d,f,g,h){var i=e.subParser("outdent")(h,b,c);return d||i.search(/\n{2,}/)>-1?i=e.subParser("blockGamut")(i,b,c):(i=e.subParser("lists")(i,b,c),i=i.replace(/\n$/,""),i=e.subParser("spanGamut")(i,b,c)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),c.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.gListLevel?a=a.replace(f,function(a,b,c){var e=b,f=c.search(/[*+-]/g)>-1?"ul":"ol";e=e.replace(/\n{2,}/g,"\n\n\n");var g=d(e);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,e){var f=c.replace(/\n{2,}/g,"\n\n\n"),g=e.search(/[*+-]/g)>-1?"ul":"ol",h=d(f);return b+"<"+g+">\n"+h+"\n"})),a=a.replace(/~0/,"")}),e.subParser("outdent",function(a){"use strict";return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),e.subParser("paragraphs",function(a,b,c){"use strict";a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,"");for(var d=a.split(/\n{2,}/g),f=[],g=d.length,h=0;g>h;h++){var i=d[h];i.search(/~K(\d+)K/g)>=0?f.push(i):i.search(/\S/)>=0&&(i=e.subParser("spanGamut")(i,b,c),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=c.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),e.subParser("spanGamut",function(a,b,c){"use strict";return a=e.subParser("codeSpans")(a,b,c),a=e.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=e.subParser("encodeBackslashEscapes")(a,b,c),a=e.subParser("images")(a,b,c),a=e.subParser("anchors")(a,b,c),a=e.subParser("autoLinks")(a,b,c),a=e.subParser("encodeAmpsAndAngles")(a,b,c),a=e.subParser("italicsAndBold")(a,b,c),a=a.replace(/ +\n/g,"
    \n")}),e.subParser("stripBlankLines",function(a){"use strict";return a.replace(/^[ \t]+$/gm,"")}),e.subParser("stripLinkDefinitions",function(a,b,c){"use strict";var d=/^[ ]{0,3}\[(.+)]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm;return a+="~0",a=a.replace(d,function(a,b,d,f,g){return b=b.toLowerCase(),c.gUrls[b]=e.subParser("encodeAmpsAndAngles")(d),f?f+g:(g&&(c.gTitles[b]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),e.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 j=this;"undefined"!=typeof module&&module.exports?module.exports=e:"function"==typeof define&&define.amd?define("showdown",function(){"use strict";return e}):j.showdown=e}).call(this); +(function(){function a(a,b){"use strict";var c=b.charCodeAt(0);return"~E"+c+"E"}var b={},c={},d={omitExtraWLInCodeBlocks:!1,prefixHeaderId:!1};b.helper={},b.extensions={},b.setOption=function(a,b){"use strict";return d[a]=b,this},b.getOption=function(a){"use strict";return d[a]},b.getOptions=function(){"use strict";return d},b.subParser=function(a,d){"use strict";if(b.helper.isString(a)){if("undefined"==typeof d){if(c.hasOwnProperty(a))return c[a];throw Error("SubParser named "+a+" not registered!")}c[a]=d}},b.Converter=function(a){"use strict";a=a||{};var b=d,e=["detab","stripBlankLines","githubCodeBlocks","hashHTMLBlocks","stripLinkDefinitions","blockGamut","unescapeSpecialChars"];if("object"==typeof a)for(var f in a)a.hasOwnProperty(f)&&(b[f]=a[f]);var g=function(a){if(!a)return a;var d={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0,hashLinkCounts:{}};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n";for(var f=0;fc;c++)b(a[c],c,a)}},b.helper.isArray=function(a){"use strict";return a.constructor===Array},b.helper.isUndefined=function(a){"use strict";return"undefined"==typeof a},b.helper.escapeCharactersCallback=a,b.helper.escapeCharacters=function(b,c,d){"use strict";var e="(["+c.replace(/([\[\]\\])/g,"\\$1")+"])";d&&(e="\\\\"+e);var f=new RegExp(e,"g");return b=b.replace(f,a)},b.subParser("anchors",function(a,c,d){"use strict";var e=function(a,c,e,f,g,h,i,j){b.helper.isUndefined(j)&&(j=""),a=c;var k=e,l=f.toLowerCase(),m=g,n=j;if(!m)if(l||(l=k.toLowerCase().replace(/ ?\n/g," ")),m="#"+l,b.helper.isUndefined(d.gUrls[l])){if(!(a.search(/\(\s*\)$/m)>-1))return a;m=""}else m=d.gUrls[l],b.helper.isUndefined(d.gTitles[l])||(n=d.gTitles[l]);m=b.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)}),b.subParser("autoLinks",function(a){"use strict";a=a.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'$1');var c=/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi;return a=a.replace(c,function(a,c){var d=b.subParser("unescapeSpecialChars")(c);return b.subParser("encodeEmailAddress")(d)})}),b.subParser("blockGamut",function(a,c,d){"use strict";a=b.subParser("headers")(a,c,d);var e=b.subParser("hashBlock")("
    ",c,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=b.subParser("lists")(a,c,d),a=b.subParser("codeBlocks")(a,c,d),a=b.subParser("blockQuotes")(a,c,d),a=b.subParser("hashHTMLBlocks")(a,c,d),a=b.subParser("paragraphs")(a,c,d)}),b.subParser("blockQuotes",function(a,c,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=b.subParser("blockGamut")(f,c,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,"")}),b.subParser("hashBlock")("
    \n"+f+"\n
    ",c,d)})}),b.subParser("codeBlocks",function(a,c,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;return g=b.subParser("outdent")(g),g=b.subParser("encodeCode")(g),g=b.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",b.subParser("hashBlock")(g,c,d)+h}),a=a.replace(/~0/,"")}),b.subParser("codeSpans",function(a){"use strict";return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,c,d,e){var f=e;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=b.subParser("encodeCode")(f),c+""+f+""})}),b.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,"")}),b.subParser("encodeAmpsAndAngles",function(a){"use strict";return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),b.subParser("encodeBackslashEscapes",function(a){"use strict";return a=a.replace(/\\(\\)/g,b.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,b.helper.escapeCharactersCallback)}),b.subParser("encodeCode",function(a){"use strict";return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=b.helper.escapeCharacters(a,"*_{}[]\\",!1)}),b.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,'">')}),b.subParser("escapeSpecialCharsWithinTagAttributes",function(a){"use strict";var c=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;return a=a.replace(c,function(a){var c=a.replace(/(.)<\/?code>(?=.)/g,"$1`");return c=b.helper.escapeCharacters(c,"\\`*_",!1)})}),b.subParser("githubCodeBlocks",function(a,c,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 c.omitExtraWLInCodeBlocks&&(i=""),h=b.subParser("encodeCode")(h),h=b.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",b.subParser("hashBlock")(h,c,d)}),a=a.replace(/~0/,"")}),b.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"}),b.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"}}),b.subParser("hashHTMLBlocks",function(a,c,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,b.subParser("hashElement")(a,c,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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,b.subParser("hashElement")(a,c,d)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,b.subParser("hashElement")(a,c,d)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,b.subParser("hashElement")(a,c,d)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,b.subParser("hashElement")(a,c,d)),a=a.replace(/\n\n/g,"\n")}),b.subParser("headers",function(a,c,d){"use strict";function e(a){var c,e=a.replace(/[^\w]/g,"").toLowerCase();return d.hashLinkCounts[e]?c=e+"-"+d.hashLinkCounts[e]++:(c=e,d.hashLinkCounts[e]=1),f===!0&&(f="section"),b.helper.isString(f)?f+c:c}var f=c.prefixHeaderId;return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){var g=b.subParser("spanGamut")(f,c,d),h='

    '+g+"

    ";return b.subParser("hashBlock")(h,c,d)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){var g=b.subParser("spanGamut")(f,c,d),h='

    '+g+"

    ";return b.subParser("hashBlock")(h,c,d)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=b.subParser("spanGamut")(g,c,d),i="'+h+"";return b.subParser("hashBlock")(i,c,d)})}),b.subParser("images",function(a,c,d){"use strict";var e=function(a,c,e,f,g,h,i,j){a=c;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=b.helper.escapeCharacters(m,"*_",!1);var q=''+k+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,e)}),b.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")}),b.subParser("lists",function(a,c,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=b.subParser("outdent")(h,c,d);return e||i.search(/\n{2,}/)>-1?i=b.subParser("blockGamut")(i,c,d):(i=b.subParser("lists")(i,c,d),i=i.replace(/\n$/,""),i=b.subParser("spanGamut")(i,c,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/,"")}),b.subParser("outdent",function(a){"use strict";return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),b.subParser("paragraphs",function(a,c,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=b.subParser("spanGamut")(i,c,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")}),b.subParser("spanGamut",function(a,c,d){"use strict";return a=b.subParser("codeSpans")(a,c,d),a=b.subParser("escapeSpecialCharsWithinTagAttributes")(a,c,d),a=b.subParser("encodeBackslashEscapes")(a,c,d),a=b.subParser("images")(a,c,d),a=b.subParser("anchors")(a,c,d),a=b.subParser("autoLinks")(a,c,d),a=b.subParser("encodeAmpsAndAngles")(a,c,d),a=b.subParser("italicsAndBold")(a,c,d),a=a.replace(/ +\n/g,"
    \n")}),b.subParser("stripBlankLines",function(a){"use strict";return a.replace(/^[ \t]+$/gm,"")}),b.subParser("stripLinkDefinitions",function(a,c,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,c,e,f,g){return c=c.toLowerCase(),d.gUrls[c]=b.subParser("encodeAmpsAndAngles")(e),f?f+g:(g&&(d.gTitles[c]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),b.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 e=this;"undefined"!=typeof module&&module.exports?module.exports=b:"function"==typeof define&&define.amd?define("showdown",function(){"use strict";return b}):e.showdown=b}).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 bb085ef6..eec9aeb4 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":["isString","a","String","forEach","obj","callback","i","len","length","isArray","constructor","Array","isUndefined","value","showdown","parsers","globalOptions","omitExtraWLInCodeBlocks","prefixHeaderId","helper","extensions","setOption","key","this","getOption","getOptions","subParser","name","func","hasOwnProperty","Error","Converter","converterOptions","options","parserOrder","opt","makeHtml","text","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","hashLinkCounts","replace","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","escapeCharacters","charsToEscape","afterBackslash","regexString","regex","RegExp","config","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","toLowerCase","url","title","search","result","pattern","unescapedStr","bq","pre","codeblock","nextChar","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","language","end","push","blockText","headerId","m","escapedId","prefixHeader","spanGamut","hashBlock","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","split","grafsOut","str","$1","join","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":["escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","showdown","parsers","globalOptions","omitExtraWLInCodeBlocks","prefixHeaderId","helper","extensions","setOption","key","value","this","getOption","getOptions","subParser","name","func","isString","hasOwnProperty","Error","Converter","converterOptions","options","parserOrder","opt","makeHtml","text","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","hashLinkCounts","replace","i","length","a","String","forEach","obj","callback","len","isArray","constructor","Array","isUndefined","escapeCharacters","charsToEscape","afterBackslash","regexString","regex","RegExp","config","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","toLowerCase","url","title","search","result","pattern","unescapedStr","bq","pre","codeblock","nextChar","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","language","end","push","blockText","headerId","m","escapedId","prefixHeader","spanGamut","hashBlock","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","split","grafsOut","str","$1","join","charCodeToReplace","parseInt","fromCharCode","root","module","exports","define","amd","call"],"mappings":"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"} \ No newline at end of file diff --git a/src/helpers.js b/src/helpers.js index 1e82b870..fd9a3ae0 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -55,17 +55,19 @@ showdown.helper.isUndefined = function isUndefined(value) { return typeof value === 'undefined'; }; +function escapeCharactersCallback(wholeMatch, m1) { + 'use strict'; + var charCodeToEscape = m1.charCodeAt(0); + return '~E' + charCodeToEscape + 'E'; +} + /** * Callback used to escape characters when passing through String.replace * @param {string} wholeMatch * @param {string} m1 * @returns {string} */ -showdown.helper.escapeCharactersCallback = function escapeCharactersCallback(wholeMatch, m1) { - 'use strict'; - var charCodeToEscape = m1.charCodeAt(0); - return '~E' + charCodeToEscape + 'E'; -}; +showdown.helper.escapeCharactersCallback = escapeCharactersCallback; /** * Escape characters in a string diff --git a/src/subParsers/images.js b/src/subParsers/images.js index 8c3d811d..1a1d5cc1 100644 --- a/src/subParsers/images.js +++ b/src/subParsers/images.js @@ -44,7 +44,7 @@ showdown.subParser('images', function (text, options, globals) { //if (title != "") { title = title.replace(/"/g, '"'); - title = escapeCharacters(title, '*_'); + title = showdown.helper.escapeCharacters(title, '*_', false); result += ' title="' + title + '"'; //} From 0e99444bb1a2e3451cfbd9530c56beef3fd8e5e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Mon, 19 Jan 2015 15:43:47 +0000 Subject: [PATCH 21/34] feat(grunt-jscs): add grunt task jscs lint Now it's possible to enforce code style linting with jscs automatically when testing or building with grunt --- .jscs.json | 1 + Gruntfile.js | 131 ++++++++++++++++++++++++++++++--------------------- package.json | 1 + 3 files changed, 79 insertions(+), 54 deletions(-) diff --git a/.jscs.json b/.jscs.json index 9d0b1cf5..f3d0acbe 100644 --- a/.jscs.json +++ b/.jscs.json @@ -1,4 +1,5 @@ { + "validateIndentation": 2, "requireCurlyBraces": [ "if", "else", diff --git a/Gruntfile.js b/Gruntfile.js index 9de8c274..850f3869 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -4,62 +4,85 @@ module.exports = function (grunt) { - // Project configuration. - grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - concat: { - options: { - sourceMap: true, - banner: ";/*! <%= pkg.name %> <%= grunt.template.today('dd-mm-yyyy') %> */\n(function(){\n", - footer: "}).call(this)" - }, - dist: { - src: ['src/showdown.js', 'src/helpers.js', 'src/subParsers/*.js', 'src/loader.js'], - dest: 'dist/<%= pkg.name %>.js' - } - }, - uglify: { - options: { - sourceMap: true, - banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n' - }, - dist: { - files: { - 'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>'] - } - } - }, - jshint: { - files: ['Gruntfile.js', 'src/**/*.js'] - }, - simplemocha: { - node: { - src: 'test/node/**/*.js', - options: { - globals: ['should'], - timeout: 3000, - ignoreLeaks: false, - reporter: 'spec' - } - }, - browser: { - src: 'test/browser/**/*.js', - options: { - reporter: 'spec' - } - } + // Project configuration. + var config = { + pkg: grunt.file.readJSON('package.json'), + concat: { + options: { + sourceMap: true, + banner: ';/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n(function(){\n', + footer: '}).call(this)' + }, + dist: { + src: [ + 'src/showdown.js', + 'src/helpers.js', + 'src/subParsers/*.js', + 'src/loader.js' + ], + dest: 'dist/<%= pkg.name %>.js' + } + }, + uglify: { + options: { + sourceMap: true, + banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n' + }, + dist: { + files: { + 'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>'] } - }); + } + }, + jshint: { + files: [ + 'Gruntfile.js', + 'src/**/*.js', + 'test/**/*.js' + ] + }, + jscs: { + options: { + config: '.jscs.json', + files: [ + 'Gruntfile.js', + 'src/**/*.js', + 'test/**/*.js' + ] + } + }, + simplemocha: { + node: { + src: 'test/node/**/*.js', + options: { + globals: ['should'], + timeout: 3000, + ignoreLeaks: false, + reporter: 'spec' + } + }, + browser: { + src: 'test/browser/**/*.js', + options: { + reporter: 'spec' + } + } + } + }; + + grunt.initConfig(config); - grunt.loadNpmTasks('grunt-contrib-concat'); - grunt.loadNpmTasks('grunt-contrib-uglify'); - grunt.loadNpmTasks('grunt-contrib-jshint'); - grunt.loadNpmTasks('grunt-simple-mocha'); + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-simple-mocha'); + grunt.loadNpmTasks('grunt-jscs'); - grunt.registerTask('test', ['jshint', 'concat', 'simplemocha']); - grunt.registerTask('test-without-building', ['simplemocha']); - grunt.registerTask('build', ['jshint', 'concat', 'test', 'uglify']); + grunt.registerTask('lint', ['jshint', 'jscs']); + grunt.registerTask('test', ['lint', 'concat', 'simplemocha']); + grunt.registerTask('test-without-building', ['simplemocha']); + grunt.registerTask('build', ['lint', 'test', 'uglify']); - // Default task(s). - grunt.registerTask('default', []); + // Default task(s). + grunt.registerTask('default', []); }; diff --git a/package.json b/package.json index 70d9e577..eacf65b1 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "grunt-contrib-concat": "^0.5.0", "grunt-contrib-jshint": "^0.10.0", "grunt-contrib-uglify": "^0.6.0", + "grunt-jscs": "^1.2.0", "grunt-simple-mocha": "^0.4.0", "jscs": "^1.10.0", "mocha": "*", From c528f4a4276763d4d1f0dfa6b48141d63d5abc42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Mon, 19 Jan 2015 16:27:28 +0000 Subject: [PATCH 22/34] chore(changelog): add support to automatically create changelogs --- Gruntfile.js | 4 ++++ package.json | 1 + 2 files changed, 5 insertions(+) diff --git a/Gruntfile.js b/Gruntfile.js index 850f3869..14c2f607 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -51,6 +51,9 @@ module.exports = function (grunt) { ] } }, + changelog: { + options: {} + }, simplemocha: { node: { src: 'test/node/**/*.js', @@ -77,6 +80,7 @@ module.exports = function (grunt) { grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-simple-mocha'); grunt.loadNpmTasks('grunt-jscs'); + grunt.loadNpmTasks('grunt-conventional-changelog'); grunt.registerTask('lint', ['jshint', 'jscs']); grunt.registerTask('test', ['lint', 'concat', 'simplemocha']); diff --git a/package.json b/package.json index eacf65b1..852f4db4 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "grunt-contrib-concat": "^0.5.0", "grunt-contrib-jshint": "^0.10.0", "grunt-contrib-uglify": "^0.6.0", + "grunt-conventional-changelog": "^1.1.0", "grunt-jscs": "^1.2.0", "grunt-simple-mocha": "^0.4.0", "jscs": "^1.10.0", From 8ee87ead9fa19618d65534dafc3f0e76109ad84d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Mon, 19 Jan 2015 16:28:14 +0000 Subject: [PATCH 23/34] doc(showdown.js): add source documentation for showdown's api --- src/showdown.js | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/showdown.js b/src/showdown.js index a051cd6f..beae0804 100644 --- a/src/showdown.js +++ b/src/showdown.js @@ -7,7 +7,7 @@ var showdown = {}, parsers = {}, globalOptions = { omitExtraWLInCodeBlocks: false, - prefixHeaderId: false + prefixHeaderId: false }; /////////////////////////////////////////////////////////////////////////// @@ -27,24 +27,42 @@ showdown.helper = {}; showdown.extensions = {}; //Public methods + +/** + * Set a global option + * + * @param {string} key + * @param {string} value + * @returns {showdown} + */ showdown.setOption = function (key, value) { 'use strict'; globalOptions[key] = value; return this; }; +/** + * Get a global option + * + * @param {string} key + * @returns {*} + */ showdown.getOption = function (key) { 'use strict'; return globalOptions[key]; }; +/** + * Get the global options + * @returns {{omitExtraWLInCodeBlocks: boolean, prefixHeaderId: boolean}} + */ showdown.getOptions = function () { 'use strict'; return globalOptions; }; /** - * Static Method + * Get or set a subParser * * subParser(name) - Get a registered subParser * subParser(name, func) - Register a subParser @@ -68,6 +86,7 @@ showdown.subParser = function (name, func) { }; /** + * Showdown Converter class * * @param {object} [converterOptions] * @returns {{makeHtml: Function}} @@ -98,7 +117,12 @@ showdown.Converter = function (converterOptions) { } } - var makeHtml = function (text) { + /** + * Converts a markdown string into HTML + * @param {string} text + * @returns {*} + */ + function makeHtml(text) { //check if text is not falsy if (!text) { @@ -149,7 +173,7 @@ showdown.Converter = function (converterOptions) { //}); return text; - }; + } return { makeHtml: makeHtml From 0fd10cb56a002900f5cf23b72fb91c5cccda7395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Sun, 1 Mar 2015 18:15:32 +0000 Subject: [PATCH 24/34] Added new extension registering method --- dist/showdown.js | 204 +++++++++++++++++++++++---- dist/showdown.js.map | 2 +- dist/showdown.min.js | 4 +- dist/showdown.min.js.map | 2 +- src/helpers.js | 21 ++- src/showdown.js | 121 +++++++++++++--- src/subParsers/languageExtensions.js | 11 ++ src/subParsers/outputModifiers.js | 11 ++ src/subParsers/runExtension.js | 13 ++ 9 files changed, 331 insertions(+), 58 deletions(-) create mode 100644 src/subParsers/languageExtensions.js create mode 100644 src/subParsers/outputModifiers.js create mode 100644 src/subParsers/runExtension.js diff --git a/dist/showdown.js b/dist/showdown.js index 12401e63..3d01e240 100644 --- a/dist/showdown.js +++ b/dist/showdown.js @@ -1,4 +1,4 @@ -;/*! showdown 19-01-2015 */ +;/*! showdown 01-03-2015 */ (function(){ /** * Created by Tivie on 06-01-2015. @@ -7,49 +7,61 @@ // Private properties var showdown = {}, parsers = {}, + extensions = {}, globalOptions = { omitExtraWLInCodeBlocks: false, prefixHeaderId: false }; -/////////////////////////////////////////////////////////////////////////// -// Public API -// /** * helper namespace * @type {{}} */ showdown.helper = {}; -/////////////////////////////////////////////////////////////////////////// -// API -// - // Public properties showdown.extensions = {}; -//Public methods +/** + * Set a global option + * @static + * @param {string} key + * @param {string} value + * @returns {showdown} + */ showdown.setOption = function (key, value) { 'use strict'; globalOptions[key] = value; return this; }; +/** + * Get a global option + * @static + * @param {string} key + * @returns {*} + */ showdown.getOption = function (key) { 'use strict'; return globalOptions[key]; }; +/** + * Get the global options + * @static + * @returns {{omitExtraWLInCodeBlocks: boolean, prefixHeaderId: boolean}} + */ showdown.getOptions = function () { 'use strict'; return globalOptions; }; /** - * Static Method + * Get or set a subParser * * subParser(name) - Get a registered subParser * subParser(name, func) - Register a subParser + * @static * @param {string} name * @param {function} [func] * @returns {*} @@ -69,7 +81,49 @@ showdown.subParser = function (name, func) { } }; +showdown.extension = function (name, ext) { + 'use strict'; + + if (!showdown.helper.isString(name)) { + throw Error('Extension \'name\' must be a string'); + } + + name = showdown.helper.stdExtName(name); + + if (showdown.helper.isUndefined(ext)) { + return getExtension(); + } else { + return setExtension(); + } +}; + +function getExtension(name) { + 'use strict'; + + if (!extensions.hasOwnProperty(name)) { + throw Error('Extension named ' + name + ' is not registered!'); + } + return extensions[name]; +} + +function setExtension(name, ext) { + 'use strict'; + + if (typeof ext !== 'object') { + throw Error('A Showdown Extension must be an object, ' + typeof ext + ' given'); + } + + if (!showdown.helper.isString(ext.type)) { + throw Error('When registering a showdown extension, "type" must be a string, ' + typeof ext.type + ' given'); + } + + ext.type = ext.type.toLowerCase(); + + extensions[name] = ext; +} + /** + * Showdown Converter class * * @param {object} [converterOptions] * @returns {{makeHtml: Function}} @@ -80,10 +134,9 @@ showdown.Converter = function (converterOptions) { converterOptions = converterOptions || {}; var options = globalOptions, + langExtensions = [], + outputModifiers = [], parserOrder = [ - 'detab', - 'stripBlankLines', - //runLanguageExtensions, 'githubCodeBlocks', 'hashHTMLBlocks', 'stripLinkDefinitions', @@ -100,7 +153,44 @@ showdown.Converter = function (converterOptions) { } } - var makeHtml = function (text) { + // Parse options + if (options.extensions) { + + // Iterate over each plugin + showdown.helper.forEach(options.extensions, function (plugin) { + + // Assume it's a bundled plugin if a string is given + if (typeof plugin === 'string') { + plugin = extensions[showdown.helper.stdExtName(plugin)]; + } + + if (typeof plugin === 'function') { + // Iterate over each extension within that plugin + showdown.helper.forEach(plugin(self), function (ext) { + // Sort extensions by type + if (ext.type) { + if (ext.type === 'language' || ext.type === 'lang') { + langExtensions.push(ext); + } else if (ext.type === 'output' || ext.type === 'html') { + outputModifiers.push(ext); + } + } else { + // Assume language extension + outputModifiers.push(ext); + } + }); + } else { + throw 'Extension "' + plugin + '" could not be loaded. It was either not found or is not a valid extension.'; + } + }); + } + + /** + * Converts a markdown string into HTML + * @param {string} text + * @returns {*} + */ + function makeHtml(text) { //check if text is not falsy if (!text) { @@ -108,11 +198,13 @@ showdown.Converter = function (converterOptions) { } var globals = { - gHtmlBlocks: [], - gUrls: {}, - gTitles: {}, - gListLevel: 0, - hashLinkCounts: {} + gHtmlBlocks: [], + gUrls: {}, + gTitles: {}, + gListLevel: 0, + hashLinkCounts: {}, + langExtensions: langExtensions, + outputModifiers: outputModifiers }; // attacklab: Replace ~ with ~T @@ -133,6 +225,15 @@ showdown.Converter = function (converterOptions) { // Make sure text begins and ends with a couple of newlines: text = '\n\n' + text + '\n\n'; + // detab + text = parsers.detab(text, options, globals); + + // stripBlankLines + text = parsers.stripBlankLines(text, options, globals); + + //run languageExtensions + text = parsers.languageExtensions(text, options, globals); + // Run all registered parsers for (var i = 0; i < parserOrder.length; ++i) { var name = parserOrder[i]; @@ -146,12 +247,10 @@ showdown.Converter = function (converterOptions) { text = text.replace(/~T/g, '~'); // Run output modifiers - //showdown.forEach(g_output_modifiers, function (x) { - // text = _ExecuteExtension(x, text); - //}); + text = parsers.outputModifiers(text, options, globals); return text; - }; + } return { makeHtml: makeHtml @@ -168,6 +267,7 @@ if (!showdown.hasOwnProperty('helper')) { /** * Check if var is string + * @static * @param {string} a * @returns {boolean} */ @@ -178,6 +278,7 @@ showdown.helper.isString = function isString(a) { /** * ForEach helper function + * @static * @param {*} obj * @param {function} callback */ @@ -186,8 +287,7 @@ showdown.helper.forEach = function forEach(obj, callback) { if (typeof obj.forEach === 'function') { obj.forEach(callback); } else { - var i, len = obj.length; - for (i = 0; i < len; i++) { + for (var i = 0; i < obj.length; i++) { callback(obj[i], i, obj); } } @@ -195,6 +295,7 @@ showdown.helper.forEach = function forEach(obj, callback) { /** * isArray helper function + * @static * @param {*} a * @returns {boolean} */ @@ -205,7 +306,6 @@ showdown.helper.isArray = function isArray(a) { /** * Check if value is undefined - * * @static * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. @@ -215,6 +315,17 @@ showdown.helper.isUndefined = function isUndefined(value) { return typeof value === 'undefined'; }; +/** + * Standardidize extension name + * @static + * @param {string} s extension name + * @returns {string} + */ +showdown.helper.stdExtName = function (s) { + 'use strict'; + return s.replace(/[_-]||\s/g, '').toLowerCase(); +}; + function escapeCharactersCallback(wholeMatch, m1) { 'use strict'; var charCodeToEscape = m1.charCodeAt(0); @@ -223,6 +334,7 @@ function escapeCharactersCallback(wholeMatch, m1) { /** * Callback used to escape characters when passing through String.replace + * @static * @param {string} wholeMatch * @param {string} m1 * @returns {string} @@ -231,7 +343,7 @@ showdown.helper.escapeCharactersCallback = escapeCharactersCallback; /** * Escape characters in a string - * + * @static * @param {string} text * @param {string} charsToEscape * @param {boolean} afterBackslash @@ -1140,6 +1252,18 @@ showdown.subParser('italicsAndBold', function (text) { return text; }); +/** + * Run language extensions + */ +showdown.subParser('languageExtensions', function (text, config, globals) { + 'use strict'; + + showdown.helper.forEach(globals.langExtensions, function (ext) { + text = showdown.subParser('runExtension')(ext, text); + }); + return text; +}); + /** * Form HTML ordered (numbered) and unordered (bulleted) lists. */ @@ -1301,6 +1425,18 @@ showdown.subParser('outdent', function (text) { return text; }); +/** + * Run language extensions + */ +showdown.subParser('outputModifiers', function (text, config, globals) { + 'use strict'; + + showdown.helper.forEach(globals.outputModifiers, function (ext) { + text = showdown.subParser('runExtension')(ext, text); + }); + return text; +}); + /** * */ @@ -1343,6 +1479,20 @@ showdown.subParser('paragraphs', function (text, options, globals) { return grafsOut.join('\n\n'); }); +/** + * Run language extensions + */ +showdown.subParser('runExtension', function (ext, text) { + 'use strict'; + + if (ext.regex) { + var re = new RegExp(ext.regex, 'g'); + return text.replace(re, ext.replace); + } else if (ext.filter) { + return ext.filter(text); + } +}); + /** * These are all the transformations that occur *within* block-level * tags like paragraphs, headers, and list items. diff --git a/dist/showdown.js.map b/dist/showdown.js.map index 6977fb4f..41fbabe6 100644 --- a/dist/showdown.js.map +++ b/dist/showdown.js.map @@ -1 +1 @@ -{"version":3,"sources":["..\\src\\showdown.js","..\\src\\helpers.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\\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":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false,\r\n prefixHeaderId: false\r\n };\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// Public API\r\n//\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n///////////////////////////////////////////////////////////////////////////\r\n// API\r\n//\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n//Public methods\r\nshowdown.setOption = function (key, value) {\r\n 'use strict';\r\n globalOptions[key] = value;\r\n return this;\r\n};\r\n\r\nshowdown.getOption = function (key) {\r\n 'use strict';\r\n return globalOptions[key];\r\n};\r\n\r\nshowdown.getOptions = function () {\r\n 'use strict';\r\n return globalOptions;\r\n};\r\n\r\n/**\r\n * Static Method\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n 'use strict';\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\n/**\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n 'use strict';\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n parserOrder = [\r\n 'detab',\r\n 'stripBlankLines',\r\n //runLanguageExtensions,\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n var makeHtml = function (text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0,\r\n hashLinkCounts: {}\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n //showdown.forEach(g_output_modifiers, function (x) {\r\n // text = _ExecuteExtension(x, text);\r\n //});\r\n\r\n return text;\r\n };\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\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 * @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 * @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 var i, len = obj.length;\r\n for (i = 0; i < len; 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 * @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 *\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\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 * @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 *\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 * 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, nextChar = m2;\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 whitespace\r\n\r\n    codeblock = '
    ' + codeblock + '\\n
    ';\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)\\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) {\r\n 'use strict';\r\n\r\n var prefixHeader = options.prefixHeaderId;\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm, function (wholeMatch, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm, function (matchFound, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm, function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n var title, escapedId = m.replace(/[^\\w]/g, '').toLowerCase();\r\n\r\n if (globals.hashLinkCounts[escapedId]) {\r\n title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);\r\n } else {\r\n title = escapedId;\r\n globals.hashLinkCounts[escapedId] = 1;\r\n }\r\n\r\n // Prefix id to prevent causing inadvertent pre-existing style matches.\r\n if (prefixHeader === true) {\r\n prefixHeader = 'section';\r\n }\r\n\r\n if (showdown.helper.isString(prefixHeader)) {\r\n return prefixHeader + title;\r\n }\r\n return title;\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n } else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_', false);\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\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 * 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","/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var regex = /^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm;\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(regex, function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * 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\\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\\languageExtensions.js","..\\src\\subParsers\\lists.js","..\\src\\subParsers\\outdent.js","..\\src\\subParsers\\outputModifiers.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":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n extensions = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false,\r\n prefixHeaderId: false\r\n };\r\n\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n/**\r\n * Set a global option\r\n * @static\r\n * @param {string} key\r\n * @param {string} value\r\n * @returns {showdown}\r\n */\r\nshowdown.setOption = function (key, value) {\r\n 'use strict';\r\n globalOptions[key] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Get a global option\r\n * @static\r\n * @param {string} key\r\n * @returns {*}\r\n */\r\nshowdown.getOption = function (key) {\r\n 'use strict';\r\n return globalOptions[key];\r\n};\r\n\r\n/**\r\n * Get the global options\r\n * @static\r\n * @returns {{omitExtraWLInCodeBlocks: boolean, prefixHeaderId: boolean}}\r\n */\r\nshowdown.getOptions = function () {\r\n 'use strict';\r\n return globalOptions;\r\n};\r\n\r\n/**\r\n * Get or set a subParser\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @static\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n 'use strict';\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\nshowdown.extension = function (name, ext) {\r\n 'use strict';\r\n\r\n if (!showdown.helper.isString(name)) {\r\n throw Error('Extension \\'name\\' must be a string');\r\n }\r\n\r\n name = showdown.helper.stdExtName(name);\r\n\r\n if (showdown.helper.isUndefined(ext)) {\r\n return getExtension();\r\n } else {\r\n return setExtension();\r\n }\r\n};\r\n\r\nfunction getExtension(name) {\r\n 'use strict';\r\n\r\n if (!extensions.hasOwnProperty(name)) {\r\n throw Error('Extension named ' + name + ' is not registered!');\r\n }\r\n return extensions[name];\r\n}\r\n\r\nfunction setExtension(name, ext) {\r\n 'use strict';\r\n\r\n if (typeof ext !== 'object') {\r\n throw Error('A Showdown Extension must be an object, ' + typeof ext + ' given');\r\n }\r\n\r\n if (!showdown.helper.isString(ext.type)) {\r\n throw Error('When registering a showdown extension, \"type\" must be a string, ' + typeof ext.type + ' given');\r\n }\r\n\r\n ext.type = ext.type.toLowerCase();\r\n\r\n extensions[name] = ext;\r\n}\r\n\r\n/**\r\n * Showdown Converter class\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n 'use strict';\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n langExtensions = [],\r\n outputModifiers = [],\r\n parserOrder = [\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n // Parse options\r\n if (options.extensions) {\r\n\r\n // Iterate over each plugin\r\n showdown.helper.forEach(options.extensions, function (plugin) {\r\n\r\n // Assume it's a bundled plugin if a string is given\r\n if (typeof plugin === 'string') {\r\n plugin = extensions[showdown.helper.stdExtName(plugin)];\r\n }\r\n\r\n if (typeof plugin === 'function') {\r\n // Iterate over each extension within that plugin\r\n showdown.helper.forEach(plugin(self), function (ext) {\r\n // Sort extensions by type\r\n if (ext.type) {\r\n if (ext.type === 'language' || ext.type === 'lang') {\r\n langExtensions.push(ext);\r\n } else if (ext.type === 'output' || ext.type === 'html') {\r\n outputModifiers.push(ext);\r\n }\r\n } else {\r\n // Assume language extension\r\n outputModifiers.push(ext);\r\n }\r\n });\r\n } else {\r\n throw 'Extension \"' + plugin + '\" could not be loaded. It was either not found or is not a valid extension.';\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Converts a markdown string into HTML\r\n * @param {string} text\r\n * @returns {*}\r\n */\r\n function makeHtml(text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0,\r\n hashLinkCounts: {},\r\n langExtensions: langExtensions,\r\n outputModifiers: outputModifiers\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // detab\r\n text = parsers.detab(text, options, globals);\r\n\r\n // stripBlankLines\r\n text = parsers.stripBlankLines(text, options, globals);\r\n\r\n //run languageExtensions\r\n text = parsers.languageExtensions(text, options, globals);\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n text = parsers.outputModifiers(text, options, globals);\r\n\r\n return text;\r\n }\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\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 * 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, nextChar = m2;\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 whitespace\r\n\r\n    codeblock = '
    ' + codeblock + '\\n
    ';\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)\\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) {\r\n 'use strict';\r\n\r\n var prefixHeader = options.prefixHeaderId;\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm, function (wholeMatch, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm, function (matchFound, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm, function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n var title, escapedId = m.replace(/[^\\w]/g, '').toLowerCase();\r\n\r\n if (globals.hashLinkCounts[escapedId]) {\r\n title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);\r\n } else {\r\n title = escapedId;\r\n globals.hashLinkCounts[escapedId] = 1;\r\n }\r\n\r\n // Prefix id to prevent causing inadvertent pre-existing style matches.\r\n if (prefixHeader === true) {\r\n prefixHeader = 'section';\r\n }\r\n\r\n if (showdown.helper.isString(prefixHeader)) {\r\n return prefixHeader + title;\r\n }\r\n return title;\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n } else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_', false);\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\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 * Run language extensions\r\n */\r\nshowdown.subParser('languageExtensions', function (text, config, globals) {\r\n 'use strict';\r\n\r\n showdown.helper.forEach(globals.langExtensions, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\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 * Run language extensions\r\n */\r\nshowdown.subParser('outputModifiers', function (text, config, globals) {\r\n 'use strict';\r\n\r\n showdown.helper.forEach(globals.outputModifiers, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\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 language extensions\r\n */\r\nshowdown.subParser('runExtension', function (ext, text) {\r\n 'use strict';\r\n\r\n if (ext.regex) {\r\n var re = new RegExp(ext.regex, 'g');\r\n return text.replace(re, ext.replace);\r\n } else if (ext.filter) {\r\n return ext.filter(text);\r\n }\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","/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var regex = /^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm;\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(regex, function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * 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 88320d62..b00dda2b 100644 --- a/dist/showdown.min.js +++ b/dist/showdown.min.js @@ -1,4 +1,4 @@ -/*! showdown 19-01-2015 */ +/*! showdown 01-03-2015 */ -(function(){function a(a,b){"use strict";var c=b.charCodeAt(0);return"~E"+c+"E"}var b={},c={},d={omitExtraWLInCodeBlocks:!1,prefixHeaderId:!1};b.helper={},b.extensions={},b.setOption=function(a,b){"use strict";return d[a]=b,this},b.getOption=function(a){"use strict";return d[a]},b.getOptions=function(){"use strict";return d},b.subParser=function(a,d){"use strict";if(b.helper.isString(a)){if("undefined"==typeof d){if(c.hasOwnProperty(a))return c[a];throw Error("SubParser named "+a+" not registered!")}c[a]=d}},b.Converter=function(a){"use strict";a=a||{};var b=d,e=["detab","stripBlankLines","githubCodeBlocks","hashHTMLBlocks","stripLinkDefinitions","blockGamut","unescapeSpecialChars"];if("object"==typeof a)for(var f in a)a.hasOwnProperty(f)&&(b[f]=a[f]);var g=function(a){if(!a)return a;var d={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0,hashLinkCounts:{}};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n";for(var f=0;fc;c++)b(a[c],c,a)}},b.helper.isArray=function(a){"use strict";return a.constructor===Array},b.helper.isUndefined=function(a){"use strict";return"undefined"==typeof a},b.helper.escapeCharactersCallback=a,b.helper.escapeCharacters=function(b,c,d){"use strict";var e="(["+c.replace(/([\[\]\\])/g,"\\$1")+"])";d&&(e="\\\\"+e);var f=new RegExp(e,"g");return b=b.replace(f,a)},b.subParser("anchors",function(a,c,d){"use strict";var e=function(a,c,e,f,g,h,i,j){b.helper.isUndefined(j)&&(j=""),a=c;var k=e,l=f.toLowerCase(),m=g,n=j;if(!m)if(l||(l=k.toLowerCase().replace(/ ?\n/g," ")),m="#"+l,b.helper.isUndefined(d.gUrls[l])){if(!(a.search(/\(\s*\)$/m)>-1))return a;m=""}else m=d.gUrls[l],b.helper.isUndefined(d.gTitles[l])||(n=d.gTitles[l]);m=b.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)}),b.subParser("autoLinks",function(a){"use strict";a=a.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'$1');var c=/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi;return a=a.replace(c,function(a,c){var d=b.subParser("unescapeSpecialChars")(c);return b.subParser("encodeEmailAddress")(d)})}),b.subParser("blockGamut",function(a,c,d){"use strict";a=b.subParser("headers")(a,c,d);var e=b.subParser("hashBlock")("
    ",c,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=b.subParser("lists")(a,c,d),a=b.subParser("codeBlocks")(a,c,d),a=b.subParser("blockQuotes")(a,c,d),a=b.subParser("hashHTMLBlocks")(a,c,d),a=b.subParser("paragraphs")(a,c,d)}),b.subParser("blockQuotes",function(a,c,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=b.subParser("blockGamut")(f,c,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,"")}),b.subParser("hashBlock")("
    \n"+f+"\n
    ",c,d)})}),b.subParser("codeBlocks",function(a,c,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;return g=b.subParser("outdent")(g),g=b.subParser("encodeCode")(g),g=b.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",b.subParser("hashBlock")(g,c,d)+h}),a=a.replace(/~0/,"")}),b.subParser("codeSpans",function(a){"use strict";return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,c,d,e){var f=e;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=b.subParser("encodeCode")(f),c+""+f+""})}),b.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,"")}),b.subParser("encodeAmpsAndAngles",function(a){"use strict";return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),b.subParser("encodeBackslashEscapes",function(a){"use strict";return a=a.replace(/\\(\\)/g,b.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,b.helper.escapeCharactersCallback)}),b.subParser("encodeCode",function(a){"use strict";return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=b.helper.escapeCharacters(a,"*_{}[]\\",!1)}),b.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,'">')}),b.subParser("escapeSpecialCharsWithinTagAttributes",function(a){"use strict";var c=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;return a=a.replace(c,function(a){var c=a.replace(/(.)<\/?code>(?=.)/g,"$1`");return c=b.helper.escapeCharacters(c,"\\`*_",!1)})}),b.subParser("githubCodeBlocks",function(a,c,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 c.omitExtraWLInCodeBlocks&&(i=""),h=b.subParser("encodeCode")(h),h=b.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",b.subParser("hashBlock")(h,c,d)}),a=a.replace(/~0/,"")}),b.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"}),b.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"}}),b.subParser("hashHTMLBlocks",function(a,c,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,b.subParser("hashElement")(a,c,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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,b.subParser("hashElement")(a,c,d)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,b.subParser("hashElement")(a,c,d)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,b.subParser("hashElement")(a,c,d)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,b.subParser("hashElement")(a,c,d)),a=a.replace(/\n\n/g,"\n")}),b.subParser("headers",function(a,c,d){"use strict";function e(a){var c,e=a.replace(/[^\w]/g,"").toLowerCase();return d.hashLinkCounts[e]?c=e+"-"+d.hashLinkCounts[e]++:(c=e,d.hashLinkCounts[e]=1),f===!0&&(f="section"),b.helper.isString(f)?f+c:c}var f=c.prefixHeaderId;return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){var g=b.subParser("spanGamut")(f,c,d),h='

    '+g+"

    ";return b.subParser("hashBlock")(h,c,d)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){var g=b.subParser("spanGamut")(f,c,d),h='

    '+g+"

    ";return b.subParser("hashBlock")(h,c,d)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=b.subParser("spanGamut")(g,c,d),i="'+h+"";return b.subParser("hashBlock")(i,c,d)})}),b.subParser("images",function(a,c,d){"use strict";var e=function(a,c,e,f,g,h,i,j){a=c;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=b.helper.escapeCharacters(m,"*_",!1);var q=''+k+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,e)}),b.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")}),b.subParser("lists",function(a,c,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=b.subParser("outdent")(h,c,d);return e||i.search(/\n{2,}/)>-1?i=b.subParser("blockGamut")(i,c,d):(i=b.subParser("lists")(i,c,d),i=i.replace(/\n$/,""),i=b.subParser("spanGamut")(i,c,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/,"")}),b.subParser("outdent",function(a){"use strict";return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),b.subParser("paragraphs",function(a,c,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=b.subParser("spanGamut")(i,c,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")}),b.subParser("spanGamut",function(a,c,d){"use strict";return a=b.subParser("codeSpans")(a,c,d),a=b.subParser("escapeSpecialCharsWithinTagAttributes")(a,c,d),a=b.subParser("encodeBackslashEscapes")(a,c,d),a=b.subParser("images")(a,c,d),a=b.subParser("anchors")(a,c,d),a=b.subParser("autoLinks")(a,c,d),a=b.subParser("encodeAmpsAndAngles")(a,c,d),a=b.subParser("italicsAndBold")(a,c,d),a=a.replace(/ +\n/g,"
    \n")}),b.subParser("stripBlankLines",function(a){"use strict";return a.replace(/^[ \t]+$/gm,"")}),b.subParser("stripLinkDefinitions",function(a,c,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,c,e,f,g){return c=c.toLowerCase(),d.gUrls[c]=b.subParser("encodeAmpsAndAngles")(e),f?f+g:(g&&(d.gTitles[c]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),b.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 e=this;"undefined"!=typeof module&&module.exports?module.exports=b:"function"==typeof define&&define.amd?define("showdown",function(){"use strict";return b}):e.showdown=b}).call(this); +(function(){function a(a){"use strict";if(!f.hasOwnProperty(a))throw Error("Extension named "+a+" is not registered!");return f[a]}function b(a,b){"use strict";if("object"!=typeof b)throw Error("A Showdown Extension must be an object, "+typeof b+" given");if(!d.helper.isString(b.type))throw Error('When registering a showdown extension, "type" must be a string, '+typeof b.type+" given");b.type=b.type.toLowerCase(),f[a]=b}function c(a,b){"use strict";var c=b.charCodeAt(0);return"~E"+c+"E"}var d={},e={},f={},g={omitExtraWLInCodeBlocks:!1,prefixHeaderId:!1};d.helper={},d.extensions={},d.setOption=function(a,b){"use strict";return g[a]=b,this},d.getOption=function(a){"use strict";return g[a]},d.getOptions=function(){"use strict";return g},d.subParser=function(a,b){"use strict";if(d.helper.isString(a)){if("undefined"==typeof b){if(e.hasOwnProperty(a))return e[a];throw Error("SubParser named "+a+" not registered!")}e[a]=b}},d.extension=function(c,e){"use strict";if(!d.helper.isString(c))throw Error("Extension 'name' must be a string");return c=d.helper.stdExtName(c),d.helper.isUndefined(e)?a():b()},d.Converter=function(a){"use strict";function b(a){if(!a)return a;var b={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0,hashLinkCounts:{},langExtensions:h,outputModifiers:i};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n",a=e.detab(a,c,b),a=e.stripBlankLines(a,c,b),a=e.languageExtensions(a,c,b);for(var d=0;d-1))return a;m=""}else m=c.gUrls[l],d.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=d.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)}),d.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 c=d.subParser("unescapeSpecialChars")(b);return d.subParser("encodeEmailAddress")(c)})}),d.subParser("blockGamut",function(a,b,c){"use strict";a=d.subParser("headers")(a,b,c);var e=d.subParser("hashBlock")("
    ",b,c);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=d.subParser("lists")(a,b,c),a=d.subParser("codeBlocks")(a,b,c),a=d.subParser("blockQuotes")(a,b,c),a=d.subParser("hashHTMLBlocks")(a,b,c),a=d.subParser("paragraphs")(a,b,c)}),d.subParser("blockQuotes",function(a,b,c){"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=d.subParser("blockGamut")(f,b,c),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,"")}),d.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)})}),d.subParser("codeBlocks",function(a,b,c){"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;return g=d.subParser("outdent")(g),g=d.subParser("encodeCode")(g),g=d.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",d.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,"")}),d.subParser("codeSpans",function(a){"use strict";return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,e){var f=e;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=d.subParser("encodeCode")(f),b+""+f+""})}),d.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,"")}),d.subParser("encodeAmpsAndAngles",function(a){"use strict";return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),d.subParser("encodeBackslashEscapes",function(a){"use strict";return a=a.replace(/\\(\\)/g,d.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,d.helper.escapeCharactersCallback)}),d.subParser("encodeCode",function(a){"use strict";return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=d.helper.escapeCharacters(a,"*_{}[]\\",!1)}),d.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,'">')}),d.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=d.helper.escapeCharacters(b,"\\`*_",!1)})}),d.subParser("githubCodeBlocks",function(a,b,c){"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=d.subParser("encodeCode")(h),h=d.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",d.subParser("hashBlock")(h,b,c)}),a=a.replace(/~0/,"")}),d.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"}),d.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"}}),d.subParser("hashHTMLBlocks",function(a,b,c){"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,d.subParser("hashElement")(a,b,c)),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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,d.subParser("hashElement")(a,b,c)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/\n\n/g,"\n")}),d.subParser("headers",function(a,b,c){"use strict";function e(a){var b,e=a.replace(/[^\w]/g,"").toLowerCase();return c.hashLinkCounts[e]?b=e+"-"+c.hashLinkCounts[e]++:(b=e,c.hashLinkCounts[e]=1),f===!0&&(f="section"),d.helper.isString(f)?f+b:b}var f=b.prefixHeaderId;return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){var g=d.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return d.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){var g=d.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return d.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=d.subParser("spanGamut")(g,b,c),i="'+h+"";return d.subParser("hashBlock")(i,b,c)})}),d.subParser("images",function(a,b,c){"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=c.gUrls,p=c.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=d.helper.escapeCharacters(m,"*_",!1);var q=''+k+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,e)}),d.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")}),d.subParser("languageExtensions",function(a,b,c){"use strict";return d.helper.forEach(c.langExtensions,function(b){a=d.subParser("runExtension")(b,a)}),a}),d.subParser("lists",function(a,b,c){"use strict";var e=function(a){return c.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=d.subParser("outdent")(h,b,c);return e||i.search(/\n{2,}/)>-1?i=d.subParser("blockGamut")(i,b,c):(i=d.subParser("lists")(i,b,c),i=i.replace(/\n$/,""),i=d.subParser("spanGamut")(i,b,c)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),c.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.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/,"")}),d.subParser("outdent",function(a){"use strict";return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),d.subParser("outputModifiers",function(a,b,c){"use strict";return d.helper.forEach(c.outputModifiers,function(b){a=d.subParser("runExtension")(b,a)}),a}),d.subParser("paragraphs",function(a,b,c){"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=d.subParser("spanGamut")(i,b,c),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=c.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),d.subParser("runExtension",function(a,b){"use strict";if(a.regex){var c=new RegExp(a.regex,"g");return b.replace(c,a.replace)}return a.filter?a.filter(b):void 0}),d.subParser("spanGamut",function(a,b,c){"use strict";return a=d.subParser("codeSpans")(a,b,c),a=d.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=d.subParser("encodeBackslashEscapes")(a,b,c),a=d.subParser("images")(a,b,c),a=d.subParser("anchors")(a,b,c),a=d.subParser("autoLinks")(a,b,c),a=d.subParser("encodeAmpsAndAngles")(a,b,c),a=d.subParser("italicsAndBold")(a,b,c),a=a.replace(/ +\n/g,"
    \n")}),d.subParser("stripBlankLines",function(a){"use strict";return a.replace(/^[ \t]+$/gm,"")}),d.subParser("stripLinkDefinitions",function(a,b,c){"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(),c.gUrls[b]=d.subParser("encodeAmpsAndAngles")(e),f?f+g:(g&&(c.gTitles[b]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),d.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=d:"function"==typeof define&&define.amd?define("showdown",function(){"use strict";return d}):h.showdown=d}).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 eec9aeb4..9fd45c8e 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":["escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","showdown","parsers","globalOptions","omitExtraWLInCodeBlocks","prefixHeaderId","helper","extensions","setOption","key","value","this","getOption","getOptions","subParser","name","func","isString","hasOwnProperty","Error","Converter","converterOptions","options","parserOrder","opt","makeHtml","text","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","hashLinkCounts","replace","i","length","a","String","forEach","obj","callback","len","isArray","constructor","Array","isUndefined","escapeCharacters","charsToEscape","afterBackslash","regexString","regex","RegExp","config","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","toLowerCase","url","title","search","result","pattern","unescapedStr","bq","pre","codeblock","nextChar","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","language","end","push","blockText","headerId","m","escapedId","prefixHeader","spanGamut","hashBlock","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","split","grafsOut","str","$1","join","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":["getExtension","name","extensions","hasOwnProperty","Error","setExtension","ext","showdown","helper","isString","type","toLowerCase","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","parsers","globalOptions","omitExtraWLInCodeBlocks","prefixHeaderId","setOption","key","value","this","getOption","getOptions","subParser","func","extension","stdExtName","isUndefined","Converter","converterOptions","makeHtml","text","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","hashLinkCounts","langExtensions","outputModifiers","replace","detab","options","stripBlankLines","languageExtensions","i","parserOrder","length","opt","forEach","plugin","self","push","a","String","obj","callback","isArray","constructor","Array","s","escapeCharacters","charsToEscape","afterBackslash","regexString","regex","RegExp","config","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","url","title","search","result","pattern","unescapedStr","bq","pre","codeblock","nextChar","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","language","end","blockText","headerId","m","escapedId","prefixHeader","spanGamut","hashBlock","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","split","grafsOut","str","$1","join","re","filter","charCodeToReplace","parseInt","fromCharCode","root","module","exports","define","amd","call"],"mappings":"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"} \ No newline at end of file diff --git a/src/helpers.js b/src/helpers.js index fd9a3ae0..1c1cbf3a 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -8,6 +8,7 @@ if (!showdown.hasOwnProperty('helper')) { /** * Check if var is string + * @static * @param {string} a * @returns {boolean} */ @@ -18,6 +19,7 @@ showdown.helper.isString = function isString(a) { /** * ForEach helper function + * @static * @param {*} obj * @param {function} callback */ @@ -26,8 +28,7 @@ showdown.helper.forEach = function forEach(obj, callback) { if (typeof obj.forEach === 'function') { obj.forEach(callback); } else { - var i, len = obj.length; - for (i = 0; i < len; i++) { + for (var i = 0; i < obj.length; i++) { callback(obj[i], i, obj); } } @@ -35,6 +36,7 @@ showdown.helper.forEach = function forEach(obj, callback) { /** * isArray helper function + * @static * @param {*} a * @returns {boolean} */ @@ -45,7 +47,6 @@ showdown.helper.isArray = function isArray(a) { /** * Check if value is undefined - * * @static * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. @@ -55,6 +56,17 @@ showdown.helper.isUndefined = function isUndefined(value) { return typeof value === 'undefined'; }; +/** + * Standardidize extension name + * @static + * @param {string} s extension name + * @returns {string} + */ +showdown.helper.stdExtName = function (s) { + 'use strict'; + return s.replace(/[_-]||\s/g, '').toLowerCase(); +}; + function escapeCharactersCallback(wholeMatch, m1) { 'use strict'; var charCodeToEscape = m1.charCodeAt(0); @@ -63,6 +75,7 @@ function escapeCharactersCallback(wholeMatch, m1) { /** * Callback used to escape characters when passing through String.replace + * @static * @param {string} wholeMatch * @param {string} m1 * @returns {string} @@ -71,7 +84,7 @@ showdown.helper.escapeCharactersCallback = escapeCharactersCallback; /** * Escape characters in a string - * + * @static * @param {string} text * @param {string} charsToEscape * @param {boolean} afterBackslash diff --git a/src/showdown.js b/src/showdown.js index beae0804..a1e694bd 100644 --- a/src/showdown.js +++ b/src/showdown.js @@ -5,32 +5,24 @@ // Private properties var showdown = {}, parsers = {}, + extensions = {}, globalOptions = { omitExtraWLInCodeBlocks: false, - prefixHeaderId: false + prefixHeaderId: false }; -/////////////////////////////////////////////////////////////////////////// -// Public API -// /** * helper namespace * @type {{}} */ showdown.helper = {}; -/////////////////////////////////////////////////////////////////////////// -// API -// - // Public properties showdown.extensions = {}; -//Public methods - /** * Set a global option - * + * @static * @param {string} key * @param {string} value * @returns {showdown} @@ -43,7 +35,7 @@ showdown.setOption = function (key, value) { /** * Get a global option - * + * @static * @param {string} key * @returns {*} */ @@ -54,6 +46,7 @@ showdown.getOption = function (key) { /** * Get the global options + * @static * @returns {{omitExtraWLInCodeBlocks: boolean, prefixHeaderId: boolean}} */ showdown.getOptions = function () { @@ -66,6 +59,7 @@ showdown.getOptions = function () { * * subParser(name) - Get a registered subParser * subParser(name, func) - Register a subParser + * @static * @param {string} name * @param {function} [func] * @returns {*} @@ -85,6 +79,47 @@ showdown.subParser = function (name, func) { } }; +showdown.extension = function (name, ext) { + 'use strict'; + + if (!showdown.helper.isString(name)) { + throw Error('Extension \'name\' must be a string'); + } + + name = showdown.helper.stdExtName(name); + + if (showdown.helper.isUndefined(ext)) { + return getExtension(); + } else { + return setExtension(); + } +}; + +function getExtension(name) { + 'use strict'; + + if (!extensions.hasOwnProperty(name)) { + throw Error('Extension named ' + name + ' is not registered!'); + } + return extensions[name]; +} + +function setExtension(name, ext) { + 'use strict'; + + if (typeof ext !== 'object') { + throw Error('A Showdown Extension must be an object, ' + typeof ext + ' given'); + } + + if (!showdown.helper.isString(ext.type)) { + throw Error('When registering a showdown extension, "type" must be a string, ' + typeof ext.type + ' given'); + } + + ext.type = ext.type.toLowerCase(); + + extensions[name] = ext; +} + /** * Showdown Converter class * @@ -97,10 +132,9 @@ showdown.Converter = function (converterOptions) { converterOptions = converterOptions || {}; var options = globalOptions, + langExtensions = [], + outputModifiers = [], parserOrder = [ - 'detab', - 'stripBlankLines', - //runLanguageExtensions, 'githubCodeBlocks', 'hashHTMLBlocks', 'stripLinkDefinitions', @@ -117,6 +151,38 @@ showdown.Converter = function (converterOptions) { } } + // Parse options + if (options.extensions) { + + // Iterate over each plugin + showdown.helper.forEach(options.extensions, function (plugin) { + + // Assume it's a bundled plugin if a string is given + if (typeof plugin === 'string') { + plugin = extensions[showdown.helper.stdExtName(plugin)]; + } + + if (typeof plugin === 'function') { + // Iterate over each extension within that plugin + showdown.helper.forEach(plugin(self), function (ext) { + // Sort extensions by type + if (ext.type) { + if (ext.type === 'language' || ext.type === 'lang') { + langExtensions.push(ext); + } else if (ext.type === 'output' || ext.type === 'html') { + outputModifiers.push(ext); + } + } else { + // Assume language extension + outputModifiers.push(ext); + } + }); + } else { + throw 'Extension "' + plugin + '" could not be loaded. It was either not found or is not a valid extension.'; + } + }); + } + /** * Converts a markdown string into HTML * @param {string} text @@ -130,11 +196,13 @@ showdown.Converter = function (converterOptions) { } var globals = { - gHtmlBlocks: [], - gUrls: {}, - gTitles: {}, - gListLevel: 0, - hashLinkCounts: {} + gHtmlBlocks: [], + gUrls: {}, + gTitles: {}, + gListLevel: 0, + hashLinkCounts: {}, + langExtensions: langExtensions, + outputModifiers: outputModifiers }; // attacklab: Replace ~ with ~T @@ -155,6 +223,15 @@ showdown.Converter = function (converterOptions) { // Make sure text begins and ends with a couple of newlines: text = '\n\n' + text + '\n\n'; + // detab + text = parsers.detab(text, options, globals); + + // stripBlankLines + text = parsers.stripBlankLines(text, options, globals); + + //run languageExtensions + text = parsers.languageExtensions(text, options, globals); + // Run all registered parsers for (var i = 0; i < parserOrder.length; ++i) { var name = parserOrder[i]; @@ -168,9 +245,7 @@ showdown.Converter = function (converterOptions) { text = text.replace(/~T/g, '~'); // Run output modifiers - //showdown.forEach(g_output_modifiers, function (x) { - // text = _ExecuteExtension(x, text); - //}); + text = parsers.outputModifiers(text, options, globals); return text; } diff --git a/src/subParsers/languageExtensions.js b/src/subParsers/languageExtensions.js new file mode 100644 index 00000000..b04cbf4c --- /dev/null +++ b/src/subParsers/languageExtensions.js @@ -0,0 +1,11 @@ +/** + * Run language extensions + */ +showdown.subParser('languageExtensions', function (text, config, globals) { + 'use strict'; + + showdown.helper.forEach(globals.langExtensions, function (ext) { + text = showdown.subParser('runExtension')(ext, text); + }); + return text; +}); diff --git a/src/subParsers/outputModifiers.js b/src/subParsers/outputModifiers.js new file mode 100644 index 00000000..79abc4d6 --- /dev/null +++ b/src/subParsers/outputModifiers.js @@ -0,0 +1,11 @@ +/** + * Run language extensions + */ +showdown.subParser('outputModifiers', function (text, config, globals) { + 'use strict'; + + showdown.helper.forEach(globals.outputModifiers, function (ext) { + text = showdown.subParser('runExtension')(ext, text); + }); + return text; +}); diff --git a/src/subParsers/runExtension.js b/src/subParsers/runExtension.js new file mode 100644 index 00000000..e288f7c0 --- /dev/null +++ b/src/subParsers/runExtension.js @@ -0,0 +1,13 @@ +/** + * Run language extensions + */ +showdown.subParser('runExtension', function (ext, text) { + 'use strict'; + + if (ext.regex) { + var re = new RegExp(ext.regex, 'g'); + return text.replace(re, ext.replace); + } else if (ext.filter) { + return ext.filter(text); + } +}); From d996b4438d5c7a0a82ab24e8f7278618f788ddec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Wed, 22 Apr 2015 14:51:57 +0100 Subject: [PATCH 25/34] partial(showdown.js): enabled output modifiers --- src/showdown.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/showdown.js b/src/showdown.js index a1e694bd..984b1ded 100644 --- a/src/showdown.js +++ b/src/showdown.js @@ -245,6 +245,9 @@ showdown.Converter = function (converterOptions) { text = text.replace(/~T/g, '~'); // Run output modifiers + showdown.helper.forEach(globals.outputModifiers, function (ext) { + text = showdown.subParser('runExtension')(ext, text); + }); text = parsers.outputModifiers(text, options, globals); return text; From 7232187b56e3f47bf1c7fb2173abb28c0ba3e535 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Wed, 22 Apr 2015 16:40:39 +0100 Subject: [PATCH 26/34] fix(package.json): fix version in package.json file --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 852f4db4..6a94dff3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "showdown", - "version": "2.0.0-alpha1", + "version": "1.0.0-alpha1", "description": "A Markdown to HTML converter written in Javascript", "authors": "Estevão Santos", "contributors": [ From 9c29f62fb30616fa13009806782e4fe01de69e4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Wed, 22 Apr 2015 16:56:31 +0100 Subject: [PATCH 27/34] chore(Gruntfile.js): fix jscs task --- Gruntfile.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Gruntfile.js b/Gruntfile.js index 14c2f607..dae7eb48 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -44,7 +44,9 @@ module.exports = function (grunt) { jscs: { options: { config: '.jscs.json', - files: [ + }, + files: { + src: [ 'Gruntfile.js', 'src/**/*.js', 'test/**/*.js' From a38c76d2360939b1ac70899689604c00120b8f1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Wed, 22 Apr 2015 16:58:07 +0100 Subject: [PATCH 28/34] fix(showdown.js): fix showdown extension loader --- src/showdown.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/showdown.js b/src/showdown.js index 984b1ded..6f20f9cd 100644 --- a/src/showdown.js +++ b/src/showdown.js @@ -156,10 +156,19 @@ showdown.Converter = function (converterOptions) { // Iterate over each plugin showdown.helper.forEach(options.extensions, function (plugin) { + var pluginName = plugin; // Assume it's a bundled plugin if a string is given if (typeof plugin === 'string') { - plugin = extensions[showdown.helper.stdExtName(plugin)]; + var tPluginName = showdown.helper.stdExtName(plugin); + + if (!showdown.helper.isUndefined(showdown.extensions[tPluginName]) && showdown.extensions[tPluginName]) { + //Trigger some kind of deprecated alert + plugin = showdown.extensions[tPluginName]; + + } else if (!showdown.helper.isUndefined(extensions[tPluginName])) { + plugin = extensions[tPluginName]; + } } if (typeof plugin === 'function') { @@ -178,7 +187,11 @@ showdown.Converter = function (converterOptions) { } }); } else { - throw 'Extension "' + plugin + '" could not be loaded. It was either not found or is not a valid extension.'; + var errMsg = 'An extension could not be loaded. It was either not found or is not a valid extension.'; + if (typeof pluginName === 'string') { + errMsg = 'Extension "' + pluginName + '" could not be loaded. It was either not found or is not a valid extension.'; + } + throw errMsg; } }); } From 7deea25a5e535f5777a9916963aabe9a127b9f3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Wed, 22 Apr 2015 16:58:53 +0100 Subject: [PATCH 29/34] chore(): new build --- dist/showdown.js | 22 +++++++++++++++++++--- dist/showdown.js.map | 2 +- dist/showdown.min.js | 4 ++-- dist/showdown.min.js.map | 2 +- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/dist/showdown.js b/dist/showdown.js index 3d01e240..5c9a372b 100644 --- a/dist/showdown.js +++ b/dist/showdown.js @@ -1,4 +1,4 @@ -;/*! showdown 01-03-2015 */ +;/*! showdown 22-04-2015 */ (function(){ /** * Created by Tivie on 06-01-2015. @@ -158,10 +158,19 @@ showdown.Converter = function (converterOptions) { // Iterate over each plugin showdown.helper.forEach(options.extensions, function (plugin) { + var pluginName = plugin; // Assume it's a bundled plugin if a string is given if (typeof plugin === 'string') { - plugin = extensions[showdown.helper.stdExtName(plugin)]; + var tPluginName = showdown.helper.stdExtName(plugin); + + if (!showdown.helper.isUndefined(showdown.extensions[tPluginName]) && showdown.extensions[tPluginName]) { + //Trigger some kind of deprecated alert + plugin = showdown.extensions[tPluginName]; + + } else if (!showdown.helper.isUndefined(extensions[tPluginName])) { + plugin = extensions[tPluginName]; + } } if (typeof plugin === 'function') { @@ -180,7 +189,11 @@ showdown.Converter = function (converterOptions) { } }); } else { - throw 'Extension "' + plugin + '" could not be loaded. It was either not found or is not a valid extension.'; + var errMsg = 'An extension could not be loaded. It was either not found or is not a valid extension.'; + if (typeof pluginName === 'string') { + errMsg = 'Extension "' + pluginName + '" could not be loaded. It was either not found or is not a valid extension.'; + } + throw errMsg; } }); } @@ -247,6 +260,9 @@ showdown.Converter = function (converterOptions) { text = text.replace(/~T/g, '~'); // Run output modifiers + showdown.helper.forEach(globals.outputModifiers, function (ext) { + text = showdown.subParser('runExtension')(ext, text); + }); text = parsers.outputModifiers(text, options, globals); return text; diff --git a/dist/showdown.js.map b/dist/showdown.js.map index 41fbabe6..3477b775 100644 --- a/dist/showdown.js.map +++ b/dist/showdown.js.map @@ -1 +1 @@ -{"version":3,"sources":["..\\src\\showdown.js","..\\src\\helpers.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\\languageExtensions.js","..\\src\\subParsers\\lists.js","..\\src\\subParsers\\outdent.js","..\\src\\subParsers\\outputModifiers.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":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n extensions = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false,\r\n prefixHeaderId: false\r\n };\r\n\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n/**\r\n * Set a global option\r\n * @static\r\n * @param {string} key\r\n * @param {string} value\r\n * @returns {showdown}\r\n */\r\nshowdown.setOption = function (key, value) {\r\n 'use strict';\r\n globalOptions[key] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Get a global option\r\n * @static\r\n * @param {string} key\r\n * @returns {*}\r\n */\r\nshowdown.getOption = function (key) {\r\n 'use strict';\r\n return globalOptions[key];\r\n};\r\n\r\n/**\r\n * Get the global options\r\n * @static\r\n * @returns {{omitExtraWLInCodeBlocks: boolean, prefixHeaderId: boolean}}\r\n */\r\nshowdown.getOptions = function () {\r\n 'use strict';\r\n return globalOptions;\r\n};\r\n\r\n/**\r\n * Get or set a subParser\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @static\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n 'use strict';\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\nshowdown.extension = function (name, ext) {\r\n 'use strict';\r\n\r\n if (!showdown.helper.isString(name)) {\r\n throw Error('Extension \\'name\\' must be a string');\r\n }\r\n\r\n name = showdown.helper.stdExtName(name);\r\n\r\n if (showdown.helper.isUndefined(ext)) {\r\n return getExtension();\r\n } else {\r\n return setExtension();\r\n }\r\n};\r\n\r\nfunction getExtension(name) {\r\n 'use strict';\r\n\r\n if (!extensions.hasOwnProperty(name)) {\r\n throw Error('Extension named ' + name + ' is not registered!');\r\n }\r\n return extensions[name];\r\n}\r\n\r\nfunction setExtension(name, ext) {\r\n 'use strict';\r\n\r\n if (typeof ext !== 'object') {\r\n throw Error('A Showdown Extension must be an object, ' + typeof ext + ' given');\r\n }\r\n\r\n if (!showdown.helper.isString(ext.type)) {\r\n throw Error('When registering a showdown extension, \"type\" must be a string, ' + typeof ext.type + ' given');\r\n }\r\n\r\n ext.type = ext.type.toLowerCase();\r\n\r\n extensions[name] = ext;\r\n}\r\n\r\n/**\r\n * Showdown Converter class\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n 'use strict';\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n langExtensions = [],\r\n outputModifiers = [],\r\n parserOrder = [\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n // Parse options\r\n if (options.extensions) {\r\n\r\n // Iterate over each plugin\r\n showdown.helper.forEach(options.extensions, function (plugin) {\r\n\r\n // Assume it's a bundled plugin if a string is given\r\n if (typeof plugin === 'string') {\r\n plugin = extensions[showdown.helper.stdExtName(plugin)];\r\n }\r\n\r\n if (typeof plugin === 'function') {\r\n // Iterate over each extension within that plugin\r\n showdown.helper.forEach(plugin(self), function (ext) {\r\n // Sort extensions by type\r\n if (ext.type) {\r\n if (ext.type === 'language' || ext.type === 'lang') {\r\n langExtensions.push(ext);\r\n } else if (ext.type === 'output' || ext.type === 'html') {\r\n outputModifiers.push(ext);\r\n }\r\n } else {\r\n // Assume language extension\r\n outputModifiers.push(ext);\r\n }\r\n });\r\n } else {\r\n throw 'Extension \"' + plugin + '\" could not be loaded. It was either not found or is not a valid extension.';\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Converts a markdown string into HTML\r\n * @param {string} text\r\n * @returns {*}\r\n */\r\n function makeHtml(text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0,\r\n hashLinkCounts: {},\r\n langExtensions: langExtensions,\r\n outputModifiers: outputModifiers\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // detab\r\n text = parsers.detab(text, options, globals);\r\n\r\n // stripBlankLines\r\n text = parsers.stripBlankLines(text, options, globals);\r\n\r\n //run languageExtensions\r\n text = parsers.languageExtensions(text, options, globals);\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n text = parsers.outputModifiers(text, options, globals);\r\n\r\n return text;\r\n }\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\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 * 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, nextChar = m2;\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 whitespace\r\n\r\n    codeblock = '
    ' + codeblock + '\\n
    ';\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)\\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) {\r\n 'use strict';\r\n\r\n var prefixHeader = options.prefixHeaderId;\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm, function (wholeMatch, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm, function (matchFound, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm, function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n var title, escapedId = m.replace(/[^\\w]/g, '').toLowerCase();\r\n\r\n if (globals.hashLinkCounts[escapedId]) {\r\n title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);\r\n } else {\r\n title = escapedId;\r\n globals.hashLinkCounts[escapedId] = 1;\r\n }\r\n\r\n // Prefix id to prevent causing inadvertent pre-existing style matches.\r\n if (prefixHeader === true) {\r\n prefixHeader = 'section';\r\n }\r\n\r\n if (showdown.helper.isString(prefixHeader)) {\r\n return prefixHeader + title;\r\n }\r\n return title;\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n } else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_', false);\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\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 * Run language extensions\r\n */\r\nshowdown.subParser('languageExtensions', function (text, config, globals) {\r\n 'use strict';\r\n\r\n showdown.helper.forEach(globals.langExtensions, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\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 * Run language extensions\r\n */\r\nshowdown.subParser('outputModifiers', function (text, config, globals) {\r\n 'use strict';\r\n\r\n showdown.helper.forEach(globals.outputModifiers, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\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 language extensions\r\n */\r\nshowdown.subParser('runExtension', function (ext, text) {\r\n 'use strict';\r\n\r\n if (ext.regex) {\r\n var re = new RegExp(ext.regex, 'g');\r\n return text.replace(re, ext.replace);\r\n } else if (ext.filter) {\r\n return ext.filter(text);\r\n }\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","/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var regex = /^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm;\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(regex, function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * 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\\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\\languageExtensions.js","..\\src\\subParsers\\lists.js","..\\src\\subParsers\\outdent.js","..\\src\\subParsers\\outputModifiers.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":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n extensions = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false,\r\n prefixHeaderId: false\r\n };\r\n\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n/**\r\n * Set a global option\r\n * @static\r\n * @param {string} key\r\n * @param {string} value\r\n * @returns {showdown}\r\n */\r\nshowdown.setOption = function (key, value) {\r\n 'use strict';\r\n globalOptions[key] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Get a global option\r\n * @static\r\n * @param {string} key\r\n * @returns {*}\r\n */\r\nshowdown.getOption = function (key) {\r\n 'use strict';\r\n return globalOptions[key];\r\n};\r\n\r\n/**\r\n * Get the global options\r\n * @static\r\n * @returns {{omitExtraWLInCodeBlocks: boolean, prefixHeaderId: boolean}}\r\n */\r\nshowdown.getOptions = function () {\r\n 'use strict';\r\n return globalOptions;\r\n};\r\n\r\n/**\r\n * Get or set a subParser\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @static\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n 'use strict';\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\nshowdown.extension = function (name, ext) {\r\n 'use strict';\r\n\r\n if (!showdown.helper.isString(name)) {\r\n throw Error('Extension \\'name\\' must be a string');\r\n }\r\n\r\n name = showdown.helper.stdExtName(name);\r\n\r\n if (showdown.helper.isUndefined(ext)) {\r\n return getExtension();\r\n } else {\r\n return setExtension();\r\n }\r\n};\r\n\r\nfunction getExtension(name) {\r\n 'use strict';\r\n\r\n if (!extensions.hasOwnProperty(name)) {\r\n throw Error('Extension named ' + name + ' is not registered!');\r\n }\r\n return extensions[name];\r\n}\r\n\r\nfunction setExtension(name, ext) {\r\n 'use strict';\r\n\r\n if (typeof ext !== 'object') {\r\n throw Error('A Showdown Extension must be an object, ' + typeof ext + ' given');\r\n }\r\n\r\n if (!showdown.helper.isString(ext.type)) {\r\n throw Error('When registering a showdown extension, \"type\" must be a string, ' + typeof ext.type + ' given');\r\n }\r\n\r\n ext.type = ext.type.toLowerCase();\r\n\r\n extensions[name] = ext;\r\n}\r\n\r\n/**\r\n * Showdown Converter class\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n 'use strict';\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n langExtensions = [],\r\n outputModifiers = [],\r\n parserOrder = [\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n // Parse options\r\n if (options.extensions) {\r\n\r\n // Iterate over each plugin\r\n showdown.helper.forEach(options.extensions, function (plugin) {\r\n var pluginName = plugin;\r\n\r\n // Assume it's a bundled plugin if a string is given\r\n if (typeof plugin === 'string') {\r\n var tPluginName = showdown.helper.stdExtName(plugin);\r\n\r\n if (!showdown.helper.isUndefined(showdown.extensions[tPluginName]) && showdown.extensions[tPluginName]) {\r\n //Trigger some kind of deprecated alert\r\n plugin = showdown.extensions[tPluginName];\r\n\r\n } else if (!showdown.helper.isUndefined(extensions[tPluginName])) {\r\n plugin = extensions[tPluginName];\r\n }\r\n }\r\n\r\n if (typeof plugin === 'function') {\r\n // Iterate over each extension within that plugin\r\n showdown.helper.forEach(plugin(self), function (ext) {\r\n // Sort extensions by type\r\n if (ext.type) {\r\n if (ext.type === 'language' || ext.type === 'lang') {\r\n langExtensions.push(ext);\r\n } else if (ext.type === 'output' || ext.type === 'html') {\r\n outputModifiers.push(ext);\r\n }\r\n } else {\r\n // Assume language extension\r\n outputModifiers.push(ext);\r\n }\r\n });\r\n } else {\r\n var errMsg = 'An extension could not be loaded. It was either not found or is not a valid extension.';\r\n if (typeof pluginName === 'string') {\r\n errMsg = 'Extension \"' + pluginName + '\" could not be loaded. It was either not found or is not a valid extension.';\r\n }\r\n throw errMsg;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Converts a markdown string into HTML\r\n * @param {string} text\r\n * @returns {*}\r\n */\r\n function makeHtml(text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0,\r\n hashLinkCounts: {},\r\n langExtensions: langExtensions,\r\n outputModifiers: outputModifiers\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // detab\r\n text = parsers.detab(text, options, globals);\r\n\r\n // stripBlankLines\r\n text = parsers.stripBlankLines(text, options, globals);\r\n\r\n //run languageExtensions\r\n text = parsers.languageExtensions(text, options, globals);\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n showdown.helper.forEach(globals.outputModifiers, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\r\n });\r\n text = parsers.outputModifiers(text, options, globals);\r\n\r\n return text;\r\n }\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\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 * 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, nextChar = m2;\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 whitespace\r\n\r\n    codeblock = '
    ' + codeblock + '\\n
    ';\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)\\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) {\r\n 'use strict';\r\n\r\n var prefixHeader = options.prefixHeaderId;\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm, function (wholeMatch, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm, function (matchFound, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm, function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n var title, escapedId = m.replace(/[^\\w]/g, '').toLowerCase();\r\n\r\n if (globals.hashLinkCounts[escapedId]) {\r\n title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);\r\n } else {\r\n title = escapedId;\r\n globals.hashLinkCounts[escapedId] = 1;\r\n }\r\n\r\n // Prefix id to prevent causing inadvertent pre-existing style matches.\r\n if (prefixHeader === true) {\r\n prefixHeader = 'section';\r\n }\r\n\r\n if (showdown.helper.isString(prefixHeader)) {\r\n return prefixHeader + title;\r\n }\r\n return title;\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n } else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_', false);\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\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 * Run language extensions\r\n */\r\nshowdown.subParser('languageExtensions', function (text, config, globals) {\r\n 'use strict';\r\n\r\n showdown.helper.forEach(globals.langExtensions, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\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 * Run language extensions\r\n */\r\nshowdown.subParser('outputModifiers', function (text, config, globals) {\r\n 'use strict';\r\n\r\n showdown.helper.forEach(globals.outputModifiers, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\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 language extensions\r\n */\r\nshowdown.subParser('runExtension', function (ext, text) {\r\n 'use strict';\r\n\r\n if (ext.regex) {\r\n var re = new RegExp(ext.regex, 'g');\r\n return text.replace(re, ext.replace);\r\n } else if (ext.filter) {\r\n return ext.filter(text);\r\n }\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","/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var regex = /^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm;\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(regex, function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * 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 b00dda2b..a814802a 100644 --- a/dist/showdown.min.js +++ b/dist/showdown.min.js @@ -1,4 +1,4 @@ -/*! showdown 01-03-2015 */ +/*! showdown 22-04-2015 */ -(function(){function a(a){"use strict";if(!f.hasOwnProperty(a))throw Error("Extension named "+a+" is not registered!");return f[a]}function b(a,b){"use strict";if("object"!=typeof b)throw Error("A Showdown Extension must be an object, "+typeof b+" given");if(!d.helper.isString(b.type))throw Error('When registering a showdown extension, "type" must be a string, '+typeof b.type+" given");b.type=b.type.toLowerCase(),f[a]=b}function c(a,b){"use strict";var c=b.charCodeAt(0);return"~E"+c+"E"}var d={},e={},f={},g={omitExtraWLInCodeBlocks:!1,prefixHeaderId:!1};d.helper={},d.extensions={},d.setOption=function(a,b){"use strict";return g[a]=b,this},d.getOption=function(a){"use strict";return g[a]},d.getOptions=function(){"use strict";return g},d.subParser=function(a,b){"use strict";if(d.helper.isString(a)){if("undefined"==typeof b){if(e.hasOwnProperty(a))return e[a];throw Error("SubParser named "+a+" not registered!")}e[a]=b}},d.extension=function(c,e){"use strict";if(!d.helper.isString(c))throw Error("Extension 'name' must be a string");return c=d.helper.stdExtName(c),d.helper.isUndefined(e)?a():b()},d.Converter=function(a){"use strict";function b(a){if(!a)return a;var b={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0,hashLinkCounts:{},langExtensions:h,outputModifiers:i};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n",a=e.detab(a,c,b),a=e.stripBlankLines(a,c,b),a=e.languageExtensions(a,c,b);for(var d=0;d-1))return a;m=""}else m=c.gUrls[l],d.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=d.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)}),d.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 c=d.subParser("unescapeSpecialChars")(b);return d.subParser("encodeEmailAddress")(c)})}),d.subParser("blockGamut",function(a,b,c){"use strict";a=d.subParser("headers")(a,b,c);var e=d.subParser("hashBlock")("
    ",b,c);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=d.subParser("lists")(a,b,c),a=d.subParser("codeBlocks")(a,b,c),a=d.subParser("blockQuotes")(a,b,c),a=d.subParser("hashHTMLBlocks")(a,b,c),a=d.subParser("paragraphs")(a,b,c)}),d.subParser("blockQuotes",function(a,b,c){"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=d.subParser("blockGamut")(f,b,c),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,"")}),d.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)})}),d.subParser("codeBlocks",function(a,b,c){"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;return g=d.subParser("outdent")(g),g=d.subParser("encodeCode")(g),g=d.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",d.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,"")}),d.subParser("codeSpans",function(a){"use strict";return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,e){var f=e;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=d.subParser("encodeCode")(f),b+""+f+""})}),d.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,"")}),d.subParser("encodeAmpsAndAngles",function(a){"use strict";return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),d.subParser("encodeBackslashEscapes",function(a){"use strict";return a=a.replace(/\\(\\)/g,d.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,d.helper.escapeCharactersCallback)}),d.subParser("encodeCode",function(a){"use strict";return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=d.helper.escapeCharacters(a,"*_{}[]\\",!1)}),d.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,'">')}),d.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=d.helper.escapeCharacters(b,"\\`*_",!1)})}),d.subParser("githubCodeBlocks",function(a,b,c){"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=d.subParser("encodeCode")(h),h=d.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",d.subParser("hashBlock")(h,b,c)}),a=a.replace(/~0/,"")}),d.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"}),d.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"}}),d.subParser("hashHTMLBlocks",function(a,b,c){"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,d.subParser("hashElement")(a,b,c)),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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,d.subParser("hashElement")(a,b,c)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/\n\n/g,"\n")}),d.subParser("headers",function(a,b,c){"use strict";function e(a){var b,e=a.replace(/[^\w]/g,"").toLowerCase();return c.hashLinkCounts[e]?b=e+"-"+c.hashLinkCounts[e]++:(b=e,c.hashLinkCounts[e]=1),f===!0&&(f="section"),d.helper.isString(f)?f+b:b}var f=b.prefixHeaderId;return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){var g=d.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return d.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){var g=d.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return d.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=d.subParser("spanGamut")(g,b,c),i="'+h+"";return d.subParser("hashBlock")(i,b,c)})}),d.subParser("images",function(a,b,c){"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=c.gUrls,p=c.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=d.helper.escapeCharacters(m,"*_",!1);var q=''+k+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,e)}),d.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")}),d.subParser("languageExtensions",function(a,b,c){"use strict";return d.helper.forEach(c.langExtensions,function(b){a=d.subParser("runExtension")(b,a)}),a}),d.subParser("lists",function(a,b,c){"use strict";var e=function(a){return c.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=d.subParser("outdent")(h,b,c);return e||i.search(/\n{2,}/)>-1?i=d.subParser("blockGamut")(i,b,c):(i=d.subParser("lists")(i,b,c),i=i.replace(/\n$/,""),i=d.subParser("spanGamut")(i,b,c)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),c.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.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/,"")}),d.subParser("outdent",function(a){"use strict";return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),d.subParser("outputModifiers",function(a,b,c){"use strict";return d.helper.forEach(c.outputModifiers,function(b){a=d.subParser("runExtension")(b,a)}),a}),d.subParser("paragraphs",function(a,b,c){"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=d.subParser("spanGamut")(i,b,c),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=c.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),d.subParser("runExtension",function(a,b){"use strict";if(a.regex){var c=new RegExp(a.regex,"g");return b.replace(c,a.replace)}return a.filter?a.filter(b):void 0}),d.subParser("spanGamut",function(a,b,c){"use strict";return a=d.subParser("codeSpans")(a,b,c),a=d.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=d.subParser("encodeBackslashEscapes")(a,b,c),a=d.subParser("images")(a,b,c),a=d.subParser("anchors")(a,b,c),a=d.subParser("autoLinks")(a,b,c),a=d.subParser("encodeAmpsAndAngles")(a,b,c),a=d.subParser("italicsAndBold")(a,b,c),a=a.replace(/ +\n/g,"
    \n")}),d.subParser("stripBlankLines",function(a){"use strict";return a.replace(/^[ \t]+$/gm,"")}),d.subParser("stripLinkDefinitions",function(a,b,c){"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(),c.gUrls[b]=d.subParser("encodeAmpsAndAngles")(e),f?f+g:(g&&(c.gTitles[b]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),d.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=d:"function"==typeof define&&define.amd?define("showdown",function(){"use strict";return d}):h.showdown=d}).call(this); +(function(){function a(a){"use strict";if(!f.hasOwnProperty(a))throw Error("Extension named "+a+" is not registered!");return f[a]}function b(a,b){"use strict";if("object"!=typeof b)throw Error("A Showdown Extension must be an object, "+typeof b+" given");if(!d.helper.isString(b.type))throw Error('When registering a showdown extension, "type" must be a string, '+typeof b.type+" given");b.type=b.type.toLowerCase(),f[a]=b}function c(a,b){"use strict";var c=b.charCodeAt(0);return"~E"+c+"E"}var d={},e={},f={},g={omitExtraWLInCodeBlocks:!1,prefixHeaderId:!1};d.helper={},d.extensions={},d.setOption=function(a,b){"use strict";return g[a]=b,this},d.getOption=function(a){"use strict";return g[a]},d.getOptions=function(){"use strict";return g},d.subParser=function(a,b){"use strict";if(d.helper.isString(a)){if("undefined"==typeof b){if(e.hasOwnProperty(a))return e[a];throw Error("SubParser named "+a+" not registered!")}e[a]=b}},d.extension=function(c,e){"use strict";if(!d.helper.isString(c))throw Error("Extension 'name' must be a string");return c=d.helper.stdExtName(c),d.helper.isUndefined(e)?a():b()},d.Converter=function(a){"use strict";function b(a){if(!a)return a;var b={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0,hashLinkCounts:{},langExtensions:h,outputModifiers:i};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n",a=e.detab(a,c,b),a=e.stripBlankLines(a,c,b),a=e.languageExtensions(a,c,b);for(var f=0;f-1))return a;m=""}else m=c.gUrls[l],d.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=d.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)}),d.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 c=d.subParser("unescapeSpecialChars")(b);return d.subParser("encodeEmailAddress")(c)})}),d.subParser("blockGamut",function(a,b,c){"use strict";a=d.subParser("headers")(a,b,c);var e=d.subParser("hashBlock")("
    ",b,c);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=d.subParser("lists")(a,b,c),a=d.subParser("codeBlocks")(a,b,c),a=d.subParser("blockQuotes")(a,b,c),a=d.subParser("hashHTMLBlocks")(a,b,c),a=d.subParser("paragraphs")(a,b,c)}),d.subParser("blockQuotes",function(a,b,c){"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=d.subParser("blockGamut")(f,b,c),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,"")}),d.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)})}),d.subParser("codeBlocks",function(a,b,c){"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;return g=d.subParser("outdent")(g),g=d.subParser("encodeCode")(g),g=d.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",d.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,"")}),d.subParser("codeSpans",function(a){"use strict";return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,e){var f=e;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=d.subParser("encodeCode")(f),b+""+f+""})}),d.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,"")}),d.subParser("encodeAmpsAndAngles",function(a){"use strict";return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),d.subParser("encodeBackslashEscapes",function(a){"use strict";return a=a.replace(/\\(\\)/g,d.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,d.helper.escapeCharactersCallback)}),d.subParser("encodeCode",function(a){"use strict";return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=d.helper.escapeCharacters(a,"*_{}[]\\",!1)}),d.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,'">')}),d.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=d.helper.escapeCharacters(b,"\\`*_",!1)})}),d.subParser("githubCodeBlocks",function(a,b,c){"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=d.subParser("encodeCode")(h),h=d.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",d.subParser("hashBlock")(h,b,c)}),a=a.replace(/~0/,"")}),d.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"}),d.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"}}),d.subParser("hashHTMLBlocks",function(a,b,c){"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,d.subParser("hashElement")(a,b,c)),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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,d.subParser("hashElement")(a,b,c)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/\n\n/g,"\n")}),d.subParser("headers",function(a,b,c){"use strict";function e(a){var b,e=a.replace(/[^\w]/g,"").toLowerCase();return c.hashLinkCounts[e]?b=e+"-"+c.hashLinkCounts[e]++:(b=e,c.hashLinkCounts[e]=1),f===!0&&(f="section"),d.helper.isString(f)?f+b:b}var f=b.prefixHeaderId;return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){var g=d.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return d.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){var g=d.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return d.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=d.subParser("spanGamut")(g,b,c),i="'+h+"";return d.subParser("hashBlock")(i,b,c)})}),d.subParser("images",function(a,b,c){"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=c.gUrls,p=c.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=d.helper.escapeCharacters(m,"*_",!1);var q=''+k+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,e)}),d.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")}),d.subParser("languageExtensions",function(a,b,c){"use strict";return d.helper.forEach(c.langExtensions,function(b){a=d.subParser("runExtension")(b,a)}),a}),d.subParser("lists",function(a,b,c){"use strict";var e=function(a){return c.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=d.subParser("outdent")(h,b,c);return e||i.search(/\n{2,}/)>-1?i=d.subParser("blockGamut")(i,b,c):(i=d.subParser("lists")(i,b,c),i=i.replace(/\n$/,""),i=d.subParser("spanGamut")(i,b,c)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),c.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.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/,"")}),d.subParser("outdent",function(a){"use strict";return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),d.subParser("outputModifiers",function(a,b,c){"use strict";return d.helper.forEach(c.outputModifiers,function(b){a=d.subParser("runExtension")(b,a)}),a}),d.subParser("paragraphs",function(a,b,c){"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=d.subParser("spanGamut")(i,b,c),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=c.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),d.subParser("runExtension",function(a,b){"use strict";if(a.regex){var c=new RegExp(a.regex,"g");return b.replace(c,a.replace)}return a.filter?a.filter(b):void 0}),d.subParser("spanGamut",function(a,b,c){"use strict";return a=d.subParser("codeSpans")(a,b,c),a=d.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=d.subParser("encodeBackslashEscapes")(a,b,c),a=d.subParser("images")(a,b,c),a=d.subParser("anchors")(a,b,c),a=d.subParser("autoLinks")(a,b,c),a=d.subParser("encodeAmpsAndAngles")(a,b,c),a=d.subParser("italicsAndBold")(a,b,c),a=a.replace(/ +\n/g,"
    \n")}),d.subParser("stripBlankLines",function(a){"use strict";return a.replace(/^[ \t]+$/gm,"")}),d.subParser("stripLinkDefinitions",function(a,b,c){"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(),c.gUrls[b]=d.subParser("encodeAmpsAndAngles")(e),f?f+g:(g&&(c.gTitles[b]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),d.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=d:"function"==typeof define&&define.amd?define("showdown",function(){"use strict";return d}):h.showdown=d}).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 9fd45c8e..d1cefc67 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":["getExtension","name","extensions","hasOwnProperty","Error","setExtension","ext","showdown","helper","isString","type","toLowerCase","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","parsers","globalOptions","omitExtraWLInCodeBlocks","prefixHeaderId","setOption","key","value","this","getOption","getOptions","subParser","func","extension","stdExtName","isUndefined","Converter","converterOptions","makeHtml","text","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","hashLinkCounts","langExtensions","outputModifiers","replace","detab","options","stripBlankLines","languageExtensions","i","parserOrder","length","opt","forEach","plugin","self","push","a","String","obj","callback","isArray","constructor","Array","s","escapeCharacters","charsToEscape","afterBackslash","regexString","regex","RegExp","config","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","url","title","search","result","pattern","unescapedStr","bq","pre","codeblock","nextChar","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","language","end","blockText","headerId","m","escapedId","prefixHeader","spanGamut","hashBlock","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","split","grafsOut","str","$1","join","re","filter","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":["getExtension","name","extensions","hasOwnProperty","Error","setExtension","ext","showdown","helper","isString","type","toLowerCase","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","parsers","globalOptions","omitExtraWLInCodeBlocks","prefixHeaderId","setOption","key","value","this","getOption","getOptions","subParser","func","extension","stdExtName","isUndefined","Converter","converterOptions","makeHtml","text","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","hashLinkCounts","langExtensions","outputModifiers","replace","detab","options","stripBlankLines","languageExtensions","i","parserOrder","length","forEach","opt","plugin","pluginName","tPluginName","errMsg","self","push","a","String","obj","callback","isArray","constructor","Array","s","escapeCharacters","charsToEscape","afterBackslash","regexString","regex","RegExp","config","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","url","title","search","result","pattern","unescapedStr","bq","pre","codeblock","nextChar","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","language","end","blockText","headerId","m","escapedId","prefixHeader","spanGamut","hashBlock","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","split","grafsOut","str","$1","join","re","filter","charCodeToReplace","parseInt","fromCharCode","root","module","exports","define","amd","call"],"mappings":"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"} \ No newline at end of file From 95ed7c682e5de49948a7e9f20bf73e18e806c5ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Thu, 23 Apr 2015 00:15:54 +0100 Subject: [PATCH 30/34] fix(extensions): support for old extension loading mechanism --- dist/showdown.js | 10 +++++++++- dist/showdown.js.map | 2 +- dist/showdown.min.js | 4 ++-- dist/showdown.min.js.map | 2 +- src/showdown.js | 8 ++++++++ 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/dist/showdown.js b/dist/showdown.js index 5c9a372b..bc3fdfd8 100644 --- a/dist/showdown.js +++ b/dist/showdown.js @@ -1,4 +1,4 @@ -;/*! showdown 22-04-2015 */ +;/*! showdown 23-04-2015 */ (function(){ /** * Created by Tivie on 06-01-2015. @@ -153,6 +153,14 @@ showdown.Converter = function (converterOptions) { } } + // This is a dirty workaround to maintain backwards extension compatibility + // We define a self var (which is a copy of this) and inject the makeHtml function + // directly to it. This ensures a full converter object is available when iterating over extensions + // We should rewrite the extension loading mechanism and use some kind of interface or decorator pattern + // and inject the object reference there instead. + var self = this; + self.makeHtml = makeHtml; + // Parse options if (options.extensions) { diff --git a/dist/showdown.js.map b/dist/showdown.js.map index 3477b775..80b1bbd2 100644 --- a/dist/showdown.js.map +++ b/dist/showdown.js.map @@ -1 +1 @@ -{"version":3,"sources":["..\\src\\showdown.js","..\\src\\helpers.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\\languageExtensions.js","..\\src\\subParsers\\lists.js","..\\src\\subParsers\\outdent.js","..\\src\\subParsers\\outputModifiers.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":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n extensions = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false,\r\n prefixHeaderId: false\r\n };\r\n\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n/**\r\n * Set a global option\r\n * @static\r\n * @param {string} key\r\n * @param {string} value\r\n * @returns {showdown}\r\n */\r\nshowdown.setOption = function (key, value) {\r\n 'use strict';\r\n globalOptions[key] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Get a global option\r\n * @static\r\n * @param {string} key\r\n * @returns {*}\r\n */\r\nshowdown.getOption = function (key) {\r\n 'use strict';\r\n return globalOptions[key];\r\n};\r\n\r\n/**\r\n * Get the global options\r\n * @static\r\n * @returns {{omitExtraWLInCodeBlocks: boolean, prefixHeaderId: boolean}}\r\n */\r\nshowdown.getOptions = function () {\r\n 'use strict';\r\n return globalOptions;\r\n};\r\n\r\n/**\r\n * Get or set a subParser\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @static\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n 'use strict';\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\nshowdown.extension = function (name, ext) {\r\n 'use strict';\r\n\r\n if (!showdown.helper.isString(name)) {\r\n throw Error('Extension \\'name\\' must be a string');\r\n }\r\n\r\n name = showdown.helper.stdExtName(name);\r\n\r\n if (showdown.helper.isUndefined(ext)) {\r\n return getExtension();\r\n } else {\r\n return setExtension();\r\n }\r\n};\r\n\r\nfunction getExtension(name) {\r\n 'use strict';\r\n\r\n if (!extensions.hasOwnProperty(name)) {\r\n throw Error('Extension named ' + name + ' is not registered!');\r\n }\r\n return extensions[name];\r\n}\r\n\r\nfunction setExtension(name, ext) {\r\n 'use strict';\r\n\r\n if (typeof ext !== 'object') {\r\n throw Error('A Showdown Extension must be an object, ' + typeof ext + ' given');\r\n }\r\n\r\n if (!showdown.helper.isString(ext.type)) {\r\n throw Error('When registering a showdown extension, \"type\" must be a string, ' + typeof ext.type + ' given');\r\n }\r\n\r\n ext.type = ext.type.toLowerCase();\r\n\r\n extensions[name] = ext;\r\n}\r\n\r\n/**\r\n * Showdown Converter class\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n 'use strict';\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n langExtensions = [],\r\n outputModifiers = [],\r\n parserOrder = [\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n // Parse options\r\n if (options.extensions) {\r\n\r\n // Iterate over each plugin\r\n showdown.helper.forEach(options.extensions, function (plugin) {\r\n var pluginName = plugin;\r\n\r\n // Assume it's a bundled plugin if a string is given\r\n if (typeof plugin === 'string') {\r\n var tPluginName = showdown.helper.stdExtName(plugin);\r\n\r\n if (!showdown.helper.isUndefined(showdown.extensions[tPluginName]) && showdown.extensions[tPluginName]) {\r\n //Trigger some kind of deprecated alert\r\n plugin = showdown.extensions[tPluginName];\r\n\r\n } else if (!showdown.helper.isUndefined(extensions[tPluginName])) {\r\n plugin = extensions[tPluginName];\r\n }\r\n }\r\n\r\n if (typeof plugin === 'function') {\r\n // Iterate over each extension within that plugin\r\n showdown.helper.forEach(plugin(self), function (ext) {\r\n // Sort extensions by type\r\n if (ext.type) {\r\n if (ext.type === 'language' || ext.type === 'lang') {\r\n langExtensions.push(ext);\r\n } else if (ext.type === 'output' || ext.type === 'html') {\r\n outputModifiers.push(ext);\r\n }\r\n } else {\r\n // Assume language extension\r\n outputModifiers.push(ext);\r\n }\r\n });\r\n } else {\r\n var errMsg = 'An extension could not be loaded. It was either not found or is not a valid extension.';\r\n if (typeof pluginName === 'string') {\r\n errMsg = 'Extension \"' + pluginName + '\" could not be loaded. It was either not found or is not a valid extension.';\r\n }\r\n throw errMsg;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Converts a markdown string into HTML\r\n * @param {string} text\r\n * @returns {*}\r\n */\r\n function makeHtml(text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0,\r\n hashLinkCounts: {},\r\n langExtensions: langExtensions,\r\n outputModifiers: outputModifiers\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // detab\r\n text = parsers.detab(text, options, globals);\r\n\r\n // stripBlankLines\r\n text = parsers.stripBlankLines(text, options, globals);\r\n\r\n //run languageExtensions\r\n text = parsers.languageExtensions(text, options, globals);\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n showdown.helper.forEach(globals.outputModifiers, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\r\n });\r\n text = parsers.outputModifiers(text, options, globals);\r\n\r\n return text;\r\n }\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\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 * 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, nextChar = m2;\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 whitespace\r\n\r\n    codeblock = '
    ' + codeblock + '\\n
    ';\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)\\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) {\r\n 'use strict';\r\n\r\n var prefixHeader = options.prefixHeaderId;\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm, function (wholeMatch, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm, function (matchFound, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm, function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n var title, escapedId = m.replace(/[^\\w]/g, '').toLowerCase();\r\n\r\n if (globals.hashLinkCounts[escapedId]) {\r\n title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);\r\n } else {\r\n title = escapedId;\r\n globals.hashLinkCounts[escapedId] = 1;\r\n }\r\n\r\n // Prefix id to prevent causing inadvertent pre-existing style matches.\r\n if (prefixHeader === true) {\r\n prefixHeader = 'section';\r\n }\r\n\r\n if (showdown.helper.isString(prefixHeader)) {\r\n return prefixHeader + title;\r\n }\r\n return title;\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n } else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_', false);\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\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 * Run language extensions\r\n */\r\nshowdown.subParser('languageExtensions', function (text, config, globals) {\r\n 'use strict';\r\n\r\n showdown.helper.forEach(globals.langExtensions, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\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 * Run language extensions\r\n */\r\nshowdown.subParser('outputModifiers', function (text, config, globals) {\r\n 'use strict';\r\n\r\n showdown.helper.forEach(globals.outputModifiers, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\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 language extensions\r\n */\r\nshowdown.subParser('runExtension', function (ext, text) {\r\n 'use strict';\r\n\r\n if (ext.regex) {\r\n var re = new RegExp(ext.regex, 'g');\r\n return text.replace(re, ext.replace);\r\n } else if (ext.filter) {\r\n return ext.filter(text);\r\n }\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","/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var regex = /^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm;\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(regex, function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * 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\\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\\languageExtensions.js","..\\src\\subParsers\\lists.js","..\\src\\subParsers\\outdent.js","..\\src\\subParsers\\outputModifiers.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":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n extensions = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false,\r\n prefixHeaderId: false\r\n };\r\n\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n/**\r\n * Set a global option\r\n * @static\r\n * @param {string} key\r\n * @param {string} value\r\n * @returns {showdown}\r\n */\r\nshowdown.setOption = function (key, value) {\r\n 'use strict';\r\n globalOptions[key] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Get a global option\r\n * @static\r\n * @param {string} key\r\n * @returns {*}\r\n */\r\nshowdown.getOption = function (key) {\r\n 'use strict';\r\n return globalOptions[key];\r\n};\r\n\r\n/**\r\n * Get the global options\r\n * @static\r\n * @returns {{omitExtraWLInCodeBlocks: boolean, prefixHeaderId: boolean}}\r\n */\r\nshowdown.getOptions = function () {\r\n 'use strict';\r\n return globalOptions;\r\n};\r\n\r\n/**\r\n * Get or set a subParser\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @static\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n 'use strict';\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\nshowdown.extension = function (name, ext) {\r\n 'use strict';\r\n\r\n if (!showdown.helper.isString(name)) {\r\n throw Error('Extension \\'name\\' must be a string');\r\n }\r\n\r\n name = showdown.helper.stdExtName(name);\r\n\r\n if (showdown.helper.isUndefined(ext)) {\r\n return getExtension();\r\n } else {\r\n return setExtension();\r\n }\r\n};\r\n\r\nfunction getExtension(name) {\r\n 'use strict';\r\n\r\n if (!extensions.hasOwnProperty(name)) {\r\n throw Error('Extension named ' + name + ' is not registered!');\r\n }\r\n return extensions[name];\r\n}\r\n\r\nfunction setExtension(name, ext) {\r\n 'use strict';\r\n\r\n if (typeof ext !== 'object') {\r\n throw Error('A Showdown Extension must be an object, ' + typeof ext + ' given');\r\n }\r\n\r\n if (!showdown.helper.isString(ext.type)) {\r\n throw Error('When registering a showdown extension, \"type\" must be a string, ' + typeof ext.type + ' given');\r\n }\r\n\r\n ext.type = ext.type.toLowerCase();\r\n\r\n extensions[name] = ext;\r\n}\r\n\r\n/**\r\n * Showdown Converter class\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n 'use strict';\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n langExtensions = [],\r\n outputModifiers = [],\r\n parserOrder = [\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n // This is a dirty workaround to maintain backwards extension compatibility\r\n // We define a self var (which is a copy of this) and inject the makeHtml function\r\n // directly to it. This ensures a full converter object is available when iterating over extensions\r\n // We should rewrite the extension loading mechanism and use some kind of interface or decorator pattern\r\n // and inject the object reference there instead.\r\n var self = this;\r\n self.makeHtml = makeHtml;\r\n\r\n // Parse options\r\n if (options.extensions) {\r\n\r\n // Iterate over each plugin\r\n showdown.helper.forEach(options.extensions, function (plugin) {\r\n var pluginName = plugin;\r\n\r\n // Assume it's a bundled plugin if a string is given\r\n if (typeof plugin === 'string') {\r\n var tPluginName = showdown.helper.stdExtName(plugin);\r\n\r\n if (!showdown.helper.isUndefined(showdown.extensions[tPluginName]) && showdown.extensions[tPluginName]) {\r\n //Trigger some kind of deprecated alert\r\n plugin = showdown.extensions[tPluginName];\r\n\r\n } else if (!showdown.helper.isUndefined(extensions[tPluginName])) {\r\n plugin = extensions[tPluginName];\r\n }\r\n }\r\n\r\n if (typeof plugin === 'function') {\r\n // Iterate over each extension within that plugin\r\n showdown.helper.forEach(plugin(self), function (ext) {\r\n // Sort extensions by type\r\n if (ext.type) {\r\n if (ext.type === 'language' || ext.type === 'lang') {\r\n langExtensions.push(ext);\r\n } else if (ext.type === 'output' || ext.type === 'html') {\r\n outputModifiers.push(ext);\r\n }\r\n } else {\r\n // Assume language extension\r\n outputModifiers.push(ext);\r\n }\r\n });\r\n } else {\r\n var errMsg = 'An extension could not be loaded. It was either not found or is not a valid extension.';\r\n if (typeof pluginName === 'string') {\r\n errMsg = 'Extension \"' + pluginName + '\" could not be loaded. It was either not found or is not a valid extension.';\r\n }\r\n throw errMsg;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Converts a markdown string into HTML\r\n * @param {string} text\r\n * @returns {*}\r\n */\r\n function makeHtml(text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0,\r\n hashLinkCounts: {},\r\n langExtensions: langExtensions,\r\n outputModifiers: outputModifiers\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // detab\r\n text = parsers.detab(text, options, globals);\r\n\r\n // stripBlankLines\r\n text = parsers.stripBlankLines(text, options, globals);\r\n\r\n //run languageExtensions\r\n text = parsers.languageExtensions(text, options, globals);\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n showdown.helper.forEach(globals.outputModifiers, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\r\n });\r\n text = parsers.outputModifiers(text, options, globals);\r\n\r\n return text;\r\n }\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\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 * 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, nextChar = m2;\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 whitespace\r\n\r\n    codeblock = '
    ' + codeblock + '\\n
    ';\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)\\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) {\r\n 'use strict';\r\n\r\n var prefixHeader = options.prefixHeaderId;\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm, function (wholeMatch, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm, function (matchFound, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm, function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n var title, escapedId = m.replace(/[^\\w]/g, '').toLowerCase();\r\n\r\n if (globals.hashLinkCounts[escapedId]) {\r\n title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);\r\n } else {\r\n title = escapedId;\r\n globals.hashLinkCounts[escapedId] = 1;\r\n }\r\n\r\n // Prefix id to prevent causing inadvertent pre-existing style matches.\r\n if (prefixHeader === true) {\r\n prefixHeader = 'section';\r\n }\r\n\r\n if (showdown.helper.isString(prefixHeader)) {\r\n return prefixHeader + title;\r\n }\r\n return title;\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n } else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_', false);\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\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 * Run language extensions\r\n */\r\nshowdown.subParser('languageExtensions', function (text, config, globals) {\r\n 'use strict';\r\n\r\n showdown.helper.forEach(globals.langExtensions, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\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 * Run language extensions\r\n */\r\nshowdown.subParser('outputModifiers', function (text, config, globals) {\r\n 'use strict';\r\n\r\n showdown.helper.forEach(globals.outputModifiers, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\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 language extensions\r\n */\r\nshowdown.subParser('runExtension', function (ext, text) {\r\n 'use strict';\r\n\r\n if (ext.regex) {\r\n var re = new RegExp(ext.regex, 'g');\r\n return text.replace(re, ext.replace);\r\n } else if (ext.filter) {\r\n return ext.filter(text);\r\n }\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","/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var regex = /^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm;\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(regex, function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * 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 a814802a..96fab4c6 100644 --- a/dist/showdown.min.js +++ b/dist/showdown.min.js @@ -1,4 +1,4 @@ -/*! showdown 22-04-2015 */ +/*! showdown 23-04-2015 */ -(function(){function a(a){"use strict";if(!f.hasOwnProperty(a))throw Error("Extension named "+a+" is not registered!");return f[a]}function b(a,b){"use strict";if("object"!=typeof b)throw Error("A Showdown Extension must be an object, "+typeof b+" given");if(!d.helper.isString(b.type))throw Error('When registering a showdown extension, "type" must be a string, '+typeof b.type+" given");b.type=b.type.toLowerCase(),f[a]=b}function c(a,b){"use strict";var c=b.charCodeAt(0);return"~E"+c+"E"}var d={},e={},f={},g={omitExtraWLInCodeBlocks:!1,prefixHeaderId:!1};d.helper={},d.extensions={},d.setOption=function(a,b){"use strict";return g[a]=b,this},d.getOption=function(a){"use strict";return g[a]},d.getOptions=function(){"use strict";return g},d.subParser=function(a,b){"use strict";if(d.helper.isString(a)){if("undefined"==typeof b){if(e.hasOwnProperty(a))return e[a];throw Error("SubParser named "+a+" not registered!")}e[a]=b}},d.extension=function(c,e){"use strict";if(!d.helper.isString(c))throw Error("Extension 'name' must be a string");return c=d.helper.stdExtName(c),d.helper.isUndefined(e)?a():b()},d.Converter=function(a){"use strict";function b(a){if(!a)return a;var b={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0,hashLinkCounts:{},langExtensions:h,outputModifiers:i};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n",a=e.detab(a,c,b),a=e.stripBlankLines(a,c,b),a=e.languageExtensions(a,c,b);for(var f=0;f-1))return a;m=""}else m=c.gUrls[l],d.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=d.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)}),d.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 c=d.subParser("unescapeSpecialChars")(b);return d.subParser("encodeEmailAddress")(c)})}),d.subParser("blockGamut",function(a,b,c){"use strict";a=d.subParser("headers")(a,b,c);var e=d.subParser("hashBlock")("
    ",b,c);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=d.subParser("lists")(a,b,c),a=d.subParser("codeBlocks")(a,b,c),a=d.subParser("blockQuotes")(a,b,c),a=d.subParser("hashHTMLBlocks")(a,b,c),a=d.subParser("paragraphs")(a,b,c)}),d.subParser("blockQuotes",function(a,b,c){"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=d.subParser("blockGamut")(f,b,c),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,"")}),d.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)})}),d.subParser("codeBlocks",function(a,b,c){"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;return g=d.subParser("outdent")(g),g=d.subParser("encodeCode")(g),g=d.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",d.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,"")}),d.subParser("codeSpans",function(a){"use strict";return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,e){var f=e;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=d.subParser("encodeCode")(f),b+""+f+""})}),d.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,"")}),d.subParser("encodeAmpsAndAngles",function(a){"use strict";return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),d.subParser("encodeBackslashEscapes",function(a){"use strict";return a=a.replace(/\\(\\)/g,d.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,d.helper.escapeCharactersCallback)}),d.subParser("encodeCode",function(a){"use strict";return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=d.helper.escapeCharacters(a,"*_{}[]\\",!1)}),d.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,'">')}),d.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=d.helper.escapeCharacters(b,"\\`*_",!1)})}),d.subParser("githubCodeBlocks",function(a,b,c){"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=d.subParser("encodeCode")(h),h=d.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",d.subParser("hashBlock")(h,b,c)}),a=a.replace(/~0/,"")}),d.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"}),d.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"}}),d.subParser("hashHTMLBlocks",function(a,b,c){"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,d.subParser("hashElement")(a,b,c)),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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,d.subParser("hashElement")(a,b,c)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/\n\n/g,"\n")}),d.subParser("headers",function(a,b,c){"use strict";function e(a){var b,e=a.replace(/[^\w]/g,"").toLowerCase();return c.hashLinkCounts[e]?b=e+"-"+c.hashLinkCounts[e]++:(b=e,c.hashLinkCounts[e]=1),f===!0&&(f="section"),d.helper.isString(f)?f+b:b}var f=b.prefixHeaderId;return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){var g=d.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return d.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){var g=d.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return d.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=d.subParser("spanGamut")(g,b,c),i="'+h+"";return d.subParser("hashBlock")(i,b,c)})}),d.subParser("images",function(a,b,c){"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=c.gUrls,p=c.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=d.helper.escapeCharacters(m,"*_",!1);var q=''+k+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,e)}),d.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")}),d.subParser("languageExtensions",function(a,b,c){"use strict";return d.helper.forEach(c.langExtensions,function(b){a=d.subParser("runExtension")(b,a)}),a}),d.subParser("lists",function(a,b,c){"use strict";var e=function(a){return c.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=d.subParser("outdent")(h,b,c);return e||i.search(/\n{2,}/)>-1?i=d.subParser("blockGamut")(i,b,c):(i=d.subParser("lists")(i,b,c),i=i.replace(/\n$/,""),i=d.subParser("spanGamut")(i,b,c)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),c.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.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/,"")}),d.subParser("outdent",function(a){"use strict";return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),d.subParser("outputModifiers",function(a,b,c){"use strict";return d.helper.forEach(c.outputModifiers,function(b){a=d.subParser("runExtension")(b,a)}),a}),d.subParser("paragraphs",function(a,b,c){"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=d.subParser("spanGamut")(i,b,c),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=c.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),d.subParser("runExtension",function(a,b){"use strict";if(a.regex){var c=new RegExp(a.regex,"g");return b.replace(c,a.replace)}return a.filter?a.filter(b):void 0}),d.subParser("spanGamut",function(a,b,c){"use strict";return a=d.subParser("codeSpans")(a,b,c),a=d.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=d.subParser("encodeBackslashEscapes")(a,b,c),a=d.subParser("images")(a,b,c),a=d.subParser("anchors")(a,b,c),a=d.subParser("autoLinks")(a,b,c),a=d.subParser("encodeAmpsAndAngles")(a,b,c),a=d.subParser("italicsAndBold")(a,b,c),a=a.replace(/ +\n/g,"
    \n")}),d.subParser("stripBlankLines",function(a){"use strict";return a.replace(/^[ \t]+$/gm,"")}),d.subParser("stripLinkDefinitions",function(a,b,c){"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(),c.gUrls[b]=d.subParser("encodeAmpsAndAngles")(e),f?f+g:(g&&(c.gTitles[b]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),d.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=d:"function"==typeof define&&define.amd?define("showdown",function(){"use strict";return d}):h.showdown=d}).call(this); +(function(){function a(a){"use strict";if(!f.hasOwnProperty(a))throw Error("Extension named "+a+" is not registered!");return f[a]}function b(a,b){"use strict";if("object"!=typeof b)throw Error("A Showdown Extension must be an object, "+typeof b+" given");if(!d.helper.isString(b.type))throw Error('When registering a showdown extension, "type" must be a string, '+typeof b.type+" given");b.type=b.type.toLowerCase(),f[a]=b}function c(a,b){"use strict";var c=b.charCodeAt(0);return"~E"+c+"E"}var d={},e={},f={},g={omitExtraWLInCodeBlocks:!1,prefixHeaderId:!1};d.helper={},d.extensions={},d.setOption=function(a,b){"use strict";return g[a]=b,this},d.getOption=function(a){"use strict";return g[a]},d.getOptions=function(){"use strict";return g},d.subParser=function(a,b){"use strict";if(d.helper.isString(a)){if("undefined"==typeof b){if(e.hasOwnProperty(a))return e[a];throw Error("SubParser named "+a+" not registered!")}e[a]=b}},d.extension=function(c,e){"use strict";if(!d.helper.isString(c))throw Error("Extension 'name' must be a string");return c=d.helper.stdExtName(c),d.helper.isUndefined(e)?a():b()},d.Converter=function(a){"use strict";function b(a){if(!a)return a;var b={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0,hashLinkCounts:{},langExtensions:h,outputModifiers:i};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n",a=e.detab(a,c,b),a=e.stripBlankLines(a,c,b),a=e.languageExtensions(a,c,b);for(var f=0;f-1))return a;m=""}else m=c.gUrls[l],d.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=d.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)}),d.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 c=d.subParser("unescapeSpecialChars")(b);return d.subParser("encodeEmailAddress")(c)})}),d.subParser("blockGamut",function(a,b,c){"use strict";a=d.subParser("headers")(a,b,c);var e=d.subParser("hashBlock")("
    ",b,c);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=d.subParser("lists")(a,b,c),a=d.subParser("codeBlocks")(a,b,c),a=d.subParser("blockQuotes")(a,b,c),a=d.subParser("hashHTMLBlocks")(a,b,c),a=d.subParser("paragraphs")(a,b,c)}),d.subParser("blockQuotes",function(a,b,c){"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=d.subParser("blockGamut")(f,b,c),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,"")}),d.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)})}),d.subParser("codeBlocks",function(a,b,c){"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;return g=d.subParser("outdent")(g),g=d.subParser("encodeCode")(g),g=d.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",d.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,"")}),d.subParser("codeSpans",function(a){"use strict";return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,e){var f=e;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=d.subParser("encodeCode")(f),b+""+f+""})}),d.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,"")}),d.subParser("encodeAmpsAndAngles",function(a){"use strict";return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),d.subParser("encodeBackslashEscapes",function(a){"use strict";return a=a.replace(/\\(\\)/g,d.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,d.helper.escapeCharactersCallback)}),d.subParser("encodeCode",function(a){"use strict";return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=d.helper.escapeCharacters(a,"*_{}[]\\",!1)}),d.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,'">')}),d.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=d.helper.escapeCharacters(b,"\\`*_",!1)})}),d.subParser("githubCodeBlocks",function(a,b,c){"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=d.subParser("encodeCode")(h),h=d.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",d.subParser("hashBlock")(h,b,c)}),a=a.replace(/~0/,"")}),d.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"}),d.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"}}),d.subParser("hashHTMLBlocks",function(a,b,c){"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,d.subParser("hashElement")(a,b,c)),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)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,d.subParser("hashElement")(a,b,c)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/\n\n/g,"\n")}),d.subParser("headers",function(a,b,c){"use strict";function e(a){var b,e=a.replace(/[^\w]/g,"").toLowerCase();return c.hashLinkCounts[e]?b=e+"-"+c.hashLinkCounts[e]++:(b=e,c.hashLinkCounts[e]=1),f===!0&&(f="section"),d.helper.isString(f)?f+b:b}var f=b.prefixHeaderId;return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){var g=d.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return d.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){var g=d.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return d.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=d.subParser("spanGamut")(g,b,c),i="'+h+"";return d.subParser("hashBlock")(i,b,c)})}),d.subParser("images",function(a,b,c){"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=c.gUrls,p=c.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=d.helper.escapeCharacters(m,"*_",!1);var q=''+k+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,e)}),d.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")}),d.subParser("languageExtensions",function(a,b,c){"use strict";return d.helper.forEach(c.langExtensions,function(b){a=d.subParser("runExtension")(b,a)}),a}),d.subParser("lists",function(a,b,c){"use strict";var e=function(a){return c.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=d.subParser("outdent")(h,b,c);return e||i.search(/\n{2,}/)>-1?i=d.subParser("blockGamut")(i,b,c):(i=d.subParser("lists")(i,b,c),i=i.replace(/\n$/,""),i=d.subParser("spanGamut")(i,b,c)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),c.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.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/,"")}),d.subParser("outdent",function(a){"use strict";return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),d.subParser("outputModifiers",function(a,b,c){"use strict";return d.helper.forEach(c.outputModifiers,function(b){a=d.subParser("runExtension")(b,a)}),a}),d.subParser("paragraphs",function(a,b,c){"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=d.subParser("spanGamut")(i,b,c),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=c.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),d.subParser("runExtension",function(a,b){"use strict";if(a.regex){var c=new RegExp(a.regex,"g");return b.replace(c,a.replace)}return a.filter?a.filter(b):void 0}),d.subParser("spanGamut",function(a,b,c){"use strict";return a=d.subParser("codeSpans")(a,b,c),a=d.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=d.subParser("encodeBackslashEscapes")(a,b,c),a=d.subParser("images")(a,b,c),a=d.subParser("anchors")(a,b,c),a=d.subParser("autoLinks")(a,b,c),a=d.subParser("encodeAmpsAndAngles")(a,b,c),a=d.subParser("italicsAndBold")(a,b,c),a=a.replace(/ +\n/g,"
    \n")}),d.subParser("stripBlankLines",function(a){"use strict";return a.replace(/^[ \t]+$/gm,"")}),d.subParser("stripLinkDefinitions",function(a,b,c){"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(),c.gUrls[b]=d.subParser("encodeAmpsAndAngles")(e),f?f+g:(g&&(c.gTitles[b]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),d.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=d:"function"==typeof define&&define.amd?define("showdown",function(){"use strict";return d}):h.showdown=d}).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 d1cefc67..2755ae61 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":["getExtension","name","extensions","hasOwnProperty","Error","setExtension","ext","showdown","helper","isString","type","toLowerCase","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","parsers","globalOptions","omitExtraWLInCodeBlocks","prefixHeaderId","setOption","key","value","this","getOption","getOptions","subParser","func","extension","stdExtName","isUndefined","Converter","converterOptions","makeHtml","text","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","hashLinkCounts","langExtensions","outputModifiers","replace","detab","options","stripBlankLines","languageExtensions","i","parserOrder","length","forEach","opt","plugin","pluginName","tPluginName","errMsg","self","push","a","String","obj","callback","isArray","constructor","Array","s","escapeCharacters","charsToEscape","afterBackslash","regexString","regex","RegExp","config","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","url","title","search","result","pattern","unescapedStr","bq","pre","codeblock","nextChar","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","language","end","blockText","headerId","m","escapedId","prefixHeader","spanGamut","hashBlock","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","split","grafsOut","str","$1","join","re","filter","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":["getExtension","name","extensions","hasOwnProperty","Error","setExtension","ext","showdown","helper","isString","type","toLowerCase","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charCodeAt","parsers","globalOptions","omitExtraWLInCodeBlocks","prefixHeaderId","setOption","key","value","this","getOption","getOptions","subParser","func","extension","stdExtName","isUndefined","Converter","converterOptions","makeHtml","text","globals","gHtmlBlocks","gUrls","gTitles","gListLevel","hashLinkCounts","langExtensions","outputModifiers","replace","detab","options","stripBlankLines","languageExtensions","i","parserOrder","length","forEach","opt","self","plugin","pluginName","tPluginName","errMsg","push","a","String","obj","callback","isArray","constructor","Array","s","escapeCharacters","charsToEscape","afterBackslash","regexString","regex","RegExp","config","writeAnchorTag","m2","m3","m4","m5","m6","m7","linkText","linkId","url","title","search","result","pattern","unescapedStr","bq","pre","codeblock","nextChar","c","leadingText","numSpaces","addr","encode","ch","toString","Math","floor","random","r","tag","language","end","blockText","headerId","m","escapedId","prefixHeader","spanGamut","hashBlock","matchFound","span","header","writeImageTag","altText","processListItems","listStr","item","wholeList","list","listType","grafs","split","grafsOut","str","$1","join","re","filter","charCodeToReplace","parseInt","fromCharCode","root","module","exports","define","amd","call"],"mappings":";;CACA,WAkGA,QAASA,GAAaC,GACpB,YAEA,KAAKC,EAAWC,eAAeF,GAC7B,KAAMG,OAAM,mBAAqBH,EAAO,sBAE1C,OAAOC,GAAWD,GAGpB,QAASI,GAAaJ,EAAMK,GAC1B,YAEA,IAAmB,gBAARA,GACT,KAAMF,OAAM,iDAAoDE,GAAM,SAGxE,KAAKC,EAASC,OAAOC,SAASH,EAAII,MAChC,KAAMN,OAAM,yEAA4EE,GAAII,KAAO,SAGrGJ,GAAII,KAAOJ,EAAII,KAAKC,cAEpBT,EAAWD,GAAQK,EAuOrB,QAASM,GAAyBC,EAAYC,GAC5C,YACA,IAAIC,GAAmBD,EAAGE,WAAW,EACrC,OAAO,KAAOD,EAAmB,IA5VnC,GAAIR,MACAU,KACAf,KACAgB,GACEC,yBAAyB,EACzBC,gBAAyB,EAO/Bb,GAASC,UAGTD,EAASL,cASTK,EAASc,UAAY,SAAUC,EAAKC,GAClC,YAEA,OADAL,GAAcI,GAAOC,EACdC,MASTjB,EAASkB,UAAY,SAAUH,GAC7B,YACA,OAAOJ,GAAcI,IAQvBf,EAASmB,WAAa,WACpB,YACA,OAAOR,IAaTX,EAASoB,UAAY,SAAU1B,EAAM2B,GACnC,YACA,IAAIrB,EAASC,OAAOC,SAASR,GAAO,CAClC,GAAoB,mBAAT2B,GAEJ,CACL,GAAIX,EAAQd,eAAeF,GACzB,MAAOgB,GAAQhB,EAEf,MAAMG,OAAM,mBAAqBH,EAAO,oBAL1CgB,EAAQhB,GAAQ2B,IAWtBrB,EAASsB,UAAY,SAAU5B,EAAMK,GACnC,YAEA,KAAKC,EAASC,OAAOC,SAASR,GAC5B,KAAMG,OAAM,oCAKd,OAFAH,GAAOM,EAASC,OAAOsB,WAAW7B,GAE9BM,EAASC,OAAOuB,YAAYzB,GACvBN,IAEAK,KAmCXE,EAASyB,UAAY,SAAUC,GAC7B,YAkFA,SAASC,GAASC,GAGhB,IAAKA,EACH,MAAOA,EAGT,IAAIC,IACFC,eACAC,SACAC,WACAC,WAAiB,EACjBC,kBACAC,eAAiBA,EACjBC,gBAAiBA,EAOnBR,GAAOA,EAAKS,QAAQ,KAAM,MAK1BT,EAAOA,EAAKS,QAAQ,MAAO,MAG3BT,EAAOA,EAAKS,QAAQ,QAAS,MAC7BT,EAAOA,EAAKS,QAAQ,MAAO,MAG3BT,EAAO,OAASA,EAAO,OAGvBA,EAAOlB,EAAQ4B,MAAMV,EAAMW,EAASV,GAGpCD,EAAOlB,EAAQ8B,gBAAgBZ,EAAMW,EAASV,GAG9CD,EAAOlB,EAAQ+B,mBAAmBb,EAAMW,EAASV,EAGjD,KAAK,GAAIa,GAAI,EAAGA,EAAIC,EAAYC,SAAUF,EAAG,CAC3C,GAAIhD,GAAOiD,EAAYD,EACvBd,GAAOlB,EAAQhB,GAAMkC,EAAMW,EAASV,GAetC,MAXAD,GAAOA,EAAKS,QAAQ,MAAO,MAG3BT,EAAOA,EAAKS,QAAQ,MAAO,KAG3BrC,EAASC,OAAO4C,QAAQhB,EAAQO,gBAAiB,SAAUrC,GACzD6B,EAAO5B,EAASoB,UAAU,gBAAgBrB,EAAK6B,KAEjDA,EAAOlB,EAAQ0B,gBAAgBR,EAAMW,EAASV,GA5IhDH,EAAmBA,KAEnB,IAAIa,GAAU5B,EACVwB,KACAC,KACAO,GACE,mBACA,iBACA,uBACA,aACA,uBAIN,IAAgC,gBAArBjB,GACT,IAAK,GAAIoB,KAAOpB,GACVA,EAAiB9B,eAAekD,KAClCP,EAAQO,GAAOpB,EAAiBoB,GAUtC,IAAIC,GAAO9B,IAsHX,OArHA8B,GAAKpB,SAAWA,EAGZY,EAAQ5C,YAGVK,EAASC,OAAO4C,QAAQN,EAAQ5C,WAAY,SAAUqD,GACpD,GAAIC,GAAaD,CAGjB,IAAsB,gBAAXA,GAAqB,CAC9B,GAAIE,GAAclD,EAASC,OAAOsB,WAAWyB,IAExChD,EAASC,OAAOuB,YAAYxB,EAASL,WAAWuD,KAAiBlD,EAASL,WAAWuD,GAExFF,EAAShD,EAASL,WAAWuD,GAEnBlD,EAASC,OAAOuB,YAAY7B,EAAWuD,MACjDF,EAASrD,EAAWuD,IAIxB,GAAsB,kBAAXF,GAeJ,CACL,GAAIG,GAAS,wFAIb,MAH0B,gBAAfF,KACTE,EAAS,cAAgBF,EAAa,gFAElCE,EAlBNnD,EAASC,OAAO4C,QAAQG,EAAOD,GAAO,SAAUhD,GAE1CA,EAAII,KACW,aAAbJ,EAAII,MAAoC,SAAbJ,EAAII,KACjCgC,EAAeiB,KAAKrD,IACE,WAAbA,EAAII,MAAkC,SAAbJ,EAAII,OACtCiC,EAAgBgB,KAAKrD,GAIvBqC,EAAgBgB,KAAKrD,QAoF7B4B,SAAUA,IAQT3B,EAASJ,eAAe,YAC3BI,EAASC,WASXD,EAASC,OAAOC,SAAW,SAAkBmD,GAC3C,YACA,OAAqB,gBAANA,IAAkBA,YAAaC,SAShDtD,EAASC,OAAO4C,QAAU,SAAiBU,EAAKC,GAC9C,YACA,IAA2B,kBAAhBD,GAAIV,QACbU,EAAIV,QAAQW,OAEZ,KAAK,GAAId,GAAI,EAAGA,EAAIa,EAAIX,OAAQF,IAC9Bc,EAASD,EAAIb,GAAIA,EAAGa,IAW1BvD,EAASC,OAAOwD,QAAU,SAAiBJ,GACzC,YACA,OAAOA,GAAEK,cAAgBC,OAS3B3D,EAASC,OAAOuB,YAAc,SAAqBR,GACjD,YACA,OAAwB,mBAAVA,IAShBhB,EAASC,OAAOsB,WAAa,SAAUqC,GACrC,YACA,OAAOA,GAAEvB,QAAQ,YAAa,IAAIjC,eAgBpCJ,EAASC,OAAOI,yBAA2BA,EAU3CL,EAASC,OAAO4D,iBAAmB,SAA0BjC,EAAMkC,EAAeC,GAChF,YAGA,IAAIC,GAAc,KAAOF,EAAczB,QAAQ,cAAe,QAAU,IAEpE0B,KACFC,EAAc,OAASA,EAGzB,IAAIC,GAAQ,GAAIC,QAAOF,EAAa,IAGpC,OAFApC,GAAOA,EAAKS,QAAQ4B,EAAO5D,IAQ7BL,EAASoB,UAAU,UAAW,SAAUQ,EAAMuC,EAAQtC,GACpD,YAEA,IAAIuC,GAAiB,SAAU9D,EAAYC,EAAI8D,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAC7D1E,EAASC,OAAOuB,YAAYkD,KAC9BA,EAAK,IAEPpE,EAAaC,CACb,IAAIoE,GAAWN,EACXO,EAASN,EAAGlE,cACZyE,EAAMN,EACNO,EAAQJ,CAEZ,KAAKG,EAOH,GANKD,IAEHA,EAASD,EAASvE,cAAciC,QAAQ,QAAS,MAEnDwC,EAAM,IAAMD,EAEP5E,EAASC,OAAOuB,YAAYK,EAAQE,MAAM6C,IAKxC,CACL,KAAItE,EAAWyE,OAAO,aAAe,IAInC,MAAOzE,EAFPuE,GAAM,OAPRA,GAAMhD,EAAQE,MAAM6C,GACf5E,EAASC,OAAOuB,YAAYK,EAAQG,QAAQ4C,MAC/CE,EAAQjD,EAAQG,QAAQ4C,GAY9BC,GAAM7E,EAASC,OAAO4D,iBAAiBgB,EAAK,MAAM,EAClD,IAAIG,GAAS,YAAcH,EAAM,GAUjC,OARc,KAAVC,GAA0B,OAAVA,IAClBA,EAAQA,EAAMzC,QAAQ,KAAM,UAC5ByC,EAAQ9E,EAASC,OAAO4D,iBAAiBiB,EAAO,MAAM,GACtDE,GAAU,WAAaF,EAAQ,KAGjCE,GAAU,IAAML,EAAW,OAiF7B,OArDA/C,GAAOA,EAAKS,QAAQ,mEAAoE+B,GAiCxFxC,EAAOA,EAAKS,QAAQ,mGACA+B,GAiBpBxC,EAAOA,EAAKS,QAAQ,8BAA+B+B,KAMrDpE,EAASoB,UAAU,YAAa,SAAUQ,GACxC,YAEAA,GAAOA,EAAKS,QAAQ,oCAAqC,sBAgBzD,IAAI4C,GAAU,8DAMd,OALArD,GAAOA,EAAKS,QAAQ4C,EAAS,SAAU3E,EAAYC,GACjD,GAAI2E,GAAelF,EAASoB,UAAU,wBAAwBb,EAC9D,OAAOP,GAASoB,UAAU,sBAAsB8D,OAWpDlF,EAASoB,UAAU,aAAc,SAAUQ,EAAMW,EAASV,GACxD,YAEAD,GAAO5B,EAASoB,UAAU,WAAWQ,EAAMW,EAASV,EAGpD,IAAId,GAAMf,EAASoB,UAAU,aAAa,SAAUmB,EAASV,EAgB7D,OAfAD,GAAOA,EAAKS,QAAQ,qCAAsCtB,GAC1Da,EAAOA,EAAKS,QAAQ,qCAAsCtB,GAC1Da,EAAOA,EAAKS,QAAQ,qCAAsCtB,GAE1Da,EAAO5B,EAASoB,UAAU,SAASQ,EAAMW,EAASV,GAClDD,EAAO5B,EAASoB,UAAU,cAAcQ,EAAMW,EAASV,GACvDD,EAAO5B,EAASoB,UAAU,eAAeQ,EAAMW,EAASV,GAMxDD,EAAO5B,EAASoB,UAAU,kBAAkBQ,EAAMW,EAASV,GAC3DD,EAAO5B,EAASoB,UAAU,cAAcQ,EAAMW,EAASV,KAMzD7B,EAASoB,UAAU,cAAe,SAAUQ,EAAMW,EAASV,GACzD,YAwCA,OAzBAD,GAAOA,EAAKS,QAAQ,sCAAuC,SAAU/B,EAAYC,GAC/E,GAAI4E,GAAK5E,CAsBT,OAlBA4E,GAAKA,EAAG9C,QAAQ,mBAAoB,MAGpC8C,EAAKA,EAAG9C,QAAQ,MAAO,IAEvB8C,EAAKA,EAAG9C,QAAQ,aAAc,IAC9B8C,EAAKnF,EAASoB,UAAU,cAAc+D,EAAI5C,EAASV,GAEnDsD,EAAKA,EAAG9C,QAAQ,UAAW,QAE3B8C,EAAKA,EAAG9C,QAAQ,6BAA8B,SAAU/B,EAAYC,GAClE,GAAI6E,GAAM7E,CAIV,OAFA6E,GAAMA,EAAI/C,QAAQ,QAAS,MAC3B+C,EAAMA,EAAI/C,QAAQ,MAAO,MAIpBrC,EAASoB,UAAU,aAAa,iBAAmB+D,EAAK,kBAAmB5C,EAASV,OAQ/F7B,EAASoB,UAAU,aAAc,SAAUQ,EAAMW,EAASV,GACxD,YAgBAD,IAAQ,IAER,IAAIqD,GAAU,kEAkBd,OAjBArD,GAAOA,EAAKS,QAAQ4C,EAAS,SAAU3E,EAAYC,EAAI8D,GACrD,GAAIgB,GAAY9E,EAAI+E,EAAWjB,CAU/B,OARAgB,GAAYrF,EAASoB,UAAU,WAAWiE,GAC1CA,EAAYrF,EAASoB,UAAU,cAAciE,GAC7CA,EAAYrF,EAASoB,UAAU,SAASiE,GACxCA,EAAYA,EAAUhD,QAAQ,QAAS,IACvCgD,EAAYA,EAAUhD,QAAQ,QAAS,IAEvCgD,EAAY,cAAgBA,EAAY,kBAEjCrF,EAASoB,UAAU,aAAaiE,EAAW9C,EAASV,GAAWyD,IAIxE1D,EAAOA,EAAKS,QAAQ,KAAM,MA8B5BrC,EAASoB,UAAU,YAAa,SAAUQ,GACxC,YAuBA,OARAA,GAAOA,EAAKS,QAAQ,sCAAuC,SAAU/B,EAAYC,EAAI8D,EAAIC,GACvF,GAAIiB,GAAIjB,CAIR,OAHAiB,GAAIA,EAAElD,QAAQ,aAAc,IAC5BkD,EAAIA,EAAElD,QAAQ,WAAY,IAC1BkD,EAAIvF,EAASoB,UAAU,cAAcmE,GAC9BhF,EAAK,SAAWgF,EAAI,cAU/BvF,EAASoB,UAAU,QAAS,SAAUQ,GACpC,YAyBA,OAtBAA,GAAOA,EAAKS,QAAQ,YAAa,QAGjCT,EAAOA,EAAKS,QAAQ,MAAO,QAG3BT,EAAOA,EAAKS,QAAQ,aAAc,SAAU/B,EAAYC,GAKtD,IAAK,GAJDiF,GAAcjF,EACdkF,EAAY,EAAID,EAAY5C,OAAS,EAGhCF,EAAI,EAAO+C,EAAJ/C,EAAeA,IAC7B8C,GAAe,GAGjB,OAAOA,KAIT5D,EAAOA,EAAKS,QAAQ,MAAO,QAC3BT,EAAOA,EAAKS,QAAQ,MAAO,MAS7BrC,EAASoB,UAAU,sBAAuB,SAAUQ,GAClD,YAQA,OALAA,GAAOA,EAAKS,QAAQ,qCAAsC,SAG1DT,EAAOA,EAAKS,QAAQ,qBAAsB,UAgB5CrC,EAASoB,UAAU,yBAA0B,SAAUQ,GACrD,YAGA,OAFAA,GAAOA,EAAKS,QAAQ,UAAWrC,EAASC,OAAOI,0BAC/CuB,EAAOA,EAAKS,QAAQ,2BAA4BrC,EAASC,OAAOI,4BASlEL,EAASoB,UAAU,aAAc,SAAUQ,GACzC,YAoBA,OAhBAA,GAAOA,EAAKS,QAAQ,KAAM,SAG1BT,EAAOA,EAAKS,QAAQ,KAAM,QAC1BT,EAAOA,EAAKS,QAAQ,KAAM,QAG1BT,EAAO5B,EAASC,OAAO4D,iBAAiBjC,EAAM,YAAY,KA2B5D5B,EAASoB,UAAU,qBAAsB,SAAUsE,GACjD,YAEA,IAAIC,IACF,SAAUC,GACR,MAAO,KAAOA,EAAGnF,WAAW,GAAK,KAEnC,SAAUmF,GACR,MAAO,MAAQA,EAAGnF,WAAW,GAAGoF,SAAS,IAAM,KAEjD,SAAUD,GACR,MAAOA,IAwBX,OApBAF,GAAO,UAAYA,EAEnBA,EAAOA,EAAKrD,QAAQ,KAAM,SAAUuD,GAClC,GAAW,MAAPA,EAEFA,EAAKD,EAAOG,KAAKC,MAAsB,EAAhBD,KAAKE,WAAeJ,OACtC,IAAW,MAAPA,EAAY,CAErB,GAAIK,GAAIH,KAAKE,QAEbJ,GACEK,EAAI,GAAMN,EAAO,GAAGC,GAAMK,EAAI,IAAON,EAAO,GAAGC,GAAMD,EAAO,GAAGC,GAGnE,MAAOA,KAGTF,EAAO,YAAcA,EAAO,KAAOA,EAAO,OAC1CA,EAAOA,EAAKrD,QAAQ,SAAU,QAShCrC,EAASoB,UAAU,wCAAyC,SAAUQ,GACpE,YAIA,IAAIqC,GAAQ,2DAQZ,OANArC,GAAOA,EAAKS,QAAQ4B,EAAO,SAAU3D,GACnC,GAAI4F,GAAM5F,EAAW+B,QAAQ,qBAAsB,MAEnD,OADA6D,GAAMlG,EAASC,OAAO4D,iBAAiBqC,EAAK,SAAS,OAiBzDlG,EAASoB,UAAU,mBAAoB,SAAUQ,EAAMW,EAASV,GAC9D,YA0BA,OAxBAD,IAAQ,KAERA,EAAOA,EAAKS,QAAQ,oCAAqC,SAAU/B,EAAYC,EAAI8D,GACjF,GAAI8B,GAAW5F,EACX8E,EAAYhB,EACZ+B,EAAM,IAaV,OAXI7D,GAAQ3B,0BACVwF,EAAM,IAGRf,EAAYrF,EAASoB,UAAU,cAAciE,GAC7CA,EAAYrF,EAASoB,UAAU,SAASiE,GACxCA,EAAYA,EAAUhD,QAAQ,QAAS,IACvCgD,EAAYA,EAAUhD,QAAQ,QAAS,IAEvCgD,EAAY,cAAgBc,EAAW,WAAaA,EAAW,IAAM,IAAM,IAAMd,EAAYe,EAAM,gBAE5FpG,EAASoB,UAAU,aAAaiE,EAAW9C,EAASV,KAI7DD,EAAOA,EAAKS,QAAQ,KAAM,MAM5BrC,EAASoB,UAAU,YAAa,SAAUQ,EAAMW,EAASV,GACvD,YAEA,OADAD,GAAOA,EAAKS,QAAQ,eAAgB,IAC7B,UAAYR,EAAQC,YAAYsB,KAAKxB,GAAQ,GAAK,UAG3D5B,EAASoB,UAAU,cAAe,SAAUQ,EAAMW,EAASV,GACzD,YAEA,OAAO,UAAUvB,EAAYC,GAC3B,GAAI8F,GAAY9F,CAYhB,OATA8F,GAAYA,EAAUhE,QAAQ,QAAS,MACvCgE,EAAYA,EAAUhE,QAAQ,MAAO,IAGrCgE,EAAYA,EAAUhE,QAAQ,QAAS,IAGvCgE,EAAY,UAAYxE,EAAQC,YAAYsB,KAAKiD,GAAa,GAAK,WAMvErG,EAASoB,UAAU,iBAAkB,SAAUQ,EAAMW,EAASV,GAC5D,YAiIA,OA9HAD,GAAOA,EAAKS,QAAQ,MAAO,QAwC3BT,EAAOA,EAAKS,QAAQ,qIACArC,EAASoB,UAAU,eAAeQ,EAAMW,EAASV,IAoBrED,EAAOA,EAAKS,QAAQ,2KACArC,EAASoB,UAAU,eAAeQ,EAAMW,EAASV,IAmBrED,EAAOA,EAAKS,QAAQ,sDACArC,EAASoB,UAAU,eAAeQ,EAAMW,EAASV,IAiBrED,EAAOA,EAAKS,QAAQ,sDACArC,EAASoB,UAAU,eAAeQ,EAAMW,EAASV,IAqBrED,EAAOA,EAAKS,QAAQ,2DACArC,EAASoB,UAAU,eAAeQ,EAAMW,EAASV,IAGrED,EAAOA,EAAKS,QAAQ,QAAS,QAK/BrC,EAASoB,UAAU,UAAW,SAAUQ,EAAMW,EAASV,GACrD,YAiDA,SAASyE,GAASC,GAChB,GAAIzB,GAAO0B,EAAYD,EAAElE,QAAQ,SAAU,IAAIjC,aAc/C,OAZIyB,GAAQK,eAAesE,GACzB1B,EAAQ0B,EAAY,IAAO3E,EAAQK,eAAesE,MAElD1B,EAAQ0B,EACR3E,EAAQK,eAAesE,GAAa,GAIlCC,KAAiB,IACnBA,EAAe,WAGbzG,EAASC,OAAOC,SAASuG,GACpBA,EAAe3B,EAEjBA,EAjET,GAAI2B,GAAelE,EAAQ1B,cAoE3B,OA3DAe,GAAOA,EAAKS,QAAQ,6BAA8B,SAAU/B,EAAYC,GACtE,GAAImG,GAAY1G,EAASoB,UAAU,aAAab,EAAIgC,EAASV,GACzD8E,EAAY,WAAaL,EAAS/F,GAAM,KAAOmG,EAAY,OAC/D,OAAO1G,GAASoB,UAAU,aAAauF,EAAWpE,EAASV,KAG7DD,EAAOA,EAAKS,QAAQ,6BAA8B,SAAUuE,EAAYrG,GACtE,GAAImG,GAAY1G,EAASoB,UAAU,aAAab,EAAIgC,EAASV,GACzD8E,EAAY,WAAaL,EAAS/F,GAAM,KAAOmG,EAAY,OAC/D,OAAO1G,GAASoB,UAAU,aAAauF,EAAWpE,EAASV,KAsB7DD,EAAOA,EAAKS,QAAQ,sCAAuC,SAAU/B,EAAYC,EAAI8D,GACnF,GAAIwC,GAAO7G,EAASoB,UAAU,aAAaiD,EAAI9B,EAASV,GACpDiF,EAAS,KAAOvG,EAAGqC,OAAS,QAAU0D,EAASjC,GAAM,KAAOwC,EAAO,MAAQtG,EAAGqC,OAAS,GAE3F,OAAO5C,GAASoB,UAAU,aAAa0F,EAAQvE,EAASV,OA8B5D7B,EAASoB,UAAU,SAAU,SAAUQ,EAAMW,EAASV,GACpD,YAEA,IAAIkF,GAAgB,SAAUzG,EAAYC,EAAI8D,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAEhEpE,EAAaC,CACb,IAAIyG,GAAU3C,EACVO,EAASN,EAAGlE,cACZyE,EAAMN,EACNO,EAAQJ,EACR3C,EAAQF,EAAQE,MAChBC,EAAUH,EAAQG,OAMtB,IAJK8C,IACHA,EAAQ,IAGE,KAARD,GAAsB,OAARA,EAAc,CAO9B,IANe,KAAXD,GAA4B,OAAXA,KAEnBA,EAASoC,EAAQ5G,cAAciC,QAAQ,QAAS,MAElDwC,EAAM,IAAMD,EAEiB,mBAAlB7C,GAAM6C,GAMf,MAAOtE,EALPuE,GAAM9C,EAAM6C,GACmB,mBAApB5C,GAAQ4C,KACjBE,EAAQ9C,EAAQ4C,IAOtBoC,EAAUA,EAAQ3E,QAAQ,KAAM,UAChCwC,EAAM7E,EAASC,OAAO4D,iBAAiBgB,EAAK,MAAM,EAClD,IAAIG,GAAS,aAAeH,EAAM,UAAYmC,EAAU,GAaxD,OAPAlC,GAAQA,EAAMzC,QAAQ,KAAM,UAC5ByC,EAAQ9E,EAASC,OAAO4D,iBAAiBiB,EAAO,MAAM,GACtDE,GAAU,WAAaF,EAAQ,IAG/BE,GAAU,MAkDZ,OA5BApD,GAAOA,EAAKS,QAAQ,gDAAiD0E,GA0BrEnF,EAAOA,EAAKS,QAAQ,qEAAsE0E,KAK5F/G,EAASoB,UAAU,iBAAkB,SAAUQ,GAC7C,YAMA,OAJAA,GAAOA,EAAKS,QAAQ,qCAAsC,uBAE1DT,EAAOA,EAAKS,QAAQ,6BAA8B,iBAQpDrC,EAASoB,UAAU,qBAAsB,SAAUQ,EAAMuC,EAAQtC,GAC/D,YAKA,OAHA7B,GAASC,OAAO4C,QAAQhB,EAAQM,eAAgB,SAAUpC,GACxD6B,EAAO5B,EAASoB,UAAU,gBAAgBrB,EAAK6B,KAE1CA,IAMT5B,EAASoB,UAAU,QAAS,SAAUQ,EAAMW,EAASV,GACnD,YAQA,IAAIoF,GAAmB,SAAUC,GA6D/B,MAvCArF,GAAQI,aAGRiF,EAAUA,EAAQ7E,QAAQ,UAAW,MAGrC6E,GAAW,KAYXA,EAAUA,EAAQ7E,QAAQ,2FACA,SAAU/B,EAAYC,EAAI8D,EAAIC,EAAIC,GAChC,GAAI4C,GAAOnH,EAASoB,UAAU,WAAWmD,EAAIhC,EAASV,EAYtD,OATItB,IAAO4G,EAAKpC,OAAO,UAAY,GACjCoC,EAAOnH,EAASoB,UAAU,cAAc+F,EAAM5E,EAASV,IAGvDsF,EAAOnH,EAASoB,UAAU,SAAS+F,EAAM5E,EAASV,GAClDsF,EAAOA,EAAK9E,QAAQ,MAAO,IAC3B8E,EAAOnH,EAASoB,UAAU,aAAa+F,EAAM5E,EAASV,IAGjD,OAASsF,EAAO,YAInDD,EAAUA,EAAQ7E,QAAQ,MAAO,IAEjCR,EAAQI,aACDiF,EAKTtF,IAAQ,IAyBR,IAAIwF,GAAY,6FAuChB,OArCIvF,GAAQI,WACVL,EAAOA,EAAKS,QAAQ+E,EAAW,SAAU9G,EAAYC,EAAI8D,GACvD,GAAIgD,GAAO9G,EACP+G,EAAYjD,EAAGU,OAAO,UAAY,GAAM,KAAO,IAInDsC,GAAOA,EAAKhF,QAAQ,UAAW,SAE/B,IAAI2C,GAASiC,EAAiBI,EAQ9B,OAFArC,GAASA,EAAO3C,QAAQ,OAAQ,IAChC2C,EAAS,IAAMsC,EAAW,IAAMtC,EAAS,KAAOsC,EAAW,SAI7DF,EAAY,uGAEZxF,EAAOA,EAAKS,QAAQ+E,EAAW,SAAU9G,EAAYC,EAAI8D,EAAIC,GAI3D,GAAI+C,GAAOhD,EAAGhC,QAAQ,UAAW,UAC7BiF,EAAYhD,EAAGS,OAAO,UAAY,GAAM,KAAO,KAC/CC,EAASiC,EAAiBI,EAE9B,OAAO9G,GAAK,IAAM+G,EAAW,MAAQtC,EAAS,KAAOsC,EAAW,SAKpE1F,EAAOA,EAAKS,QAAQ,KAAM,MAQ5BrC,EAASoB,UAAU,UAAW,SAAUQ,GACtC,YASA,OALAA,GAAOA,EAAKS,QAAQ,mBAAoB,MAGxCT,EAAOA,EAAKS,QAAQ,MAAO,MAQ7BrC,EAASoB,UAAU,kBAAmB,SAAUQ,EAAMuC,EAAQtC,GAC5D,YAKA,OAHA7B,GAASC,OAAO4C,QAAQhB,EAAQO,gBAAiB,SAAUrC,GACzD6B,EAAO5B,EAASoB,UAAU,gBAAgBrB,EAAK6B,KAE1CA,IAMT5B,EAASoB,UAAU,aAAc,SAAUQ,EAAMW,EAASV,GACxD,YAGAD,GAAOA,EAAKS,QAAQ,QAAS,IAC7BT,EAAOA,EAAKS,QAAQ,QAAS,GAM7B,KAAK,GAJDkF,GAAQ3F,EAAK4F,MAAM,WACnBC,KACArB,EAAMmB,EAAM3E,OAEPF,EAAI,EAAO0D,EAAJ1D,EAASA,IAAK,CAC5B,GAAIgF,GAAMH,EAAM7E,EAGZgF,GAAI3C,OAAO,cAAgB,EAC7B0C,EAASrE,KAAKsE,GACLA,EAAI3C,OAAO,OAAS,IAC7B2C,EAAM1H,EAASoB,UAAU,aAAasG,EAAKnF,EAASV,GACpD6F,EAAMA,EAAIrF,QAAQ,aAAc,OAChCqF,GAAO,OACPD,EAASrE,KAAKsE,IAMlB,IADAtB,EAAMqB,EAAS7E,OACVF,EAAI,EAAO0D,EAAJ1D,EAASA,IAEnB,KAAO+E,EAAS/E,GAAGqC,OAAO,aAAe,GAAG,CAC1C,GAAIsB,GAAYxE,EAAQC,YAAYoC,OAAOyD,GAC3CtB,GAAYA,EAAUhE,QAAQ,MAAO,QACrCoF,EAAS/E,GAAK+E,EAAS/E,GAAGL,QAAQ,SAAUgE,GAIhD,MAAOoB,GAASG,KAAK,UAMvB5H,EAASoB,UAAU,eAAgB,SAAUrB,EAAK6B,GAChD,YAEA,IAAI7B,EAAIkE,MAAO,CACb,GAAI4D,GAAK,GAAI3D,QAAOnE,EAAIkE,MAAO,IAC/B,OAAOrC,GAAKS,QAAQwF,EAAI9H,EAAIsC,SACvB,MAAItC,GAAI+H,OACN/H,EAAI+H,OAAOlG,GADb,SAST5B,EAASoB,UAAU,YAAa,SAAUQ,EAAMW,EAASV,GACvD,YAqBA,OAnBAD,GAAO5B,EAASoB,UAAU,aAAaQ,EAAMW,EAASV,GACtDD,EAAO5B,EAASoB,UAAU,yCAAyCQ,EAAMW,EAASV,GAClFD,EAAO5B,EAASoB,UAAU,0BAA0BQ,EAAMW,EAASV,GAInED,EAAO5B,EAASoB,UAAU,UAAUQ,EAAMW,EAASV,GACnDD,EAAO5B,EAASoB,UAAU,WAAWQ,EAAMW,EAASV,GAKpDD,EAAO5B,EAASoB,UAAU,aAAaQ,EAAMW,EAASV,GACtDD,EAAO5B,EAASoB,UAAU,uBAAuBQ,EAAMW,EAASV,GAChED,EAAO5B,EAASoB,UAAU,kBAAkBQ,EAAMW,EAASV,GAG3DD,EAAOA,EAAKS,QAAQ,SAAU,eAYhCrC,EAASoB,UAAU,kBAAmB,SAAUQ,GAC9C,YACA,OAAOA,GAAKS,QAAQ,aAAc,MA4BpCrC,EAASoB,UAAU,uBAAwB,SAAUQ,EAAMW,EAASV,GAClE,YAEA,IAAIoC,GAAQ,wGAwBZ,OArBArC,IAAQ,KAERA,EAAOA,EAAKS,QAAQ4B,EAAO,SAAU3D,EAAYC,EAAI8D,EAAIC,EAAIC,GAG3D,MAFAhE,GAAKA,EAAGH,cACRyB,EAAQE,MAAMxB,GAAMP,EAASoB,UAAU,uBAAuBiD,GAC1DC,EAGKA,EAAKC,GAEHA,IACT1C,EAAQG,QAAQzB,GAAMgE,EAAGlC,QAAQ,KAAM,WAIlC,MAITT,EAAOA,EAAKS,QAAQ,KAAM,MAQ5BrC,EAASoB,UAAU,uBAAwB,SAAUQ,GACnD,YAMA,OAJAA,GAAOA,EAAKS,QAAQ,YAAa,SAAU/B,EAAYC,GACrD,GAAIwH,GAAoBC,SAASzH,EACjC,OAAO+C,QAAO2E,aAAaF,MAK/B,IAAIG,GAAOjH,IAGW,oBAAXkH,SAA0BA,OAAOC,QAC1CD,OAAOC,QAAUpI,EAGU,kBAAXqI,SAAyBA,OAAOC,IAChDD,OAAO,WAAY,WACjB,YACA,OAAOrI,KAKTkI,EAAKlI,SAAWA,IAEfuI,KAAKtH"} \ No newline at end of file diff --git a/src/showdown.js b/src/showdown.js index 6f20f9cd..56a9f483 100644 --- a/src/showdown.js +++ b/src/showdown.js @@ -151,6 +151,14 @@ showdown.Converter = function (converterOptions) { } } + // This is a dirty workaround to maintain backwards extension compatibility + // We define a self var (which is a copy of this) and inject the makeHtml function + // directly to it. This ensures a full converter object is available when iterating over extensions + // We should rewrite the extension loading mechanism and use some kind of interface or decorator pattern + // and inject the object reference there instead. + var self = this; + self.makeHtml = makeHtml; + // Parse options if (options.extensions) { From 3ecf9c4f8e7d89de2fdfc87ad7a3671a062ba3a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Wed, 13 May 2015 22:36:25 +0100 Subject: [PATCH 31/34] chore(): remove angular from core package --- dist/showdown.js | 2 +- dist/showdown.min.js | 2 +- src/angular.js | 146 ------------------------------------------- 3 files changed, 2 insertions(+), 148 deletions(-) delete mode 100644 src/angular.js diff --git a/dist/showdown.js b/dist/showdown.js index c88587bf..28ccafe5 100644 --- a/dist/showdown.js +++ b/dist/showdown.js @@ -1,4 +1,4 @@ -;/*! showdown 23-04-2015 */ +;/*! showdown 13-05-2015 */ (function(){ /** * Created by Tivie on 06-01-2015. diff --git a/dist/showdown.min.js b/dist/showdown.min.js index 5f33dd90..1425b959 100644 --- a/dist/showdown.min.js +++ b/dist/showdown.min.js @@ -1,4 +1,4 @@ -/*! showdown 23-04-2015 */ +/*! showdown 13-05-2015 */ (function(){function a(a){"use strict";if(!f.hasOwnProperty(a))throw Error("Extension named "+a+" is not registered!");return f[a]}function b(a,b){"use strict";if("object"!=typeof b)throw Error("A Showdown Extension must be an object, "+typeof b+" given");if(!d.helper.isString(b.type))throw Error('When registering a showdown extension, "type" must be a string, '+typeof b.type+" given");b.type=b.type.toLowerCase(),f[a]=b}function c(a,b){"use strict";var c=b.charCodeAt(0);return"~E"+c+"E"}var d={},e={},f={},g={omitExtraWLInCodeBlocks:!1,prefixHeaderId:!1};d.helper={},d.extensions={},d.setOption=function(a,b){"use strict";return g[a]=b,this},d.getOption=function(a){"use strict";return g[a]},d.getOptions=function(){"use strict";return g},d.subParser=function(a,b){"use strict";if(d.helper.isString(a)){if("undefined"==typeof b){if(e.hasOwnProperty(a))return e[a];throw Error("SubParser named "+a+" not registered!")}e[a]=b}},d.extension=function(c,e){"use strict";if(!d.helper.isString(c))throw Error("Extension 'name' must be a string");return c=d.helper.stdExtName(c),d.helper.isUndefined(e)?a():b()},d.Converter=function(a){"use strict";function b(a){if(!a)return a;var b={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0,hashLinkCounts:{},langExtensions:h,outputModifiers:i};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n",a=e.detab(a,c,b),a=e.stripBlankLines(a,c,b),a=e.languageExtensions(a,c,b);for(var f=0;f-1))return a;m=""}else m=c.gUrls[l],d.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=d.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)}),d.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 c=d.subParser("unescapeSpecialChars")(b);return d.subParser("encodeEmailAddress")(c)})}),d.subParser("blockGamut",function(a,b,c){"use strict";a=d.subParser("headers")(a,b,c);var e=d.subParser("hashBlock")("
    ",b,c);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=d.subParser("lists")(a,b,c),a=d.subParser("codeBlocks")(a,b,c),a=d.subParser("blockQuotes")(a,b,c),a=d.subParser("hashHTMLBlocks")(a,b,c),a=d.subParser("paragraphs")(a,b,c)}),d.subParser("blockQuotes",function(a,b,c){"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=d.subParser("blockGamut")(f,b,c),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,"")}),d.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)})}),d.subParser("codeBlocks",function(a,b,c){"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;return g=d.subParser("outdent")(g),g=d.subParser("encodeCode")(g),g=d.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",d.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,"")}),d.subParser("codeSpans",function(a){"use strict";return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,e){var f=e;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=d.subParser("encodeCode")(f),b+""+f+""})}),d.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,"")}),d.subParser("encodeAmpsAndAngles",function(a){"use strict";return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),d.subParser("encodeBackslashEscapes",function(a){"use strict";return a=a.replace(/\\(\\)/g,d.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,d.helper.escapeCharactersCallback)}),d.subParser("encodeCode",function(a){"use strict";return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=d.helper.escapeCharacters(a,"*_{}[]\\",!1)}),d.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,'">')}),d.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=d.helper.escapeCharacters(b,"\\`*_",!1)})}),d.subParser("githubCodeBlocks",function(a,b,c){"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=d.subParser("encodeCode")(h),h=d.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",d.subParser("hashBlock")(h,b,c)}),a=a.replace(/~0/,"")}),d.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"}),d.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"}}),d.subParser("hashHTMLBlocks",function(a,b,c){"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,d.subParser("hashElement")(a,b,c)),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,d.subParser("hashElement")(a,b,c)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/\n\n/g,"\n")}),d.subParser("headers",function(a,b,c){"use strict";function e(a){var b,e=a.replace(/[^\w]/g,"").toLowerCase();return c.hashLinkCounts[e]?b=e+"-"+c.hashLinkCounts[e]++:(b=e,c.hashLinkCounts[e]=1),f===!0&&(f="section"),d.helper.isString(f)?f+b:b}var f=b.prefixHeaderId;return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){var g=d.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return d.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){var g=d.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return d.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=d.subParser("spanGamut")(g,b,c),i="'+h+"";return d.subParser("hashBlock")(i,b,c)})}),d.subParser("images",function(a,b,c){"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=c.gUrls,p=c.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=d.helper.escapeCharacters(m,"*_",!1);var q=''+k+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,e)}),d.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")}),d.subParser("languageExtensions",function(a,b,c){"use strict";return d.helper.forEach(c.langExtensions,function(b){a=d.subParser("runExtension")(b,a)}),a}),d.subParser("lists",function(a,b,c){"use strict";var e=function(a){return c.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=d.subParser("outdent")(h,b,c);return e||i.search(/\n{2,}/)>-1?i=d.subParser("blockGamut")(i,b,c):(i=d.subParser("lists")(i,b,c),i=i.replace(/\n$/,""),i=d.subParser("spanGamut")(i,b,c)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),c.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.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/,"")}),d.subParser("outdent",function(a){"use strict";return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),d.subParser("outputModifiers",function(a,b,c){"use strict";return d.helper.forEach(c.outputModifiers,function(b){a=d.subParser("runExtension")(b,a)}),a}),d.subParser("paragraphs",function(a,b,c){"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=d.subParser("spanGamut")(i,b,c),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=c.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),d.subParser("runExtension",function(a,b){"use strict";if(a.regex){var c=new RegExp(a.regex,"g");return b.replace(c,a.replace)}return a.filter?a.filter(b):void 0}),d.subParser("spanGamut",function(a,b,c){"use strict";return a=d.subParser("codeSpans")(a,b,c),a=d.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=d.subParser("encodeBackslashEscapes")(a,b,c),a=d.subParser("images")(a,b,c),a=d.subParser("anchors")(a,b,c),a=d.subParser("autoLinks")(a,b,c),a=d.subParser("encodeAmpsAndAngles")(a,b,c),a=d.subParser("italicsAndBold")(a,b,c),a=a.replace(/ +\n/g,"
    \n")}),d.subParser("stripBlankLines",function(a){"use strict";return a.replace(/^[ \t]+$/gm,"")}),d.subParser("stripLinkDefinitions",function(a,b,c){"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(),c.gUrls[b]=d.subParser("encodeAmpsAndAngles")(e),f?f+g:(g&&(c.gTitles[b]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),d.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=d:"function"==typeof define&&define.amd?define("showdown",function(){"use strict";return d}):h.showdown=d}).call(this); //# sourceMappingURL=showdown.min.js.map \ No newline at end of file diff --git a/src/angular.js b/src/angular.js deleted file mode 100644 index 46220f1a..00000000 --- a/src/angular.js +++ /dev/null @@ -1,146 +0,0 @@ -//Check if AngularJs and Showdown is defined and only load ng-Showdown if both are present -if (typeof angular !== 'undefined' && typeof showdown !== 'undefined') { - - (function (module, showdown) { - 'use strict'; - - module - .provider('$showdown', provider) - .directive('sdModelToHtml', ['$showdown', markdownToHtmlDirective]) - .filter('sdStripHtml', stripHtmlFilter); - - /** - * Angular Provider - * Enables configuration of showdown via angular.config and Dependency Injection into controllers, views - * directives, etc... This assures the directives and filters provided by the library itself stay consistent - * with the user configurations. - * If the user wants to use a different configuration in a determined context, he can use the "classic" Showdown - * object instead. - */ - function provider() { - - // Configuration parameters for Showdown - var config = { - extensions: [], - stripHtml: true - }; - - /** - * Sets a configuration option - * - * @param {string} key Config parameter key - * @param {string} value Config parameter value - */ - /* jshint validthis: true */ - this.setOption = function (key, value) { - config[key] = value; - - return this; - }; - - /** - * Gets the value of the configuration parameter specified by key - * - * @param {string} key The config parameter key - * @returns {string|null} Returns the value of the config parameter. (or null if the config parameter is not set) - */ - this.getOption = function (key) { - if (config.hasOwnProperty(key)) { - return config.key; - } else { - return null; - } - }; - - /** - * Loads a Showdown Extension - * - * @param {string} extensionName The name of the extension to load - */ - this.loadExtension = function (extensionName) { - config.extensions.push(extensionName); - - return this; - }; - - function SDObject() { - var converter = new showdown.Converter(config); - - /** - * Converts a markdown text into HTML - * - * @param {string} markdown The markdown string to be converted to HTML - * @returns {string} The converted HTML - */ - this.makeHtml = function (markdown) { - return converter.makeHtml(markdown); - }; - - /** - * Strips a text of it's HTML tags - * - * @param {string} text - * @returns {string} - */ - this.stripHtml = function (text) { - return String(text).replace(/<[^>]+>/gm, ''); - }; - } - - // The object returned by service provider - this.$get = function () { - return new SDObject(); - }; - } - - /** - * AngularJS Directive to Md to HTML transformation - * - * Usage example: - *
    - * - * @param {showdown.Converter} $showdown - * @returns {*} - */ - function markdownToHtmlDirective($showdown) { - - var link = function (scope, element) { - scope.$watch('model', function (newValue) { - var val; - if (typeof newValue === 'string') { - val = $showdown.makeHtml(newValue); - } else { - val = typeof newValue; - } - element.html(val); - }); - }; - - return { - restrict: 'A', - link: link, - scope: { - model: '=sdModelToHtml' - } - }; - } - - /** - * AngularJS Filter to Strip HTML tags from text - * - * @returns {Function} - */ - function stripHtmlFilter() { - return function (text) { - return String(text).replace(/<[^>]+>/gm, ''); - }; - } - - })(angular.module('showdown', []), showdown); - -} else { - - /** TODO Since this library is opt out, maybe we should not throw an error so we can concatenate this - script with the main lib */ - // throw new Error("ng-showdown was not loaded because one of it's dependencies (AngularJS or Showdown) wasn't met"); -} From 4b0bfa8b70270e1d0d3d34e02c10f4569f061c47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Wed, 13 May 2015 22:36:52 +0100 Subject: [PATCH 32/34] chore(package.json): update package.json --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 6a94dff3..73b73fe9 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "licenses": [ { "type": "BSD", - "url": "https://github.com/coreyti/showdown/raw/master/license.txt" + "url": "https://github.com/showdownjs/showdown/blob/master/license.txt" } ], "main": "./dist/showdown.js", @@ -36,7 +36,6 @@ "test": "mocha ./test/**/*.js" }, "devDependencies": { - "angular": "^1.3.2", "chai": "^1.10.0", "grunt": "^0.4.5", "grunt-contrib-concat": "^0.5.0", From f93c4956af7b653d2c1e94866d19b55d1e0deafd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Thu, 14 May 2015 01:59:33 +0100 Subject: [PATCH 33/34] Preparing 1.0.0-alpha1 release --- CHANGELOG.md | 30 ++++++++++++++++++++++++++++++ Gruntfile.js | 5 ++++- dist/showdown.js | 2 +- dist/showdown.js.map | 2 +- dist/showdown.min.js | 2 +- 5 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..60c67f38 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,30 @@ + +### 1.0.0-alpha1 (2015-05-13) + +#### Release Information +This is a major code refactor with some big changes such as: + - showdown.js file was split in several files, called sub-parsers. This should improve code maintainability. + - angular integration was removed from core and move to its own repository, similar to what was done with extensions + - A new extension registering system is on the "cooks" that should reduce errors when using extensions. The old mechanism + is kept so old extensions should be compatible. + +#### Bug Fixes + +* **extensions:** support for old extension loading mechanism ([95ed7c68](http://github.com/showdownjs/showdown/commit/95ed7c68)) +* **helpers:** fix wrong function call 'escapeCharacters' due to old strayed code ([18ba4e75](http://github.com/showdownjs/showdown/commit/18ba4e75)) +* **showdown.js:** + - fix showdown extension loader ([a38c76d2](http://github.com/showdownjs/showdown/commit/a38c76d2)), + closes [#50](http://github.com/showdownjs/showdown/issues/50),[#56](http://github.com/showdownjs/showdown/issues/56), + [#104](http://github.com/showdownjs/showdown/issues/104), [#108](http://github.com/showdownjs/showdown/issues/108), + [#109](http://github.com/showdownjs/showdown/issues/109), [#111](http://github.com/showdownjs/showdown/issues/111), + [#118](http://github.com/showdownjs/showdown/issues/118), [#122](http://github.com/showdownjs/showdown/issues/122) + - add unique id prefix and suffix to headers ([c367a4b9](http://github.com/showdownjs/showdown/commit/c367a4b9), closes [#81](http://github.com/showdownjs/showdown/issues/81), [#82](http://github.com/showdownjs/showdown/issues/82)) + +#### Features + +* **registerExtension():** new extension loading mechanism. Now extensions can be registered using this function. +The system, however, is not final and will probably be changed until the final version([0fd10cb] (http://github.com/showdownjs/showdown/commit/0fd10cb)) +* **allowBlockIndents:** indented inline block elements can now be parsed as markdown ([f6326b84](http://github.com/showdownjs/showdown/commit/f6326b84)) + +#### Breaking Changes +* **angular:** angular integration was removed from core and now lives in it's own [repository](http://github.com/showdownjs/angular/). \ No newline at end of file diff --git a/Gruntfile.js b/Gruntfile.js index dae7eb48..980d1af0 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -54,7 +54,10 @@ module.exports = function (grunt) { } }, changelog: { - options: {} + options: { + repository: 'http://github.com/showdownjs/showdown', + dest: 'CHANGELOG.md' + } }, simplemocha: { node: { diff --git a/dist/showdown.js b/dist/showdown.js index 28ccafe5..4b2df7c8 100644 --- a/dist/showdown.js +++ b/dist/showdown.js @@ -1,4 +1,4 @@ -;/*! showdown 13-05-2015 */ +;/*! showdown 14-05-2015 */ (function(){ /** * Created by Tivie on 06-01-2015. diff --git a/dist/showdown.js.map b/dist/showdown.js.map index eab8e367..049006bc 100644 --- a/dist/showdown.js.map +++ b/dist/showdown.js.map @@ -1 +1 @@ -{"version":3,"sources":["..\\src\\showdown.js","..\\src\\helpers.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\\languageExtensions.js","..\\src\\subParsers\\lists.js","..\\src\\subParsers\\outdent.js","..\\src\\subParsers\\outputModifiers.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":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n extensions = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false,\r\n prefixHeaderId: false\r\n };\r\n\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n/**\r\n * Set a global option\r\n * @static\r\n * @param {string} key\r\n * @param {string} value\r\n * @returns {showdown}\r\n */\r\nshowdown.setOption = function (key, value) {\r\n 'use strict';\r\n globalOptions[key] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Get a global option\r\n * @static\r\n * @param {string} key\r\n * @returns {*}\r\n */\r\nshowdown.getOption = function (key) {\r\n 'use strict';\r\n return globalOptions[key];\r\n};\r\n\r\n/**\r\n * Get the global options\r\n * @static\r\n * @returns {{omitExtraWLInCodeBlocks: boolean, prefixHeaderId: boolean}}\r\n */\r\nshowdown.getOptions = function () {\r\n 'use strict';\r\n return globalOptions;\r\n};\r\n\r\n/**\r\n * Get or set a subParser\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @static\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n 'use strict';\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\nshowdown.extension = function (name, ext) {\r\n 'use strict';\r\n\r\n if (!showdown.helper.isString(name)) {\r\n throw Error('Extension \\'name\\' must be a string');\r\n }\r\n\r\n name = showdown.helper.stdExtName(name);\r\n\r\n if (showdown.helper.isUndefined(ext)) {\r\n return getExtension();\r\n } else {\r\n return setExtension();\r\n }\r\n};\r\n\r\nfunction getExtension(name) {\r\n 'use strict';\r\n\r\n if (!extensions.hasOwnProperty(name)) {\r\n throw Error('Extension named ' + name + ' is not registered!');\r\n }\r\n return extensions[name];\r\n}\r\n\r\nfunction setExtension(name, ext) {\r\n 'use strict';\r\n\r\n if (typeof ext !== 'object') {\r\n throw Error('A Showdown Extension must be an object, ' + typeof ext + ' given');\r\n }\r\n\r\n if (!showdown.helper.isString(ext.type)) {\r\n throw Error('When registering a showdown extension, \"type\" must be a string, ' + typeof ext.type + ' given');\r\n }\r\n\r\n ext.type = ext.type.toLowerCase();\r\n\r\n extensions[name] = ext;\r\n}\r\n\r\n/**\r\n * Showdown Converter class\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n 'use strict';\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n langExtensions = [],\r\n outputModifiers = [],\r\n parserOrder = [\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n // This is a dirty workaround to maintain backwards extension compatibility\r\n // We define a self var (which is a copy of this) and inject the makeHtml function\r\n // directly to it. This ensures a full converter object is available when iterating over extensions\r\n // We should rewrite the extension loading mechanism and use some kind of interface or decorator pattern\r\n // and inject the object reference there instead.\r\n var self = this;\r\n self.makeHtml = makeHtml;\r\n\r\n // Parse options\r\n if (options.extensions) {\r\n\r\n // Iterate over each plugin\r\n showdown.helper.forEach(options.extensions, function (plugin) {\r\n var pluginName = plugin;\r\n\r\n // Assume it's a bundled plugin if a string is given\r\n if (typeof plugin === 'string') {\r\n var tPluginName = showdown.helper.stdExtName(plugin);\r\n\r\n if (!showdown.helper.isUndefined(showdown.extensions[tPluginName]) && showdown.extensions[tPluginName]) {\r\n //Trigger some kind of deprecated alert\r\n plugin = showdown.extensions[tPluginName];\r\n\r\n } else if (!showdown.helper.isUndefined(extensions[tPluginName])) {\r\n plugin = extensions[tPluginName];\r\n }\r\n }\r\n\r\n if (typeof plugin === 'function') {\r\n // Iterate over each extension within that plugin\r\n showdown.helper.forEach(plugin(self), function (ext) {\r\n // Sort extensions by type\r\n if (ext.type) {\r\n if (ext.type === 'language' || ext.type === 'lang') {\r\n langExtensions.push(ext);\r\n } else if (ext.type === 'output' || ext.type === 'html') {\r\n outputModifiers.push(ext);\r\n }\r\n } else {\r\n // Assume language extension\r\n outputModifiers.push(ext);\r\n }\r\n });\r\n } else {\r\n var errMsg = 'An extension could not be loaded. It was either not found or is not a valid extension.';\r\n if (typeof pluginName === 'string') {\r\n errMsg = 'Extension \"' + pluginName + '\" could not be loaded. It was either not found or is not a valid extension.';\r\n }\r\n throw errMsg;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Converts a markdown string into HTML\r\n * @param {string} text\r\n * @returns {*}\r\n */\r\n function makeHtml(text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0,\r\n hashLinkCounts: {},\r\n langExtensions: langExtensions,\r\n outputModifiers: outputModifiers\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // detab\r\n text = parsers.detab(text, options, globals);\r\n\r\n // stripBlankLines\r\n text = parsers.stripBlankLines(text, options, globals);\r\n\r\n //run languageExtensions\r\n text = parsers.languageExtensions(text, options, globals);\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n showdown.helper.forEach(globals.outputModifiers, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\r\n });\r\n text = parsers.outputModifiers(text, options, globals);\r\n\r\n return text;\r\n }\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\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 * 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, nextChar = m2;\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 whitespace\r\n\r\n    codeblock = '
    ' + codeblock + '\\n
    ';\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) {\r\n 'use strict';\r\n\r\n var prefixHeader = options.prefixHeaderId;\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm, function (wholeMatch, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm, function (matchFound, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm, function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n var title, escapedId = m.replace(/[^\\w]/g, '').toLowerCase();\r\n\r\n if (globals.hashLinkCounts[escapedId]) {\r\n title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);\r\n } else {\r\n title = escapedId;\r\n globals.hashLinkCounts[escapedId] = 1;\r\n }\r\n\r\n // Prefix id to prevent causing inadvertent pre-existing style matches.\r\n if (prefixHeader === true) {\r\n prefixHeader = 'section';\r\n }\r\n\r\n if (showdown.helper.isString(prefixHeader)) {\r\n return prefixHeader + title;\r\n }\r\n return title;\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n } else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_', false);\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\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 * Run language extensions\r\n */\r\nshowdown.subParser('languageExtensions', function (text, config, globals) {\r\n 'use strict';\r\n\r\n showdown.helper.forEach(globals.langExtensions, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\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 * Run language extensions\r\n */\r\nshowdown.subParser('outputModifiers', function (text, config, globals) {\r\n 'use strict';\r\n\r\n showdown.helper.forEach(globals.outputModifiers, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\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 language extensions\r\n */\r\nshowdown.subParser('runExtension', function (ext, text) {\r\n 'use strict';\r\n\r\n if (ext.regex) {\r\n var re = new RegExp(ext.regex, 'g');\r\n return text.replace(re, ext.replace);\r\n } else if (ext.filter) {\r\n return ext.filter(text);\r\n }\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","/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var regex = /^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm;\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(regex, function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * 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/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/languageExtensions.js","../src/subParsers/lists.js","../src/subParsers/outdent.js","../src/subParsers/outputModifiers.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":["/**\r\n * Created by Tivie on 06-01-2015.\r\n */\r\n\r\n// Private properties\r\nvar showdown = {},\r\n parsers = {},\r\n extensions = {},\r\n globalOptions = {\r\n omitExtraWLInCodeBlocks: false,\r\n prefixHeaderId: false\r\n };\r\n\r\n/**\r\n * helper namespace\r\n * @type {{}}\r\n */\r\nshowdown.helper = {};\r\n\r\n// Public properties\r\nshowdown.extensions = {};\r\n\r\n/**\r\n * Set a global option\r\n * @static\r\n * @param {string} key\r\n * @param {string} value\r\n * @returns {showdown}\r\n */\r\nshowdown.setOption = function (key, value) {\r\n 'use strict';\r\n globalOptions[key] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Get a global option\r\n * @static\r\n * @param {string} key\r\n * @returns {*}\r\n */\r\nshowdown.getOption = function (key) {\r\n 'use strict';\r\n return globalOptions[key];\r\n};\r\n\r\n/**\r\n * Get the global options\r\n * @static\r\n * @returns {{omitExtraWLInCodeBlocks: boolean, prefixHeaderId: boolean}}\r\n */\r\nshowdown.getOptions = function () {\r\n 'use strict';\r\n return globalOptions;\r\n};\r\n\r\n/**\r\n * Get or set a subParser\r\n *\r\n * subParser(name) - Get a registered subParser\r\n * subParser(name, func) - Register a subParser\r\n * @static\r\n * @param {string} name\r\n * @param {function} [func]\r\n * @returns {*}\r\n */\r\nshowdown.subParser = function (name, func) {\r\n 'use strict';\r\n if (showdown.helper.isString(name)) {\r\n if (typeof func !== 'undefined') {\r\n parsers[name] = func;\r\n } else {\r\n if (parsers.hasOwnProperty(name)) {\r\n return parsers[name];\r\n } else {\r\n throw Error('SubParser named ' + name + ' not registered!');\r\n }\r\n }\r\n }\r\n};\r\n\r\nshowdown.extension = function (name, ext) {\r\n 'use strict';\r\n\r\n if (!showdown.helper.isString(name)) {\r\n throw Error('Extension \\'name\\' must be a string');\r\n }\r\n\r\n name = showdown.helper.stdExtName(name);\r\n\r\n if (showdown.helper.isUndefined(ext)) {\r\n return getExtension();\r\n } else {\r\n return setExtension();\r\n }\r\n};\r\n\r\nfunction getExtension(name) {\r\n 'use strict';\r\n\r\n if (!extensions.hasOwnProperty(name)) {\r\n throw Error('Extension named ' + name + ' is not registered!');\r\n }\r\n return extensions[name];\r\n}\r\n\r\nfunction setExtension(name, ext) {\r\n 'use strict';\r\n\r\n if (typeof ext !== 'object') {\r\n throw Error('A Showdown Extension must be an object, ' + typeof ext + ' given');\r\n }\r\n\r\n if (!showdown.helper.isString(ext.type)) {\r\n throw Error('When registering a showdown extension, \"type\" must be a string, ' + typeof ext.type + ' given');\r\n }\r\n\r\n ext.type = ext.type.toLowerCase();\r\n\r\n extensions[name] = ext;\r\n}\r\n\r\n/**\r\n * Showdown Converter class\r\n *\r\n * @param {object} [converterOptions]\r\n * @returns {{makeHtml: Function}}\r\n */\r\nshowdown.Converter = function (converterOptions) {\r\n 'use strict';\r\n\r\n converterOptions = converterOptions || {};\r\n\r\n var options = globalOptions,\r\n langExtensions = [],\r\n outputModifiers = [],\r\n parserOrder = [\r\n 'githubCodeBlocks',\r\n 'hashHTMLBlocks',\r\n 'stripLinkDefinitions',\r\n 'blockGamut',\r\n 'unescapeSpecialChars'\r\n ];\r\n\r\n // Merge options\r\n if (typeof converterOptions === 'object') {\r\n for (var opt in converterOptions) {\r\n if (converterOptions.hasOwnProperty(opt)) {\r\n options[opt] = converterOptions[opt];\r\n }\r\n }\r\n }\r\n\r\n // This is a dirty workaround to maintain backwards extension compatibility\r\n // We define a self var (which is a copy of this) and inject the makeHtml function\r\n // directly to it. This ensures a full converter object is available when iterating over extensions\r\n // We should rewrite the extension loading mechanism and use some kind of interface or decorator pattern\r\n // and inject the object reference there instead.\r\n var self = this;\r\n self.makeHtml = makeHtml;\r\n\r\n // Parse options\r\n if (options.extensions) {\r\n\r\n // Iterate over each plugin\r\n showdown.helper.forEach(options.extensions, function (plugin) {\r\n var pluginName = plugin;\r\n\r\n // Assume it's a bundled plugin if a string is given\r\n if (typeof plugin === 'string') {\r\n var tPluginName = showdown.helper.stdExtName(plugin);\r\n\r\n if (!showdown.helper.isUndefined(showdown.extensions[tPluginName]) && showdown.extensions[tPluginName]) {\r\n //Trigger some kind of deprecated alert\r\n plugin = showdown.extensions[tPluginName];\r\n\r\n } else if (!showdown.helper.isUndefined(extensions[tPluginName])) {\r\n plugin = extensions[tPluginName];\r\n }\r\n }\r\n\r\n if (typeof plugin === 'function') {\r\n // Iterate over each extension within that plugin\r\n showdown.helper.forEach(plugin(self), function (ext) {\r\n // Sort extensions by type\r\n if (ext.type) {\r\n if (ext.type === 'language' || ext.type === 'lang') {\r\n langExtensions.push(ext);\r\n } else if (ext.type === 'output' || ext.type === 'html') {\r\n outputModifiers.push(ext);\r\n }\r\n } else {\r\n // Assume language extension\r\n outputModifiers.push(ext);\r\n }\r\n });\r\n } else {\r\n var errMsg = 'An extension could not be loaded. It was either not found or is not a valid extension.';\r\n if (typeof pluginName === 'string') {\r\n errMsg = 'Extension \"' + pluginName + '\" could not be loaded. It was either not found or is not a valid extension.';\r\n }\r\n throw errMsg;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Converts a markdown string into HTML\r\n * @param {string} text\r\n * @returns {*}\r\n */\r\n function makeHtml(text) {\r\n\r\n //check if text is not falsy\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n var globals = {\r\n gHtmlBlocks: [],\r\n gUrls: {},\r\n gTitles: {},\r\n gListLevel: 0,\r\n hashLinkCounts: {},\r\n langExtensions: langExtensions,\r\n outputModifiers: outputModifiers\r\n };\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitrary; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, '~T');\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, '~D');\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\r\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = '\\n\\n' + text + '\\n\\n';\r\n\r\n // detab\r\n text = parsers.detab(text, options, globals);\r\n\r\n // stripBlankLines\r\n text = parsers.stripBlankLines(text, options, globals);\r\n\r\n //run languageExtensions\r\n text = parsers.languageExtensions(text, options, globals);\r\n\r\n // Run all registered parsers\r\n for (var i = 0; i < parserOrder.length; ++i) {\r\n var name = parserOrder[i];\r\n text = parsers[name](text, options, globals);\r\n }\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, '$$');\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, '~');\r\n\r\n // Run output modifiers\r\n showdown.helper.forEach(globals.outputModifiers, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\r\n });\r\n text = parsers.outputModifiers(text, options, globals);\r\n\r\n return text;\r\n }\r\n\r\n return {\r\n makeHtml: makeHtml\r\n };\r\n};\r\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 * 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, nextChar = m2;\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 whitespace\r\n\r\n    codeblock = '
    ' + codeblock + '\\n
    ';\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) {\r\n 'use strict';\r\n\r\n var prefixHeader = options.prefixHeaderId;\r\n\r\n // Set text-style headers:\r\n //\tHeader 1\r\n //\t========\r\n //\r\n //\tHeader 2\r\n //\t--------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm, function (wholeMatch, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm, function (matchFound, m1) {\r\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\r\n hashBlock = '

    ' + spanGamut + '

    ';\r\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\r\n });\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6})\t\t\t\t// $1 = string of #'s\r\n [ \\t]*\r\n (.+?)\t\t\t\t\t// $2 = Header text\r\n [ \\t]*\r\n \\#*\t\t\t\t\t\t// optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm, function (wholeMatch, m1, m2) {\r\n var span = showdown.subParser('spanGamut')(m2, options, globals),\r\n header = '' + span + '';\r\n\r\n return showdown.subParser('hashBlock')(header, options, globals);\r\n });\r\n\r\n function headerId(m) {\r\n var title, escapedId = m.replace(/[^\\w]/g, '').toLowerCase();\r\n\r\n if (globals.hashLinkCounts[escapedId]) {\r\n title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);\r\n } else {\r\n title = escapedId;\r\n globals.hashLinkCounts[escapedId] = 1;\r\n }\r\n\r\n // Prefix id to prevent causing inadvertent pre-existing style matches.\r\n if (prefixHeader === true) {\r\n prefixHeader = 'section';\r\n }\r\n\r\n if (showdown.helper.isString(prefixHeader)) {\r\n return prefixHeader + title;\r\n }\r\n return title;\r\n }\r\n\r\n return text;\r\n});\r\n","/**\r\n * Turn Markdown image shortcuts into tags.\r\n */\r\nshowdown.subParser('images', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var writeImageTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n\r\n wholeMatch = m1;\r\n var altText = m2,\r\n linkId = m3.toLowerCase(),\r\n url = m4,\r\n title = m7,\r\n gUrls = globals.gUrls,\r\n gTitles = globals.gTitles;\r\n\r\n if (!title) {\r\n title = '';\r\n }\r\n\r\n if (url === '' || url === null) {\r\n if (linkId === '' || linkId === null) {\r\n // lower-case and turn embedded newlines into spaces\r\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\r\n }\r\n url = '#' + linkId;\r\n\r\n if (typeof gUrls[linkId] !== 'undefined') {\r\n url = gUrls[linkId];\r\n if (typeof gTitles[linkId] !== 'undefined') {\r\n title = gTitles[linkId];\r\n }\r\n } else {\r\n return wholeMatch;\r\n }\r\n }\r\n\r\n altText = altText.replace(/\"/g, '"');\r\n url = showdown.helper.escapeCharacters(url, '*_', false);\r\n var result = '\"'?\t\t\t// src url = $4\r\n [ \\t]*\r\n (\t\t\t\t\t// $5\r\n (['\"])\t\t\t// quote char = $6\r\n (.*?)\t\t\t// title = $7\r\n \\6\t\t\t\t// matching quote\r\n [ \\t]*\r\n )?\t\t\t\t\t// title is optional\r\n \\)\r\n )\r\n /g,writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n});\r\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 * Run language extensions\r\n */\r\nshowdown.subParser('languageExtensions', function (text, config, globals) {\r\n 'use strict';\r\n\r\n showdown.helper.forEach(globals.langExtensions, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\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 * Run language extensions\r\n */\r\nshowdown.subParser('outputModifiers', function (text, config, globals) {\r\n 'use strict';\r\n\r\n showdown.helper.forEach(globals.outputModifiers, function (ext) {\r\n text = showdown.subParser('runExtension')(ext, text);\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 language extensions\r\n */\r\nshowdown.subParser('runExtension', function (ext, text) {\r\n 'use strict';\r\n\r\n if (ext.regex) {\r\n var re = new RegExp(ext.regex, 'g');\r\n return text.replace(re, ext.replace);\r\n } else if (ext.filter) {\r\n return ext.filter(text);\r\n }\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","/**\r\n * Strips link definitions from text, stores the URLs and titles in\r\n * hash references.\r\n * Link defs are in the form: ^[id]: url \"optional title\"\r\n *\r\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n * [ \\t]*\r\n * \\n? // maybe *one* newline\r\n * [ \\t]*\r\n * ? // url = $2\r\n * [ \\t]*\r\n * \\n? // maybe one newline\r\n * [ \\t]*\r\n * (?:\r\n * (\\n*) // any lines skipped = $3 attacklab: lookbehind removed\r\n * [\"(]\r\n * (.+?) // title = $4\r\n * [\")]\r\n * [ \\t]*\r\n * )? // title is optional\r\n * (?:\\n+|$)\r\n * /gm,\r\n * function(){...});\r\n *\r\n */\r\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\r\n 'use strict';\r\n\r\n var regex = /^[ ]{0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+|(?=~0))/gm;\r\n\r\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n text += '~0';\r\n\r\n text = text.replace(regex, function (wholeMatch, m1, m2, m3, m4) {\r\n m1 = m1.toLowerCase();\r\n globals.gUrls[m1] = showdown.subParser('encodeAmpsAndAngles')(m2); // Link IDs are case-insensitive\r\n if (m3) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3 + m4;\r\n\r\n } else if (m4) {\r\n globals.gTitles[m1] = m4.replace(/\"/g, '"');\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return '';\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 * 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 1425b959..3ff36426 100644 --- a/dist/showdown.min.js +++ b/dist/showdown.min.js @@ -1,4 +1,4 @@ -/*! showdown 13-05-2015 */ +/*! showdown 14-05-2015 */ (function(){function a(a){"use strict";if(!f.hasOwnProperty(a))throw Error("Extension named "+a+" is not registered!");return f[a]}function b(a,b){"use strict";if("object"!=typeof b)throw Error("A Showdown Extension must be an object, "+typeof b+" given");if(!d.helper.isString(b.type))throw Error('When registering a showdown extension, "type" must be a string, '+typeof b.type+" given");b.type=b.type.toLowerCase(),f[a]=b}function c(a,b){"use strict";var c=b.charCodeAt(0);return"~E"+c+"E"}var d={},e={},f={},g={omitExtraWLInCodeBlocks:!1,prefixHeaderId:!1};d.helper={},d.extensions={},d.setOption=function(a,b){"use strict";return g[a]=b,this},d.getOption=function(a){"use strict";return g[a]},d.getOptions=function(){"use strict";return g},d.subParser=function(a,b){"use strict";if(d.helper.isString(a)){if("undefined"==typeof b){if(e.hasOwnProperty(a))return e[a];throw Error("SubParser named "+a+" not registered!")}e[a]=b}},d.extension=function(c,e){"use strict";if(!d.helper.isString(c))throw Error("Extension 'name' must be a string");return c=d.helper.stdExtName(c),d.helper.isUndefined(e)?a():b()},d.Converter=function(a){"use strict";function b(a){if(!a)return a;var b={gHtmlBlocks:[],gUrls:{},gTitles:{},gListLevel:0,hashLinkCounts:{},langExtensions:h,outputModifiers:i};a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n",a=e.detab(a,c,b),a=e.stripBlankLines(a,c,b),a=e.languageExtensions(a,c,b);for(var f=0;f-1))return a;m=""}else m=c.gUrls[l],d.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=d.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)}),d.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 c=d.subParser("unescapeSpecialChars")(b);return d.subParser("encodeEmailAddress")(c)})}),d.subParser("blockGamut",function(a,b,c){"use strict";a=d.subParser("headers")(a,b,c);var e=d.subParser("hashBlock")("
    ",b,c);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=d.subParser("lists")(a,b,c),a=d.subParser("codeBlocks")(a,b,c),a=d.subParser("blockQuotes")(a,b,c),a=d.subParser("hashHTMLBlocks")(a,b,c),a=d.subParser("paragraphs")(a,b,c)}),d.subParser("blockQuotes",function(a,b,c){"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=d.subParser("blockGamut")(f,b,c),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,"")}),d.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)})}),d.subParser("codeBlocks",function(a,b,c){"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;return g=d.subParser("outdent")(g),g=d.subParser("encodeCode")(g),g=d.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),g="
    "+g+"\n
    ",d.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,"")}),d.subParser("codeSpans",function(a){"use strict";return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,e){var f=e;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=d.subParser("encodeCode")(f),b+""+f+""})}),d.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,"")}),d.subParser("encodeAmpsAndAngles",function(a){"use strict";return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),d.subParser("encodeBackslashEscapes",function(a){"use strict";return a=a.replace(/\\(\\)/g,d.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,d.helper.escapeCharactersCallback)}),d.subParser("encodeCode",function(a){"use strict";return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=d.helper.escapeCharacters(a,"*_{}[]\\",!1)}),d.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,'">')}),d.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=d.helper.escapeCharacters(b,"\\`*_",!1)})}),d.subParser("githubCodeBlocks",function(a,b,c){"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=d.subParser("encodeCode")(h),h=d.subParser("detab")(h),h=h.replace(/^\n+/g,""),h=h.replace(/\n+$/g,""),h="
    "+h+i+"
    ",d.subParser("hashBlock")(h,b,c)}),a=a.replace(/~0/,"")}),d.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"}),d.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"}}),d.subParser("hashHTMLBlocks",function(a,b,c){"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,d.subParser("hashElement")(a,b,c)),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,d.subParser("hashElement")(a,b,c)),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/\n\n/g,"\n")}),d.subParser("headers",function(a,b,c){"use strict";function e(a){var b,e=a.replace(/[^\w]/g,"").toLowerCase();return c.hashLinkCounts[e]?b=e+"-"+c.hashLinkCounts[e]++:(b=e,c.hashLinkCounts[e]=1),f===!0&&(f="section"),d.helper.isString(f)?f+b:b}var f=b.prefixHeaderId;return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,f){var g=d.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return d.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,f){var g=d.subParser("spanGamut")(f,b,c),h='

    '+g+"

    ";return d.subParser("hashBlock")(h,b,c)}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,f,g){var h=d.subParser("spanGamut")(g,b,c),i="'+h+"";return d.subParser("hashBlock")(i,b,c)})}),d.subParser("images",function(a,b,c){"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=c.gUrls,p=c.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=d.helper.escapeCharacters(m,"*_",!1);var q=''+k+'?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,e)}),d.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")}),d.subParser("languageExtensions",function(a,b,c){"use strict";return d.helper.forEach(c.langExtensions,function(b){a=d.subParser("runExtension")(b,a)}),a}),d.subParser("lists",function(a,b,c){"use strict";var e=function(a){return c.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=d.subParser("outdent")(h,b,c);return e||i.search(/\n{2,}/)>-1?i=d.subParser("blockGamut")(i,b,c):(i=d.subParser("lists")(i,b,c),i=i.replace(/\n$/,""),i=d.subParser("spanGamut")(i,b,c)),"
  • "+i+"
  • \n"}),a=a.replace(/~0/g,""),c.gListLevel--,a};a+="~0";var f=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.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/,"")}),d.subParser("outdent",function(a){"use strict";return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),d.subParser("outputModifiers",function(a,b,c){"use strict";return d.helper.forEach(c.outputModifiers,function(b){a=d.subParser("runExtension")(b,a)}),a}),d.subParser("paragraphs",function(a,b,c){"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=d.subParser("spanGamut")(i,b,c),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=c.gHtmlBlocks[RegExp.$1];j=j.replace(/\$/g,"$$$$"),f[h]=f[h].replace(/~K\d+K/,j)}return f.join("\n\n")}),d.subParser("runExtension",function(a,b){"use strict";if(a.regex){var c=new RegExp(a.regex,"g");return b.replace(c,a.replace)}return a.filter?a.filter(b):void 0}),d.subParser("spanGamut",function(a,b,c){"use strict";return a=d.subParser("codeSpans")(a,b,c),a=d.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=d.subParser("encodeBackslashEscapes")(a,b,c),a=d.subParser("images")(a,b,c),a=d.subParser("anchors")(a,b,c),a=d.subParser("autoLinks")(a,b,c),a=d.subParser("encodeAmpsAndAngles")(a,b,c),a=d.subParser("italicsAndBold")(a,b,c),a=a.replace(/ +\n/g,"
    \n")}),d.subParser("stripBlankLines",function(a){"use strict";return a.replace(/^[ \t]+$/gm,"")}),d.subParser("stripLinkDefinitions",function(a,b,c){"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(),c.gUrls[b]=d.subParser("encodeAmpsAndAngles")(e),f?f+g:(g&&(c.gTitles[b]=g.replace(/"/g,""")),"")}),a=a.replace(/~0/,"")}),d.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=d:"function"==typeof define&&define.amd?define("showdown",function(){"use strict";return d}):h.showdown=d}).call(this); //# sourceMappingURL=showdown.min.js.map \ No newline at end of file From e6135c1410f62fe76c34670e7196e95928fa5415 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Estev=C3=A3o=20Soares=20dos=20Santos?= Date: Thu, 14 May 2015 02:47:13 +0100 Subject: [PATCH 34/34] chore(): Updated readme --- README.md | 167 +++++++++++++++++++++++------------------------------- 1 file changed, 71 insertions(+), 96 deletions(-) diff --git a/README.md b/README.md index 036de306..699b9043 100644 --- a/README.md +++ b/README.md @@ -1,92 +1,70 @@ -Showdown --------- +![Showdown](https://raw.githubusercontent.com/showdownjs/logo/master/dist/logo.readme.png) -A Markdown to HTML converter written in Javascript +[![Build Status](https://travis-ci.org/showdownjs/showdown.svg?branch=master)](https://travis-ci.org/showdownjs/showdown) -## Note +Showdown is a Javascript Markdown to HTML converter, based on the original works by John Gruber. Showdown can be used client side (in the browser) or server side (with NodeJs). - > Showdown is now maintained by the [showdownjs](https://github.com/showdownjs) organization on Github. - > - > The organization needs members to maintain Showdown. - > - > Please see [this issue](https://github.com/showdownjs/showdown/issues/114) to express interest or comment on this note. -## Original Attributions +## Installation -Showdown Copyright (c) 2007 John Fraser. - +### Download tarball -Original Markdown Copyright (c) 2004-2005 John Gruber - +You can download the latest release's tarball directly from https://github.com/showdownjs/showdown/releases -Redistributable under a BSD-style open source license. -See license.txt for more information. +### Bower -## Quick Example + bower install showdown -```js -var Showdown = require('showdown'); -var converter = new Showdown.converter(); +### npm (server-side) -converter.makeHtml('#hello markdown!'); + npm install showdown -//

    hello, markdown

    -``` -## What's it for? +## Browser Compatibility -Developers can use Showdown to: +Showdown has been tested successfully with: - * Add in-browser preview to existing Markdown apps + * Firefox 1.5 and 2.0 + * Internet Explorer 6 and 7 + * Safari 2.0.4 + * Opera 8.54 and 9.10 + * Netscape 8.1.2 + * Konqueror 3.5.4 - Showdown's output is (almost always) identical to - markdown.pl's, so the server can reproduce exactly - the output that the user saw. (See below for - exceptions.) +In theory, Showdown will work in any browser that supports ECMA 262 3rd Edition (JavaScript 1.5). The converter itself might even work in things that aren't web browsers, like Acrobat. No promises. - * Add Markdown input to programs that don't support it - Any app that accepts HTML input can now be made to speak - Markdown by modifying the input pages's HTML. If your - application lets users edit documents again later, - then they won't have access to the original Markdown - text. But this should be good enough for many - uses -- and you can do it with just a two-line - `onsubmit` function! +## Node compatibility - * Add Markdown input to closed-source web apps +Showdown has been tested with node 0.8 and 0.10. However, it should work with previous versions, such as node 0.6. - You can write bookmarklets or userscripts to extend - any standard textarea on the web so that it accepts - Markdown instead of HTML. With a little more hacking, - the same can probably be done with many rich edit - controls. - * Build new web apps from scratch +## Quick Example - A Showdown front-end can send back text in Markdown, - HTML or both, so you can trade bandwidth for server - load to reduce your cost of operation. If your app - requires JavaScript, you won't need to do any - Markdown processing on the server at all. (For most - uses, you'll still need to sanitize the HTML before - showing it to other users -- but you'd need to do - that anyway if you're allowing raw HTML in your - Markdown.) +### Node +```js +var showdown = require('showdown'), + converter = new showdown.Converter(), + text = '#hello, markdown!', + html = converter.makeHtml(text); +``` -## Browser Compatibility +### Browser -Showdown has been tested successfully with: +```js +var converter = new showdown.Converter(), + text = '#hello, markdown!', + html = converter.makeHtml(text); +``` - * Firefox 1.5 and 2.0 - * Internet Explorer 6 and 7 - * Safari 2.0.4 - * Opera 8.54 and 9.10 - * Netscape 8.1.2 - * Konqueror 3.5.4 +### Output -In theory, Showdown will work in any browser that supports ECMA 262 3rd Edition (JavaScript 1.5). The converter itself might even work in things that aren't web browsers, like Acrobat. No promises. +Both examples should output... + +```html +

    hello, markdown!

    +``` ## Extensions @@ -96,24 +74,32 @@ Showdown allows additional functionality to be loaded via extensions. ### Client-side Extension Usage ```js -