diff options
author | Peter Stephenson <p.w.stephenson@ntlworld.com> | 2017-09-14 21:43:37 +0100 |
---|---|---|
committer | Peter Stephenson <p.w.stephenson@ntlworld.com> | 2017-09-14 21:43:37 +0100 |
commit | ab7be4238ca89b5dca482a1c3b3fd013b105750e (patch) | |
tree | d22e18887769a111c1e6597f6bd33dc136439e55 | |
parent | 7ca2e97c14cd7927c1ee688880884a2bd152fc68 (diff) | |
download | zsh-ab7be4238ca89b5dca482a1c3b3fd013b105750e.tar.gz zsh-ab7be4238ca89b5dca482a1c3b3fd013b105750e.tar.xz zsh-ab7be4238ca89b5dca482a1c3b3fd013b105750e.zip |
More [key]=value tweaks
Some rephrasings. Update typeset -p for associative arrays to use new syntax.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | Doc/Zsh/expn.yo | 7 | ||||
-rw-r--r-- | Doc/Zsh/params.yo | 9 | ||||
-rw-r--r-- | Src/params.c | 8 | ||||
-rw-r--r-- | Test/B02typeset.ztst | 2 | ||||
-rw-r--r-- | Test/V10private.ztst | 2 |
6 files changed, 24 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog index 74bc2cbd2..5aa94a2d1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2017-09-14 Peter Stephenson <p.w.stephenson@ntlworld.com> + + * Doc/Zsh/expn.yo, Doc/ZSh/params.yo, Src/params.c, + Test/B02typeset.ztst, Test/V10private.ztst: typeset -p output + for associative arrays and some rephrasings. + 2017-09-13 Peter Stephenson <p.w.stephenson@ntlworld.com> * unposted: typo in proceeding Doc noticed by Oliver. diff --git a/Doc/Zsh/expn.yo b/Doc/Zsh/expn.yo index a61738f84..d5e5838df 100644 --- a/Doc/Zsh/expn.yo +++ b/Doc/Zsh/expn.yo @@ -1025,9 +1025,10 @@ ifnzman(noderef(Filename Expansion))\ ifzman(the section FILENAME EXPANSION below). ) item(tt(e))( -Perform em(parameter expansion), em(command substitution) and -em(arithmetic expansion) on the result. Such expansions can be -nested but too deep recursion may have unpredictable effects. +Perform single word shell expansions, namely em(parameter expansion), +em(command substitution) and em(arithmetic expansion), on the +result. Such expansions can be nested but too deep recursion may have +unpredictable effects. ) item(tt(f))( Split the result of the expansion at newlines. This is a shorthand diff --git a/Doc/Zsh/params.yo b/Doc/Zsh/params.yo index 33e9fd69a..2534d1c72 100644 --- a/Doc/Zsh/params.yo +++ b/Doc/Zsh/params.yo @@ -102,13 +102,16 @@ may be in any order. Note that this syntax is strict: tt([) and tt(]=) must not be quoted, while var(key) may not consist of the unquoted string tt(]=), but is otherwise treated as a simple string. Furthermore, all elements must match this form or an error is generated; likewise, if the -first entry does not match this form any later entry that does is taken +first entry does not match this form, any later entry that does is taken as a simple value rather than a key / value pair. The enhanced forms of subscript expression that may be used when directly subscripting a variable name, described in the section Array Subscripts below, are not available. Both var(key) and var(value) undergo all forms of expansion -allowed for single word substitutions (this does not include filename -generation). +allowed for single word shell expansions (this does not include filename +generation); these are as performed by the parameter expansion flag +tt(LPAR()e+RPAR()) as described in +ifzman(zmanref(zshparam))\ +ifnzman(nodref(Parameter Expansion)). If no parameter var(name) exists, an ordinary array parameter is created. If the parameter var(name) exists and is a scalar, it is replaced by a new diff --git a/Src/params.c b/Src/params.c index e0aaaf620..d628ddf37 100644 --- a/Src/params.c +++ b/Src/params.c @@ -5564,9 +5564,7 @@ printparamvalue(Param p, int printflags) { char *t, **u; - if (printflags & PRINT_KV_PAIR) - putchar(' '); - else + if (!(printflags & PRINT_KV_PAIR)) putchar('='); /* How the value is displayed depends * @@ -5721,7 +5719,11 @@ printparamnode(HashNode hn, int printflags) zputs(p->node.nam, stdout); putchar('\n'); } else { + if (printflags & PRINT_KV_PAIR) + putchar('['); quotedzputs(p->node.nam, stdout); + if (printflags & PRINT_KV_PAIR) + printf("]="); printparamvalue(p, printflags); } diff --git a/Test/B02typeset.ztst b/Test/B02typeset.ztst index ae218047c..7923ae3a6 100644 --- a/Test/B02typeset.ztst +++ b/Test/B02typeset.ztst @@ -763,6 +763,7 @@ for key in ${(ok)keyvalhash}; do print -l $key $keyvalhash[$key] done + typeset -p keyvalhash 0:Substitution in [key]=val syntax >* >?not_globbed? @@ -776,3 +777,4 @@ >another value >the key >the value +>typeset -A keyvalhash=( ['*']='?not_globbed?' ['another key']='another value' ['the key']='the value' ) diff --git a/Test/V10private.ztst b/Test/V10private.ztst index 78ecd48ea..880784e12 100644 --- a/Test/V10private.ztst +++ b/Test/V10private.ztst @@ -123,7 +123,7 @@ print ${(kv)hash_test} 0:private hides value from surrounding scope in nested scope >typeset -a hash_test=( top level ) ->typeset -A hash_test=( in function ) +>typeset -A hash_test=( [in]=function ) >typeset -g -a hash_test=( top level ) >array-local top level >top level |