Mercurial > repos > tabletprog
diff editor.tp @ 25:4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 02 Apr 2012 22:28:48 -0700 |
parents | fe3533494ce9 |
children | 93bbc4c8be95 |
line wrap: on
line diff
--- a/editor.tp Tue Mar 27 00:39:32 2012 -0700 +++ b/editor.tp Mon Apr 02 22:28:48 2012 -0700 @@ -12,12 +12,13 @@ parser <- foreign: #{ parse <- foreign: :str {} } +isLambda <- foreign: :astnode {} //js builtins console <- foreign: #{ log <- foreign: :val {} } -window <- #{} +window <- foreign: #{} Object <- foreign: #{ keys <- foreign: :object {} } @@ -35,6 +36,17 @@ } } +filter <- :arr pred { + output <- arr slice: 0 0 + each: arr :idx el { + if: (pred: el) { + output push: el + } else: {} + } + output +} + +//editor code editFile <- :path { get: path :request { addClass: (q: "body") "editorMode" @@ -47,19 +59,64 @@ } } -symbolClick <- :domnode astnode { +selectNode <- :node { + each: (qall: ".selected") :idx el { + removeClass: el "selected" + } + addClass: node "selected" +} + +selectQuery <- :selector { + selectQuery: selector in: (foreign: undefined) +} + +selectQuery:in <- :selector :context { + each: (qall: ".selected") :idx el { + removeClass: el "selected" + } + each: (qall: selector context) :idx el { + addClass: el "selected" + } +} + +selectParent <- :node { + each: (qall: ".selectParent") :idx el { + removeClass: el "selected" + } + addClass: (node parentNode) "selectParent" +} + +popInscope:onClick <- :syms :handler { inscope <- q: "#inscope" inscope innerHTML!: "" - console log: astnode - syms <- (astnode symbols) allSymbols each: syms :idx key { inscope appendChild: (newEl: "li" #{ textContent <- key + onclick <- { handler: key } }) } } -//editor code +symbolClick <- :domnode astnode { + console log: astnode + selectNode: domnode + popInscope: ((astnode symbols) allSymbols) onClick: :key { + domnode textContent!: key + astnode name!: key + } + +} + +funClick <- :domnode astnode { + selectParent: domnode + selectQuery: ".selectParent > .funpart" in: (domnode parentNode) + symtable <- astnode symbols + syms <- filter: (symtable allSymbols) :sym { + isLambda: ((symtable find: sym) def) + } + popInscope: syms +} + main <- { //bind handlers for file browser links each: (qall: "a") :idx el { @@ -81,7 +138,9 @@ } } (q: "#ops_button") onclick!: :event { - addClass: (q: ".controls") "showops" + each: (qall: ".controls") :idx el { + addClass: el "showops" + } } path <- (window location) pathname