Subject: bug#71572: [PATCH] seconds-to-string-approximate

From: john muhl <[email-masked]>
Date: Sun, 08 Dec 2024 16:51:51 -0600

JD Smith <[email-masked]> writes:

>  On Dec 8, 2024, at 4:17 AM, john muhl <[email-masked]> wrote:
>
>  JD Smith <[email-masked]> writes:
>
>  On Dec 7, 2024, at 8:02 AM, Eli Zaretskii <[email-masked]> wrote:
>
>  From: JD Smith <[email-masked]>
>  Date: Sat, 30 Nov 2024 13:58:52 -0500
>  Cc: Eli Zaretskii <[email-masked]>,
>  Adam Porter <[email-masked]>,
>  [email-masked],
>  Paul Eggert <[email-masked]>
>
>  I was recently reminded of the need for a more capable seconds-to-string.  
>
>  Anyone have any additional comments on this proposed patch? If not,
>  I'd suggest someone with access
>  merges.
>
>  A few minor nits below, and then we can install:
>
>  Thanks.  Updated patch below.
>
>  Thanks for working on this. I gave a quick try and noticed some
>  amounts aren’t pluralized how I expect; e.g.
>
>   (seconds-to-string 36541462 'expanded nil 1)
>   ;; "1 year 1.9 month"
>
> ...
>
>  According to the Chicago Manual of Style all fractional values are
>  plural, even 1.0, 2.0 &c.
>
> Thanks for this, a case I hadn't tested.  Corrected in the attached.

Looks good but the bigger interval is still always singular in the
expanded w/ precision case:

  (seconds-to-string 73082924 'expanded nil 2)
  ;; "2 year 3.79 months"
  ;;       ^ should be years

I got it working with:

  @@ -477,7 +477,7 @@ seconds-to-string
             (concat
          (when here-pre
            (concat (number-to-string cnt-pre) padding
  -             (unit (* cnt-pre round-to) here-pre) " "))
  +             (unit (* cnt-pre round-to) here-pre (> cnt-pre 1)) " "))
          (if isfloatp (format dformat cnt-val)
                     (number-to-string (floor cnt-val)))
                   padding

Thanks again.