UNPKG

vue-files-preview-inno

Version:

A tool for previewing files such as doc, excel, pdf, image, markdown, txt, audio, and video and so on.

1 lines 34.8 kB
{"version":3,"file":"sax.mjs","sources":["../../../../../../node_modules/@xmldom/xmldom/lib/sax.js"],"sourcesContent":["var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring\nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el<el />\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif(k in entityMap){\n\t\t\treturn entityMap[k];\n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t \t\t\tdoc.appendChild(text);\n\t \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t \t\tend = tagStart+1+tagName.length;\n\t \t}else if(tagName.match(/\\s</)){\n\t \t\ttagName = tagName.replace(/[\\s<].*/,'');\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' maybe not complete');\n\t \t\tend = tagStart+1+tagName.length;\n\t\t\t\t}\n\t\t\t\tvar localNSMap = config.localNSMap;\n\t\t\t\tvar endMatch = config.tagName == tagName;\n\t\t\t\tvar endIgnoreCaseMach = endMatch || config.tagName&&config.tagName.toLowerCase() == tagName.toLowerCase()\n\t\t if(endIgnoreCaseMach){\n\t\t \tdomBuilder.endElement(config.uri,config.localName,tagName);\n\t\t\t\t\tif(localNSMap){\n\t\t\t\t\t\tfor(var prefix in localNSMap) {\n\t\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!endMatch){\n\t\t \terrorHandler.fatalError(\"end tag name: \"+tagName+' is not match the current start tagName:'+config.tagName ); // No known test case\n\t\t\t\t\t}\n\t\t }else{\n\t\t \tparseStack.push(config)\n\t\t }\n\n\t\t\t\tend++;\n\t\t\t\tbreak;\n\t\t\t\t// end elment\n\t\t\tcase '?':// <?...?>\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// <!doctype,<![CDATA,<!--\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseDCC(source,tagStart,domBuilder,errorHandler);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tvar el = new ElementAttributes();\n\t\t\t\tvar currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\t\t\t\t//elStartEnd\n\t\t\t\tvar end = parseElementStartPart(source,tagStart,el,currentNSMap,entityReplacer,errorHandler);\n\t\t\t\tvar len = el.length;\n\n\n\t\t\t\tif(!el.closed && fixSelfClosed(source,end,el.tagName,closeMap)){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tif(!entityMap.nbsp){\n\t\t\t\t\t\terrorHandler.warning('unclosed xml attribute');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(locator && len){\n\t\t\t\t\tvar locator2 = copyLocator(locator,{});\n\t\t\t\t\t//try{//attribute position fixed\n\t\t\t\t\tfor(var i = 0;i<len;i++){\n\t\t\t\t\t\tvar a = el[i];\n\t\t\t\t\t\tposition(a.offset);\n\t\t\t\t\t\ta.locator = copyLocator(locator,{});\n\t\t\t\t\t}\n\t\t\t\t\tdomBuilder.locator = locator2\n\t\t\t\t\tif(appendElement(el,domBuilder,currentNSMap)){\n\t\t\t\t\t\tparseStack.push(el)\n\t\t\t\t\t}\n\t\t\t\t\tdomBuilder.locator = locator;\n\t\t\t\t}else{\n\t\t\t\t\tif(appendElement(el,domBuilder,currentNSMap)){\n\t\t\t\t\t\tparseStack.push(el)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (NAMESPACE.isHTML(el.uri) && !el.closed) {\n\t\t\t\t\tend = parseHtmlSpecialContent(source,end,el.tagName,entityReplacer,domBuilder)\n\t\t\t\t} else {\n\t\t\t\t\tend++;\n\t\t\t\t}\n\t\t\t}\n\t\t}catch(e){\n\t\t\tif (e instanceof ParseError) {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t\terrorHandler.error('element parse error: '+e)\n\t\t\tend = -1;\n\t\t}\n\t\tif(end>start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有可能sax回退,有位置错误风险\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(qname, value, startIndex)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\t//console.log(attrName,value,start,p)\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\t//console.dir(el)\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tel.closed = true;\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value.replace(/&#?\\w+;/g,entityReplacer), start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName = el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute\n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value)\n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor (prefix in localNSMap) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart = source.indexOf('</'+tagName+'>',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos = source.lastIndexOf('</'+tagName+'>')\n\t\tif(pos<elStartEnd){//忘记闭合\n\t\t\tpos = source.lastIndexOf('</'+tagName)\n\t\t}\n\t\tcloseMap[tagName] =pos\n\t}\n\treturn pos<elStartEnd;\n\t//}\n}\n\nfunction _copy (source, target) {\n\tfor (var n in source) {\n\t\tif (Object.prototype.hasOwnProperty.call(source, n)) {\n\t\t\ttarget[n] = source[n];\n\t\t}\n\t}\n}\n\nfunction parseDCC(source,start,domBuilder,errorHandler){//sure start with '<!'\n\tvar next= source.charAt(start+2)\n\tswitch(next){\n\tcase '-':\n\t\tif(source.charAt(start + 3) === '-'){\n\t\t\tvar end = source.indexOf('-->',start+4);\n\t\t\t//append comment source.substring(4,end)//<!--\n\t\t\tif(end>start){\n\t\t\t\tdomBuilder.comment(source,start+4,end-start-4);\n\t\t\t\treturn end+3;\n\t\t\t}else{\n\t\t\t\terrorHandler.error(\"Unclosed comment\");\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}else{\n\t\t\t//error\n\t\t\treturn -1;\n\t\t}\n\tdefault:\n\t\tif(source.substr(start+3,6) == 'CDATA['){\n\t\t\tvar end = source.indexOf(']]>',start+9);\n\t\t\tdomBuilder.startCDATA();\n\t\t\tdomBuilder.characters(source,start+9,end-start-9);\n\t\t\tdomBuilder.endCDATA()\n\t\t\treturn end+3;\n\t\t}\n\t\t//<!DOCTYPE\n\t\t//startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)\n\t\tvar matchs = split(source,start);\n\t\tvar len = matchs.length;\n\t\tif(len>1 && /!doctype/i.test(matchs[0][0])){\n\t\t\tvar name = matchs[1][0];\n\t\t\tvar pubid = false;\n\t\t\tvar sysid = false;\n\t\t\tif(len>3){\n\t\t\t\tif(/^public$/i.test(matchs[2][0])){\n\t\t\t\t\tpubid = matchs[3][0];\n\t\t\t\t\tsysid = len>4 && matchs[4][0];\n\t\t\t\t}else if(/^system$/i.test(matchs[2][0])){\n\t\t\t\t\tsysid = matchs[3][0];\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar lastMatch = matchs[len-1]\n\t\t\tdomBuilder.startDTD(name, pubid, sysid);\n\t\t\tdomBuilder.endDTD();\n\n\t\t\treturn lastMatch.index+lastMatch[0].length\n\t\t}\n\t}\n\treturn -1;\n}\n\n\n\nfunction parseInstruction(source,start,domBuilder){\n\tvar end = source.indexOf('?>',start);\n\tif(end){\n\t\tvar match = source.substring(start,end).match(/^<\\?(\\S*)\\s*([\\s\\S]*?)\\s*$/);\n\t\tif(match){\n\t\t\tvar len = match[0].length;\n\t\t\tdomBuilder.processingInstruction(match[1], match[2]) ;\n\t\t\treturn end+2;\n\t\t}else{//error\n\t\t\treturn -1;\n\t\t}\n\t}\n\treturn -1;\n}\n\nfunction ElementAttributes(){\n\tthis.attributeNames = {}\n}\nElementAttributes.prototype = {\n\tsetTagName:function(tagName){\n\t\tif(!tagNamePattern.test(tagName)){\n\t\t\tthrow new Error('invalid tagName:'+tagName)\n\t\t}\n\t\tthis.tagName = tagName\n\t},\n\taddValue:function(qName, value, offset) {\n\t\tif(!tagNamePattern.test(qName)){\n\t\t\tthrow new Error('invalid attribute:'+qName)\n\t\t}\n\t\tthis.attributeNames[qName] = this.length;\n\t\tthis[this.length++] = {qName:qName,value:value,offset:offset}\n\t},\n\tlength:0,\n\tgetLocalName:function(i){return this[i].localName},\n\tgetLocator:function(i){return this[i].locator},\n\tgetQName:function(i){return this[i].qName},\n\tgetURI:function(i){return this[i].uri},\n\tgetValue:function(i){return this[i].value}\n//\t,getIndex:function(uri, localName)){\n//\t\tif(localName){\n//\n//\t\t}else{\n//\t\t\tvar qName = uri\n//\t\t}\n//\t},\n//\tgetValue:function(){return this.getValue(this.getIndex.apply(this,arguments))},\n//\tgetType:function(uri,localName){}\n//\tgetType:function(i){},\n}\n\n\n\nfunction split(source,start){\n\tvar match;\n\tvar buf = [];\n\tvar reg = /'[^']+'|\"[^\"]+\"|[^\\s<>\\/=]+=?|(\\/?\\s*>|<)/g;\n\treg.lastIndex = start;\n\treg.exec(source);//skip <\n\twhile(match = reg.exec(source)){\n\t\tbuf.push(match);\n\t\tif(match[1])return buf;\n\t}\n}\n\nexports.XMLReader = XMLReader;\nexports.ParseError = ParseError;\n"],"names":["NAMESPACE","require$$0","nameStartChar","nameChar","tagNamePattern","S_TAG","S_ATTR","S_ATTR_SPACE","S_EQ","S_ATTR_NOQUOT_VALUE","S_ATTR_END","S_TAG_SPACE","S_TAG_CLOSE","ParseError","message","locator","XMLReader","source","defaultNSMap","entityMap","domBuilder","_copy","parse","defaultNSMapCopy","errorHandler","fixedFromCharCode","code","surrogate1","surrogate2","entityReplacer","a","k","appendText","end","start","xt","position","p","m","lineEnd","linePattern","lineStart","parseStack","closeMap","tagStart","doc","text","tagName","config","localNSMap","endMatch","endIgnoreCaseMach","prefix","parseInstruction","parseDCC","el","ElementAttributes","currentNSMap","parseElementStartPart","len","fixSelfClosed","locator2","copyLocator","i","appendElement","parseHtmlSpecialContent","e","f","t","addAttribute","qname","value","startIndex","attrName","s","c","qName","nsp","localName","nsPrefix","ns","elStartEnd","elEndStart","pos","target","n","next","matchs","split","name","pubid","sysid","lastMatch","match","offset","buf","reg","sax"],"mappings":"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","x_google_ignoreList":[0]}