[Module]
Name=Genealogy::Gedcom::Date
Changelog.Creator=Module::Metadata::Changes V 2.06
Changelog.Parser=Config::IniFiles V 2.88

[V 2.03]
Date=2016-01-03T11:56:00
Comments= <<EOT
- Check the input for undef and the empty string. If found, parse() returns [] and sets the
error string to 'Input is the empty string'.
- If, after calling Marpa's parse() method, the call to ambiguity_metric() returns <= 0, then
the error string now includes the line and column Marpa was up to within the input stream.
EOT

[V 2.02]
Date=2015-11-17T20:06:00
Comments= <<EOT
- No (detectable) code changes.
- Add annotations (comments) to rule actions, listing the params to each action sub.
- Remove action day() which just returned its param, and use the reserved action ::first.
- Fix version # within Actions.pm. It was still 1.08.
- Reformat version-date lines in Changes from:
EOT

[V 2.01]
Date=2015-11-09T08:03:00
Comments= <<EOT
- Make abstract in Makefile.PL match the NAME in the docs.
- Fix conversion of commas to spaces, so that commas are preserved inside parentheses.
- Vastly expand the set of characters allowed inside parentheses. A ')' is still forbidden.
- Fix code which was correct but accidentally so. This was used, $self -> recce -> read(\$date),
instead of $self -> recce -> read(\$self -> date). Luckily, $date was correct, but after now
removing commas differently, it wasn't.
- Add 'Int $date ($text)' tests to French.t, German.t and Hebrew.t.
EOT

[V 2.00]
Date=2015-10-13T20:43:00
Comments= <<EOT
- Re-write using Marpa::R2, which uses the Gedcom grammar to define dates.
- Remove methods: parse_approximate_date(), parse_date_escape(), parse_datetime(),
parse_date_period(), parse_date_range(), parse_date_value(), parse_interpreted_date(),
debug(), method_index(), months_in_gregorian() and style().
- Add methods: parse(), calendar(), error().
- See the FAQ for the format of the value returned by parse().
- See the FAQ for various extensions to the Gedcom grammar.
- Accept Unicode input.
- Add support for French and German dates.
- Accept date escapes with or without '@#d' ... '@'.
- Accept dates and escapes in any case.
- Remove all reference to DateTime.
- Remove code which supplied a default day and/or month when they were missing.
- Add scripts/synopsis.pl.
- Rewrite all tests. See t/English.t, etc.
- Reduce the max line length of this file, and of the docs, to (an arbitrary) 100 chars.
EOT

[V 1.16]
Date=2015-09-30T10:14:00
Comments= <<EOT
- Expand parse_datetime() so it accepts either a string or a hash.
- Expand docs to match.
- Expand t/date.t to test both an American date and the above.
- Fix bug whereby ',' in dates was deleted but should have been replaced by ' '.
See t/date.t for this case: December 13,1668. Zapping the ',' gives December 131668!
- Correct FAQ re Hash::FieldHash since I now use Moo.
EOT

[V 1.15]
Date=2015-09-28T08:58:00
Comments= <<EOT
- Remove \n from all die messages, as suggested by Nigel Horne. See discussion in #RT107354.
I'm doing this assuming well-written code will capture all the dies, so the issue of
leaking information to users of CGI scripts does not arise.
EOT

[V 1.14]
Date=2015-08-28T11:34:00
Comments= <<EOT
- Change logic of how we proceed after all parse methods have died, so that our own object
can still be used.
Thanx to Nigel Horne for reporting this. See RT#106705.
- Add below thanx to Nigel for reporting the locale issue (see V 1.13), and the code fix.
EOT

[V 1.13]
Date=2015-08-28T10:08:00
Comments= <<EOT
- Honour the $ENV{LANG} value, if set, when creating DateTime objects.
Thanx to Nigel Horne for reporting this. See RT#106703.
- Add a note about $ENV{LANG} at the start of the FAQ.
- Reformat the POD, so lines are at most 100 chars wide.
- Clean up Makefile.PL so it references the github repo.
- Add repo to docs.
- Remove Build.PL.
EOT

[V 1.12]
Date=2015-05-10T12:00:00
Comments= <<EOT
- No code changes.
- Bump required version of DateTime from V 1.03 to V 1.18, hoping this fixes all the
CPAN tester fail reports. This change /really/ should have been in the last version.
EOT

[V 1.11]
Date=2015-04-28T17:14:00
Comments= <<EOT
- Use Config.pm to tell us which version of Perl is being used, and if it's >= 5.21.11,
then use 'Inf' and '-Inf', otherwise use 'inf' and '-inf'.
- Test with Perls V 5.10.1, 5.20.2 and 5.21.11.
EOT

[V 1.10]
Date=2015-04-28T16:06:00
Comments=- Update META.json and META.yml.

