summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--js/lib/common.js9
-rw-r--r--js/lib/inlines.js13
2 files changed, 15 insertions, 7 deletions
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;
}