var HtmlParser = require('htmlparser2') , Utils = require('src/utils') , AST = require('src/ast') , DomHandler = require('src/dom-handler') , stream = require('stream') , util = require('util') ; /** * The document parser * @class Parser * @param {Object|Function} [opts] The parser options * @param {Function} done The callback once parsing is complete */ var Parser = module.exports = function Parser(opts) { if(!(this instanceof Parser)) return new Parser(opts); stream.Transform.call(this); var self = this , opts = Utils.defaults({}, opts) ; this._readableState.objectMode = true; this._writableState.objectMode = false; this.htmlparser = new HtmlParser.Parser(new DomHandler(this)); } util.inherits(Parser, stream.Transform); /** * Handles the transform stream * @function Parser#_transform * @param {Buffer} chunk - The data buffer * @param {string} enc - The data encoding * @param {Function} fn - The callback function */ Parser.prototype._transform = function(chunk, enc, fn) { this.htmlparser.write(chunk); fn(); } Parser.prototype.end = function() { this.htmlparser.end(); this.push(null); }