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