diff options
Diffstat (limited to 'tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/html-inline.js')
-rw-r--r-- | tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/html-inline.js | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/html-inline.js b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/html-inline.js new file mode 100644 index 0000000000..d8c0b9ab21 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/remark-parse/lib/tokenize/html-inline.js @@ -0,0 +1,63 @@ +/** + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module remark:parse:tokenize:html-inline + * @fileoverview Tokenise inline HTML. + */ + +'use strict'; + +var alphabetical = require('is-alphabetical'); +var locate = require('../locate/tag'); +var tag = require('../util/html').tag; + +module.exports = inlineHTML; +inlineHTML.locator = locate; + +var EXPRESSION_HTML_LINK_OPEN = /^<a /i; +var EXPRESSION_HTML_LINK_CLOSE = /^<\/a>/i; + +/* Tokenise inline HTML. */ +function inlineHTML(eat, value, silent) { + var self = this; + var length = value.length; + var character; + var subvalue; + + if (value.charAt(0) !== '<' || length < 3) { + return; + } + + character = value.charAt(1); + + if ( + !alphabetical(character) && + character !== '?' && + character !== '!' && + character !== '/' + ) { + return; + } + + subvalue = value.match(tag); + + if (!subvalue) { + return; + } + + /* istanbul ignore if - not used yet. */ + if (silent) { + return true; + } + + subvalue = subvalue[0]; + + if (!self.inLink && EXPRESSION_HTML_LINK_OPEN.test(subvalue)) { + self.inLink = true; + } else if (self.inLink && EXPRESSION_HTML_LINK_CLOSE.test(subvalue)) { + self.inLink = false; + } + + return eat(subvalue)({type: 'html', value: subvalue}); +} |