| '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); |
| }; |