Changeset 1913


Ignore:
Timestamp:
Sep 23, 2010 3:15:22 AM (14 years ago)
Author:
dkearney
Message:

formatting getopts.tcl

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gui/scripts/getopts.tcl

    r1342 r1913  
    4747    #
    4848    foreach line [split $spec \n] {
    49         if {[llength $line] == 0} {
    50             continue  ;# ignore blank lines
    51         }
     49        if {[llength $line] == 0} {
     50            continue  ;# ignore blank lines
     51        }
    5252
    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         }
     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        }
    9595    }
    9696
     
    9999    #
    100100    while {[llength $args] > 0} {
    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         }
     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        }
    134134    }
    135135    return ""
Note: See TracChangeset for help on using the changeset viewer.