firescript
Version:
Firescript transpiler
35 lines (29 loc) • 729 B
JavaScript
const JSElement = require('./JSElement')
/**
* UnaryExpression
*
* @class UnaryExpression
* @extends JSElement
*
* interface UnaryExpression {
type: 'UnaryExpression';
operator: '+' | '-' | '~' | '!' | 'delete' | 'void' | 'typeof';
argument: Expression;
prefix: true;
}
*/
class UnaryExpression extends JSElement {
constructor (ast) {
super(ast)
this.argument = this.createElement(ast.argument)
this.operator = ast.operator
}
compile (buffer) {
const operatorSpace = /^\w+$/.test(this.operator) ? ' ' : ''
buffer.registerItem(this.location)
buffer.write(this.operator)
buffer.write(operatorSpace)
buffer.write(this.argument)
}
}
module.exports = UnaryExpression