1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- '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})
- }
|