ycl

Artifact [f8be068555]
Login

Artifact [f8be068555]

Artifact f8be068555f2807d49c0804380498ec89185b151:


#! /bin/env tclsh

proc yclprefix args {
	set myname [lindex [info level 0] 0]
	set body {
		global env
		set argl [llength $args]
		if {$argl == 0} {
		} elseif {$argl == 1} {
			set name [lindex $args 0]
			if {![string match ::* $name]} {
				return -code error [list {name must be absolute} $name]
			}
			proc [lindex [info level 0] 0] args "
			set prefix [list [lindex $args 0]]
			set body [list $body]
			$body
			"
		} else {
			return -code error "wrong # of args.  Should be 0 or 1" 
		}
		return $prefix
	}
	set argl [llength $args]
	if {$argl == 0 } {
		if [info exists env(YCL_PREFIX))] {
			set prefix $env(YCL_PREFIX)
		} else {
			set prefix ::ycl
		}
	}
	namespace eval [namespace qualifiers $prefix] [
		list namespace export [namespace tail $prefix]
	]
	namespace eval $prefix {
		namespace export {[a-z]*}
		namespace ensemble create
	}
	proc $myname args "
	set prefix [list $prefix]
	$body
	"
	$myname {*}$args
}