changeset 26:fe593c1df568

Display receiver arg in editor. Improve formatting in editor.
author Mike Pavone <pavone@retrodev.com>
date Wed, 04 Apr 2012 23:15:00 -0700
parents 4d87c38404d6
children ae913b642040
files editor.css editor.js
diffstat 2 files changed, 44 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/editor.css	Mon Apr 02 22:28:48 2012 -0700
+++ b/editor.css	Wed Apr 04 23:15:00 2012 -0700
@@ -11,6 +11,11 @@
 	margin: 0;
 }
 
+*
+{
+	vertical-align: top;
+}
+
 .controls
 {
 	width: 15%;
@@ -18,7 +23,6 @@
 	display: inline-block;
 	padding: 0;
 	margin: 0;
-	vertical-align: top;
 }
 
 #src
@@ -123,37 +127,51 @@
 	display: inline-block;
 }
 
+.object
+{
+	display: inline;
+}
+
+.object > *
+{
+	margin-left: 2em;
+}
 
 .object:before
 {
-	content: '#';
+	content: '#{';
+}
+
+.object:after
+{
+	content: '}';
+	display: block;
 }
 
 .lambda
 {
-	padding-left: 2em;
-}
-
-.lambda > *
-{
-	vertical-align: top;
+	display: inline;
 }
 
 .lambdabody
 {
-	display: inline-block;
+	display: block;
 	margin-left: 2em;
 }
-
-.lambdabody:before
+.args
+{
+	display: inline-block;
+}
+.args:after
 {
 	content: '{';
 }
 
-.lambda:after
+.lambdabody:after
 {
 	display: block;
 	content: '}';
+	margin-left: -2em;
 }
 
 .funcall > .funcall, .assignment > .funcall
@@ -175,3 +193,8 @@
 {
 	color: #FF1030;
 }
+
+.op > div
+{
+	display: inline-block;
+}
--- a/editor.js	Mon Apr 02 22:28:48 2012 -0700
+++ b/editor.js	Wed Apr 04 23:15:00 2012 -0700
@@ -14,8 +14,11 @@
 	var el = newEl('div', {
 		className: 'lambda'
 	});
+	var args = newEl('div', {
+		className: 'args'
+	});
 	for (var i in this.args) {
-		this.args[i].toHTML(el);
+		this.args[i].toHTML(args);
 	}
 	var body = newEl('div', {
 		className: 'lambdabody'
@@ -23,6 +26,7 @@
 	for (var i in this.expressions) {
 		this.expressions[i].toHTML(body);
 	}
+	el.appendChild(args);
 	el.appendChild(body);
 	node.appendChild(el);
 };
@@ -79,11 +83,14 @@
 	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] + ':',
+				textContent: parts[i] + (this.receiver && parts.length == 1 ? '' : ':'),
 				className: 'funpart',
 				onclick: function() {
 					return mainModule.funClick(this, astNode);