diff --git a/src/angular.js b/src/angular.js index f652dbc..46220f1 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 c0000f5..1e82b87 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) { - 'use strict'; - return (typeof a === 'string' || a instanceof String); +if (!showdown.hasOwnProperty('helper')) { + showdown.helper = {}; } -function forEach(obj, callback) { +/** + * 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); +}; + +/** + * 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,25 +31,51 @@ function forEach(obj, callback) { callback(obj[i], i, obj); } } -} +}; -function isArray(a) { +/** + * isArray helper function + * @param {*} a + * @returns {boolean} + */ +showdown.helper.isArray = function isArray(a) { 'use strict'; return a.constructor === Array; -} +}; -function isUndefined(value) { +/** + * 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 = function isUndefined(value) { 'use strict'; return typeof value === 'undefined'; -} +}; -var escapeCharactersCallback = function (wholeMatch, m1) { +/** + * 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'; }; -var escapeCharacters = function (text, charsToEscape, afterBackslash) { +/** + * Escape characters in a string + * + * @param {string} text + * @param {string} charsToEscape + * @param {boolean} afterBackslash + * @returns {XML|string|void|*} + */ +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 @@ -50,55 +90,3 @@ var escapeCharacters = function (text, charsToEscape, afterBackslash) { 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 index 6fceaa5..255ed92 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 d54a674..6551384 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 a2feb9b..639ffa8 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 08ba0db..b3c6d65 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 370aff0..984cd2e 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 cbf4817..ee2cce2 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 9feb4f2..0ae9645 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 6a7b734..925b3cc 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 46dac21..a363f19 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 2bbaa6e..c59a2b0 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 ccd0c1a..3196f1d 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 6a836d7..7bf1291 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 013f4d6..27aa8b6 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 a4ab4c4..e723098 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 0367559..8c3d811 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 ef9e2ca..ddd223a 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 ae9ed09..d27db2e 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 dc2db8e..2fb1f42 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 2d9374b..0193c3d 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 42407dc..c507d5a 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 7e7dad4..754ddc5 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 4776d1f..1873f43 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 c12e6a1..cd74bfe 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,