Brian, Brian Tiffin wrote: > Hi, > > I can't say I completely get this either. But for do/args it only works > for scripts. And it always sets system/script/args > >>> help do > <snip> > REFINEMENTS: > /args -- If value is a script, this will set its system/script/args > arg -- Args passed to a script. Normally a string. (Type: any) > > It's one of those things that takes some getting used to, but it is design > intent. And command line arguments, are best accessed through > system/options/args, but will show up in those other places as one big > string.
Its best to access system/options/args except that "do/args" only populates the system/script/args. The script has to have special code to deal with whether it's being called directly, or from another script, or you HAVE to use system/script/args, as that's the only consistent data element. Then again, it doesn't work at all if you "load" the script and then "do/args" it. I'd call it a bug, but if it's argued not to be, it surely breaks the "simple" design philosophy. Anyway, it annoys me. :) > system/script/parent...isn't set for my Linux version with scripts > that are started up with REBOL. > > When you were playing with /something in REBOL it becomes a little weird too. > > /anything is a valid REBOL value. It can be passed around, set to variables > etc. a: /abc help a A is a refinement of value: /abc > > So if you mistype or misplace an actual refinement, it is just a value (as > are > real refinements in the "right" place but in that case the function header > parser does a few other things for you when it detects a "match"). > > /abc: "test" is a weird one. It will become pretty hard to retrieve without > looking into get and to- functions, maybe some other wierdness. There are a > few REBOL guru's that may explain what's going on. > > And yep, it can get confusing as you try and figure out what the lexical > scanner is actually up to sometimes. > > Again, hope that helps a little. > > Cheers, > Brian > > On Saturday 28 July 2007 21:12, Jonathan Kelly wrote: >> Hi, >> >> I can't seem to get args working?? I'm running View 1.3.2.3.1 (Windows) >> >> Well, I thought before I posted I should check google and found the FAQ >> entry. I had mis-read the help text and was using >> >> do %t6.r /args "test1 "test2" >> >> but there was no error, which seems strange. So what is /args in that >> expression? Is it a work, but words can't contain the / character. Hmmm >> what does this mean ... >> >> >> /args: "testing" >> >> == "testing" >> >> >> /args >> >> == /args >> >> >> print /args >> >> args >> >> >> print mold /args >> >> /args >> >> >> help /args >> >> /args is a refinement >> >> >> Anyway, there seems to be some discrepancy anyway. >> >> When I run a script via "rebol t6.r test1 test2", I can see the args in >> three places: >> >> system/script/parent/args => "test1 test2" >> system/script/args => "test1 test2" >> system/options/args => [ "test1" "test2" ] >> >> OK, that's good, but what is the script's parent? (the interpeter?) >> >> So, now I want to run this script from another script (or the console). >> >> do/args %t6.r "test1 test2" >> >> the only args that is set is >> >> system/script/args >> >> and that hardly seems simple. But more; when I do >> >> xx: load %t6.r >> do/args xx "test1 test2" >> >> NONE of the args is set. >> >> t6.r is ... >> ------------------ >> REBOL [ >> Title: "Testing running scripts" >> Date: 29-Jul-2007 >> File: %t7.r >> Author: "Jonathan Kelly" >> Version: 0.0.1 >> ] >> >> print [ "A" type? system/script/args mold system/script/args ] >> print [ "B" type? system/options/args mold system/options/args ] >> print "T6 system/script" >> print mold system/script >> print "T6 system/options" >> print mold system/options >> ask "finished" -- To unsubscribe from the list, just send an email to lists at rebol.com with unsubscribe as the subject.
