zsh-users
 help / color / mirror / code / Atom feed
* DWIM interface to date args; reverse array
@ 2017-11-15 14:37 ` Emanuel Berg
  2017-11-15 14:57   ` Peter Stephenson
  0 siblings, 1 reply; 3+ messages in thread
From: Emanuel Berg @ 2017-11-15 14:37 UTC (permalink / raw)
  To: zsh-users

time-from () {
    local from=$1
    local to=${2:-now}

    local -a order

    ### from
    local -a from_items
    from_items=(${(s:-:)from})

    # instead of doing this one could reverse the original data array
    # I Googled "zsh reverse array" and found ${(Oa)array}
    # but seems to only work when I echo it,
    # not assign it to another array
    (( $from_items[1] < $from_items[3] )) && order=(d m y) || order=(y m d)

    local from_y=$from_items[${order[(i)y]}]
    local from_m=$from_items[${order[(i)m]}] # always 2
    local from_d=$from_items[${order[(i)d]}]
    from=${from_y}-${from_m}-${from_d}

    ### to
    if [[ $to != now ]]; then
        local -a to_items
        to_items=(${(s:-:)to})

        (( $to_items[1] < $to_items[3] )) && order=(d m y) || order=(y m d)

        local to_y=$to_items[${order[(i)y]}]
        local to_m=$to_items[${order[(i)m]}] # ditto
        local to_d=$to_items[${order[(i)d]}]
        to=${to_y}-${to_m}-${to_d}
    fi

    ### compute
    local ymd
    local day
    ymd=$(dateutils.ddiff $from $to -f '%Yy %mm %dd')
    day=$(dateutils.ddiff $from $to -f 'total %dd')

    ### output
    echo "${ymd// 0(y|m|d)/} ($day)"
}

-- 
underground experts united
http://user.it.uu.se/~embe8573


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: DWIM interface to date args; reverse array
  2017-11-15 14:37 ` DWIM interface to date args; reverse array Emanuel Berg
@ 2017-11-15 14:57   ` Peter Stephenson
  2017-11-15 15:56     ` Emanuel Berg
  0 siblings, 1 reply; 3+ messages in thread
From: Peter Stephenson @ 2017-11-15 14:57 UTC (permalink / raw)
  To: zsh-users

On Wed, 15 Nov 2017 15:37:44 +0100
Emanuel Berg <moasen@zoho.com> wrote:
> time-from () {

I'd suggest if the question is really "how do I reverse an array?", it's
best not to add distracting material which is simply hiding your
question.  The more obvious the question is, the more people will bother
thinking about it.

On the other hand, if you were asking "how do I write this function
better?" then the context would certainly be important.  But I don't
see that question here.

>     # instead of doing this one could reverse the original data array
>     # I Googled "zsh reverse array" and found ${(Oa)array}
>     # but seems to only work when I echo it,
>     # not assign it to another array

You haven't shown what you expected to work that didn't, so I can't
really answer what you actually said, so I'm reduced to guesswork.
Please show (just) what you think should work and doesn't.  (Or, to
put it another way, the answer to what you just said is "yes, it does
actually work", which I'm guessing isn't going to help you much...)

Try

array=(${(Oa)array})

remembering the outer parenthesis, otherwise you are assigning a scalar.

pws


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: DWIM interface to date args; reverse array
  2017-11-15 14:57   ` Peter Stephenson
@ 2017-11-15 15:56     ` Emanuel Berg
  0 siblings, 0 replies; 3+ messages in thread
From: Emanuel Berg @ 2017-11-15 15:56 UTC (permalink / raw)
  To: zsh-users

Peter Stephenson wrote:

> array=(${(Oa)array})
>
> remembering the outer parenthesis, otherwise
> you are assigning a scalar.

Aha, that's it! Cool.

-- 
underground experts united
http://user.it.uu.se/~embe8573


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-11-15 15:56 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CGME20171115143925epcas2p39a7bfefe245b1b93d1d19dcf210770f3@epcas2p3.samsung.com>
2017-11-15 14:37 ` DWIM interface to date args; reverse array Emanuel Berg
2017-11-15 14:57   ` Peter Stephenson
2017-11-15 15:56     ` Emanuel Berg

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).