Am 26.05.2005 um 17:41 schrieb Stephen Deasey:
On 5/26/05, Zoran Vasiljevic <[EMAIL PROTECTED]> wrote:
Stephen,
Can you please give us some examples how to use the
ns_parseargs call? I would like to integrate this
in our code now and would need to instruct all my
collegues how to use it.
Just a couple of examples would be sufficient.
Thanks
Zoran
proc ex1 {args} {
ns_parseargs {-a {-b ""} -- x {y Y} args} $args
if {[info exists a]} {
return [list $a $b $x $y $args]
}
return [list $b $x $y $args]
}
There's some use of ns_parseargs in the nstest_http proc of the test
harness, and of course in ns_parseargs.test.
Ah. Good tip. What I was also looking is the usage of "?" in the
specstring (never understood this one).
So, the "-a" will collect whatever comes after "-a" argument in
the arguments list and set the "a" variable to the value. Clear.
If I omit "-a" from the argument list, I can use specstring
{-a a.default.value}
and this will set "a" variable with "a.default.value".
Now, where does the "?" come?
Also, how do I specify:
myproc -booleanarg myarg
myproc myarg
I'd want to have variable booleanarg set to 1 if i have "-booleanarg"
in argument list and set to 0 if I dont. How to specify this
(if possible at all; I recall there was an issue with that)?
Sorry for all this questions but this lies quite a few weeks
since we last talked about it...
We should probably define ns_proc to allow a more natural usage. I
didn't do that at first as we were discussing extra features such as
type checking. Do you think we can make that backwards compatible?
proc ns_proc {name spec body} {
proc $name {args} "
ns_parseargs $spec \$args
$body
"
}
ns_proc ex2 {-a {-b ""} -- x {y Y} args} {
if {[info exists a]} {
return [list $a $b $x $y $args]
}
return [list $b $x $y $args]
}
Hmmm... what do you mean by "backwards compatible"?
The ns_proc does not exist, as I see, hence there
is no compatibility to look after. We can of course
define the ns_proc anytime and it can coexist with
the Tcl proc. Did I understand you correctly at all?
Apropos type-checking, I would not go to that extent.
The number, position and default values of arguments
seem pretty fine and sufficient. I would not like to
make it more complicated than absolutely necessary.
Cheer's
Zoran