summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2013-03-21 14:28:59 (GMT)
committerdgp <dgp@users.sourceforge.net>2013-03-21 14:28:59 (GMT)
commitf9a1022456da2832c6a6609935e9ab40e10a8b22 (patch)
tree553365144a6d50b02e653b4279f40544aa7a40d0
parent4072ab92c6098e4cebd7922e2118252a9a594f30 (diff)
downloadtcl-f9a1022456da2832c6a6609935e9ab40e10a8b22.zip
tcl-f9a1022456da2832c6a6609935e9ab40e10a8b22.tar.gz
tcl-f9a1022456da2832c6a6609935e9ab40e10a8b22.tar.bz2
2102614 Add ensemble indexing support to [auto_mkindex]. Thanks Brian Griffin.
-rw-r--r--ChangeLog5
-rw-r--r--library/auto.tcl9
-rw-r--r--tests/autoMkindex.test31
3 files changed, 45 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 0d17957..529d123 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-03-21 Don Porter <dgp@users.sourceforge.net>
+
+ * library/auto.tcl: [Bug 2102614] Add ensemble indexing support
+ * tests/autoMkindex.test: to [auto_mkindex]. Thanks Brian Griffin.
+
2013-03-19 Don Porter <dgp@users.sourceforge.net>
* generic/tclFCmd.c: [Bug 3597000] Consistent [file copy] result.
diff --git a/library/auto.tcl b/library/auto.tcl
index b0fb61d..f7cf5f0 100644
--- a/library/auto.tcl
+++ b/library/auto.tcl
@@ -603,6 +603,15 @@ auto_mkindex_parser::command namespace {op args} {
}
catch {$parser eval "_%@namespace import $args"}
}
+ ensemble {
+ variable parser
+ variable contextStack
+ if {[lindex $args 0] eq "create"} {
+ set name ::[join [lreverse $contextStack] ::]
+ # create artifical proc to force an entry in the tclIndex
+ $parser eval [list ::proc $name {} {}]
+ }
+ }
}
}
diff --git a/tests/autoMkindex.test b/tests/autoMkindex.test
index be1e3e6..c105e95 100644
--- a/tests/autoMkindex.test
+++ b/tests/autoMkindex.test
@@ -251,6 +251,37 @@ test autoMkindex-3.3 {auto_mkindex_parser::command} {knownBug} {
list [lvalue $::result *mycmd4*] [lvalue $::result *mycmd5*] [lvalue $::result *mycmd6*]
} "{::buried::mycmd4 $element} {::buried::mycmd5 $element} {mycmd6 $element}"
+makeFile {
+
+namespace eval wok {
+ namespace ensemble create -subcommands {commands vars}
+
+ proc commands {{pattern *}} {
+ puts [join [lsort -dictionary [info commands $pattern]] \n]
+ }
+
+ proc vars {{pattern *}} {
+ puts [join [lsort -dictionary [info vars $pattern]] \n]
+ }
+
+}
+
+} ensemblecommands.tcl
+
+test autoMkindex-3.3 {ensemble commands in tclIndex} {
+ file delete tclIndex
+ auto_mkindex . ensemblecommands.tcl
+ set f [open tclIndex r]
+ set dat [list]
+ foreach r [split [string trim [read $f]] "\n"] {
+ if {[string match {set auto_index*} $r]} {
+ lappend dat $r
+ }
+ }
+ set result [lsort $dat]
+ close $f
+ set result
+} {{set auto_index(::wok::commands) [list source [file join $dir ensemblecommands.tcl]]} {set auto_index(::wok::vars) [list source [file join $dir ensemblecommands.tcl]]} {set auto_index(wok) [list source [file join $dir ensemblecommands.tcl]]}}
makeDirectory pkg
makeFile {