* Volker Nitsch <[EMAIL PROTECTED]> [050730 09:39]: > > On 7/30/05, Tim Johnson <[EMAIL PROTECTED]> wrote: > >=20 > > I'm working with a switch that has a lot of repetitive patterns: > > i.e.: > > switch/default type[ > > "button" [append auto do-button name layout] > > "checkbox" [append auto do-checkbox name layout] > > "time" [append auto do-time name layout] > > "hidden" [append auto do-hidden name layout] > > "radio" [append auto do-radio name layout] > > ;; ... which is tedious. But works > > ;; Now I want to simplify using 'load and 'do. > > ;; As in the following > > output: copy [] > > foreach plist glbs/plists[ > > foreach [name layout] plist[ > > type: select layout "type" > > code: load rejoin["append output do-" type " name layout"] > > ?? code ;; see code "dump" below > > do code > > ] > > ] > > code: [append output do-text name layout ] ;; dump from ?? code > > ;; some abbreviation of code here, of course > > ;; with the second method, rebol stops me with the following error > > ;; message: > > output has no value > > ;; say what? I thought 'load was supposed to bind words to global > > ;; context! > >=20 > > This works: > !>> do probe load rejoin["pri" "nt 1" " + 1"] > [print 1 + 1 > ] > 2 > > So either you have 'output local, or the error-message is misleading.=20 > Because here lurks trouble: > foreach [name layout] ;; makes the words implicitely local > and then > "append output do-" type " name layout" ;; uses global words. > > Some thinks coming to my mind: > try > do bind code 'output > that should change the error-message, see above ;) > code: compose[append output (to-word join "do-" type) name layout] > that keeps more bindings. > I would think about splitting the "do-something" in some kind of path too, > like=20 > actions: [ "something" [.. ] "something-else" [..] ] =20 > code: compose[append output (actions/:type) name layout] > do code > and from there, why composing first? > repend output[actions/:type name layout] > Or, if you don't want to change all the "do-*", > repend output [ to-word join "do-" type name layout ] > > ( I hope i made no mistakes, nothing tested.. ) You nailed it! I had to bind 'layout as well. Dunno why. ;; ...... code: load cat["append output do-" type " name layout" bind code 'output bind code 'layout
Thanks very much. tim > > > any help would be appreciated. I'd hate to do all that 'switch coding. > > thanks > > tim > >=20 > >=20 > > -- > > Tim Johnson <[EMAIL PROTECTED]> > > http://www.alaska-internet-solutions.com > > -- > > To unsubscribe from the list, just send an email to > > lists at rebol.com with unsubscribe as the subject. > >=20 > >=20 > > > --=20 > -Volker > > "Any problem in computer science can be solved with another layer of > indirection. But that usually will create another problem." David > Wheeler > -- > To unsubscribe from the list, just send an email to > lists at rebol.com with unsubscribe as the subject. -- Tim Johnson <[EMAIL PROTECTED]> http://www.alaska-internet-solutions.com -- To unsubscribe from the list, just send an email to lists at rebol.com with unsubscribe as the subject.
