'use strict';
var htmljs = require('htmljs-parser');
class HtmlJsParser {
parse(src, handlers) {
var parser = this.parser = htmljs.createParser({
ontext(event) {
handlers.handleCharacters(event.text);
},
oncontentplaceholder(event) {
// placeholder within content
handlers.handleBodyTextPlaceholder(event.expression, event.escape);
},
onnestedcontentplaceholder(event) {
// placeholder within string that is within content placeholder
},
onattributeplaceholder(event) {
// placeholder within attribute
if (event.escape) {
event.expression = '$escapeXml(' + event.expression + ')';
} else {
event.expression = '$noEscapeXml(' + event.expression + ')';
}
},
oncdata(event) {
handlers.handleCharacters(event.text);
},
onopentag(event) {
handlers.handleStartElement(event);
},
onclosetag(event) {
var tagName = event.tagName;
handlers.handleEndElement(tagName);
},
ondtd(event) {
// DTD (e.g. )
handlers.handleCharacters(event.dtd);
},
ondeclaration(event) {
// Declaration (e.g. )
handlers.handleCharacters(event.declaration);
},
oncomment(event) {
// Text within XML comment
handlers.handleComment(event.text);
},
onerror(event) {
// Error
}
});
parser.parse(src);
}
enterParsedTextContentState() {
this.parser.enterParsedTextContentState();
}
enterStaticTextContentState() {
this.parser.enterStaticTextContentState();
}
}
module.exports = HtmlJsParser;