.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / remark-parse / lib / tokenize / html-inline.js
1 'use strict';
2
3 var alphabetical = require('is-alphabetical');
4 var locate = require('../locate/tag');
5 var tag = require('../util/html').tag;
6
7 module.exports = inlineHTML;
8 inlineHTML.locator = locate;
9
10 var EXPRESSION_HTML_LINK_OPEN = /^<a /i;
11 var EXPRESSION_HTML_LINK_CLOSE = /^<\/a>/i;
12
13 function inlineHTML(eat, value, silent) {
14   var self = this;
15   var length = value.length;
16   var character;
17   var subvalue;
18
19   if (value.charAt(0) !== '<' || length < 3) {
20     return;
21   }
22
23   character = value.charAt(1);
24
25   if (
26     !alphabetical(character) &&
27     character !== '?' &&
28     character !== '!' &&
29     character !== '/'
30   ) {
31     return;
32   }
33
34   subvalue = value.match(tag);
35
36   if (!subvalue) {
37     return;
38   }
39
40   /* istanbul ignore if - not used yet. */
41   if (silent) {
42     return true;
43   }
44
45   subvalue = subvalue[0];
46
47   if (!self.inLink && EXPRESSION_HTML_LINK_OPEN.test(subvalue)) {
48     self.inLink = true;
49   } else if (self.inLink && EXPRESSION_HTML_LINK_CLOSE.test(subvalue)) {
50     self.inLink = false;
51   }
52
53   return eat(subvalue)({type: 'html', value: subvalue});
54 }