marko/compiler/ast/Property.js

42 lines
972 B
JavaScript

'use strict';
const isValidJavaScriptIdentifier = require('../util/isValidJavaScriptIdentifier');
const Node = require('./Node');
class Property extends Node {
constructor(def) {
super('Property');
this.key = def.key;
this.value = def.value;
}
generateCode(codegen) {
var key = this.key;
var value = this.value;
if (key.type === 'Literal') {
var propName = key.value;
if (isValidJavaScriptIdentifier(propName)) {
key = codegen.builder.identifier(propName);
}
}
codegen.generateCode(key);
codegen.write(': ');
codegen.generateCode(value);
}
toJSON() {
return {
type: 'Property',
key: this.key,
value: this.value
};
}
walk(walker) {
this.key = walker.walk(this.key);
this.value = walker.walk(this.value);
}
}
module.exports = Property;