Posted to tcl by pooryorick at Fri May 02 22:52:23 GMT 2014view raw
- proc object id {
- if {[string first :: $id] != 0} {
- set id [string trimright [uplevel namespace current] :]::$id
- }
- namespace eval $id {
- namespace ensemble create
- namespace export -clear
- namespace ensemble configure [namespace current] -unknown [
- list apply [list args {
- return [lindex $args 0]::[lindex $args 1]
- } [namespace current]]
- ]
- }
- namespace eval $id [list namespace import [namespace current]::*]
- return $id
- }
- proc method {name argspec attributes body} {
- set script [string map [list {{{attributes}}} [list $attributes]] {
- set id [namespace qualifiers [lindex [info level 0] 0]]
- foreach varname [set attributes {{attributes}}] {
- upvar 0 ${id}::$varname $varname
- }
- }]
- proc $name $argspec $script$body
- }