Re: [nmh-workers] Ordinal Indicators.

2019-07-08 Thread Valdis Klētnieks
On Mon, 08 Jul 2019 17:25:42 +0100, Ralph Corderoy said:
> Is -42nd handled?

I admit being totally mystified as to what situations require proper handling
of negative ordinals



pgpM4SES7TBLk.pgp
Description: PGP signature
-- 
nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers

Re: [nmh-workers] Ordinal Indicators.

2019-07-08 Thread Ken Hornstein
>Is -42nd handled?

You know where the source code is, Ralph.  Have at it.

--Ken

-- 
nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers

Re: [nmh-workers] Ordinal Indicators.

2019-07-08 Thread Ralph Corderoy
Hi,

Is -42nd handled?  IIRC we demand C99 so we know rounding is towards
zero.  But C's remainder operator, ‘%’, returns the sign of the
dividend, unlike modulo.  And then there's two's complement so INT_MIN
can't be made positive.

$ for a in ' -' ' '; do
> for b in ' -' ' '; do
> fmttest -raw \
> -format "%(num${a}42) /${b}10 = %(divide${b}10)\t%(num${a}42) 
%%${b}10 = %(modulo${b}10)" ''
> done
> done
-42 / -10 = 4   -42 % -10 = -2
-42 / 10 = -4   -42 % 10 = -2
42 / -10 = -4   42 % -10 = 2
42 / 10 = 4 42 % 10 = 2
$ 

-- 
Cheers, Ralph.

-- 
nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers

Re: [nmh-workers] Ordinal Indicators.

2019-07-08 Thread Ralph Corderoy
> Geez, you could have just SAID that

Now where would be the fun in that.  :-)

-- 
Cheers, Ralph.

-- 
nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers

Re: [nmh-workers] Ordinal Indicators.

2019-07-08 Thread Ken Hornstein
>The point is, that if you're going to add this, you should do it
>correctly, not just any random code that looks close.

Geez, you could have just SAID that (ok, fine, you DID say that, but ...
oh, never mind).  I missed that part in your examples.

Anyway, fixed!

--Ken

-- 
nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers

Re: [nmh-workers] Ordinal Indicators.

2019-07-08 Thread Robert Elz
Ken, Ralph is being overly subtle (or perhaps I could use another word...)

The point is, that if you're going to add this, you should do it
correctly, not just any random code that looks close.

kre

ps: Hint: 11st is not correct.


-- 
nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers

Re: [nmh-workers] Ordinal Indicators.

2019-07-08 Thread Ralph Corderoy
Hi Ken,

> > Were you paying attention to kre's sh and my sed?  :-)
>
> I mean ... yeah?  Steal from the best, and all that!  I had a few free
> minutes, I thought, "Oh, huh, nmh SHOULD have a function to output the
> ordinal string for dates and such", and I though it should be pretty
> easy and it was.

Yep, you certainly made it look easy compared to kre and me.
And it saved me raising a bug to say it wasn't implemented.

BTW, when would you say peak caffeine is reached in your day?

-- 
Cheers, Ralph.

-- 
nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers

Re: [nmh-workers] Ordinal Indicators.

2019-07-08 Thread Ken Hornstein
>Were you paying attention to kre's sh and my sed?  :-)

I mean ... yeah?  Steal from the best, and all that!  I had a few free
minutes, I thought, "Oh, huh, nmh SHOULD have a function to output
the ordinal string for dates and such", and I though it should be
pretty easy and it was.

--Ken

-- 
nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers

Re: [nmh-workers] Ordinal Indicators.

2019-07-08 Thread Ralph Corderoy
Hi Ken,

> > This is true.  To correct that, I note mh-format(5) too has no
> > function to produce the ordinal suffix.  :-)
>
> Fixed.

Impressively quick work.

+   int digit = value % 10;
+   const char *suffix;
+
+   switch (digit) {
+   case 1:
+   suffix = "st";
+   break;
+   case 2:
+   suffix = "nd";
+   break;
+   case 3:
+   suffix = "rd";
+   break;
+   default:
+   suffix = "th";
+   }

Were you paying attention to kre's sh and my sed?  :-)

-- 
Cheers, Ralph.

-- 
nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers

Re: [nmh-workers] Ordinal Indicators.

2019-07-08 Thread Ken Hornstein
>This is true.  To correct that, I note mh-format(5) too has no function
>to produce the ordinal suffix.  :-)

Fixed.

--Ken

-- 
nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers

Re: [nmh-workers] Ordinal Indicators.

2019-07-08 Thread Ralph Corderoy
Hi kre,

>   D=$(date +%d)
>   case "$D" in
>   [023]1) ORD=st;;
>   [02]2)  ORD=nd;;
>   [02]3)  ORD=rd;;
>   *)  ORD=th;;
>   esac
>   case "$D" in
>   0*) SP=;;
>   *)  SP=' ';;
>   esac

I ended up with

$ cat ~/bin/ordsuff
#! /bin/sed -rf

# Append an ordinal indicator to the number on each line.

s/1$//
s/2$//
s/3$//
s/[4-9]$//
s/.0$//

/1(1st|2nd|3rd)$/s/..$/th/
$ 

> ps: this is not really an nmh-workers issue!

This is true.  To correct that, I note mh-format(5) too has no function
to produce the ordinal suffix.  :-)

-- 
Cheers, Ralph.

-- 
nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers

Re: [nmh-workers] Ordinal Indicators.

2019-07-08 Thread Robert Elz
Date:Mon, 08 Jul 2019 11:37:10 +0100
From:Ralph Corderoy 
Message-ID:  <20190708103710.86f3121...@orac.inputplus.co.uk>

  | I had a need today to have date(1) produce 8th for today

Yes, strftime() has no ordinals, and (as best I understand it) locales
don't either.   To get them you need to code it yourself

D=$(date +%d)
case "$D" in
[023]1) ORD=st;;
[02]2)  ORD=nd;;
[02]3)  ORD=rd;;
*)  ORD=th;;
esac
case "$D" in
0*) SP=;;
*)  SP=' ';;
esac

and then deal with internationalising that for yourself... (good luck).

Then
date "+%A, the${SP}%e${ORD} of %B"
or whatever.

kre

ps: this is not really an nmh-workers issue!


-- 
nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers

Re: [nmh-workers] Ordinal Indicators.

2019-07-08 Thread Ralph Corderoy
Hi kre,

> LC_TIME says how time (of day) is represented (d/m/y m/d/y, 12 or 24
> hour, etc)

I had a need today to have date(1) produce ‘8th’ for today and find its
interpreted sequences don't support the
https://en.wikipedia.org/wiki/Ordinal_indicator, but then neither does
POSIX's LC_TIME, it seems.

-- 
Cheers, Ralph.

-- 
nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers