blob: 4caa472f88a1f9ccf9b4848db930de62c0e30650 [file] [log] [blame]
###
##
## import_switch_args
##
## Detect switches from a string (e.g. "-all -regexp -- foo bar args")
## and extract them into an array.
##
## $Id$
##
###
namespace eval ::rivet {
proc import_switch_args {arrayName argsList {switchList ""}} {
upvar 1 $arrayName array
set index 0
set array(args) ""
set array(switches) ""
if {[llength $switchList] > 0} {
set proofSwitches 1
} else {
set proofSwitches 0
}
foreach arg $argsList {
if {[string index $arg 0] != "-"} {
set array(args) [lrange $argsList $index end]
break
} elseif {$arg == "--"} {
set array(args) [lrange $argsList [expr {$index + 1}] end]
break
}
set switch [string range $arg 1 end]
if {!$proofSwitches || [lsearch -exact $switchList $switch] >= 0} {
set array($switch) $index
lappend array(switches) $switch
}
incr index
}
}
}