mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
85 lines
2.3 KiB
JavaScript
85 lines
2.3 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() === '');
|
|
}
|
|
|
|
// _append(appendArgument) {
|
|
// var argument = this.argument;
|
|
//
|
|
// if (Array.isArray(argument)) {
|
|
// var len = argument.length;
|
|
// var last = argument[len-1];
|
|
//
|
|
// if (last instanceof Literal && appendArgument instanceof Literal) {
|
|
// last.value += appendArgument.value;
|
|
// } else {
|
|
// this.argument.push(appendArgument);
|
|
// }
|
|
// } else {
|
|
// if (argument instanceof Literal && appendArgument instanceof Literal) {
|
|
// argument.value += appendArgument.value;
|
|
// } else {
|
|
// this.argument = [ this.argument, appendArgument ];
|
|
// }
|
|
// }
|
|
// }
|
|
//
|
|
// append(text) {
|
|
// var appendArgument = text.argument;
|
|
// if (!appendArgument) {
|
|
// return;
|
|
// }
|
|
//
|
|
// if (Array.isArray(appendArgument)) {
|
|
// appendArgument.forEach(this._append, this);
|
|
// } else {
|
|
// this._append(appendArgument);
|
|
// }
|
|
// }
|
|
|
|
toJSON() {
|
|
return {
|
|
type: this.type,
|
|
argument: this.argument
|
|
};
|
|
}
|
|
}
|
|
|
|
module.exports = Text; |