* Remove pinning of eslint-plugin-markdown An issue affecting Node.js source has been fixed in eslint-plugin-markdown so we don't need to pin it to beta-4 anymore. Refs: https://github.com/eslint/eslint-plugin-markdown/issues/69 * Update eslint-plugin-markdown up to 1.0.0-beta.7 * Fix docs for eslint-plugin-markdown@1.0.0-beta.7 PR-URL: https://github.com/nodejs/node/pull/14047 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Yuta Hiroto <hello@about-hiroppy.com> Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
63 lines
1.2 KiB
JavaScript
63 lines
1.2 KiB
JavaScript
/**
|
|
* @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});
|
|
}
|