'use strict'; var Parser = require('../tree_construction/parser'), ParsingUnit = require('./parsing_unit'); //API exports.parseDocument = function (html, treeAdapter) { //NOTE: this should be reentrant, so we create new parser here var parser = new Parser(treeAdapter), parsingUnit = new ParsingUnit(parser); //NOTE: override parser loop method parser._runParsingLoop = function () { parsingUnit.parsingLoopLock = true; while (!parsingUnit.suspended && !this.stopped) this._iterateParsingLoop(); parsingUnit.parsingLoopLock = false; if (this.stopped) parsingUnit.callback(this.document); }; //NOTE: wait while parserController will be adopted by calling code, then //start parsing process.nextTick(function () { parser.parse(html); }); return parsingUnit; }; exports.parseInnerHtml = function (innerHtml, contextElement, treeAdapter) { //NOTE: this should be reentrant, so we create new parser here var parser = new Parser(treeAdapter); return parser.parseFragment(innerHtml, contextElement); };