html-dom-parser
Version:
HTML to DOM parser.
1 lines • 9.59 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../node_modules/domhandler/dist/index.js"],"sourcesContent":["import { ElementType } from \"domelementtype\";\nimport { CDATA, Comment, Document, Element, ProcessingInstruction, Text, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOptions = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\n/**\n * Event-based handler that builds a DOM tree from parser callbacks.\n */\nexport class DomHandler {\n /** The elements of the DOM */\n dom = [];\n /** The root element for the DOM */\n root = new Document(this.dom);\n /** Called once parsing has completed. */\n callback;\n /** Settings for the handler. */\n options;\n /** Callback whenever a tag is closed. */\n elementCB;\n /** Indicated whether parsing has been completed. */\n done = false;\n /** Stack of open tags. */\n tagStack = [this.root];\n /** A data node that is still being written to. */\n lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n parser = null;\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOptions;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback ?? null;\n this.options = options ?? defaultOptions;\n this.elementCB = elementCB ?? null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const element = this.tagStack.pop();\n if (this.options.withEndIndices && this.parser) {\n element.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(element);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices && this.parser) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices && this.parser) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices && this.parser) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}