#as this is a stateful list next index operation - we use not (!@) to mean there is no element at the next index (instead of returning the complement ie all elements except next)
#as this is a stateful list next index operation - we use not (!@) to mean there is no element at the next index (instead of returning the complement ie all elements except next)
#This is in contrast to other not operations on indices e.g /!2 which returns all elements except that at index 2
#This is in contrast to other not operations on indices e.g /!2 which returns all elements except that at index 2
@ -1849,7 +1879,7 @@ namespace eval punk {
# set active_key_type "dict" index_operation: globvalue-get-keys-not
# set active_key_type "dict" index_operation: globvalue-get-keys-not
set assigned [list]
set assigned [list]
tcl::dict::for {k v} $leveldata {
tcl::dict::for {k v} $leveldata {
if {![string match <keyglob> $v]} {
if {![string match "<keyglob>" $v]} {
lappend assigned $k
lappend assigned $k
}
}
}
}
@ -1860,7 +1890,7 @@ namespace eval punk {
# set active_key_type "dict" index_operation: globvalue-get-keys
# set active_key_type "dict" index_operation: globvalue-get-keys
set assigned [list]
set assigned [list]
tcl::dict::for {k v} $leveldata {
tcl::dict::for {k v} $leveldata {
if {[string match <keyglob> $v]} {
if {[string match "<keyglob>" $v]} {
lappend assigned $k
lappend assigned $k
}
}
}
}
@ -2745,7 +2775,9 @@ namespace eval punk {
#'ismatch' must always be first element of dict - as we dispatch on ismatch 0 or ismatch 1
#'ismatch' must always be first element of dict - as we dispatch on ismatch 0 or ismatch 1
if {![string length $multivar]} {
if {![string length $multivar]} {
#treat the absence of a pattern as a match to anything
#treat the absence of a pattern as a match to anything
set this_type [dict get $pattern_this_structure $pattern_nest]
set this_type [dict get $pattern_this_structure $pattern_nest]
set is_match 1 ;#whether to display the normal separator or bad-match separator
switch -- $this_type {
switch -- $this_type {
dict {
dict {
#todo? - slower lsearch if -dupes 1 flag set so we can display duplicate 'keys' if var not a proper dict but rather a dict-shaped list that we want to display as a dict
#todo? - slower lsearch if -dupes 1 flag set so we can display duplicate 'keys' if var not a proper dict but rather a dict-shaped list that we want to display as a dict
@ -958,7 +971,7 @@ namespace eval punk::lib {
set nextsub [dict get $pattern_next_substructure $pattern_nest]
set nextsub [dict get $pattern_next_substructure $pattern_nest]