MCPcopy Create free account
hub / github.com/TruthHun/BookStack / closeTag

Function closeTag

static/word2md/mammoth.browser.js:26781–26850  ·  view source on GitHub ↗
(parser)

Source from the content-addressed store, hash-verified

26779 }
26780
26781 function closeTag (parser) {
26782 if (!parser.tagName) {
26783 strictFail(parser, 'Weird empty close tag.')
26784 parser.textNode += '</>'
26785 parser.state = S.TEXT
26786 return
26787 }
26788
26789 if (parser.script) {
26790 if (parser.tagName !== 'script') {
26791 parser.script += '</' + parser.tagName + '>'
26792 parser.tagName = ''
26793 parser.state = S.SCRIPT
26794 return
26795 }
26796 emitNode(parser, 'onscript', parser.script)
26797 parser.script = ''
26798 }
26799
26800 // first make sure that the closing tag actually exists.
26801 // <a><b></c></b></a> will close everything, otherwise.
26802 var t = parser.tags.length
26803 var tagName = parser.tagName
26804 if (!parser.strict) {
26805 tagName = tagName[parser.looseCase]()
26806 }
26807 var closeTo = tagName
26808 while (t--) {
26809 var close = parser.tags[t]
26810 if (close.name !== closeTo) {
26811 // fail the first time in strict mode
26812 strictFail(parser, 'Unexpected close tag')
26813 } else {
26814 break
26815 }
26816 }
26817
26818 // didn't find it. we already failed for strict, so just abort.
26819 if (t < 0) {
26820 strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)
26821 parser.textNode += '</' + parser.tagName + '>'
26822 parser.state = S.TEXT
26823 return
26824 }
26825 parser.tagName = tagName
26826 var s = parser.tags.length
26827 while (s-- > t) {
26828 var tag = parser.tag = parser.tags.pop()
26829 parser.tagName = parser.tag.name
26830 emitNode(parser, 'onclosetag', parser.tagName)
26831
26832 var x = {}
26833 for (var i in tag.ns) {
26834 x[i] = tag.ns[i]
26835 }
26836
26837 var parent = parser.tags[parser.tags.length - 1] || parser
26838 if (parser.opt.xmlns && tag.ns !== parent.ns) {

Callers 1

writeFunction · 0.70

Calls 2

strictFailFunction · 0.70
emitNodeFunction · 0.70

Tested by

no test coverage detected