
Artyom wrote:
As it was common request that was shared by several reviewers I'll take a look on it. And I'll also take a look on regex like interface that may actually be relevant for this case.
OK.
- Operator overloading is sometimes used in unintuitive ways. For example operator/ used to get the value for a specific period type
I'll also update a little date_time the interface to be consistent with other boost libraries, for example to get
year(t) t=year(1990);
In addition or instead of
t = year * 1990 t / year
That will be nicer. [snip]
- Did you try to use the library? With what compiler? Did you have any problems?
I have played with the library using number/ordinal formatting, date formatting,
currency formatting, spellout, case conversion and boundary analysis features.
I
have not used encoding conversion, normalization, timezone/calendar,
(message)
formatting and collation features. I have used ICU backend only.
Environment: FreeBSD 8.0 g++ 4.5.0 in C++03 mode ICU 3.8.1 system-wide installation
What I used was intuitive and easy, except for boundary analysis as noted above.
I had some incorrect results most of which I believe are ICU issues. Some which I'm not so sure about though: - output of as::local_time was wrong by 2 hours; as::gmt was correct. Moreover,
as::date printed the yesterday's date when the local time was 2:24 AM ! /bin/date shows correct local time, so I believe my system time zone
settings
are fine.
This is problem with older ICU versions. ICU had included several bugs in the local time zone detection. I assume that the test test_icu_of_os_timezone fails.
Indeed, and it's the only failing test.
I've seen things things on FreeBSD:
http://art-blog.no-ip.info/files/nightly-build-report.html
(Even it is not tested under Boost namespace it still catches the problems)
What you need is latest ICU. It had several fixes of timezone detection in 4.6 and this version works fine and passes all the tests.
So I recommend you to use it with ICU 4.6 on FreeBSD.
There is a some workaround I implemented for Linux for other problem of detecting timezone as "localtime" but it seems that on FreeBSD it is other issue as it has little bit different timezone handling.
Ok, thanks for the info, it helps.
- "Note: not all locales provide rules for spelling numbers. In such a case
the
number would be displayed in decimal format." This was not the case:
std::cout << as::spellout << 117 << std::endl; printed "one hundred and seventeen" under hy_AM.UTF-8 locale.
I'll take a look on this, it may be either CLDR issue or ICU mis-detecting hy_AM locale.
Thanks :)
And finally, every review should answer this question:
- Do you think the library should be accepted as a Boost library?
Yes.
Thank you very much for the review.
Artyom
Thank you very much for Boost.Locale! Best Regards, Gevorg