mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
Use attr helper and handle attribute escaping Also improved AST and added walking capability
45 lines
1.0 KiB
JavaScript
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; |