blob: 96fa8d04e9f1ffa246b87fa73450c200c815add0 [file] [log] [blame]
'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);
};