marko/compiler/ast/Text/index.js
2016-09-19 20:42:06 -06:00

51 lines
1.2 KiB
JavaScript

'use strict';
var ok = require('assert').ok;
var Node = require('../Node');
var Literal = require('../Literal');
var generateHTMLCode = require('./html/generateCode');
var generateVDOMCode = require('./vdom/generateCode');
var vdomUtil = require('../../util/vdom');
class Text extends Node {
constructor(def) {
super('Text');
this.argument = def.argument;
this.escape = def.escape !== false;
this.normalized = false;
this.isFirst = false;
this.isLast = false;
this.preserveWhitespace = def.preserveWhitespace === true;
ok(this.argument, 'Invalid argument');
}
generateHTMLCode(codegen) {
return generateHTMLCode(this, codegen);
}
generateVDOMCode(codegen) {
return generateVDOMCode(this, codegen, vdomUtil);
}
isLiteral() {
return this.argument instanceof Node && this.argument.type === 'Literal';
}
isWhitespace() {
var argument = this.argument;
return (argument instanceof Literal) &&
(typeof argument.value === 'string') &&
(argument.value.trim() === '');
}
toJSON() {
return {
type: this.type,
argument: this.argument
};
}
}
module.exports = Text;