How do I pick elements from a block using a string in Rebol?
Given this block fs: [ usr [ local [ bin [] ] share [] ] bin [] ] I could retrieve an item using a path notation like so: fs/usr/local How do I do the same when the path is a string? path: "/usr/local" find fs path ;does not work! find fs to-path path ;does not work!
posted by: AnonMouse 26-Feb-2013/12:21:41-8:00
Are you trying to do this? do "fs/usr/local" R E B O L [] fs: [ usr [ local [ bin [] ] share [] ] bin [] ] probe fs/usr/local probe do "fs/usr/local" probe do join "fs" "/usr/local" halt Output: [ bin [] ] [ bin [] ]
posted by: Nick 26-Feb-2013/18:21:13-8:00
And just for fun: select select fs to-word "usr" to-word "local" :)
posted by: Nick 26-Feb-2013/18:50:19-8:00
I use "do" for things like: R E B O L [title: "Calculator"] view layout [ origin 0 space 0x0 across style btn btn 50x50 [append f/text face/text show f] f: field 200x40 font-size 20 return btn "1" btn "2" btn "3" btn " + " return btn "4" btn "5" btn "6" btn " - " return btn "7" btn "8" btn "9" btn " * " return btn "0" btn "." btn " / " btn "=" [ attempt [f/text: form do f/text show f] ] ] R E B O L [title: "Math Test"] random/seed now question: does [rejoin [random 10 " + " random 20]] view layout [ f1: field question text "Answer:" f2: field [attempt [ alert either (to-integer f2/text) = (to-integer do f1/text) ["Yes!"]["No"] f1/text: question show f1 focus f2 ]] ]
posted by: Nick 26-Feb-2013/18:55:51-8:00
(Any time you want to evaluate or "execute" concatenated strings of code).
posted by: Nick 26-Feb-2013/18:58:33-8:00
You could take the "do" dialect even farther in that last example: R E B O L [title: "Math Test"] random/seed now question: [rejoin [random 10 " + " random 20]] view layout [ f1: field (do question) text "Answer:" f2: field [attempt [ alert either (to-integer f2/text) = (to-integer do f1/text) ["Yes!"]["No"] f1/text: do question show f1 focus f2 ]] ]
posted by: Nick 27-Feb-2013/9:24:28-8:00
That really helps! Thank you Nick!
posted by: AnonMouse 4-Mar-2013/15:27:05-8:00
|