Mercurial > repos > tabletprog
view editor.js @ 34:a10f1b049193
Working closures, but need to rethink method call strategy
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 09 Jul 2012 08:57:50 -0700 |
parents | 18cec540238a |
children | 648659961e0e |
line wrap: on
line source
object.prototype.toHTML = function(node) { var el = newEl('div', { className: 'object' }); node.appendChild(el); for (var i in this.messages) { this.messages[i].toHTML(el); } }; lambda.prototype.toHTML = function(node) { var astNode = this; var el = newEl('div', { className: 'lambda', onclick: function(event) { mainModule.lambdaClick(this, astNode, event); } }); var args = newEl('div', { className: 'args' }); for (var i in this.args) { this.args[i].toHTML(args); } var body = newEl('div', { className: 'lambdabody' }); for (var i in this.expressions) { this.expressions[i].toHTML(body); } el.appendChild(args); el.appendChild(body); node.appendChild(el); }; assignment.prototype.toHTML = function(node) { var base = newEl('div', { className: 'assignment' }); var varName = newEl('span', { textContent: this.symbol.name + ' <-' }); base.appendChild(varName); node.appendChild(base); this.expression.toHTML(base); }; op.prototype.toHTML = function(node) { var base = newEl('span', { className: 'op' }); this.left.toHTML(base); base.appendChild(newEl('span', { textContent: this.op, className: 'opname' })); this.right.toHTML(base); node.appendChild(base); }; intlit.prototype.toHTML = function(node) { node.appendChild(newEl('span', { className: 'integer', textContent: this.val })); }; floatlit.prototype.toHTML = function(node) { node.appendChild(newEl('span', { className: 'float', textContent: this.val })); }; strlit.prototype.toHTML = function(node) { node.appendChild(newEl('span', { className: 'string', contentEditable: 'true', textContent: this.val })); }; funcall.prototype.toHTML = function(node) { var astNode = this; var base = newEl('div', { className: 'funcall' }); if (this.receiver) { this.receiver.toHTML(base); } var parts = this.name.split(':'); for (var i in parts ) { if(parts[i]) { base.appendChild(newEl('span', { textContent: parts[i] + (this.receiver && parts.length == 1 ? '' : ':'), className: 'funpart', onclick: function(event) { mainModule.funClick(this, astNode, event); }})); if (this.args[i]) { this.args[i].toHTML(base); } } } for (; i < this.args.length; i++) { this.args[i].toHTML(base); } node.appendChild(base); }; symbol.prototype.toHTML = function(node) { var astNode = this; node.appendChild(newEl('span', { className: 'symbol', textContent: this.name, onclick: function(event) { mainModule.symbolClick(this, astNode, event); } })); }