mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
72 lines
1.5 KiB
JavaScript
72 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
var Node = require('./Node');
|
|
|
|
class ArrayExpression extends Node {
|
|
constructor(def) {
|
|
super('ArrayExpression');
|
|
this.elements = def.elements;
|
|
}
|
|
|
|
generateCode(codegen) {
|
|
this.elements = codegen.generateCode(this.elements);
|
|
return this;
|
|
}
|
|
|
|
writeCode(writer) {
|
|
var elements = this.elements;
|
|
|
|
if (!elements || !elements.length) {
|
|
writer.write('[]');
|
|
return;
|
|
}
|
|
|
|
writer.incIndent();
|
|
writer.write('[\n');
|
|
writer.incIndent();
|
|
|
|
elements.forEach((element, i) => {
|
|
writer.writeLineIndent();
|
|
writer.write(element);
|
|
|
|
if (i < elements.length - 1) {
|
|
writer.write(',\n');
|
|
} else {
|
|
writer.write('\n');
|
|
}
|
|
});
|
|
|
|
writer.decIndent();
|
|
writer.writeLineIndent();
|
|
writer.write(']');
|
|
writer.decIndent();
|
|
}
|
|
|
|
walk(walker) {
|
|
this.elements = walker.walk(this.elements);
|
|
}
|
|
|
|
toJSON() {
|
|
return {
|
|
type: 'ArrayExpression',
|
|
elements: this.elements
|
|
};
|
|
}
|
|
|
|
toString() {
|
|
var result = '[';
|
|
var elements = this.elements;
|
|
if (elements) {
|
|
elements.forEach((element, i) => {
|
|
if (i !== 0) {
|
|
result += ', ';
|
|
}
|
|
result += element.toString();
|
|
});
|
|
}
|
|
|
|
return result + ']';
|
|
}
|
|
}
|
|
|
|
module.exports = ArrayExpression; |