var Parser = require("./Parser.js"), DomHandler = require("domhandler"); function defineProp(name, value){ delete module.exports[name]; module.exports[name] = value; return value; } module.exports = { Parser: Parser, Tokenizer: require("./Tokenizer.js"), ElementType: require("domelementtype"), DomHandler: DomHandler, get FeedHandler(){ return defineProp("FeedHandler", require("./FeedHandler.js")); }, get Stream(){ return defineProp("Stream", require("./Stream.js")); }, get WritableStream(){ return defineProp("WritableStream", require("./WritableStream.js")); }, get ProxyHandler(){ return defineProp("ProxyHandler", require("./ProxyHandler.js")); }, get DomUtils(){ return defineProp("DomUtils", require("domutils")); }, get CollectingHandler(){ return defineProp("CollectingHandler", require("./CollectingHandler.js")); }, // For legacy support DefaultHandler: DomHandler, get RssHandler(){ return defineProp("RssHandler", this.FeedHandler); }, //helper methods parseDOM: function(data, options){ var handler = new DomHandler(options); new Parser(handler, options).end(data); return handler.dom; }, parseFeed: function(feed, options){ var handler = new module.exports.FeedHandler(options); new Parser(handler, options).end(feed); return handler.dom; }, createDomStream: function(cb, options, elementCb){ var handler = new DomHandler(cb, options, elementCb); return new Parser(handler, options); }, // List of all events that the parser emits EVENTS: { /* Format: eventname: number of arguments */ attribute: 2, cdatastart: 0, cdataend: 0, text: 1, processinginstruction: 2, comment: 1, commentend: 0, closetag: 1, opentag: 2, opentagname: 1, error: 1, end: 0 } };