RosettaCodeData/Task/Reflection-Get-source/Tcl/reflection-get-source-2.tcl

14 lines
406 B
Tcl

proc ::getproc name {
set name [uplevel 1 [list namespace which -command $name]]
set args [info args $name]
set args [lmap arg $args { ;# handle default arguments, if it has them!
if {[info default $name $arg default]} {
list $name $default
} else {
return -level 0 $arg
}
}]
set body [info body $name]
list proc $name $args $body
}