diff --git a/lib/common/entities.js b/lib/common/entities.js deleted file mode 100644 index c2e23e9..0000000 --- a/lib/common/entities.js +++ /dev/null @@ -1,6 +0,0 @@ -// HTML5 entities map: { name -> utf16string } -// -'use strict'; - -/*eslint quotes:0*/ -module.exports = require('entities/lib/maps/entities.json'); diff --git a/lib/common/utils.js b/lib/common/utils.js index f97bbc9..e1e433d 100644 --- a/lib/common/utils.js +++ b/lib/common/utils.js @@ -77,13 +77,14 @@ var UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, var DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i; -var entities = require('./entities'); +var decodeHTML = require('entities').decodeHTML; function replaceEntityPattern(match, name) { - var code; + var decoded, code; - if (has(entities, name)) { - return entities[name]; + decoded = decodeHTML(match); + if (decoded !== match) { + return decoded; } if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) { diff --git a/lib/rules_inline/entity.js b/lib/rules_inline/entity.js index 3a985ab..1ef5075 100644 --- a/lib/rules_inline/entity.js +++ b/lib/rules_inline/entity.js @@ -2,8 +2,7 @@ 'use strict'; -var entities = require('../common/entities'); -var has = require('../common/utils').has; +var decodeHTML = require('entities').decodeHTML; var isValidEntityCode = require('../common/utils').isValidEntityCode; var fromCodePoint = require('../common/utils').fromCodePoint; @@ -13,7 +12,7 @@ var NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i; module.exports = function entity(state, silent) { - var ch, code, match, token, pos = state.pos, max = state.posMax; + var ch, code, match, decoded, token, pos = state.pos, max = state.posMax; if (state.src.charCodeAt(pos) !== 0x26/* & */) return false; @@ -38,10 +37,11 @@ module.exports = function entity(state, silent) { } else { match = state.src.slice(pos).match(NAMED_RE); if (match) { - if (has(entities, match[1])) { + decoded = decodeHTML(match[0]); + if (decoded !== match[0]) { if (!silent) { token = state.push('text_special', '', 0); - token.content = entities[match[1]]; + token.content = decoded; token.markup = match[0]; token.info = 'entity'; } diff --git a/package.json b/package.json index 194439e..4a04af6 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ ], "dependencies": { "argparse": "^2.0.1", - "entities": "~3.0.1", + "entities": "^4.4.0", "linkify-it": "^4.0.1", "mdurl": "^1.0.1", "uc.micro": "^1.0.5"