shadow$provide.module$node_modules$$xmldom$xmldom$lib$sax = function(global, require, module, exports) { function ParseError(message, locator) { this.message = message; this.locator = locator; Error.captureStackTrace && Error.captureStackTrace(this, ParseError); } function XMLReader() { } function parse(source, defaultNSMapCopy, entityMap, domBuilder, errorHandler) { function entityReplacer(a) { var k = a.slice(1, -1); if (Object.hasOwnProperty.call(entityMap, k)) { return entityMap[k]; } if ("#" === k.charAt(0)) { return a = parseInt(k.substr(1).replace("x", "0x")), 65535 < a ? (a -= 65536, a = String.fromCharCode(55296 + (a >> 10), 56320 + (a & 1023))) : a = String.fromCharCode(a), a; } errorHandler.error("entity not found:" + a); return a; } function appendText(end) { if (end > start) { var xt = source.substring(start, end).replace(/&#?\w+;/g, entityReplacer); locator && position(start); domBuilder.characters(xt, 0, end - start); start = end; } } function position(p, m) { for (; p >= lineEnd && (m = linePattern.exec(source));) { lineStart = m.index, lineEnd = lineStart + m[0].length, locator.lineNumber++; } locator.columnNumber = p - lineStart + 1; } var lineStart = 0, lineEnd = 0, linePattern = /.*(?:\r\n?|\n)|.*$/g, locator = domBuilder.locator; defaultNSMapCopy = [{currentNSMap:defaultNSMapCopy}]; for (var closeMap = {}, start = 0;;) { try { var tagStart = source.indexOf("\x3c", start); if (0 > tagStart) { if (!source.substr(start).match(/^\s*$/)) { var doc = domBuilder.doc, text = doc.createTextNode(source.substr(start)); doc.appendChild(text); domBuilder.currentElement = text; } break; } tagStart > start && appendText(tagStart); switch(source.charAt(tagStart + 1)) { case "/": var end = source.indexOf("\x3e", tagStart + 3), tagName = source.substring(tagStart + 2, end).replace(/[ \t\n\r]+$/g, ""), config = defaultNSMapCopy.pop(); 0 > end ? (tagName = source.substring(tagStart + 2).replace(/[\s<].*/, ""), errorHandler.error("end tag name: " + tagName + " is not complete:" + config.tagName), end = tagStart + 1 + tagName.length) : tagName.match(/\s start ? start = end : appendText(Math.max(tagStart, start) + 1); } } function copyLocator(f, t) { t.lineNumber = f.lineNumber; t.columnNumber = f.columnNumber; return t; } function parseElementStartPart(source, start, el, currentNSMap, entityReplacer, errorHandler) { function addAttribute(qname, value, startIndex) { el.attributeNames.hasOwnProperty(qname) && errorHandler.fatalError("Attribute " + qname + " redefined"); el.addValue(qname, value.replace(/[\t\n\r]/g, " ").replace(/&#?\w+;/g, entityReplacer), startIndex); } for (var attrName, value, p = ++start, s = 0;;) { var c = source.charAt(p); switch(c) { case "\x3d": if (1 === s) { attrName = source.slice(start, p), s = 3; } else if (2 === s) { s = 3; } else { throw Error("attribute equal must after attrName"); } break; case "'": case '"': if (3 === s || 1 === s) { if (1 === s && (errorHandler.warning('attribute value must after "\x3d"'), attrName = source.slice(start, p)), start = p + 1, p = source.indexOf(c, start), 0 < p) { value = source.slice(start, p), addAttribute(attrName, value, start - 1), s = 5; } else { throw Error("attribute value no end '" + c + "' match"); } } else if (4 == s) { value = source.slice(start, p), addAttribute(attrName, value, start), errorHandler.warning('attribute "' + attrName + '" missed start quot(' + c + ")!!"), start = p + 1, s = 5; } else { throw Error('attribute value must after "\x3d"'); } break; case "/": switch(s) { case 0: el.setTagName(source.slice(start, p)); case 5: case 6: case 7: s = 7, el.closed = !0; case 4: case 1: break; case 2: el.closed = !0; break; default: throw Error("attribute invalid close char('/')"); }break; case "": return errorHandler.error("unexpected end of input"), 0 == s && el.setTagName(source.slice(start, p)), p; case "\x3e": switch(s) { case 0: el.setTagName(source.slice(start, p)); case 5: case 6: case 7: break; case 4: case 1: value = source.slice(start, p), "/" === value.slice(-1) && (el.closed = !0, value = value.slice(0, -1)); case 2: 2 === s && (value = attrName); 4 == s ? (errorHandler.warning('attribute "' + value + '" missed quot(")!'), addAttribute(attrName, value, start)) : (NAMESPACE.isHTML(currentNSMap[""]) && value.match(/^(?:disabled|checked|selected)$/i) || errorHandler.warning('attribute "' + value + '" missed value!! "' + value + '" instead!!'), addAttribute(value, value, start)); break; case 3: throw Error("attribute value missed!!"); }return p; case "€": c = " "; default: if (" " >= c) { switch(s) { case 0: el.setTagName(source.slice(start, p)); s = 6; break; case 1: attrName = source.slice(start, p); s = 2; break; case 4: value = source.slice(start, p), errorHandler.warning('attribute "' + value + '" missed quot(")!!'), addAttribute(attrName, value, start); case 5: s = 6; } } else { switch(s) { case 2: NAMESPACE.isHTML(currentNSMap[""]) && attrName.match(/^(?:disabled|checked|selected)$/i) || errorHandler.warning('attribute "' + attrName + '" missed value!! "' + attrName + '" instead2!!'); addAttribute(attrName, attrName, start); start = p; s = 1; break; case 5: errorHandler.warning('attribute space is required"' + attrName + '"!!'); case 6: s = 1; start = p; break; case 3: s = 4; start = p; break; case 7: throw Error("elements closed character '/' and '\x3e' must be connected to"); } } } p++; } } function appendElement(el, domBuilder, currentNSMap) { for (var tagName = el.tagName, localNSMap = null, i = el.length; i--;) { var a = el[i], qName = a.qName, value = a.value, nsp = qName.indexOf(":"); if (0 < nsp) { var prefix = a.prefix = qName.slice(0, nsp); nsp = qName.slice(nsp + 1); prefix = "xmlns" === prefix && nsp; } else { nsp = qName, prefix = "xmlns" === qName && ""; } a.localName = nsp; !1 !== prefix && (null == localNSMap && (localNSMap = {}, _copy(currentNSMap, currentNSMap = {})), currentNSMap[prefix] = localNSMap[prefix] = value, a.uri = NAMESPACE.XMLNS, domBuilder.startPrefixMapping(prefix, value)); } for (i = el.length; i--;) { if (a = el[i], prefix = a.prefix) { "xml" === prefix && (a.uri = NAMESPACE.XML), "xmlns" !== prefix && (a.uri = currentNSMap[prefix || ""]); } } nsp = tagName.indexOf(":"); 0 < nsp ? (prefix = el.prefix = tagName.slice(0, nsp), nsp = el.localName = tagName.slice(nsp + 1)) : (prefix = null, nsp = el.localName = tagName); i = el.uri = currentNSMap[prefix || ""]; domBuilder.startElement(i, nsp, tagName, el); if (el.closed) { if (domBuilder.endElement(i, nsp, tagName), localNSMap) { for (prefix in localNSMap) { Object.prototype.hasOwnProperty.call(localNSMap, prefix) && domBuilder.endPrefixMapping(prefix); } } } else { return el.currentNSMap = currentNSMap, el.localNSMap = localNSMap, !0; } } function parseHtmlSpecialContent(source, elStartEnd, tagName, entityReplacer, domBuilder) { if (/^(?:script|textarea)$/i.test(tagName)) { var elEndStart = source.indexOf("\x3c/" + tagName + "\x3e", elStartEnd); source = source.substring(elStartEnd + 1, elEndStart); if (/[&<]/.test(source)) { if (/^script$/i.test(tagName)) { return domBuilder.characters(source, 0, source.length), elEndStart; } source = source.replace(/&#?\w+;/g, entityReplacer); domBuilder.characters(source, 0, source.length); return elEndStart; } } return elStartEnd + 1; } function fixSelfClosed(source, elStartEnd, tagName, closeMap) { var pos = closeMap[tagName]; null == pos && (pos = source.lastIndexOf("\x3c/" + tagName + "\x3e"), pos < elStartEnd && (pos = source.lastIndexOf("\x3c/" + tagName)), closeMap[tagName] = pos); return pos < elStartEnd; } function _copy(source, target) { for (var n in source) { Object.prototype.hasOwnProperty.call(source, n) && (target[n] = source[n]); } } function parseDCC(source, start, domBuilder, errorHandler) { switch(source.charAt(start + 2)) { case "-": if ("-" === source.charAt(start + 3)) { var end = source.indexOf("--\x3e", start + 4); if (end > start) { return domBuilder.comment(source, start + 4, end - start - 4), end + 3; } errorHandler.error("Unclosed comment"); } break; default: if ("CDATA[" == source.substr(start + 3, 6)) { return end = source.indexOf("]]\x3e", start + 9), domBuilder.startCDATA(), domBuilder.characters(source, start + 9, end - start - 9), domBuilder.endCDATA(), end + 3; } a: { errorHandler = []; end = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g; end.lastIndex = start; for (end.exec(source); start = end.exec(source);) { if (errorHandler.push(start), start[1]) { end = errorHandler; break a; } } end = void 0; } var len = end.length; if (1 < len && /!doctype/i.test(end[0][0])) { return source = end[1][0], errorHandler = start = !1, 3 < len && (/^public$/i.test(end[2][0]) ? (start = end[3][0], errorHandler = 4 < len && end[4][0]) : /^system$/i.test(end[2][0]) && (errorHandler = end[3][0])), end = end[len - 1], domBuilder.startDTD(source, start, errorHandler), domBuilder.endDTD(), end.index + end[0].length; } } return -1; } function parseInstruction(source, start, domBuilder) { var end = source.indexOf("?\x3e", start); return end && (source = source.substring(start, end).match(/^<\?(\S*)\s*([\s\S]*?)$/)) ? (domBuilder.processingInstruction(source[1], source[2]), end + 2) : -1; } function ElementAttributes() { this.attributeNames = {}; } var NAMESPACE = require("module$node_modules$$xmldom$xmldom$lib$conventions").NAMESPACE; global = /[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]/; require = new RegExp("[\\-\\.0-9" + global.source.slice(1, -1) + "\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"); var tagNamePattern = new RegExp("^" + global.source + require.source + "*(?::" + global.source + require.source + "*)?$"); ParseError.prototype = Error(); ParseError.prototype.name = ParseError.name; XMLReader.prototype = {parse:function(source, defaultNSMap, entityMap) { var domBuilder = this.domBuilder; domBuilder.startDocument(); _copy(defaultNSMap, defaultNSMap = {}); parse(source, defaultNSMap, entityMap, domBuilder, this.errorHandler); domBuilder.endDocument(); }}; ElementAttributes.prototype = {setTagName:function(tagName) { if (!tagNamePattern.test(tagName)) { throw Error("invalid tagName:" + tagName); } this.tagName = tagName; }, addValue:function(qName, value, offset) { if (!tagNamePattern.test(qName)) { throw Error("invalid attribute:" + qName); } this.attributeNames[qName] = this.length; this[this.length++] = {qName, value, offset}; }, length:0, getLocalName:function(i) { return this[i].localName; }, getLocator:function(i) { return this[i].locator; }, getQName:function(i) { return this[i].qName; }, getURI:function(i) { return this[i].uri; }, getValue:function(i) { return this[i].value; }}; exports.XMLReader = XMLReader; exports.ParseError = ParseError; }; //# sourceMappingURL=module$node_modules$$xmldom$xmldom$lib$sax.js.map