annotate editor.tp @ 19:132c7756860e

Use populateSymbols to generate symbol tables during compilation rather than populating them as we go. This change allows us to refer to symbols defined later in the input stream and also gives the symbol table logic a single home that can be used both by the compiler and editor.
author Mike Pavone <pavone@retrodev.com>
date Sun, 25 Mar 2012 16:11:19 -0700
parents 4dd99fde5f63
children 6c8ae6b47ab5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #{
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
2 //mquery functions
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
3 q <- foreign: :query {}
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
4 qall <- foreign: :query {}
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
5 each <- foreign: :iterable fun {}
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
6 addClass <- foreign: :node className {}
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
7 removeClass <- foreign: :node className {}
12
6e4851a204a5 Add ability to load code into editor
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
8 get <- foreign: :url onSuccess onFail onOther {}
11
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
9
14
85fb6ba15bc6 Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
10 //JS interop helpers
11
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
11 setP <- foreign: :object property val {}
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
12 getP <- foreign: :object property {}
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
13
14
85fb6ba15bc6 Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
14 //TP Parser
85fb6ba15bc6 Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
15 parser <- foreign: #{
85fb6ba15bc6 Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
16 parse <- foreign: :str {}
85fb6ba15bc6 Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
17 }
85fb6ba15bc6 Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
18
11
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
19 //js builtins
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
20 console <- foreign: #{
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
21 log <- foreign: #{}
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
22 }
17
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
23 window <- #{}
11
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
24
17
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
25 //kernel definitions
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
26 true <- #{
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
27 if:else <- :self trueblock :elseblock {
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
28 trueblock:
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
29 }
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
30 }
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
31
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
32 false <- #{
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
33 if:else <- :self trueblock :elseblock {
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
34 elseblock:
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
35 }
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
36 }
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
37
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
38 editFile <- :path {
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
39 get: path :request {
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
40 addClass: (q: "body") "editorMode"
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
41 src <- request getP: "responseText"
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
42 console log: src
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
43 ast <- parser parse: src
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
44 console log: ast
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
45 ast toHTML: (q: "#src")
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
46 }
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
47 }
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
48
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
49 //editor code
11
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
50 main <- {
12
6e4851a204a5 Add ability to load code into editor
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
51 //bind handlers for file browser links
6e4851a204a5 Add ability to load code into editor
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
52 each: (qall: "a") :idx el {
6e4851a204a5 Add ability to load code into editor
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
53 el setP: "onclick" :event {
6e4851a204a5 Add ability to load code into editor
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
54 link <- foreign: this
17
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
55 editFile: (link getP: "href")
12
6e4851a204a5 Add ability to load code into editor
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
56 foreign: false
6e4851a204a5 Add ability to load code into editor
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
57 }
6e4851a204a5 Add ability to load code into editor
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
58 }
6e4851a204a5 Add ability to load code into editor
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
59
6e4851a204a5 Add ability to load code into editor
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
60 //bind handlers for editor buttons
6e4851a204a5 Add ability to load code into editor
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
61 each: (qall: ".controls li") :idx el {
11
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
62 el setP: "onclick" :event {
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
63 srcel <- (q: "#src")
12
6e4851a204a5 Add ability to load code into editor
Mike Pavone <pavone@retrodev.com>
parents: 11
diff changeset
64 srcel setP: "textContent" (srcel getP: "textContent") + (el getP: "textContent")
11
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
65 }
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
66 }
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
67 (q: "#ops_button") setP: "onclick" :event {
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
68 addClass: (q: ".controls") "showops"
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
69 }
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
70
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
71 (q: "#builtin_button") setP: "onclick" :event {
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
72 removeClass: (q: ".controls") "showops"
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
73 }
17
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
74
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
75 path <- (window getP: "location") getP: "pathname"
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
76 if: (path indexOf: "/edit/") = 0 {
7400bb42e0c9 Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
77 editFile: (path substr: 5)
18
4dd99fde5f63 Tiny bit of cleanup
Mike Pavone <pavone@retrodev.com>
parents: 17
diff changeset
78 } else: {}
11
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
79 }
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
80
5447cff52da6 Use tabletproglang in editor
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
81 }