{"version":3,"sources":["webpack:///./node_modules/htmlparser2/lib/index.js","webpack:///./node_modules/htmlparser2/lib/Parser.js","webpack:///./node_modules/htmlparser2/lib/Tokenizer.js","webpack:///./node_modules/htmlparser2/lib/WritableStream.js","webpack:///./node_modules/htmlparser2/lib/FeedHandler.js","webpack:///./node_modules/htmlparser2/lib/Stream.js","webpack:///./node_modules/htmlparser2/lib/ProxyHandler.js","webpack:///./node_modules/htmlparser2/lib/CollectingHandler.js"],"names":["Parser","DomHandler","defineProp","name","value","module","exports","Tokenizer","ElementType","DefaultHandler","this","FeedHandler","parseDOM","data","options","handler","end","dom","parseFeed","feed","createDomStream","cb","elementCb","EVENTS","attribute","cdatastart","cdataend","text","processinginstruction","comment","commentend","closetag","opentag","opentagname","error","formTags","input","option","optgroup","select","button","datalist","textarea","openImpliesClose","tr","th","td","thead","body","head","link","script","li","p","h1","h2","h3","h4","h5","h6","output","voidElements","__proto__","area","base","basefont","br","col","command","embed","frame","hr","img","isindex","keygen","meta","param","source","track","wbr","foreignContextElements","math","svg","htmlIntegrationElements","mi","mo","mn","ms","mtext","foreignObject","desc","title","re_nameEnd","cbs","_options","_cbs","_tagname","_attribname","_attribvalue","_attribs","_stack","_foreignContext","startIndex","endIndex","_lowerCaseTagNames","lowerCaseTags","xmlMode","_lowerCaseAttributeNames","lowerCaseAttributeNames","_tokenizer","onparserinit","EventEmitter","prototype","_updatePosition","initialOffset","_sectionStart","getAbsoluteIndex","ontext","onopentagname","toLowerCase","el","length","onclosetag","push","onopentag","onopentagend","pop","_closeCurrentTag","pos","lastIndexOf","onselfclosingtag","recognizeSelfClosing","onattribname","onattribdata","onattribend","onattribute","Object","hasOwnProperty","call","_getInstructionName","idx","search","substr","ondeclaration","onprocessinginstruction","oncomment","oncommentend","oncdata","recognizeCDATA","oncdatastart","oncdataend","onerror","err","onend","i","reset","onreset","parseComplete","write","chunk","pause","resume","parseChunk","done","decodeCodePoint","entityMap","legacyMap","xmlMap","TEXT","BEFORE_TAG_NAME","IN_TAG_NAME","IN_SELF_CLOSING_TAG","BEFORE_CLOSING_TAG_NAME","IN_CLOSING_TAG_NAME","AFTER_CLOSING_TAG_NAME","BEFORE_ATTRIBUTE_NAME","IN_ATTRIBUTE_NAME","AFTER_ATTRIBUTE_NAME","BEFORE_ATTRIBUTE_VALUE","IN_ATTRIBUTE_VALUE_DQ","IN_ATTRIBUTE_VALUE_SQ","IN_ATTRIBUTE_VALUE_NQ","BEFORE_DECLARATION","IN_DECLARATION","IN_PROCESSING_INSTRUCTION","BEFORE_COMMENT","IN_COMMENT","AFTER_COMMENT_1","AFTER_COMMENT_2","BEFORE_CDATA_1","BEFORE_CDATA_2","BEFORE_CDATA_3","BEFORE_CDATA_4","BEFORE_CDATA_5","BEFORE_CDATA_6","IN_CDATA","AFTER_CDATA_1","AFTER_CDATA_2","BEFORE_SPECIAL","BEFORE_SPECIAL_END","BEFORE_SCRIPT_1","BEFORE_SCRIPT_2","BEFORE_SCRIPT_3","BEFORE_SCRIPT_4","BEFORE_SCRIPT_5","AFTER_SCRIPT_1","AFTER_SCRIPT_2","AFTER_SCRIPT_3","AFTER_SCRIPT_4","AFTER_SCRIPT_5","BEFORE_STYLE_1","BEFORE_STYLE_2","BEFORE_STYLE_3","BEFORE_STYLE_4","AFTER_STYLE_1","AFTER_STYLE_2","AFTER_STYLE_3","AFTER_STYLE_4","BEFORE_ENTITY","BEFORE_NUMERIC_ENTITY","IN_NAMED_ENTITY","IN_NUMERIC_ENTITY","IN_HEX_ENTITY","j","SPECIAL_NONE","SPECIAL_SCRIPT","SPECIAL_STYLE","whitespace","c","ifElseState","upper","SUCCESS","FAILURE","lower","_state","_index","consumeSpecialNameChar","NEXT_STATE","_buffer","_bufferOffset","_baseState","_special","_running","_ended","_xmlMode","_decodeEntities","decodeEntities","_stateText","_getSection","_stateBeforeTagName","_stateInTagName","_emitToken","_stateBeforeCloseingTagName","_stateInCloseingTagName","_stateAfterCloseingTagName","_stateBeforeAttributeName","_stateInSelfClosingTag","_stateInAttributeName","_stateAfterAttributeName","_stateBeforeAttributeValue","_stateInAttributeValueDoubleQuotes","_stateInAttributeValueSingleQuotes","_stateInAttributeValueNoQuotes","_stateBeforeDeclaration","_stateInDeclaration","_stateInProcessingInstruction","_stateBeforeComment","_stateInComment","_stateAfterComment1","_stateAfterComment2","substring","_stateBeforeCdata1","_stateBeforeCdata2","_stateBeforeCdata3","_stateBeforeCdata4","_stateBeforeCdata5","_stateBeforeCdata6","_stateInCdata","_stateAfterCdata1","_stateAfterCdata2","_stateBeforeSpecial","_stateBeforeSpecialEnd","_stateBeforeScript1","_stateBeforeScript2","_stateBeforeScript3","_stateBeforeScript4","_stateBeforeScript5","_stateAfterScript1","_stateAfterScript2","_stateAfterScript3","_stateAfterScript4","_stateAfterScript5","_stateBeforeStyle1","_stateBeforeStyle2","_stateBeforeStyle3","_stateBeforeStyle4","_stateAfterStyle1","_stateAfterStyle2","_stateAfterStyle3","_stateAfterStyle4","_stateBeforeEntity","_stateBeforeNumericEntity","_parseNamedEntityStrict","entity","map","_emitPartial","_parseLegacyEntity","start","limit","_stateInNamedEntity","_decodeNumericEntity","offset","sectionStart","parsed","parseInt","_stateInNumericEntity","_stateInHexEntity","_cleanup","Error","_parse","charAt","_finish","_handleTrailingData","Stream","WritableStream","Writable","StringDecoder","Buffer","parser","_parser","decoder","_decoder","decodeStrings","once","_write","encoding","DomUtils","callback","init","getElements","what","where","getElementsByTagName","getOneElement","fetch","recurse","getText","trim","addConditionally","obj","prop","tmp","isValidFeed","childs","feedRoot","children","type","attribs","href","updated","Date","items","item","entry","description","pubDate","id","_handleCallback","Cbs","scope","readable","keys","forEach","emit","a","b","ProxyHandler","CollectingHandler","events","restart","len","num"],"mappings":"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","file":"npm.htmlparser2-c4d9a2f690afb5d7a7c0.js","sourcesContent":["var Parser = require(\"./Parser.js\");\nvar DomHandler = require(\"domhandler\");\n\nfunction defineProp(name, value) {\n delete module.exports[name];\n module.exports[name] = value;\n return value;\n}\n\nmodule.exports = {\n Parser: Parser,\n Tokenizer: require(\"./Tokenizer.js\"),\n ElementType: require(\"domelementtype\"),\n DomHandler: DomHandler,\n get FeedHandler() {\n return defineProp(\"FeedHandler\", require(\"./FeedHandler.js\"));\n },\n get Stream() {\n return defineProp(\"Stream\", require(\"./Stream.js\"));\n },\n get WritableStream() {\n return defineProp(\"WritableStream\", require(\"./WritableStream.js\"));\n },\n get ProxyHandler() {\n return defineProp(\"ProxyHandler\", require(\"./ProxyHandler.js\"));\n },\n get DomUtils() {\n return defineProp(\"DomUtils\", require(\"domutils\"));\n },\n get CollectingHandler() {\n return defineProp(\n \"CollectingHandler\",\n require(\"./CollectingHandler.js\")\n );\n },\n // For legacy support\n DefaultHandler: DomHandler,\n get RssHandler() {\n return defineProp(\"RssHandler\", this.FeedHandler);\n },\n //helper methods\n parseDOM: function(data, options) {\n var handler = new DomHandler(options);\n new Parser(handler, options).end(data);\n return handler.dom;\n },\n parseFeed: function(feed, options) {\n var handler = new module.exports.FeedHandler(options);\n new Parser(handler, options).end(feed);\n return handler.dom;\n },\n createDomStream: function(cb, options, elementCb) {\n var handler = new DomHandler(cb, options, elementCb);\n return new Parser(handler, options);\n },\n // List of all events that the parser emits\n EVENTS: {\n /* Format: eventname: number of arguments */\n attribute: 2,\n cdatastart: 0,\n cdataend: 0,\n text: 1,\n processinginstruction: 2,\n comment: 1,\n commentend: 0,\n closetag: 1,\n opentag: 2,\n opentagname: 1,\n error: 1,\n end: 0\n }\n};\n","var Tokenizer = require(\"./Tokenizer.js\");\n\n/*\n\tOptions:\n\n\txmlMode: Disables the special behavior for script/style tags (false by default)\n\tlowerCaseAttributeNames: call .toLowerCase for each attribute name (true if xmlMode is `false`)\n\tlowerCaseTags: call .toLowerCase for each tag name (true if xmlMode is `false`)\n*/\n\n/*\n\tCallbacks:\n\n\toncdataend,\n\toncdatastart,\n\tonclosetag,\n\toncomment,\n\toncommentend,\n\tonerror,\n\tonopentag,\n\tonprocessinginstruction,\n\tonreset,\n\tontext\n*/\n\nvar formTags = {\n input: true,\n option: true,\n optgroup: true,\n select: true,\n button: true,\n datalist: true,\n textarea: true\n};\n\nvar openImpliesClose = {\n tr: { tr: true, th: true, td: true },\n th: { th: true },\n td: { thead: true, th: true, td: true },\n body: { head: true, link: true, script: true },\n li: { li: true },\n p: { p: true },\n h1: { p: true },\n h2: { p: true },\n h3: { p: true },\n h4: { p: true },\n h5: { p: true },\n h6: { p: true },\n select: formTags,\n input: formTags,\n output: formTags,\n button: formTags,\n datalist: formTags,\n textarea: formTags,\n option: { option: true },\n optgroup: { optgroup: true }\n};\n\nvar voidElements = {\n __proto__: null,\n area: true,\n base: true,\n basefont: true,\n br: true,\n col: true,\n command: true,\n embed: true,\n frame: true,\n hr: true,\n img: true,\n input: true,\n isindex: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n};\n\nvar foreignContextElements = {\n __proto__: null,\n math: true,\n svg: true\n};\nvar htmlIntegrationElements = {\n __proto__: null,\n mi: true,\n mo: true,\n mn: true,\n ms: true,\n mtext: true,\n \"annotation-xml\": true,\n foreignObject: true,\n desc: true,\n title: true\n};\n\nvar re_nameEnd = /\\s|\\//;\n\nfunction Parser(cbs, options) {\n this._options = options || {};\n this._cbs = cbs || {};\n\n this._tagname = \"\";\n this._attribname = \"\";\n this._attribvalue = \"\";\n this._attribs = null;\n this._stack = [];\n this._foreignContext = [];\n\n this.startIndex = 0;\n this.endIndex = null;\n\n this._lowerCaseTagNames =\n \"lowerCaseTags\" in this._options\n ? !!this._options.lowerCaseTags\n : !this._options.xmlMode;\n this._lowerCaseAttributeNames =\n \"lowerCaseAttributeNames\" in this._options\n ? !!this._options.lowerCaseAttributeNames\n : !this._options.xmlMode;\n\n if (this._options.Tokenizer) {\n Tokenizer = this._options.Tokenizer;\n }\n this._tokenizer = new Tokenizer(this._options, this);\n\n if (this._cbs.onparserinit) this._cbs.onparserinit(this);\n}\n\nrequire(\"inherits\")(Parser, require(\"events\").EventEmitter);\n\nParser.prototype._updatePosition = function(initialOffset) {\n if (this.endIndex === null) {\n if (this._tokenizer._sectionStart <= initialOffset) {\n this.startIndex = 0;\n } else {\n this.startIndex = this._tokenizer._sectionStart - initialOffset;\n }\n } else this.startIndex = this.endIndex + 1;\n this.endIndex = this._tokenizer.getAbsoluteIndex();\n};\n\n//Tokenizer event handlers\nParser.prototype.ontext = function(data) {\n this._updatePosition(1);\n this.endIndex--;\n\n if (this._cbs.ontext) this._cbs.ontext(data);\n};\n\nParser.prototype.onopentagname = function(name) {\n if (this._lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n\n this._tagname = name;\n\n if (!this._options.xmlMode && name in openImpliesClose) {\n for (\n var el;\n (el = this._stack[this._stack.length - 1]) in\n openImpliesClose[name];\n this.onclosetag(el)\n );\n }\n\n if (this._options.xmlMode || !(name in voidElements)) {\n this._stack.push(name);\n if (name in foreignContextElements) this._foreignContext.push(true);\n else if (name in htmlIntegrationElements)\n this._foreignContext.push(false);\n }\n\n if (this._cbs.onopentagname) this._cbs.onopentagname(name);\n if (this._cbs.onopentag) this._attribs = {};\n};\n\nParser.prototype.onopentagend = function() {\n this._updatePosition(1);\n\n if (this._attribs) {\n if (this._cbs.onopentag)\n this._cbs.onopentag(this._tagname, this._attribs);\n this._attribs = null;\n }\n\n if (\n !this._options.xmlMode &&\n this._cbs.onclosetag &&\n this._tagname in voidElements\n ) {\n this._cbs.onclosetag(this._tagname);\n }\n\n this._tagname = \"\";\n};\n\nParser.prototype.onclosetag = function(name) {\n this._updatePosition(1);\n\n if (this._lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n \n if (name in foreignContextElements || name in htmlIntegrationElements) {\n this._foreignContext.pop();\n }\n\n if (\n this._stack.length &&\n (!(name in voidElements) || this._options.xmlMode)\n ) {\n var pos = this._stack.lastIndexOf(name);\n if (pos !== -1) {\n if (this._cbs.onclosetag) {\n pos = this._stack.length - pos;\n while (pos--) this._cbs.onclosetag(this._stack.pop());\n } else this._stack.length = pos;\n } else if (name === \"p\" && !this._options.xmlMode) {\n this.onopentagname(name);\n this._closeCurrentTag();\n }\n } else if (!this._options.xmlMode && (name === \"br\" || name === \"p\")) {\n this.onopentagname(name);\n this._closeCurrentTag();\n }\n};\n\nParser.prototype.onselfclosingtag = function() {\n if (\n this._options.xmlMode ||\n this._options.recognizeSelfClosing ||\n this._foreignContext[this._foreignContext.length - 1]\n ) {\n this._closeCurrentTag();\n } else {\n this.onopentagend();\n }\n};\n\nParser.prototype._closeCurrentTag = function() {\n var name = this._tagname;\n\n this.onopentagend();\n\n //self-closing tags will be on the top of the stack\n //(cheaper check than in onclosetag)\n if (this._stack[this._stack.length - 1] === name) {\n if (this._cbs.onclosetag) {\n this._cbs.onclosetag(name);\n }\n this._stack.pop();\n \n }\n};\n\nParser.prototype.onattribname = function(name) {\n if (this._lowerCaseAttributeNames) {\n name = name.toLowerCase();\n }\n this._attribname = name;\n};\n\nParser.prototype.onattribdata = function(value) {\n this._attribvalue += value;\n};\n\nParser.prototype.onattribend = function() {\n if (this._cbs.onattribute)\n this._cbs.onattribute(this._attribname, this._attribvalue);\n if (\n this._attribs &&\n !Object.prototype.hasOwnProperty.call(this._attribs, this._attribname)\n ) {\n this._attribs[this._attribname] = this._attribvalue;\n }\n this._attribname = \"\";\n this._attribvalue = \"\";\n};\n\nParser.prototype._getInstructionName = function(value) {\n var idx = value.search(re_nameEnd),\n name = idx < 0 ? value : value.substr(0, idx);\n\n if (this._lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n\n return name;\n};\n\nParser.prototype.ondeclaration = function(value) {\n if (this._cbs.onprocessinginstruction) {\n var name = this._getInstructionName(value);\n this._cbs.onprocessinginstruction(\"!\" + name, \"!\" + value);\n }\n};\n\nParser.prototype.onprocessinginstruction = function(value) {\n if (this._cbs.onprocessinginstruction) {\n var name = this._getInstructionName(value);\n this._cbs.onprocessinginstruction(\"?\" + name, \"?\" + value);\n }\n};\n\nParser.prototype.oncomment = function(value) {\n this._updatePosition(4);\n\n if (this._cbs.oncomment) this._cbs.oncomment(value);\n if (this._cbs.oncommentend) this._cbs.oncommentend();\n};\n\nParser.prototype.oncdata = function(value) {\n this._updatePosition(1);\n\n if (this._options.xmlMode || this._options.recognizeCDATA) {\n if (this._cbs.oncdatastart) this._cbs.oncdatastart();\n if (this._cbs.ontext) this._cbs.ontext(value);\n if (this._cbs.oncdataend) this._cbs.oncdataend();\n } else {\n this.oncomment(\"[CDATA[\" + value + \"]]\");\n }\n};\n\nParser.prototype.onerror = function(err) {\n if (this._cbs.onerror) this._cbs.onerror(err);\n};\n\nParser.prototype.onend = function() {\n if (this._cbs.onclosetag) {\n for (\n var i = this._stack.length;\n i > 0;\n this._cbs.onclosetag(this._stack[--i])\n );\n }\n if (this._cbs.onend) this._cbs.onend();\n};\n\n//Resets the parser to a blank state, ready to parse a new HTML document\nParser.prototype.reset = function() {\n if (this._cbs.onreset) this._cbs.onreset();\n this._tokenizer.reset();\n\n this._tagname = \"\";\n this._attribname = \"\";\n this._attribs = null;\n this._stack = [];\n\n if (this._cbs.onparserinit) this._cbs.onparserinit(this);\n};\n\n//Parses a complete HTML document and pushes it to the handler\nParser.prototype.parseComplete = function(data) {\n this.reset();\n this.end(data);\n};\n\nParser.prototype.write = function(chunk) {\n this._tokenizer.write(chunk);\n};\n\nParser.prototype.end = function(chunk) {\n this._tokenizer.end(chunk);\n};\n\nParser.prototype.pause = function() {\n this._tokenizer.pause();\n};\n\nParser.prototype.resume = function() {\n this._tokenizer.resume();\n};\n\n//alias for backwards compat\nParser.prototype.parseChunk = Parser.prototype.write;\nParser.prototype.done = Parser.prototype.end;\n\nmodule.exports = Parser;\n","module.exports = Tokenizer;\n\nvar decodeCodePoint = require(\"entities/lib/decode_codepoint.js\");\nvar entityMap = require(\"entities/maps/entities.json\");\nvar legacyMap = require(\"entities/maps/legacy.json\");\nvar xmlMap = require(\"entities/maps/xml.json\");\n\nvar i = 0;\n\nvar TEXT = i++;\nvar BEFORE_TAG_NAME = i++; //after <\nvar IN_TAG_NAME = i++;\nvar IN_SELF_CLOSING_TAG = i++;\nvar BEFORE_CLOSING_TAG_NAME = i++;\nvar IN_CLOSING_TAG_NAME = i++;\nvar AFTER_CLOSING_TAG_NAME = i++;\n\n//attributes\nvar BEFORE_ATTRIBUTE_NAME = i++;\nvar IN_ATTRIBUTE_NAME = i++;\nvar AFTER_ATTRIBUTE_NAME = i++;\nvar BEFORE_ATTRIBUTE_VALUE = i++;\nvar IN_ATTRIBUTE_VALUE_DQ = i++; // \"\nvar IN_ATTRIBUTE_VALUE_SQ = i++; // '\nvar IN_ATTRIBUTE_VALUE_NQ = i++;\n\n//declarations\nvar BEFORE_DECLARATION = i++; // !\nvar IN_DECLARATION = i++;\n\n//processing instructions\nvar IN_PROCESSING_INSTRUCTION = i++; // ?\n\n//comments\nvar BEFORE_COMMENT = i++;\nvar IN_COMMENT = i++;\nvar AFTER_COMMENT_1 = i++;\nvar AFTER_COMMENT_2 = i++;\n\n//cdata\nvar BEFORE_CDATA_1 = i++; // [\nvar BEFORE_CDATA_2 = i++; // C\nvar BEFORE_CDATA_3 = i++; // D\nvar BEFORE_CDATA_4 = i++; // A\nvar BEFORE_CDATA_5 = i++; // T\nvar BEFORE_CDATA_6 = i++; // A\nvar IN_CDATA = i++; // [\nvar AFTER_CDATA_1 = i++; // ]\nvar AFTER_CDATA_2 = i++; // ]\n\n//special tags\nvar BEFORE_SPECIAL = i++; //S\nvar BEFORE_SPECIAL_END = i++; //S\n\nvar BEFORE_SCRIPT_1 = i++; //C\nvar BEFORE_SCRIPT_2 = i++; //R\nvar BEFORE_SCRIPT_3 = i++; //I\nvar BEFORE_SCRIPT_4 = i++; //P\nvar BEFORE_SCRIPT_5 = i++; //T\nvar AFTER_SCRIPT_1 = i++; //C\nvar AFTER_SCRIPT_2 = i++; //R\nvar AFTER_SCRIPT_3 = i++; //I\nvar AFTER_SCRIPT_4 = i++; //P\nvar AFTER_SCRIPT_5 = i++; //T\n\nvar BEFORE_STYLE_1 = i++; //T\nvar BEFORE_STYLE_2 = i++; //Y\nvar BEFORE_STYLE_3 = i++; //L\nvar BEFORE_STYLE_4 = i++; //E\nvar AFTER_STYLE_1 = i++; //T\nvar AFTER_STYLE_2 = i++; //Y\nvar AFTER_STYLE_3 = i++; //L\nvar AFTER_STYLE_4 = i++; //E\n\nvar BEFORE_ENTITY = i++; //&\nvar BEFORE_NUMERIC_ENTITY = i++; //#\nvar IN_NAMED_ENTITY = i++;\nvar IN_NUMERIC_ENTITY = i++;\nvar IN_HEX_ENTITY = i++; //X\n\nvar j = 0;\n\nvar SPECIAL_NONE = j++;\nvar SPECIAL_SCRIPT = j++;\nvar SPECIAL_STYLE = j++;\n\nfunction whitespace(c) {\n return c === \" \" || c === \"\\n\" || c === \"\\t\" || c === \"\\f\" || c === \"\\r\";\n}\n\nfunction ifElseState(upper, SUCCESS, FAILURE) {\n var lower = upper.toLowerCase();\n\n if (upper === lower) {\n return function(c) {\n if (c === lower) {\n this._state = SUCCESS;\n } else {\n this._state = FAILURE;\n this._index--;\n }\n };\n } else {\n return function(c) {\n if (c === lower || c === upper) {\n this._state = SUCCESS;\n } else {\n this._state = FAILURE;\n this._index--;\n }\n };\n }\n}\n\nfunction consumeSpecialNameChar(upper, NEXT_STATE) {\n var lower = upper.toLowerCase();\n\n return function(c) {\n if (c === lower || c === upper) {\n this._state = NEXT_STATE;\n } else {\n this._state = IN_TAG_NAME;\n this._index--; //consume the token again\n }\n };\n}\n\nfunction Tokenizer(options, cbs) {\n this._state = TEXT;\n this._buffer = \"\";\n this._sectionStart = 0;\n this._index = 0;\n this._bufferOffset = 0; //chars removed from _buffer\n this._baseState = TEXT;\n this._special = SPECIAL_NONE;\n this._cbs = cbs;\n this._running = true;\n this._ended = false;\n this._xmlMode = !!(options && options.xmlMode);\n this._decodeEntities = !!(options && options.decodeEntities);\n}\n\nTokenizer.prototype._stateText = function(c) {\n if (c === \"<\") {\n if (this._index > this._sectionStart) {\n this._cbs.ontext(this._getSection());\n }\n this._state = BEFORE_TAG_NAME;\n this._sectionStart = this._index;\n } else if (\n this._decodeEntities &&\n this._special === SPECIAL_NONE &&\n c === \"&\"\n ) {\n if (this._index > this._sectionStart) {\n this._cbs.ontext(this._getSection());\n }\n this._baseState = TEXT;\n this._state = BEFORE_ENTITY;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateBeforeTagName = function(c) {\n if (c === \"/\") {\n this._state = BEFORE_CLOSING_TAG_NAME;\n } else if (c === \"<\") {\n this._cbs.ontext(this._getSection());\n this._sectionStart = this._index;\n } else if (c === \">\" || this._special !== SPECIAL_NONE || whitespace(c)) {\n this._state = TEXT;\n } else if (c === \"!\") {\n this._state = BEFORE_DECLARATION;\n this._sectionStart = this._index + 1;\n } else if (c === \"?\") {\n this._state = IN_PROCESSING_INSTRUCTION;\n this._sectionStart = this._index + 1;\n } else {\n this._state =\n !this._xmlMode && (c === \"s\" || c === \"S\")\n ? BEFORE_SPECIAL\n : IN_TAG_NAME;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInTagName = function(c) {\n if (c === \"/\" || c === \">\" || whitespace(c)) {\n this._emitToken(\"onopentagname\");\n this._state = BEFORE_ATTRIBUTE_NAME;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateBeforeCloseingTagName = function(c) {\n if (whitespace(c));\n else if (c === \">\") {\n this._state = TEXT;\n } else if (this._special !== SPECIAL_NONE) {\n if (c === \"s\" || c === \"S\") {\n this._state = BEFORE_SPECIAL_END;\n } else {\n this._state = TEXT;\n this._index--;\n }\n } else {\n this._state = IN_CLOSING_TAG_NAME;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInCloseingTagName = function(c) {\n if (c === \">\" || whitespace(c)) {\n this._emitToken(\"onclosetag\");\n this._state = AFTER_CLOSING_TAG_NAME;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateAfterCloseingTagName = function(c) {\n //skip everything until \">\"\n if (c === \">\") {\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n }\n};\n\nTokenizer.prototype._stateBeforeAttributeName = function(c) {\n if (c === \">\") {\n this._cbs.onopentagend();\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n } else if (c === \"/\") {\n this._state = IN_SELF_CLOSING_TAG;\n } else if (!whitespace(c)) {\n this._state = IN_ATTRIBUTE_NAME;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInSelfClosingTag = function(c) {\n if (c === \">\") {\n this._cbs.onselfclosingtag();\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n } else if (!whitespace(c)) {\n this._state = BEFORE_ATTRIBUTE_NAME;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateInAttributeName = function(c) {\n if (c === \"=\" || c === \"/\" || c === \">\" || whitespace(c)) {\n this._cbs.onattribname(this._getSection());\n this._sectionStart = -1;\n this._state = AFTER_ATTRIBUTE_NAME;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateAfterAttributeName = function(c) {\n if (c === \"=\") {\n this._state = BEFORE_ATTRIBUTE_VALUE;\n } else if (c === \"/\" || c === \">\") {\n this._cbs.onattribend();\n this._state = BEFORE_ATTRIBUTE_NAME;\n this._index--;\n } else if (!whitespace(c)) {\n this._cbs.onattribend();\n this._state = IN_ATTRIBUTE_NAME;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateBeforeAttributeValue = function(c) {\n if (c === '\"') {\n this._state = IN_ATTRIBUTE_VALUE_DQ;\n this._sectionStart = this._index + 1;\n } else if (c === \"'\") {\n this._state = IN_ATTRIBUTE_VALUE_SQ;\n this._sectionStart = this._index + 1;\n } else if (!whitespace(c)) {\n this._state = IN_ATTRIBUTE_VALUE_NQ;\n this._sectionStart = this._index;\n this._index--; //reconsume token\n }\n};\n\nTokenizer.prototype._stateInAttributeValueDoubleQuotes = function(c) {\n if (c === '\"') {\n this._emitToken(\"onattribdata\");\n this._cbs.onattribend();\n this._state = BEFORE_ATTRIBUTE_NAME;\n } else if (this._decodeEntities && c === \"&\") {\n this._emitToken(\"onattribdata\");\n this._baseState = this._state;\n this._state = BEFORE_ENTITY;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInAttributeValueSingleQuotes = function(c) {\n if (c === \"'\") {\n this._emitToken(\"onattribdata\");\n this._cbs.onattribend();\n this._state = BEFORE_ATTRIBUTE_NAME;\n } else if (this._decodeEntities && c === \"&\") {\n this._emitToken(\"onattribdata\");\n this._baseState = this._state;\n this._state = BEFORE_ENTITY;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInAttributeValueNoQuotes = function(c) {\n if (whitespace(c) || c === \">\") {\n this._emitToken(\"onattribdata\");\n this._cbs.onattribend();\n this._state = BEFORE_ATTRIBUTE_NAME;\n this._index--;\n } else if (this._decodeEntities && c === \"&\") {\n this._emitToken(\"onattribdata\");\n this._baseState = this._state;\n this._state = BEFORE_ENTITY;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateBeforeDeclaration = function(c) {\n this._state =\n c === \"[\"\n ? BEFORE_CDATA_1\n : c === \"-\"\n ? BEFORE_COMMENT\n : IN_DECLARATION;\n};\n\nTokenizer.prototype._stateInDeclaration = function(c) {\n if (c === \">\") {\n this._cbs.ondeclaration(this._getSection());\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n }\n};\n\nTokenizer.prototype._stateInProcessingInstruction = function(c) {\n if (c === \">\") {\n this._cbs.onprocessinginstruction(this._getSection());\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n }\n};\n\nTokenizer.prototype._stateBeforeComment = function(c) {\n if (c === \"-\") {\n this._state = IN_COMMENT;\n this._sectionStart = this._index + 1;\n } else {\n this._state = IN_DECLARATION;\n }\n};\n\nTokenizer.prototype._stateInComment = function(c) {\n if (c === \"-\") this._state = AFTER_COMMENT_1;\n};\n\nTokenizer.prototype._stateAfterComment1 = function(c) {\n if (c === \"-\") {\n this._state = AFTER_COMMENT_2;\n } else {\n this._state = IN_COMMENT;\n }\n};\n\nTokenizer.prototype._stateAfterComment2 = function(c) {\n if (c === \">\") {\n //remove 2 trailing chars\n this._cbs.oncomment(\n this._buffer.substring(this._sectionStart, this._index - 2)\n );\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n } else if (c !== \"-\") {\n this._state = IN_COMMENT;\n }\n // else: stay in AFTER_COMMENT_2 (`--->`)\n};\n\nTokenizer.prototype._stateBeforeCdata1 = ifElseState(\n \"C\",\n BEFORE_CDATA_2,\n IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata2 = ifElseState(\n \"D\",\n BEFORE_CDATA_3,\n IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata3 = ifElseState(\n \"A\",\n BEFORE_CDATA_4,\n IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata4 = ifElseState(\n \"T\",\n BEFORE_CDATA_5,\n IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata5 = ifElseState(\n \"A\",\n BEFORE_CDATA_6,\n IN_DECLARATION\n);\n\nTokenizer.prototype._stateBeforeCdata6 = function(c) {\n if (c === \"[\") {\n this._state = IN_CDATA;\n this._sectionStart = this._index + 1;\n } else {\n this._state = IN_DECLARATION;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateInCdata = function(c) {\n if (c === \"]\") this._state = AFTER_CDATA_1;\n};\n\nTokenizer.prototype._stateAfterCdata1 = function(c) {\n if (c === \"]\") this._state = AFTER_CDATA_2;\n else this._state = IN_CDATA;\n};\n\nTokenizer.prototype._stateAfterCdata2 = function(c) {\n if (c === \">\") {\n //remove 2 trailing chars\n this._cbs.oncdata(\n this._buffer.substring(this._sectionStart, this._index - 2)\n );\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n } else if (c !== \"]\") {\n this._state = IN_CDATA;\n }\n //else: stay in AFTER_CDATA_2 (`]]]>`)\n};\n\nTokenizer.prototype._stateBeforeSpecial = function(c) {\n if (c === \"c\" || c === \"C\") {\n this._state = BEFORE_SCRIPT_1;\n } else if (c === \"t\" || c === \"T\") {\n this._state = BEFORE_STYLE_1;\n } else {\n this._state = IN_TAG_NAME;\n this._index--; //consume the token again\n }\n};\n\nTokenizer.prototype._stateBeforeSpecialEnd = function(c) {\n if (this._special === SPECIAL_SCRIPT && (c === \"c\" || c === \"C\")) {\n this._state = AFTER_SCRIPT_1;\n } else if (this._special === SPECIAL_STYLE && (c === \"t\" || c === \"T\")) {\n this._state = AFTER_STYLE_1;\n } else this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeScript1 = consumeSpecialNameChar(\n \"R\",\n BEFORE_SCRIPT_2\n);\nTokenizer.prototype._stateBeforeScript2 = consumeSpecialNameChar(\n \"I\",\n BEFORE_SCRIPT_3\n);\nTokenizer.prototype._stateBeforeScript3 = consumeSpecialNameChar(\n \"P\",\n BEFORE_SCRIPT_4\n);\nTokenizer.prototype._stateBeforeScript4 = consumeSpecialNameChar(\n \"T\",\n BEFORE_SCRIPT_5\n);\n\nTokenizer.prototype._stateBeforeScript5 = function(c) {\n if (c === \"/\" || c === \">\" || whitespace(c)) {\n this._special = SPECIAL_SCRIPT;\n }\n this._state = IN_TAG_NAME;\n this._index--; //consume the token again\n};\n\nTokenizer.prototype._stateAfterScript1 = ifElseState(\"R\", AFTER_SCRIPT_2, TEXT);\nTokenizer.prototype._stateAfterScript2 = ifElseState(\"I\", AFTER_SCRIPT_3, TEXT);\nTokenizer.prototype._stateAfterScript3 = ifElseState(\"P\", AFTER_SCRIPT_4, TEXT);\nTokenizer.prototype._stateAfterScript4 = ifElseState(\"T\", AFTER_SCRIPT_5, TEXT);\n\nTokenizer.prototype._stateAfterScript5 = function(c) {\n if (c === \">\" || whitespace(c)) {\n this._special = SPECIAL_NONE;\n this._state = IN_CLOSING_TAG_NAME;\n this._sectionStart = this._index - 6;\n this._index--; //reconsume the token\n } else this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeStyle1 = consumeSpecialNameChar(\n \"Y\",\n BEFORE_STYLE_2\n);\nTokenizer.prototype._stateBeforeStyle2 = consumeSpecialNameChar(\n \"L\",\n BEFORE_STYLE_3\n);\nTokenizer.prototype._stateBeforeStyle3 = consumeSpecialNameChar(\n \"E\",\n BEFORE_STYLE_4\n);\n\nTokenizer.prototype._stateBeforeStyle4 = function(c) {\n if (c === \"/\" || c === \">\" || whitespace(c)) {\n this._special = SPECIAL_STYLE;\n }\n this._state = IN_TAG_NAME;\n this._index--; //consume the token again\n};\n\nTokenizer.prototype._stateAfterStyle1 = ifElseState(\"Y\", AFTER_STYLE_2, TEXT);\nTokenizer.prototype._stateAfterStyle2 = ifElseState(\"L\", AFTER_STYLE_3, TEXT);\nTokenizer.prototype._stateAfterStyle3 = ifElseState(\"E\", AFTER_STYLE_4, TEXT);\n\nTokenizer.prototype._stateAfterStyle4 = function(c) {\n if (c === \">\" || whitespace(c)) {\n this._special = SPECIAL_NONE;\n this._state = IN_CLOSING_TAG_NAME;\n this._sectionStart = this._index - 5;\n this._index--; //reconsume the token\n } else this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeEntity = ifElseState(\n \"#\",\n BEFORE_NUMERIC_ENTITY,\n IN_NAMED_ENTITY\n);\nTokenizer.prototype._stateBeforeNumericEntity = ifElseState(\n \"X\",\n IN_HEX_ENTITY,\n IN_NUMERIC_ENTITY\n);\n\n//for entities terminated with a semicolon\nTokenizer.prototype._parseNamedEntityStrict = function() {\n //offset = 1\n if (this._sectionStart + 1 < this._index) {\n var entity = this._buffer.substring(\n this._sectionStart + 1,\n this._index\n ),\n map = this._xmlMode ? xmlMap : entityMap;\n\n if (map.hasOwnProperty(entity)) {\n this._emitPartial(map[entity]);\n this._sectionStart = this._index + 1;\n }\n }\n};\n\n//parses legacy entities (without trailing semicolon)\nTokenizer.prototype._parseLegacyEntity = function() {\n var start = this._sectionStart + 1,\n limit = this._index - start;\n\n if (limit > 6) limit = 6; //the max length of legacy entities is 6\n\n while (limit >= 2) {\n //the min length of legacy entities is 2\n var entity = this._buffer.substr(start, limit);\n\n if (legacyMap.hasOwnProperty(entity)) {\n this._emitPartial(legacyMap[entity]);\n this._sectionStart += limit + 1;\n return;\n } else {\n limit--;\n }\n }\n};\n\nTokenizer.prototype._stateInNamedEntity = function(c) {\n if (c === \";\") {\n this._parseNamedEntityStrict();\n if (this._sectionStart + 1 < this._index && !this._xmlMode) {\n this._parseLegacyEntity();\n }\n this._state = this._baseState;\n } else if (\n (c < \"a\" || c > \"z\") &&\n (c < \"A\" || c > \"Z\") &&\n (c < \"0\" || c > \"9\")\n ) {\n if (this._xmlMode);\n else if (this._sectionStart + 1 === this._index);\n else if (this._baseState !== TEXT) {\n if (c !== \"=\") {\n this._parseNamedEntityStrict();\n }\n } else {\n this._parseLegacyEntity();\n }\n\n this._state = this._baseState;\n this._index--;\n }\n};\n\nTokenizer.prototype._decodeNumericEntity = function(offset, base) {\n var sectionStart = this._sectionStart + offset;\n\n if (sectionStart !== this._index) {\n //parse entity\n var entity = this._buffer.substring(sectionStart, this._index);\n var parsed = parseInt(entity, base);\n\n this._emitPartial(decodeCodePoint(parsed));\n this._sectionStart = this._index;\n } else {\n this._sectionStart--;\n }\n\n this._state = this._baseState;\n};\n\nTokenizer.prototype._stateInNumericEntity = function(c) {\n if (c === \";\") {\n this._decodeNumericEntity(2, 10);\n this._sectionStart++;\n } else if (c < \"0\" || c > \"9\") {\n if (!this._xmlMode) {\n this._decodeNumericEntity(2, 10);\n } else {\n this._state = this._baseState;\n }\n this._index--;\n }\n};\n\nTokenizer.prototype._stateInHexEntity = function(c) {\n if (c === \";\") {\n this._decodeNumericEntity(3, 16);\n this._sectionStart++;\n } else if (\n (c < \"a\" || c > \"f\") &&\n (c < \"A\" || c > \"F\") &&\n (c < \"0\" || c > \"9\")\n ) {\n if (!this._xmlMode) {\n this._decodeNumericEntity(3, 16);\n } else {\n this._state = this._baseState;\n }\n this._index--;\n }\n};\n\nTokenizer.prototype._cleanup = function() {\n if (this._sectionStart < 0) {\n this._buffer = \"\";\n this._bufferOffset += this._index;\n this._index = 0;\n } else if (this._running) {\n if (this._state === TEXT) {\n if (this._sectionStart !== this._index) {\n this._cbs.ontext(this._buffer.substr(this._sectionStart));\n }\n this._buffer = \"\";\n this._bufferOffset += this._index;\n this._index = 0;\n } else if (this._sectionStart === this._index) {\n //the section just started\n this._buffer = \"\";\n this._bufferOffset += this._index;\n this._index = 0;\n } else {\n //remove everything unnecessary\n this._buffer = this._buffer.substr(this._sectionStart);\n this._index -= this._sectionStart;\n this._bufferOffset += this._sectionStart;\n }\n\n this._sectionStart = 0;\n }\n};\n\n//TODO make events conditional\nTokenizer.prototype.write = function(chunk) {\n if (this._ended) this._cbs.onerror(Error(\".write() after done!\"));\n\n this._buffer += chunk;\n this._parse();\n};\n\nTokenizer.prototype._parse = function() {\n while (this._index < this._buffer.length && this._running) {\n var c = this._buffer.charAt(this._index);\n if (this._state === TEXT) {\n this._stateText(c);\n } else if (this._state === BEFORE_TAG_NAME) {\n this._stateBeforeTagName(c);\n } else if (this._state === IN_TAG_NAME) {\n this._stateInTagName(c);\n } else if (this._state === BEFORE_CLOSING_TAG_NAME) {\n this._stateBeforeCloseingTagName(c);\n } else if (this._state === IN_CLOSING_TAG_NAME) {\n this._stateInCloseingTagName(c);\n } else if (this._state === AFTER_CLOSING_TAG_NAME) {\n this._stateAfterCloseingTagName(c);\n } else if (this._state === IN_SELF_CLOSING_TAG) {\n this._stateInSelfClosingTag(c);\n } else if (this._state === BEFORE_ATTRIBUTE_NAME) {\n\n /*\n\t\t*\tattributes\n\t\t*/\n this._stateBeforeAttributeName(c);\n } else if (this._state === IN_ATTRIBUTE_NAME) {\n this._stateInAttributeName(c);\n } else if (this._state === AFTER_ATTRIBUTE_NAME) {\n this._stateAfterAttributeName(c);\n } else if (this._state === BEFORE_ATTRIBUTE_VALUE) {\n this._stateBeforeAttributeValue(c);\n } else if (this._state === IN_ATTRIBUTE_VALUE_DQ) {\n this._stateInAttributeValueDoubleQuotes(c);\n } else if (this._state === IN_ATTRIBUTE_VALUE_SQ) {\n this._stateInAttributeValueSingleQuotes(c);\n } else if (this._state === IN_ATTRIBUTE_VALUE_NQ) {\n this._stateInAttributeValueNoQuotes(c);\n } else if (this._state === BEFORE_DECLARATION) {\n\n /*\n\t\t*\tdeclarations\n\t\t*/\n this._stateBeforeDeclaration(c);\n } else if (this._state === IN_DECLARATION) {\n this._stateInDeclaration(c);\n } else if (this._state === IN_PROCESSING_INSTRUCTION) {\n\n /*\n\t\t*\tprocessing instructions\n\t\t*/\n this._stateInProcessingInstruction(c);\n } else if (this._state === BEFORE_COMMENT) {\n\n /*\n\t\t*\tcomments\n\t\t*/\n this._stateBeforeComment(c);\n } else if (this._state === IN_COMMENT) {\n this._stateInComment(c);\n } else if (this._state === AFTER_COMMENT_1) {\n this._stateAfterComment1(c);\n } else if (this._state === AFTER_COMMENT_2) {\n this._stateAfterComment2(c);\n } else if (this._state === BEFORE_CDATA_1) {\n\n /*\n\t\t*\tcdata\n\t\t*/\n this._stateBeforeCdata1(c);\n } else if (this._state === BEFORE_CDATA_2) {\n this._stateBeforeCdata2(c);\n } else if (this._state === BEFORE_CDATA_3) {\n this._stateBeforeCdata3(c);\n } else if (this._state === BEFORE_CDATA_4) {\n this._stateBeforeCdata4(c);\n } else if (this._state === BEFORE_CDATA_5) {\n this._stateBeforeCdata5(c);\n } else if (this._state === BEFORE_CDATA_6) {\n this._stateBeforeCdata6(c);\n } else if (this._state === IN_CDATA) {\n this._stateInCdata(c);\n } else if (this._state === AFTER_CDATA_1) {\n this._stateAfterCdata1(c);\n } else if (this._state === AFTER_CDATA_2) {\n this._stateAfterCdata2(c);\n } else if (this._state === BEFORE_SPECIAL) {\n\n /*\n\t\t* special tags\n\t\t*/\n this._stateBeforeSpecial(c);\n } else if (this._state === BEFORE_SPECIAL_END) {\n this._stateBeforeSpecialEnd(c);\n } else if (this._state === BEFORE_SCRIPT_1) {\n\n /*\n\t\t* script\n\t\t*/\n this._stateBeforeScript1(c);\n } else if (this._state === BEFORE_SCRIPT_2) {\n this._stateBeforeScript2(c);\n } else if (this._state === BEFORE_SCRIPT_3) {\n this._stateBeforeScript3(c);\n } else if (this._state === BEFORE_SCRIPT_4) {\n this._stateBeforeScript4(c);\n } else if (this._state === BEFORE_SCRIPT_5) {\n this._stateBeforeScript5(c);\n } else if (this._state === AFTER_SCRIPT_1) {\n this._stateAfterScript1(c);\n } else if (this._state === AFTER_SCRIPT_2) {\n this._stateAfterScript2(c);\n } else if (this._state === AFTER_SCRIPT_3) {\n this._stateAfterScript3(c);\n } else if (this._state === AFTER_SCRIPT_4) {\n this._stateAfterScript4(c);\n } else if (this._state === AFTER_SCRIPT_5) {\n this._stateAfterScript5(c);\n } else if (this._state === BEFORE_STYLE_1) {\n\n /*\n\t\t* style\n\t\t*/\n this._stateBeforeStyle1(c);\n } else if (this._state === BEFORE_STYLE_2) {\n this._stateBeforeStyle2(c);\n } else if (this._state === BEFORE_STYLE_3) {\n this._stateBeforeStyle3(c);\n } else if (this._state === BEFORE_STYLE_4) {\n this._stateBeforeStyle4(c);\n } else if (this._state === AFTER_STYLE_1) {\n this._stateAfterStyle1(c);\n } else if (this._state === AFTER_STYLE_2) {\n this._stateAfterStyle2(c);\n } else if (this._state === AFTER_STYLE_3) {\n this._stateAfterStyle3(c);\n } else if (this._state === AFTER_STYLE_4) {\n this._stateAfterStyle4(c);\n } else if (this._state === BEFORE_ENTITY) {\n\n /*\n\t\t* entities\n\t\t*/\n this._stateBeforeEntity(c);\n } else if (this._state === BEFORE_NUMERIC_ENTITY) {\n this._stateBeforeNumericEntity(c);\n } else if (this._state === IN_NAMED_ENTITY) {\n this._stateInNamedEntity(c);\n } else if (this._state === IN_NUMERIC_ENTITY) {\n this._stateInNumericEntity(c);\n } else if (this._state === IN_HEX_ENTITY) {\n this._stateInHexEntity(c);\n } else {\n this._cbs.onerror(Error(\"unknown _state\"), this._state);\n }\n\n this._index++;\n }\n\n this._cleanup();\n};\n\nTokenizer.prototype.pause = function() {\n this._running = false;\n};\nTokenizer.prototype.resume = function() {\n this._running = true;\n\n if (this._index < this._buffer.length) {\n this._parse();\n }\n if (this._ended) {\n this._finish();\n }\n};\n\nTokenizer.prototype.end = function(chunk) {\n if (this._ended) this._cbs.onerror(Error(\".end() after done!\"));\n if (chunk) this.write(chunk);\n\n this._ended = true;\n\n if (this._running) this._finish();\n};\n\nTokenizer.prototype._finish = function() {\n //if there is remaining data, emit it in a reasonable way\n if (this._sectionStart < this._index) {\n this._handleTrailingData();\n }\n\n this._cbs.onend();\n};\n\nTokenizer.prototype._handleTrailingData = function() {\n var data = this._buffer.substr(this._sectionStart);\n\n if (\n this._state === IN_CDATA ||\n this._state === AFTER_CDATA_1 ||\n this._state === AFTER_CDATA_2\n ) {\n this._cbs.oncdata(data);\n } else if (\n this._state === IN_COMMENT ||\n this._state === AFTER_COMMENT_1 ||\n this._state === AFTER_COMMENT_2\n ) {\n this._cbs.oncomment(data);\n } else if (this._state === IN_NAMED_ENTITY && !this._xmlMode) {\n this._parseLegacyEntity();\n if (this._sectionStart < this._index) {\n this._state = this._baseState;\n this._handleTrailingData();\n }\n } else if (this._state === IN_NUMERIC_ENTITY && !this._xmlMode) {\n this._decodeNumericEntity(2, 10);\n if (this._sectionStart < this._index) {\n this._state = this._baseState;\n this._handleTrailingData();\n }\n } else if (this._state === IN_HEX_ENTITY && !this._xmlMode) {\n this._decodeNumericEntity(3, 16);\n if (this._sectionStart < this._index) {\n this._state = this._baseState;\n this._handleTrailingData();\n }\n } else if (\n this._state !== IN_TAG_NAME &&\n this._state !== BEFORE_ATTRIBUTE_NAME &&\n this._state !== BEFORE_ATTRIBUTE_VALUE &&\n this._state !== AFTER_ATTRIBUTE_NAME &&\n this._state !== IN_ATTRIBUTE_NAME &&\n this._state !== IN_ATTRIBUTE_VALUE_SQ &&\n this._state !== IN_ATTRIBUTE_VALUE_DQ &&\n this._state !== IN_ATTRIBUTE_VALUE_NQ &&\n this._state !== IN_CLOSING_TAG_NAME\n ) {\n this._cbs.ontext(data);\n }\n //else, ignore remaining data\n //TODO add a way to remove current tag\n};\n\nTokenizer.prototype.reset = function() {\n Tokenizer.call(\n this,\n { xmlMode: this._xmlMode, decodeEntities: this._decodeEntities },\n this._cbs\n );\n};\n\nTokenizer.prototype.getAbsoluteIndex = function() {\n return this._bufferOffset + this._index;\n};\n\nTokenizer.prototype._getSection = function() {\n return this._buffer.substring(this._sectionStart, this._index);\n};\n\nTokenizer.prototype._emitToken = function(name) {\n this._cbs[name](this._getSection());\n this._sectionStart = -1;\n};\n\nTokenizer.prototype._emitPartial = function(value) {\n if (this._baseState !== TEXT) {\n this._cbs.onattribdata(value); //TODO implement the new event\n } else {\n this._cbs.ontext(value);\n }\n};\n","module.exports = Stream;\n\nvar Parser = require(\"./Parser.js\");\nvar WritableStream = require(\"readable-stream\").Writable;\nvar StringDecoder = require(\"string_decoder\").StringDecoder;\nvar Buffer = require(\"buffer\").Buffer;\n\nfunction Stream(cbs, options) {\n var parser = (this._parser = new Parser(cbs, options));\n var decoder = (this._decoder = new StringDecoder());\n\n WritableStream.call(this, { decodeStrings: false });\n\n this.once(\"finish\", function() {\n parser.end(decoder.end());\n });\n}\n\nrequire(\"inherits\")(Stream, WritableStream);\n\nStream.prototype._write = function(chunk, encoding, cb) {\n if (chunk instanceof Buffer) chunk = this._decoder.write(chunk);\n this._parser.write(chunk);\n cb();\n};\n","var DomHandler = require(\"domhandler\");\nvar DomUtils = require(\"domutils\");\n\n//TODO: make this a streamable handler\nfunction FeedHandler(callback, options) {\n this.init(callback, options);\n}\n\nrequire(\"inherits\")(FeedHandler, DomHandler);\n\nFeedHandler.prototype.init = DomHandler;\n\nfunction getElements(what, where) {\n return DomUtils.getElementsByTagName(what, where, true);\n}\nfunction getOneElement(what, where) {\n return DomUtils.getElementsByTagName(what, where, true, 1)[0];\n}\nfunction fetch(what, where, recurse) {\n return DomUtils.getText(\n DomUtils.getElementsByTagName(what, where, recurse, 1)\n ).trim();\n}\n\nfunction addConditionally(obj, prop, what, where, recurse) {\n var tmp = fetch(what, where, recurse);\n if (tmp) obj[prop] = tmp;\n}\n\nvar isValidFeed = function(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n};\n\nFeedHandler.prototype.onend = function() {\n var feed = {},\n feedRoot = getOneElement(isValidFeed, this.dom),\n tmp,\n childs;\n\n if (feedRoot) {\n if (feedRoot.name === \"feed\") {\n childs = feedRoot.children;\n\n feed.type = \"atom\";\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n if (\n (tmp = getOneElement(\"link\", childs)) &&\n (tmp = tmp.attribs) &&\n (tmp = tmp.href)\n )\n feed.link = tmp;\n addConditionally(feed, \"description\", \"subtitle\", childs);\n if ((tmp = fetch(\"updated\", childs))) feed.updated = new Date(tmp);\n addConditionally(feed, \"author\", \"email\", childs, true);\n\n feed.items = getElements(\"entry\", childs).map(function(item) {\n var entry = {},\n tmp;\n\n item = item.children;\n\n addConditionally(entry, \"id\", \"id\", item);\n addConditionally(entry, \"title\", \"title\", item);\n if (\n (tmp = getOneElement(\"link\", item)) &&\n (tmp = tmp.attribs) &&\n (tmp = tmp.href)\n )\n entry.link = tmp;\n if ((tmp = fetch(\"summary\", item) || fetch(\"content\", item)))\n entry.description = tmp;\n if ((tmp = fetch(\"updated\", item)))\n entry.pubDate = new Date(tmp);\n return entry;\n });\n } else {\n childs = getOneElement(\"channel\", feedRoot.children).children;\n\n feed.type = feedRoot.name.substr(0, 3);\n feed.id = \"\";\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n if ((tmp = fetch(\"lastBuildDate\", childs)))\n feed.updated = new Date(tmp);\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n\n feed.items = getElements(\"item\", feedRoot.children).map(function(\n item\n ) {\n var entry = {},\n tmp;\n\n item = item.children;\n\n addConditionally(entry, \"id\", \"guid\", item);\n addConditionally(entry, \"title\", \"title\", item);\n addConditionally(entry, \"link\", \"link\", item);\n addConditionally(entry, \"description\", \"description\", item);\n if ((tmp = fetch(\"pubDate\", item)))\n entry.pubDate = new Date(tmp);\n return entry;\n });\n }\n }\n this.dom = feed;\n DomHandler.prototype._handleCallback.call(\n this,\n feedRoot ? null : Error(\"couldn't find root of feed\")\n );\n};\n\nmodule.exports = FeedHandler;\n","module.exports = Stream;\n\nvar Parser = require(\"./WritableStream.js\");\n\nfunction Stream(options) {\n Parser.call(this, new Cbs(this), options);\n}\n\nrequire(\"inherits\")(Stream, Parser);\n\nStream.prototype.readable = true;\n\nfunction Cbs(scope) {\n this.scope = scope;\n}\n\nvar EVENTS = require(\"../\").EVENTS;\n\nObject.keys(EVENTS).forEach(function(name) {\n if (EVENTS[name] === 0) {\n Cbs.prototype[\"on\" + name] = function() {\n this.scope.emit(name);\n };\n } else if (EVENTS[name] === 1) {\n Cbs.prototype[\"on\" + name] = function(a) {\n this.scope.emit(name, a);\n };\n } else if (EVENTS[name] === 2) {\n Cbs.prototype[\"on\" + name] = function(a, b) {\n this.scope.emit(name, a, b);\n };\n } else {\n throw Error(\"wrong number of arguments!\");\n }\n});\n","module.exports = ProxyHandler;\n\nfunction ProxyHandler(cbs) {\n this._cbs = cbs || {};\n}\n\nvar EVENTS = require(\"./\").EVENTS;\nObject.keys(EVENTS).forEach(function(name) {\n if (EVENTS[name] === 0) {\n name = \"on\" + name;\n ProxyHandler.prototype[name] = function() {\n if (this._cbs[name]) this._cbs[name]();\n };\n } else if (EVENTS[name] === 1) {\n name = \"on\" + name;\n ProxyHandler.prototype[name] = function(a) {\n if (this._cbs[name]) this._cbs[name](a);\n };\n } else if (EVENTS[name] === 2) {\n name = \"on\" + name;\n ProxyHandler.prototype[name] = function(a, b) {\n if (this._cbs[name]) this._cbs[name](a, b);\n };\n } else {\n throw Error(\"wrong number of arguments\");\n }\n});\n","module.exports = CollectingHandler;\n\nfunction CollectingHandler(cbs) {\n this._cbs = cbs || {};\n this.events = [];\n}\n\nvar EVENTS = require(\"./\").EVENTS;\nObject.keys(EVENTS).forEach(function(name) {\n if (EVENTS[name] === 0) {\n name = \"on\" + name;\n CollectingHandler.prototype[name] = function() {\n this.events.push([name]);\n if (this._cbs[name]) this._cbs[name]();\n };\n } else if (EVENTS[name] === 1) {\n name = \"on\" + name;\n CollectingHandler.prototype[name] = function(a) {\n this.events.push([name, a]);\n if (this._cbs[name]) this._cbs[name](a);\n };\n } else if (EVENTS[name] === 2) {\n name = \"on\" + name;\n CollectingHandler.prototype[name] = function(a, b) {\n this.events.push([name, a, b]);\n if (this._cbs[name]) this._cbs[name](a, b);\n };\n } else {\n throw Error(\"wrong number of arguments\");\n }\n});\n\nCollectingHandler.prototype.onreset = function() {\n this.events = [];\n if (this._cbs.onreset) this._cbs.onreset();\n};\n\nCollectingHandler.prototype.restart = function() {\n if (this._cbs.onreset) this._cbs.onreset();\n\n for (var i = 0, len = this.events.length; i < len; i++) {\n if (this._cbs[this.events[i][0]]) {\n var num = this.events[i].length;\n\n if (num === 1) {\n this._cbs[this.events[i][0]]();\n } else if (num === 2) {\n this._cbs[this.events[i][0]](this.events[i][1]);\n } else {\n this._cbs[this.events[i][0]](\n this.events[i][1],\n this.events[i][2]\n );\n }\n }\n }\n};\n"],"sourceRoot":""}