Mercurial > repos > tabletprog
annotate editor.js @ 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 | 93bbc4c8be95 |
rev | line source |
---|---|
0 | 1 |
2 | |
14
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
3 object.prototype.toHTML = function(node) { |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
4 var el = newEl('div', { |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
5 className: 'object' |
14
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
6 }); |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
7 node.appendChild(el); |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
8 for (var i in this.messages) { |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
9 this.messages[i].toHTML(el); |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
10 } |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
11 }; |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
12 |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
13 lambda.prototype.toHTML = function(node) { |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
14 var el = newEl('div', { |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
15 className: 'lambda' |
14
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
16 }); |
26
fe593c1df568
Display receiver arg in editor. Improve formatting in editor.
Mike Pavone <pavone@retrodev.com>
parents:
25
diff
changeset
|
17 var args = newEl('div', { |
fe593c1df568
Display receiver arg in editor. Improve formatting in editor.
Mike Pavone <pavone@retrodev.com>
parents:
25
diff
changeset
|
18 className: 'args' |
fe593c1df568
Display receiver arg in editor. Improve formatting in editor.
Mike Pavone <pavone@retrodev.com>
parents:
25
diff
changeset
|
19 }); |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
20 for (var i in this.args) { |
26
fe593c1df568
Display receiver arg in editor. Improve formatting in editor.
Mike Pavone <pavone@retrodev.com>
parents:
25
diff
changeset
|
21 this.args[i].toHTML(args); |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
22 } |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
23 var body = newEl('div', { |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
24 className: 'lambdabody' |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
25 }); |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
26 for (var i in this.expressions) { |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
27 this.expressions[i].toHTML(body); |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
28 } |
26
fe593c1df568
Display receiver arg in editor. Improve formatting in editor.
Mike Pavone <pavone@retrodev.com>
parents:
25
diff
changeset
|
29 el.appendChild(args); |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
30 el.appendChild(body); |
14
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
31 node.appendChild(el); |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
32 }; |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
33 |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
34 assignment.prototype.toHTML = function(node) { |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
35 var base = newEl('div', { |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
36 className: 'assignment' |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
37 }); |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
38 var varName = newEl('span', { |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
39 textContent: this.symbol.name + ' <-' |
0 | 40 }); |
14
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
41 base.appendChild(varName); |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
42 node.appendChild(base); |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
43 this.expression.toHTML(base); |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
44 }; |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
45 |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
46 op.prototype.toHTML = function(node) { |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
47 var base = newEl('span', { |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
48 className: 'op' |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
49 }); |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
50 this.left.toHTML(base); |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
51 base.appendChild(newEl('span', { |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
52 textContent: this.op, |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
53 className: 'opname' |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
54 })); |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
55 this.right.toHTML(base); |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
56 node.appendChild(base); |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
57 }; |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
58 |
14
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
59 intlit.prototype.toHTML = function(node) { |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
60 node.appendChild(newEl('span', { |
14
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
61 className: 'integer', |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
62 textContent: this.val |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
63 })); |
14
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
64 }; |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
65 |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
66 floatlit.prototype.toHTML = function(node) { |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
67 node.appendChild(newEl('span', { |
14
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
68 className: 'float', |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
69 textContent: this.val |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
70 })); |
14
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
71 }; |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
72 |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
73 strlit.prototype.toHTML = function(node) { |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
74 node.appendChild(newEl('span', { |
14
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
75 className: 'string', |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
23
diff
changeset
|
76 contentEditable: 'true', |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
77 textContent: this.val |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
78 })); |
14
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
79 }; |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
80 |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
81 funcall.prototype.toHTML = function(node) { |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
23
diff
changeset
|
82 var astNode = this; |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
83 var base = newEl('div', { |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
84 className: 'funcall' |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
85 }); |
26
fe593c1df568
Display receiver arg in editor. Improve formatting in editor.
Mike Pavone <pavone@retrodev.com>
parents:
25
diff
changeset
|
86 if (this.receiver) { |
fe593c1df568
Display receiver arg in editor. Improve formatting in editor.
Mike Pavone <pavone@retrodev.com>
parents:
25
diff
changeset
|
87 this.receiver.toHTML(base); |
fe593c1df568
Display receiver arg in editor. Improve formatting in editor.
Mike Pavone <pavone@retrodev.com>
parents:
25
diff
changeset
|
88 } |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
89 var parts = this.name.split(':'); |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
90 for (var i in parts ) { |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
91 if(parts[i]) { |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
23
diff
changeset
|
92 base.appendChild(newEl('span', { |
26
fe593c1df568
Display receiver arg in editor. Improve formatting in editor.
Mike Pavone <pavone@retrodev.com>
parents:
25
diff
changeset
|
93 textContent: parts[i] + (this.receiver && parts.length == 1 ? '' : ':'), |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
23
diff
changeset
|
94 className: 'funpart', |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
23
diff
changeset
|
95 onclick: function() { |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
23
diff
changeset
|
96 return mainModule.funClick(this, astNode); |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
23
diff
changeset
|
97 }})); |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
98 if (this.args[i]) { |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
99 this.args[i].toHTML(base); |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
100 } |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
101 } |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
102 } |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
103 for (; i < this.args.length; i++) { |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
104 this.args[i].toHTML(base); |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
105 } |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
106 node.appendChild(base); |
14
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
107 }; |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
108 |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
109 symbol.prototype.toHTML = function(node) { |
23
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
15
diff
changeset
|
110 var astNode = this; |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
111 node.appendChild(newEl('span', { |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
112 className: 'symbol', |
23
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
15
diff
changeset
|
113 textContent: this.name, |
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
15
diff
changeset
|
114 onclick: function() { |
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
15
diff
changeset
|
115 return mainModule.symbolClick(this, astNode); |
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
15
diff
changeset
|
116 } |
15
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
117 })); |
a5ef5af3df0f
Add toHTML methods to the rest of the AST nodes. Cleanup the formatting a bit
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
118 } |