Commits

Taylor Venable committed d29f0f4

Rename procra to eproc

Comments (0)

Files changed (2)

+### Copyright (c) 2013, Taylor Venable
+### All rights reserved.
+###
+### Redistribution and use in source and binary forms, with or without
+### modification, are permitted provided that the following conditions are met:
+###
+###     * Redistributions of source code must retain the above copyright
+###       notice, this list of conditions and the following disclaimer.
+###
+###     * Redistributions in binary form must reproduce the above copyright
+###       notice, this list of conditions and the following disclaimer in the
+###       documentation and/or other materials provided with the distribution.
+###
+### THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+### AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+### IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+### ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+### LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+### CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+### SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+### INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+### CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+### ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+### POSSIBILITY OF SUCH DAMAGE.
+
+################################################################################
+##                                                                            ##
+##  ENHANCED PROC CREATION                                                    ##
+##                                                                            ##
+################################################################################
+
+package provide procra 1.0
+
+namespace eval ::procra {
+    namespace export procra
+
+    proc procra {args} {
+        set name [lindex $args 0]
+        set script [lindex $args end]
+        set args [lrange $args 1 end-1]
+
+        uplevel [list proc $name {args} [subst {
+            procra::xyzzy $name {*}$args
+            $script
+        }]]
+    }
+    proc xyzzy {name args} {
+        if {[llength $args] < 2} {
+            error "wrong # args"
+        }
+
+        set nullary {}
+        set unary {}
+        set required {}
+        set optional {}
+        set rest {}
+
+            for {set i 0} {$i < [llength $args]} {incr i} {
+            switch -- [lindex $args $i] {
+                {-nullary} {
+                    set nullary [lindex $args [incr i]]
+                }
+                {-unary} {
+                    set unary [lindex $args [incr i]]
+                }
+                {-required} {
+                    set required [lindex $args [incr i]]
+                }
+                {-optional} {
+                    set optional [lindex $args [incr i]]
+                }
+                {-rest} {
+                    set rest [lindex $args [incr i]]
+                }
+                {default} {
+                    error "Unknown option: [lindex $args $i]"
+                }
+            }
+        }
+
+        unset args
+        upvar args args
+        uplevel [list set args/original $args]
+
+            foreach flag $nullary {
+            uplevel [list set $flag false]
+        }
+        for {set i 0} {$i < [llength $args]} {incr i} {
+            set flag [lindex $args $i]
+
+            if {$flag eq "--" || ![regexp {^-} $flag]} {
+                break ;# stop processing arguments
+            }
+
+            # Remove leading dash from option.
+            set flag [string range $flag 1 end]
+
+            set index [lsearch -index 0 $nullary $flag]
+            if {$index < 0} {
+                set index [lsearch -index 0 $unary $flag]
+                if {$index < 0} {
+                    error "$name: unrecognized argument: -$flag"
+                } elseif {$i + 1 == [llength $args]} {
+                    error "$name: flag requires an argument: -$flag"
+                } else {
+                    uplevel [list set $flag [lindex $args [incr i]]]
+                    continue
+                }
+            } else {
+                uplevel [list set $flag true]
+            }
+        }
+        for {set i $i; set j 0} {$i < [llength $args] && $j < [llength $required]} {incr i; incr j} {
+            uplevel [list set [lindex $required $j] [lindex $args $i]]
+        }
+
+        if {$j < [llength $required]} {
+            error "$name: missing required arguments: [lrange $required $j end]"
+        }
+        for {set i $i; set j 0} {$i < [llength $args] && $j < [llength $optional]} {incr i; incr j} {
+            uplevel [list set [lindex $optional $j] [lindex $args $i]]
+        }
+
+        if {$i < [llength $args] && [info exists rest]} {
+            uplevel [list set $rest [lrange $args $i end]]
+        }
+
+        set args [lrange $args $i end]
+    }
+}

procra.tcl

-### Copyright (c) 2013, Taylor Venable
-### All rights reserved.
-###
-### Redistribution and use in source and binary forms, with or without
-### modification, are permitted provided that the following conditions are met:
-###
-###     * Redistributions of source code must retain the above copyright
-###       notice, this list of conditions and the following disclaimer.
-###
-###     * Redistributions in binary form must reproduce the above copyright
-###       notice, this list of conditions and the following disclaimer in the
-###       documentation and/or other materials provided with the distribution.
-###
-### THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-### AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-### IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-### ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-### LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-### CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-### SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-### INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-### CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-### ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-### POSSIBILITY OF SUCH DAMAGE.
-
-################################################################################
-##                                                                            ##
-##  ENHANCED PROC CREATION                                                    ##
-##                                                                            ##
-################################################################################
-
-package provide procra 1.0
-
-namespace eval ::procra {
-    namespace export procra
-
-    proc procra {args} {
-        set name [lindex $args 0]
-        set script [lindex $args end]
-        set args [lrange $args 1 end-1]
-
-        uplevel [list proc $name {args} [subst {
-            procra::xyzzy $name {*}$args
-            $script
-        }]]
-    }
-    proc xyzzy {name args} {
-        if {[llength $args] < 2} {
-            error "wrong # args"
-        }
-
-        set nullary {}
-        set unary {}
-        set required {}
-        set optional {}
-        set rest {}
-
-            for {set i 0} {$i < [llength $args]} {incr i} {
-            switch -- [lindex $args $i] {
-                {-nullary} {
-                    set nullary [lindex $args [incr i]]
-                }
-                {-unary} {
-                    set unary [lindex $args [incr i]]
-                }
-                {-required} {
-                    set required [lindex $args [incr i]]
-                }
-                {-optional} {
-                    set optional [lindex $args [incr i]]
-                }
-                {-rest} {
-                    set rest [lindex $args [incr i]]
-                }
-                {default} {
-                    error "Unknown option: [lindex $args $i]"
-                }
-            }
-        }
-
-        unset args
-        upvar args args
-        uplevel [list set args/original $args]
-
-            foreach flag $nullary {
-            uplevel [list set $flag false]
-        }
-        for {set i 0} {$i < [llength $args]} {incr i} {
-            set flag [lindex $args $i]
-
-            if {$flag eq "--" || ![regexp {^-} $flag]} {
-                break ;# stop processing arguments
-            }
-
-            # Remove leading dash from option.
-            set flag [string range $flag 1 end]
-
-            set index [lsearch -index 0 $nullary $flag]
-            if {$index < 0} {
-                set index [lsearch -index 0 $unary $flag]
-                if {$index < 0} {
-                    error "$name: unrecognized argument: -$flag"
-                } elseif {$i + 1 == [llength $args]} {
-                    error "$name: flag requires an argument: -$flag"
-                } else {
-                    uplevel [list set $flag [lindex $args [incr i]]]
-                    continue
-                }
-            } else {
-                uplevel [list set $flag true]
-            }
-        }
-        for {set i $i; set j 0} {$i < [llength $args] && $j < [llength $required]} {incr i; incr j} {
-            uplevel [list set [lindex $required $j] [lindex $args $i]]
-        }
-
-        if {$j < [llength $required]} {
-            error "$name: missing required arguments: [lrange $required $j end]"
-        }
-        for {set i $i; set j 0} {$i < [llength $args] && $j < [llength $optional]} {incr i; incr j} {
-            uplevel [list set [lindex $optional $j] [lindex $args $i]]
-        }
-
-        if {$i < [llength $args] && [info exists rest]} {
-            uplevel [list set $rest [lrange $args $i end]]
-        }
-
-        set args [lrange $args $i end]
-    }
-}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.