From c6d83e713df9864d704e2d12c3f62ff3be8535fd Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sun, 11 Jan 2015 23:06:53 -0800 Subject: Factored out normalizeURI into a single function in common.js. This way we can change it without changing four separate places in the code. --- js/lib/common.js | 9 ++++++++- js/lib/inlines.js | 13 +++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) (limited to 'js') diff --git a/js/lib/common.js b/js/lib/common.js index e7cc13b..0104e68 100644 --- a/js/lib/common.js +++ b/js/lib/common.js @@ -27,4 +27,11 @@ var unescapeString = function(s) { } }; -module.exports = { unescapeString: unescapeString }; +var normalizeURI = function(uri) { + "use strict"; + return encodeURI(unescape(uri)); +} + +module.exports = { unescapeString: unescapeString, + normalizeURI: normalizeURI + }; diff --git a/js/lib/inlines.js b/js/lib/inlines.js index 5e87074..440328a 100644 --- a/js/lib/inlines.js +++ b/js/lib/inlines.js @@ -1,6 +1,7 @@ var Node = require('./node'); -var unescapeString = require('./common').unescapeString; - +var common = require('./common'); +var normalizeURI = common.normalizeURI; +var unescapeString = common.unescapeString; var fromCodePoint = require('./from-code-point.js'); var entityToChar = require('./html5-entities.js').entityToChar; @@ -209,7 +210,7 @@ var parseAutolink = function(block) { if ((m = this.match(reEmailAutolink))) { dest = m.slice(1, -1); node = new Node('Link'); - node.destination = 'mailto:' + encodeURI(unescape(dest)); + node.destination = normalizeURI('mailto:' + dest); node.title = ''; node.appendChild(text(dest)); block.appendChild(node); @@ -217,7 +218,7 @@ var parseAutolink = function(block) { } else if ((m = this.match(reAutolink))) { dest = m.slice(1, -1); node = new Node('Link'); - node.destination = encodeURI(unescape(dest)); + node.destination = normalizeURI(dest); node.title = ''; node.appendChild(text(dest)); block.appendChild(node); @@ -446,11 +447,11 @@ var parseLinkDestination = function() { "use strict"; var res = this.match(reLinkDestinationBraces); if (res) { // chop off surrounding <..>: - return encodeURI(unescape(unescapeString(res.substr(1, res.length - 2)))); + return normalizeURI(unescapeString(res.substr(1, res.length - 2))); } else { res = this.match(reLinkDestination); if (res !== null) { - return encodeURI(unescape(unescapeString(res))); + return normalizeURI(unescapeString(res)); } else { return null; } -- cgit v1.2.3