diff options
author | dgp <dgp@users.sourceforge.net> | 2013-03-21 14:35:34 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2013-03-21 14:35:34 (GMT) |
commit | 4e6cf83ae3b856598a8c57d80867a015b162707e (patch) | |
tree | 7aaec4b6249847aed37d5170d228c0076d090fe0 | |
parent | d06c12ad4e7d14199f6c4d531f379b3347d4d06c (diff) | |
parent | f9a1022456da2832c6a6609935e9ab40e10a8b22 (diff) | |
download | tcl-4e6cf83ae3b856598a8c57d80867a015b162707e.zip tcl-4e6cf83ae3b856598a8c57d80867a015b162707e.tar.gz tcl-4e6cf83ae3b856598a8c57d80867a015b162707e.tar.bz2 |
2102614 Add ensemble indexing support to [auto_mkindex]. Thanks Brian Griffin.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | library/auto.tcl | 9 | ||||
-rw-r--r-- | tests/autoMkindex.test | 31 |
3 files changed, 45 insertions, 0 deletions
@@ -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 e86257e..0848bb1 100644 --- a/library/auto.tcl +++ b/library/auto.tcl @@ -605,6 +605,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 8f29131..a7f72dc 100644 --- a/tests/autoMkindex.test +++ b/tests/autoMkindex.test @@ -236,6 +236,37 @@ test autoMkindex-3.3 {auto_mkindex_parser::command} -setup { # Reset initCommands to avoid trashing other tests AutoMkindexTestReset } -result "{::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]]}} test autoMkindex-4.1 {platform independent source commands} -setup { file delete tclIndex |