3 var openCloseTag = require('../util/html').openCloseTag;
5 module.exports = blockHTML;
12 function blockHTML(eat, value, silent) {
14 var blocks = self.options.blocks;
15 var length = value.length;
26 [/^<(script|pre|style)(?=(\s|>|$))/i, /<\/(script|pre|style)>/i, true],
27 [/^<!--/, /-->/, true],
28 [/^<\?/, /\?>/, true],
29 [/^<![A-Za-z]/, />/, true],
30 [/^<!\[CDATA\[/, /\]\]>/, true],
31 [new RegExp('^</?(' + blocks.join('|') + ')(?=(\\s|/?>|$))', 'i'), /^$/, true],
32 [new RegExp(openCloseTag.source + '\\s*$'), /^$/, false]
35 /* Eat initial spacing. */
36 while (index < length) {
37 character = value.charAt(index);
39 if (character !== C_TAB && character !== C_SPACE) {
46 if (value.charAt(index) !== C_LT) {
50 next = value.indexOf(C_NEWLINE, index + 1);
51 next = next === -1 ? length : next;
52 line = value.slice(index, next);
54 count = sequences.length;
56 while (++offset < count) {
57 if (sequences[offset][0].test(line)) {
58 sequence = sequences[offset];
73 if (!sequence[1].test(line)) {
74 while (index < length) {
75 next = value.indexOf(C_NEWLINE, index + 1);
76 next = next === -1 ? length : next;
77 line = value.slice(index + 1, next);
79 if (sequence[1].test(line)) {
91 subvalue = value.slice(0, index);
93 return eat(subvalue)({type: 'html', value: subvalue});