Mercurial > repos > tabletprog
comparison src/editor.tp @ 110:d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 13 Apr 2013 23:37:54 -0700 |
parents | a647cdad620b |
children | b2a3f202d485 |
comparison
equal
deleted
inserted
replaced
109:a647cdad620b | 110:d715fb3c39ab |
---|---|
3 q <- foreign: :query {} | 3 q <- foreign: :query {} |
4 qall <- foreign: :query {} | 4 qall <- foreign: :query {} |
5 each <- foreign: :iterable fun {} | 5 each <- foreign: :iterable fun {} |
6 addClass <- foreign: :node className {} | 6 addClass <- foreign: :node className {} |
7 removeClass <- foreign: :node className {} | 7 removeClass <- foreign: :node className {} |
8 hasClass <- foreign: :node className {} | |
8 get <- foreign: :url onSuccess onFail onOther {} | 9 get <- foreign: :url onSuccess onFail onOther {} |
10 getEl <- foreign: :from idx {} | |
11 setEl <- foreign: :to idx val {} | |
9 newEl <- foreign: :tagname props {} | 12 newEl <- foreign: :tagname props {} |
10 | 13 |
11 //TP Parser | 14 //TP Parser |
12 parser <- foreign: #{ | 15 parser <- foreign: #{ |
13 parse <- foreign: :str {} | 16 parse <- foreign: :str {} |
99 selectQuery: ".selectParent > .funpart" in: (domnode parentNode) | 102 selectQuery: ".selectParent > .funpart" in: (domnode parentNode) |
100 symtable <- astnode symbols | 103 symtable <- astnode symbols |
101 syms <- filter: (symtable allSymbols: (foreign: undefined)) :sym { | 104 syms <- filter: (symtable allSymbols: (foreign: undefined)) :sym { |
102 isLambda: ((symtable find: sym) def) | 105 isLambda: ((symtable find: sym) def) |
103 } | 106 } |
104 popInscope: syms onClick: {} | 107 popInscope: syms onClick: :key { |
108 astnode name!: key | |
109 parts <- key split: ":" | |
110 parent <- domnode parentNode | |
111 nodes <- [] | |
112 each: (parent children) :idx val{ | |
113 nodes push: val | |
114 } | |
115 partIdx <- 0 | |
116 nodeIdx <- 0 | |
117 lastWasNamePart <- true | |
118 while: { partIdx < (parts length) || nodeIdx < (nodes length) } do: { | |
119 if: nodeIdx < (nodes length) { | |
120 node <-getEl: nodes nodeIdx | |
121 nodeIdx <- nodeIdx + 1 | |
122 if: (hasClass: node "funpart") { | |
123 if: partIdx < (parts length) { | |
124 postfix <- if: partIdx = 0 && nodeIdx = 2 && (parts length) = 1 && (nodes length) = 2 { "" } else: { ":" } | |
125 t <- (getEl: parts partIdx) | |
126 node textContent!: (getEl: parts partIdx) . postfix | |
127 partIdx <- partIdx + 1 | |
128 } else: { | |
129 parent removeChild: node | |
130 } | |
131 lastWasNamePart <- true | |
132 } else: { | |
133 if: (not: lastWasNamePart) && partIdx < (parts length) && nodeIdx > 0 { | |
134 parent insertBefore: (newEl: "span" #{ | |
135 className <- "funpart selected" | |
136 textContent <- (getEl: parts partIdx) . ":" | |
137 }) node | |
138 partIdx <- partIdx + 1 | |
139 } | |
140 lastWasNamePart <- false | |
141 } | |
142 } else: { | |
143 console log: "part: " . (getEl: parts partIdx) | |
144 parent appendChild: (newEl: "span" #{ | |
145 className <- "funpart selected" | |
146 textContent <- (getEl: parts partIdx) . ":" | |
147 }) | |
148 partIdx <- partIdx + 1 | |
149 } | |
150 } | |
151 } | |
105 event stopPropagation: (foreign: undefined) | 152 event stopPropagation: (foreign: undefined) |
106 } | 153 } |
107 | 154 |
108 lambdaClick <- :domnode astnode event { | 155 lambdaClick <- :domnode astnode event { |
109 symbolClick: domnode astnode event | 156 symbolClick: domnode astnode event |