Changeset 1342 for trunk/gui/scripts/getopts.tcl
- Timestamp:
- Mar 18, 2009, 2:59:21 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gui/scripts/getopts.tcl
r1279 r1342 47 47 # 48 48 foreach line [split $spec \n] { 49 50 51 49 if {[llength $line] == 0} { 50 continue ;# ignore blank lines 51 } 52 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 53 set type [lindex $line 0] 54 switch -- $type { 55 value { 56 if {[llength $line] < 3} { 57 error "bad value spec \"$line\": should be \"value -flag default\"" 58 } 59 set name [lindex $line 1] 60 set flags($name) $type 61 set params($name) [lindex $line 2] 62 lappend opts $name 63 } 64 flag { 65 if {[llength $line] < 3 || [llength $line] > 4} { 66 error "bad value spec \"$line\": should be \"flag group -flag ?default?\"" 67 } 68 set group [lindex $line 1] 69 set name [lindex $line 2] 70 set flags($name) [list $type $group] 71 if {[llength $line] > 3} { 72 set params($group) $name 73 set params($name) 1 74 } else { 75 if {![info exists params($group)]} { 76 set params($group) "" 77 } 78 set params($name) 0 79 } 80 lappend opts $name 81 } 82 82 list { 83 84 85 86 87 88 89 90 91 92 93 94 83 if {[llength $line] < 3} { 84 error "bad value spec \"$line\": should be \"list -flag default\"" 85 } 86 set name [lindex $line 1] 87 set flags($name) $type 88 set params($name) [lindex $line 2] 89 lappend opts $name 90 } 91 default { 92 error "bad arg type \"$type\": should be flag or value" 93 } 94 } 95 95 } 96 96 … … 99 99 # 100 100 while {[llength $args] > 0} { 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 101 set first [lindex $args 0] 102 if {[string index $first 0] != "-"} { 103 break 104 } 105 if {"--" == $first} { 106 set args [lrange $args 1 end] 107 break 108 } 109 if {![info exists params($first)]} { 110 error "bad option \"$first\": should be [join [lsort $opts] {, }]" 111 } 112 switch -- [lindex $flags($first) 0] { 113 value { 114 if {[llength $args] < 2} { 115 error "missing value for option $first" 116 } 117 set params($first) [lindex $args 1] 118 set args [lrange $args 2 end] 119 } 120 flag { 121 set group [lindex $flags($first) 1] 122 set params($group) $first 123 set params($first) 1 124 set args [lrange $args 1 end] 125 } 126 126 list { 127 128 129 130 131 127 if {[llength $args] < 2} { 128 error "missing value for option $first" 129 } 130 set params($first) [lrange $args 1 end] 131 set args "" 132 132 } 133 133 } 134 134 } 135 135 return ""
Note: See TracChangeset
for help on using the changeset viewer.