marko/compiler/ast/MemberExpression.js
Patrick Steele-Idem 8c96302550 Fixes #197 - Better attribute code generation
Use attr helper and handle attribute escaping
Also improved AST and added walking capability
2016-01-07 16:05:26 -07:00

45 lines
1.0 KiB
JavaScript

'use strict';
var Node = require('./Node');
class MemberExpression extends Node {
constructor(def) {
super('MemberExpression');
this.object = def.object;
this.property = def.property;
this.computed = def.computed;
}
generateCode(codegen) {
var object = this.object;
var property = this.property;
var computed = this.computed;
codegen.generateCode(object);
if (computed) {
codegen.write('[');
codegen.generateCode(property);
codegen.write(']');
} else {
codegen.write('.');
codegen.generateCode(property);
}
}
toJSON() {
return {
type: 'MemberExpression',
object: this.object,
property: this.property,
computed: this.computed
};
}
walk(walker) {
this.object = walker.walk(this.object);
this.property = walker.walk(this.property);
}
}
module.exports = MemberExpression;