You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.1 KiB
39 lines
1.1 KiB
'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);
|
|
}; |