Changeset 1913
- Timestamp:
- Sep 23, 2010 3:15:22 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gui/scripts/getopts.tcl
r1342 r1913 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 82 83 84 85 86 87 88 89 90 91 92 93 94 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 list { 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 126 127 128 129 130 131 132 133 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 list { 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 } 133 } 134 134 } 135 135 return ""
Note: See TracChangeset
for help on using the changeset viewer.