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