mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-09-25 19:26:46 +00:00
Add missing token adapter.
This commit is contained in:
parent
b750ce38b8
commit
d744e65c48
64
modules/parser/mediawiki.html5TokenEmitter.js
Normal file
64
modules/parser/mediawiki.html5TokenEmitter.js
Normal file
|
@ -0,0 +1,64 @@
|
|||
var events = require('events');
|
||||
|
||||
|
||||
var HTML5 = require('./html5/index');
|
||||
|
||||
FauxHTML5 = {}
|
||||
|
||||
|
||||
FauxHTML5.Tokenizer = function ( ) {
|
||||
this.parser = new HTML5.Parser();
|
||||
this.parser.parse(this);
|
||||
return this;
|
||||
}
|
||||
|
||||
FauxHTML5.Tokenizer.prototype = new events.EventEmitter;
|
||||
|
||||
FauxHTML5.Tokenizer.prototype.processToken = function (token) {
|
||||
var att = function (maybeAttribs) {
|
||||
if ( $.isArray(maybeAttribs) ) {
|
||||
var atts = [];
|
||||
for(var i = 0, length = maybeAttribs.length; i < length; i++) {
|
||||
var att = maybeAttribs[i];
|
||||
atts.push({nodeName: att[0], nodeValue: att[1]});
|
||||
}
|
||||
return atts;
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
switch (token.type) {
|
||||
case "TEXT":
|
||||
this.emit('token', {type: 'Characters', data: token.value});
|
||||
break;
|
||||
case "TAG":
|
||||
this.emit('token', {type: 'StartTag',
|
||||
name: token.name,
|
||||
data: att(token.attribs)});
|
||||
break;
|
||||
case "ENDTAG":
|
||||
this.emit('token', {type: 'EndTag',
|
||||
name: token.name,
|
||||
data: att(token.attribs)});
|
||||
break;
|
||||
case "SELFCLOSINGTAG":
|
||||
this.emit('token', {type: 'EmptyTag',
|
||||
name: token.name,
|
||||
data: att(token.attribs)});
|
||||
break;
|
||||
case "COMMENT":
|
||||
this.emit('token', {type: 'EmptyTag',
|
||||
data: token.value});
|
||||
break;
|
||||
case "END":
|
||||
this.emit('end');
|
||||
break;
|
||||
case "NEWLINE":
|
||||
//this.emit('end');
|
||||
break;
|
||||
default:
|
||||
console.log("Unhandled token: " + JSON.stringify(token));
|
||||
break;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue