From 9c436cebc16c01edbbcbed048d897c318e455e77 Mon Sep 17 00:00:00 2001 From: Vitaly Puzrin Date: Wed, 26 Nov 2014 23:01:37 +0300 Subject: [PATCH] Moved html escape helper to utils --- lib/common/utils.js | 37 ++++++++++++++++++++++++++++++++----- lib/renderer.js | 21 +-------------------- 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/lib/common/utils.js b/lib/common/utils.js index 855fe2b..47e7d4a 100644 --- a/lib/common/utils.js +++ b/lib/common/utils.js @@ -27,6 +27,7 @@ function assign(obj /*from1, from2, from3, ...*/) { return obj; } +//////////////////////////////////////////////////////////////////////////////// var UNESCAPE_MD_RE = /\\([\\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g; @@ -35,6 +36,8 @@ function unescapeMd(str) { return str.replace(UNESCAPE_MD_RE, '$1'); } +//////////////////////////////////////////////////////////////////////////////// + function isValidEntityCode(c) { /*eslint no-bitwise:0*/ // broken sequence @@ -91,10 +94,34 @@ function replaceEntities(str) { return str.replace(NAMED_ENTITY_RE, replaceEntityPattern); } +//////////////////////////////////////////////////////////////////////////////// + +var HTML_ESCAPE_TEST_RE = /[&<>"]/; +var HTML_ESCAPE_REPLACE_RE = /[&<>"]/g; +var HTML_REPLACEMENTS = { + '&': '&', + '<': '<', + '>': '>', + '"': '"' +}; + +function replaceUnsafeChar(ch) { + return HTML_REPLACEMENTS[ch]; +} + +function escapeHtml(str) { + if (HTML_ESCAPE_TEST_RE.test(str)) { + return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar); + } + return str; +} + +//////////////////////////////////////////////////////////////////////////////// -exports.assign = assign; -exports.isString = isString; -exports.unescapeMd = unescapeMd; +exports.assign = assign; +exports.isString = isString; +exports.unescapeMd = unescapeMd; exports.isValidEntityCode = isValidEntityCode; -exports.fromCodePoint = fromCodePoint; -exports.replaceEntities = replaceEntities; +exports.fromCodePoint = fromCodePoint; +exports.replaceEntities = replaceEntities; +exports.escapeHtml = escapeHtml; diff --git a/lib/renderer.js b/lib/renderer.js index f7b9ffa..1da33eb 100644 --- a/lib/renderer.js +++ b/lib/renderer.js @@ -4,31 +4,12 @@ var assign = require('./common/utils').assign; var unescapeMd = require('./common/utils').unescapeMd; var replaceEntities = require('./common/utils').replaceEntities; +var escapeHtml = require('./common/utils').escapeHtml; //////////////////////////////////////////////////////////////////////////////// // Helpers -var HTML_ESCAPE_TEST_RE = /[&<>"]/; -var HTML_ESCAPE_REPLACE_RE = /[&<>"]/g; -var HTML_REPLACEMENTS = { - '&': '&', - '<': '<', - '>': '>', - '"': '"' -}; - -function replaceUnsafeChar(ch) { - return HTML_REPLACEMENTS[ch]; -} - -function escapeHtml(str) { - if (HTML_ESCAPE_TEST_RE.test(str)) { - return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar); - } - return str; -} - function nextToken(tokens, idx) { if (++idx >= tokens.length - 2) { return idx; } if ((tokens[idx].type === 'paragraph_open' && tokens[idx].tight) &&