UNPKG

@mapbox/jsxtreme-markdown

Version:
60 lines (45 loc) 1.18 kB
'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 lessThan = '<'; var questionMark = '?'; var exclamationMark = '!'; var slash = '/'; var htmlLinkOpenExpression = /^<a /i; var htmlLinkCloseExpression = /^<\/a>/i; function inlineHTML(eat, value, silent) { var self = this; var length = value.length; var character; var subvalue; if (value.charAt(0) !== lessThan || length < 3) { return; } character = value.charAt(1); if ( !alphabetical(character) && character !== questionMark && character !== exclamationMark && character !== slash ) { return; } subvalue = value.match(tag); if (!subvalue) { return; } /* istanbul ignore if - not used yet. */ if (silent) { return true; } subvalue = subvalue[0]; if (!self.inLink && htmlLinkOpenExpression.test(subvalue)) { self.inLink = true; } else if (self.inLink && htmlLinkCloseExpression.test(subvalue)) { self.inLink = false; } return eat(subvalue)({ type: 'html', value: subvalue }); }