aboutsummaryrefslogtreecommitdiff
path: root/node_modules/markdown-it/lib/common
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/markdown-it/lib/common')
-rw-r--r--node_modules/markdown-it/lib/common/entities.js6
-rw-r--r--node_modules/markdown-it/lib/common/html_blocks.js71
-rw-r--r--node_modules/markdown-it/lib/common/html_re.js28
-rw-r--r--node_modules/markdown-it/lib/common/utils.js275
4 files changed, 380 insertions, 0 deletions
diff --git a/node_modules/markdown-it/lib/common/entities.js b/node_modules/markdown-it/lib/common/entities.js
new file mode 100644
index 00000000..7380ae84
--- /dev/null
+++ b/node_modules/markdown-it/lib/common/entities.js
@@ -0,0 +1,6 @@
+// HTML5 entities map: { name -> utf16string }
+//
+'use strict';
+
+/*eslint quotes:0*/
+module.exports = require('entities/maps/entities.json');
diff --git a/node_modules/markdown-it/lib/common/html_blocks.js b/node_modules/markdown-it/lib/common/html_blocks.js
new file mode 100644
index 00000000..c97e6eff
--- /dev/null
+++ b/node_modules/markdown-it/lib/common/html_blocks.js
@@ -0,0 +1,71 @@
+// List of valid html blocks names, accorting to commonmark spec
+// http://jgm.github.io/CommonMark/spec.html#html-blocks
+
+'use strict';
+
+
+module.exports = [
+ 'address',
+ 'article',
+ 'aside',
+ 'base',
+ 'basefont',
+ 'blockquote',
+ 'body',
+ 'caption',
+ 'center',
+ 'col',
+ 'colgroup',
+ 'dd',
+ 'details',
+ 'dialog',
+ 'dir',
+ 'div',
+ 'dl',
+ 'dt',
+ 'fieldset',
+ 'figcaption',
+ 'figure',
+ 'footer',
+ 'form',
+ 'frame',
+ 'frameset',
+ 'h1',
+ 'h2',
+ 'h3',
+ 'h4',
+ 'h5',
+ 'h6',
+ 'head',
+ 'header',
+ 'hr',
+ 'html',
+ 'iframe',
+ 'legend',
+ 'li',
+ 'link',
+ 'main',
+ 'menu',
+ 'menuitem',
+ 'meta',
+ 'nav',
+ 'noframes',
+ 'ol',
+ 'optgroup',
+ 'option',
+ 'p',
+ 'param',
+ 'section',
+ 'source',
+ 'summary',
+ 'table',
+ 'tbody',
+ 'td',
+ 'tfoot',
+ 'th',
+ 'thead',
+ 'title',
+ 'tr',
+ 'track',
+ 'ul'
+];
diff --git a/node_modules/markdown-it/lib/common/html_re.js b/node_modules/markdown-it/lib/common/html_re.js
new file mode 100644
index 00000000..4fd93699
--- /dev/null
+++ b/node_modules/markdown-it/lib/common/html_re.js
@@ -0,0 +1,28 @@
+// Regexps to match html elements
+
+'use strict';
+
+var attr_name = '[a-zA-Z_:][a-zA-Z0-9:._-]*';
+
+var unquoted = '[^"\'=<>`\\x00-\\x20]+';
+var single_quoted = "'[^']*'";
+var double_quoted = '"[^"]*"';
+
+var attr_value = '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')';
+
+var attribute = '(?:\\s+' + attr_name + '(?:\\s*=\\s*' + attr_value + ')?)';
+
+var open_tag = '<[A-Za-z][A-Za-z0-9\\-]*' + attribute + '*\\s*\\/?>';
+
+var close_tag = '<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>';
+var comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->';
+var processing = '<[?].*?[?]>';
+var declaration = '<![A-Z]+\\s+[^>]*>';
+var cdata = '<!\\[CDATA\\[[\\s\\S]*?\\]\\]>';
+
+var HTML_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + '|' + comment +
+ '|' + processing + '|' + declaration + '|' + cdata + ')');
+var HTML_OPEN_CLOSE_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + ')');
+
+module.exports.HTML_TAG_RE = HTML_TAG_RE;
+module.exports.HTML_OPEN_CLOSE_TAG_RE = HTML_OPEN_CLOSE_TAG_RE;
diff --git a/node_modules/markdown-it/lib/common/utils.js b/node_modules/markdown-it/lib/common/utils.js
new file mode 100644
index 00000000..a2f9540a
--- /dev/null
+++ b/node_modules/markdown-it/lib/common/utils.js
@@ -0,0 +1,275 @@
+// Utilities
+//
+'use strict';
+
+
+function _class(obj) { return Object.prototype.toString.call(obj); }
+
+function isString(obj) { return _class(obj) === '[object String]'; }
+
+var _hasOwnProperty = Object.prototype.hasOwnProperty;
+
+function has(object, key) {
+ return _hasOwnProperty.call(object, key);
+}
+
+// Merge objects
+//
+function assign(obj /*from1, from2, from3, ...*/) {
+ var sources = Array.prototype.slice.call(arguments, 1);
+
+ sources.forEach(function (source) {
+ if (!source) { return; }
+
+ if (typeof source !== 'object') {
+ throw new TypeError(source + 'must be object');
+ }
+
+ Object.keys(source).forEach(function (key) {
+ obj[key] = source[key];
+ });
+ });
+
+ return obj;
+}
+
+// Remove element from array and put another array at those position.
+// Useful for some operations with tokens
+function arrayReplaceAt(src, pos, newElements) {
+ return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1));
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+function isValidEntityCode(c) {
+ /*eslint no-bitwise:0*/
+ // broken sequence
+ if (c >= 0xD800 && c <= 0xDFFF) { return false; }
+ // never used
+ if (c >= 0xFDD0 && c <= 0xFDEF) { return false; }
+ if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false; }
+ // control codes
+ if (c >= 0x00 && c <= 0x08) { return false; }
+ if (c === 0x0B) { return false; }
+ if (c >= 0x0E && c <= 0x1F) { return false; }
+ if (c >= 0x7F && c <= 0x9F) { return false; }
+ // out of range
+ if (c > 0x10FFFF) { return false; }
+ return true;
+}
+
+function fromCodePoint(c) {
+ /*eslint no-bitwise:0*/
+ if (c > 0xffff) {
+ c -= 0x10000;
+ var surrogate1 = 0xd800 + (c >> 10),
+ surrogate2 = 0xdc00 + (c & 0x3ff);
+
+ return String.fromCharCode(surrogate1, surrogate2);
+ }
+ return String.fromCharCode(c);
+}
+
+
+var UNESCAPE_MD_RE = /\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g;
+var ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi;
+var UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi');
+
+var DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;
+
+var entities = require('./entities');
+
+function replaceEntityPattern(match, name) {
+ var code = 0;
+
+ if (has(entities, name)) {
+ return entities[name];
+ }
+
+ if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) {
+ code = name[1].toLowerCase() === 'x' ?
+ parseInt(name.slice(2), 16)
+ :
+ parseInt(name.slice(1), 10);
+ if (isValidEntityCode(code)) {
+ return fromCodePoint(code);
+ }
+ }
+
+ return match;
+}
+
+/*function replaceEntities(str) {
+ if (str.indexOf('&') < 0) { return str; }
+
+ return str.replace(ENTITY_RE, replaceEntityPattern);
+}*/
+
+function unescapeMd(str) {
+ if (str.indexOf('\\') < 0) { return str; }
+ return str.replace(UNESCAPE_MD_RE, '$1');
+}
+
+function unescapeAll(str) {
+ if (str.indexOf('\\') < 0 && str.indexOf('&') < 0) { return str; }
+
+ return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) {
+ if (escaped) { return escaped; }
+ return replaceEntityPattern(match, entity);
+ });
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+var HTML_ESCAPE_TEST_RE = /[&<>"]/;
+var HTML_ESCAPE_REPLACE_RE = /[&<>"]/g;
+var HTML_REPLACEMENTS = {
+ '&': '&amp;',
+ '<': '&lt;',
+ '>': '&gt;',
+ '"': '&quot;'
+};
+
+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;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+var REGEXP_ESCAPE_RE = /[.?*+^$[\]\\(){}|-]/g;
+
+function escapeRE(str) {
+ return str.replace(REGEXP_ESCAPE_RE, '\\$&');
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+function isSpace(code) {
+ switch (code) {
+ case 0x09:
+ case 0x20:
+ return true;
+ }
+ return false;
+}
+
+// Zs (unicode class) || [\t\f\v\r\n]
+function isWhiteSpace(code) {
+ if (code >= 0x2000 && code <= 0x200A) { return true; }
+ switch (code) {
+ case 0x09: // \t
+ case 0x0A: // \n
+ case 0x0B: // \v
+ case 0x0C: // \f
+ case 0x0D: // \r
+ case 0x20:
+ case 0xA0:
+ case 0x1680:
+ case 0x202F:
+ case 0x205F:
+ case 0x3000:
+ return true;
+ }
+ return false;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+/*eslint-disable max-len*/
+var UNICODE_PUNCT_RE = require('uc.micro/categories/P/regex');
+
+// Currently without astral characters support.
+function isPunctChar(ch) {
+ return UNICODE_PUNCT_RE.test(ch);
+}
+
+
+// Markdown ASCII punctuation characters.
+//
+// !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \, ], ^, _, `, {, |, }, or ~
+// http://spec.commonmark.org/0.15/#ascii-punctuation-character
+//
+// Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.
+//
+function isMdAsciiPunct(ch) {
+ switch (ch) {
+ case 0x21/* ! */:
+ case 0x22/* " */:
+ case 0x23/* # */:
+ case 0x24/* $ */:
+ case 0x25/* % */:
+ case 0x26/* & */:
+ case 0x27/* ' */:
+ case 0x28/* ( */:
+ case 0x29/* ) */:
+ case 0x2A/* * */:
+ case 0x2B/* + */:
+ case 0x2C/* , */:
+ case 0x2D/* - */:
+ case 0x2E/* . */:
+ case 0x2F/* / */:
+ case 0x3A/* : */:
+ case 0x3B/* ; */:
+ case 0x3C/* < */:
+ case 0x3D/* = */:
+ case 0x3E/* > */:
+ case 0x3F/* ? */:
+ case 0x40/* @ */:
+ case 0x5B/* [ */:
+ case 0x5C/* \ */:
+ case 0x5D/* ] */:
+ case 0x5E/* ^ */:
+ case 0x5F/* _ */:
+ case 0x60/* ` */:
+ case 0x7B/* { */:
+ case 0x7C/* | */:
+ case 0x7D/* } */:
+ case 0x7E/* ~ */:
+ return true;
+ default:
+ return false;
+ }
+}
+
+// Hepler to unify [reference labels].
+//
+function normalizeReference(str) {
+ // use .toUpperCase() instead of .toLowerCase()
+ // here to avoid a conflict with Object.prototype
+ // members (most notably, `__proto__`)
+ return str.trim().replace(/\s+/g, ' ').toUpperCase();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+// Re-export libraries commonly used in both markdown-it and its plugins,
+// so plugins won't have to depend on them explicitly, which reduces their
+// bundled size (e.g. a browser build).
+//
+exports.lib = {};
+exports.lib.mdurl = require('mdurl');
+exports.lib.ucmicro = require('uc.micro');
+
+exports.assign = assign;
+exports.isString = isString;
+exports.has = has;
+exports.unescapeMd = unescapeMd;
+exports.unescapeAll = unescapeAll;
+exports.isValidEntityCode = isValidEntityCode;
+exports.fromCodePoint = fromCodePoint;
+// exports.replaceEntities = replaceEntities;
+exports.escapeHtml = escapeHtml;
+exports.arrayReplaceAt = arrayReplaceAt;
+exports.isSpace = isSpace;
+exports.isWhiteSpace = isWhiteSpace;
+exports.isMdAsciiPunct = isMdAsciiPunct;
+exports.isPunctChar = isPunctChar;
+exports.escapeRE = escapeRE;
+exports.normalizeReference = normalizeReference;