mediawiki-extensions-Visual.../modules/parser/html5/parser/root_element_phase.js
Gabriel Wicke b750ce38b8 Add node.js-compatible HTML5 parser and hook it up to the PEG tokenizer.
Builds a DOM tree (jsdom) from the tokens and then serializes that using
document.innerHTML. This is all very experimental, so don't be surprised by
rough edges.
2011-11-18 13:57:07 +00:00

43 lines
1,018 B
JavaScript

var Phase = require('./phase').Phase
exports.Phase = function rootElementPhase(parser, tree) {
Phase.call(this, parser, tree)
}
var p = exports.Phase.prototype = new Phase;
p.processEOF = function() {
this.insert_html_element()
this.parser.phase.processEOF()
}
p.processComment = function(data) {
this.tree.insert_comment(data, this.tree.document)
}
p.processSpaceCharacters = function(data) {
}
p.processCharacters = function(data) {
this.insert_html_element()
this.parser.phase.processCharacters(data)
}
p.processStartTag = function(name, attributes) {
if(name == 'html') this.parser.first_start_tag = true
this.insert_html_element()
this.parser.phase.processStartTag(name, attributes)
}
p.processEndTag = function(name) {
this.insert_html_element()
this.parser.phase.processEndTag(name)
}
p.insert_html_element = function() {
var element = this.tree.createElement('html', {})
this.tree.open_elements.push(element)
this.tree.document.appendChild(element)
this.parser.newPhase('beforeHead')
}