Hi, Michal,
you definitely are a hard-core newsgroup/ml guy, aren't you?!
Me, too.
But: just not to forget the (more or less explicit) subject of this thread,
it refers to the "POSIX locale concept" and the ruby (non-)compliance with it.
And we got carried away from it, didn't we?
MS> yes, the problem is that you have to deal with strings also outside of
MS> view, and you want to do that independently of the view and its
MS> locales.
MS> No, I meant software dealing with texts in different languages.
MS> Different languages have different sorting rules (even for the same
MS> letters) but you have only one locale.
MS> That's why I don't really like the idea of using locale too much.
That's fine, but I do want to use it,
and it comes for free in any UNIX / Linux / Mac / Cygwin (/ Windows?!?) environment
so why not simply pass it through w/o confusing the interpreter's runtime system
and enjoy it.
I mean: re-implementing it in ruby,
just because it's nicer (+ slower) in ruby,
is ...
MS> Yes, it's correct. It means "set locale from the environment variable"
So why does my example not work with my ruby1.9, just downloaded and built yesterday?
$ env LC_ALL=fr_FR /usr/local/ruby1.9/bin/ruby \
-e 't = Time.now; puts t.strftime("%A")'
Friday
$ env LC_ALL=fr_FR date '+%A'
vendredi
MS> With ruby 1.9 you get exactly that.
I would love to see that,
but it seems to be incorrect.
MS> Yes, this is ruby's strftime that operates on ruby Time values and has
MS> nothing in common with the libc strftime except the name ;-)
It does have in common most of it,
so not complying 99.5 % is what I call "camouflage" and simply misleading the programmer user.
I assume, you will agree here.
MS> You cannot just pass them.
MS> It's not too hard
MS> to convert limited subset of possible ruby valus
MS> to C values and use the C localized functions on them.
MS> But you probably cannot format all Time values,
Probably, so let's assume returning strings on the ruby heap or stack *would* actually *work*.
You know my roots are in the compiler and interpreter business of the 80-s.
I implemented a code generator and a runtime system for Ada on a Motorola 68k on a bare machine and also within a SysV UNIX,
I helped the Modula2 compiler guys from next door,
in implementing a first I/O library based on the C printf/scanf utilities,
I made use of the Tcl-C interface,
....,
so I can dare to say,
that things in that area are not overly complex
and with a quality approach it can even be achieved w/o creating memory leaks and "almost" bugfree.
Regular business.
MS> and certainly not all Bignums.
Alright.
MS> I am not very fond of localized date/time formats.
MS> I find them confusing.
MS> Anybody and anything should be able to parse 2008-01-18,
MS> and it even sorts correctly in dictionary order.
I fully agree to you.
I started using this ISO date format next to my signature on forms back in the early eighties.
And I learned esperanto then.
But in real life people want to speak French, Czech, German, Portugues, Spanish, Russian, and also English,
and they want to use their familiar date format.
MS> Still it should not be too hard to use the C strftime
MS> if anybody wants to do so.
MS> You are welcome to update the ruby-locale extension if you are so concerned
I feel, like my enhancements would also not find their way into the released source,
just like the patch stemming from 2002.
And how can I recommend using such a crappy enhancement to people in my local user group?
Kind regards,
J.