[V 1.09]
Date=2015-04-28T11:14:20
Comments= <<EOT
- Test under Perl V 5.21.11. See RT#103959.
- Deal with test failures relating to Inf under Perl V 5.21.11.
This involves using 'Inf' instead of 'inf', and '-Inf' instead of '-inf'.
- Switch from Hash::FieldHash to Moo and Types::Standard (i.e. Type::Tiny).
- Add github repo Genealogy-Gedcom-Date. This involves updating Build.PL and Makefile.PL.
- Move t/pod.t to xt/author/pod.t. This involves making Test::Pod optional.
EOT

[V 1.08]
Date=2013-06-26T11:00:00
Comments= <<EOT
- Rename CHANGES to Changes as per CPAN::Changes::SPEC.
- Update pre-preqs' version #s, especially for DateTime and DateTime::Infinite, to see if that
fixes mysterious CPAN Tester failures with t/date.t's use of '15 Jul 1954'.
EOT

[V 1.07]
Date=2012-03-23T16:51:00
Comments= <<EOT
- Patch code and tests for Solaris, where Data::Infinite::(Past, Future) return '-Infinity' and
'Infinity'.
- Turn off debug in tests.
EOT

[V 1.06]
Date=2012-03-22T09:18:00
Comments= <<EOT
- No code changes. No need to upgrade.
- The only patch is that debug is enabled in all test scripts. The point is to report as much
information as possible when CPAN Testers using Solaris run tests. Unfortunately, no CPAN
Tester in this situation has responded to my direct emails, so I'm using this mechanism to
get the info I need. This is all part of the mess MS Windows and Solaris make when failing
to handle Data::Infinite::(Past, Future). The next version will of course just have debug
turned off again, along with a Solaris fix. After that, I never want to hear about this
problem again.
EOT

[V 1.05]
Date=2012-03-17T17:29:00
Comments=- CPAN testing showed more cases where the patches in V 1.02 had to be applied.

[V 1.04]
Date=2012-05-16T14:37:00
Comments=- Aggghhhh. Fix tests to match fix in V 1.03. Tests worked under Debian of course.

[V 1.03]
Date=2012-03-14T17:16:00
Comments= <<EOT
- Add complexity to the fix for problems to Data::Infinite::(Past, Future) for OSes:
o Win32::GetOSName = Win7
o Win32::GetOSName = WinXP/.Net
EOT

[V 1.02]
Date=2012-03-13T08:57:00
Comments= <<EOT
- Bump pre-reqs for DateTime and DateTime::Inifinite from V 0.70 to V 0.72, since these are the
latest (today).
- Fix sub _init_flags() for systems where DateTime::Infinite::Past is returned as '-1.#INF'
instead of '-inf'. For testing, this only affects the 2 tests in t/escape.t where we expect
'-inf' as the output for one_date.
For end users of course, the change in sub _init_flags() is what matters.
- Update the docs to explain that '-inf' is returned even when the system returns '-1.#INF'.
EOT

[V 1.01]
Date=2012-02-29T09:35:00
Comments= <<EOT
- No code changes.
- Update pre-req Hash::FieldHash from V 0.10 to V 0.12, in presumably hopeless attempt to
rectify a CPAN Tester report about failure under MS Windows.
See: http://www.cpantesters.org/cpan/report/9c177958-6ca0-1014-a634-88fc0063837e. The code
tests perfectly on my Debian stable system.
EOT

[V 1.00]
Date=2011-09-20T13:47:00
Comments= <<EOT
- Initial release. This is an updated version of DateTime::Format::Gedcom V 1.00.
This latter module is deprecated. Details in the FAQ.
- Changes since DateTime::Format::Gedcom:
o The hashref returned by the parse_*() methods includes 4 new keys:
one_default_day, one_default_month, two_default_day and two_default_month.
This allows the caller to determine whether or not the code inserted a day
and/or month into an incomplete date. Years are never inserted into dates.
This matches a feature available in Gedcom::Date, but with a completely
different implementation.
o There is a new parameter 'style' passable into new() and the parse_*() methods.
It takes the values 'american', 'english' and 'standard', to allow the code
to expect dates formatted in various ways. The parameter is not called
format because I have plans to use format as the name for a parameter which
will allow to user to specify the output format of the dates.
american => Expect 'month day year', as in From Jan 2 2011 BC to Mar 4 2011.
english => Expect 'day month year', as in From 1 Jan 2001 to 25 Dec 2002.
standard => Expect 'year month day', as in From 2011-01-02 to 2011-03-04.
See t/style.t for sample code.
o Gregorian is the only supported date escape. Every date escape triggers
processing using Gregorian month names and abbreviations.
o DateTime::Format::Natural is no longer used. Instead, the incoming date is
split on [ -\/] rather than just [ -], and this module tries to parse it.
o All commas are deleted from incoming dates.
o BC may be written as BCE.
o Some dates which are not ambiguous, e.g. 2011-01-01, were wrongly flagged
as ambiguous. Thanx to Eugene van der Pijll for alerting me to this bug.
EOT
