The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for Perl extension DateTime::Format::Natural.

0.78_01 Tue Sep  1 15:51:59 CEST 2009

 - Set units at once within _check_date() when Date::Calc is
   not available and add a test. [rt #49326 - Clayton L. Scott]

0.78 Fri Aug  7 11:32:31 CEST 2009

 - Merged development version to stable.

0.77_01 Thu Jun 25 16:00:27 CEST 2009

 - Add a handful of new formats. [rt #43468 - Clayton L. Scott]

 - Don't eventually try to guess the century.

 - Introduce and use a class for common test routines.

 - Test compile-time loading of Test.pm.

 - Rename the misnamed 'hour' metadata option to 'hours'.

 - _daytime() does not use the 'hours' metadata option when
   it is set and hence remove such existing entries.

 - For base methods which use the 'hours' metadata option,
   assume a zero when no value is provided.

0.77 Sun Jun 14 20:46:53 CEST 2009

 - Merged development version to stable.

0.76_04 Sat Jun 13 14:04:21 CEST 2009

 - Remove comment in code about the legacy debug option.

 - Use '\s+' instead of the ambiguous ' ' as token split pattern.

 - Add some whitespace to the regexp which recognizes additional
   tokens for formatted dates.

0.76_03 Wed Jun 10 11:50:42 CEST 2009

 - The current "now" can be overridden through the 'datetime'
   option. [rt #45127 - Giovanni Pensa]

 - parse_datetime_duration() handles durations where the second
   part is relative to the first one. [rt #45127 - Giovanni Pensa]

 - New supported relative duration: for <count> <unit>.
   [rt #45127 - Giovanni Pensa]

0.76_02 Sat Jun  6 13:24:58 CEST 2009

 - When using prefer_future, also allow for weekdays combined with
   the time of day to be parsed correctly. [rt #46689 - Jason May]

 - New supported format: <weekday> <time>. [rt #46689 - Jason May]

0.76_01 Mon Jun  1 21:34:06 CEST 2009

 - Change in default behavior: Use DateTime's truncate method
   to reset time components. Inspired by [rt #43468 - Clayton
   L. Scott] and suggestions from others.

0.76 Thu Apr  9 12:08:32 CEST 2009

 - Merged development version to stable.

0.75_05 Mon Apr  6 12:42:26 CEST 2009

 - New supported format: final <weekday> in <month>.
   [rt #44810 - Christian Brink]

 - Wrap Days_in_Month() in Compat.pm.

0.75_04 Fri Apr  3 15:13:36 CEST 2009

 - New supported formats: some suggested by [rt #44067 - Michael
   Reddick], while others have been independently added.

 - Fix a regression [rt #44691 - Jason May].

 - Shift common conversion logic within base calculation methods
   to the grammar class.

 - Introduce a helper class for handling actions related to
   metadata flags and to serve as container for setter/checker
   methods.

 - Wrap Decode_Month() in Compat.pm.

 - Test both implementations within each method in Compat.pm.

 - Preserve order of tests.

 - Add a test-file for regressions.

 - Remove the obsoleted internal use of a total-modified counter.

0.75_03 Wed Mar  4 13:39:08 CET 2009

 - Enhance the extended checks mechanism further to have it set 
   an error message when a check fails.

 - Run tests without sorting the input strings first.

 - Test compile-time loading of Compat.pm.  

0.75_02 Thu Feb 26 11:01:11 CET 2009

 - Date::Calc is no longer a prerequisite; use it when available 
   for calculations, otherwise fall back to using DateTime.
   [rt #43521 - Jesse Vincent <jesse@bestpractical.com>]

0.75_01 Sun Feb 22 12:09:32 CET 2009

 - When prefer_future is set: Advance the day if the time
   specified is noticeable in the past. [rt #43417 - Jason May]

 - New supported format: <month> <monthday> <year>.
   [rt #43467 - Clayton L. Scott <clscott@cpan.org>]  

0.75 Thu Feb 19 16:50:19 CET 2009
 
 - Merged development version to stable.

0.74_04 Son Feb 15 20:59:28 CET 2009

 - Refrain from adding leading zeros to unit values via
   sprintf() when constructing the final DateTime object.

 - Do not import Date_to_Days(), it's no longer required.

0.74_03 Fri Feb 13 13:15:11 CET 2009

 - Guard against invalid expressions with a 's' suffix,
   but no multiple unit count.  

 - Work around the segmentation fault taking place in 0.74_02
   on perl 5.8.9 and 5.10.0. 

0.74_02 Sun Feb  8 11:47:50 CET 2009

 - New supported format: <count> <weekday>(s) from now.
   [rt #43088 - Anirvan Chatterjee]

 - Add a new field to the language grammar entries to handle
   extended checks of captured regex data.

0.74_01 Thu Jan  8 16:06:17 CET 2009

 - When a four digit year is found, also allow for mm/dd/yyyy
   kind of formats. [Elliot Shank <perl@galumph.com>]

0.74 Sat Dec 20 15:06:50 CET 2008

 - Merged development version to stable.

0.73_04 Sun Nov 30 12:27:26 CET 2008

 - Be more exact with english time matching regular expressions,
   which fixes [rt #41266 - Alex Bowley] partly.

 - The date and time validation methods do now honor all their
   arguments; this reduces the amount of false errors.

 - Wrap the code calling Nth_Weekday_of_Month_Year() in eval
   blocks to catch errors and add some code to act upon the results.

 - Do not call the setter method multiple times if the values can
   be set at once.

0.73_03 Thu Nov 13 21:20:53 CET 2008

 - Move some duplicated logic to helper methods.

 - Do not save intermediate data when generating the trace output.

 - Use the proper data structure name in parse_datetime_duration().

0.73_02 Sun Nov  2 21:40:31 CET 2008

 - The grammar parser now, for each run, only iterates through
   entries with an according count of fields.

0.73_01 Sat Oct 18 22:21:56 CEST 2008

 - Corrected a few typos in the main documentation and also 
   reworded some bits.

0.73 Thu Sep  4 19:53:44 CEST 2008

 - Fixed the 'prefer_future' parameter validation error by
   extending its type definition.

 - Merged development version to stable.

0.72_02 Thu Sep  4 11:06:36 CEST 2008

 - Use the "boolean" pragma for true/false values.

0.72_01 Sun Aug 31 12:33:53 CEST 2008

 - Adjusted the dispatch entries for exact non-formatted dates
   and introduced an according method to avoid false errors.
   [rt #38857 - Ankur Gupta <ankur655@gmail.com>]

 - Call DateTime's set method for exact formatted dates once
   instead of setting each unit separately.

 - Changed the parser to handle internal value positions (i.e.,
   data related to tokens) with more respect when encountering
   lists with a sequence that differs from a truly ascending one.

0.72 Sat Aug 16 13:39:27 CEST 2008

 - When referring within classes to themselves, use the proper
   term "class" instead of "module".

 - Merged development version to stable.

0.71_04 Thu Aug  7 11:28:36 CEST 2008

 - Call validation_options() when DateTime::Format::Natural
   gets loaded (instead of relying on it to be called from
   within a method).

0.71_03 Sun Aug  3 11:06:09 CEST 2008

 - Declared some more expected types when validating arguments
   with Params::Validate.

0.71_02 Fri Aug  1 13:54:02 CEST 2008

 - Moved some duplicated code fragments within the main base class
   to separate methods.

0.71_01 Wed Jul 30 22:15:49 CEST 2008

 - Added time_zone parameter support to 'dateparse' and a shortcut
   to leave it quickly.

0.71 Thu Jun 12 11:17:22 CEST 2008

 - When processing "date abbreviations" call Date::Calc's check_date()
   instead of calling _valid_date() thrice, which could cause bogus
   error messages. [Pat Kale <kale1@llnl.gov>]

0.70 Mon Apr  7 20:29:39 CEST 2008

 - Fixed 'dateparse' failures which were introduced along with
   Params::Validate.

 - Added missing trace calls to _day_today(), _day_yesterday()
   and _day_tomorrow().

0.69 Sat Mar 15 13:44:03 CET 2008

 - Validation of arguments is now handled by Params::Validate.

0.68_01 Thu Mar 13 22:13:26 CET 2008

 - Undo for trailing newlines to be printed when initially
   checking the arguments for validity and some invalid ones are
   encountered. Furthermore, add quoting to the error message.

0.68 Sun Feb 17 14:19:07 CET 2008

 - Added 'prefer_future' test-file.

 - Added Test::MockTime to the dependency list in Build.PL.

 - Restructured documentation.

0.67 Fri Feb  8 01:04:38 CET 2008

 - Extended parser to accept a formatted date and time string.
   [suggested by Shawn M. Moore <sartak@gmail.com>]

0.66 Tue Jan 15 12:04:06 CET 2008

 - Merged development version to stable.

0.65_01 Tue Jan  8 14:13:18 CET 2008

 - Convey less filename information for all test-files (removed
   'en' suffixes), because they needlessly clutter the test output.
   Considering that the grammar is pluggable, we could still move language
   specific tests into subdirs, once multiple language grammars should be
   implemented.

0.65 Fri Dec 28 18:49:40 CET 2007

 - Localized $_ while constructing the format separator.
   [rt #31968 - Shawn M. Moore <sartak@gmail.com>]

0.64 Mon Dec 24 16:19:37 CET 2007

 - Improved the options parsing within scripts/dateparse (by
   introducing a subroutine to set default values independently).

0.63 Thu Dec 20 15:50:07 CET 2007

 - Merged development version to stable.

 - Renamed time_zone test-file (added 'en' suffix).

0.62_03 Thu Dec 13 20:53:11 CET 2007

 - Replaced remaining tabs within the entire source with
   regular spaces (4).

0.62_02 Thu Dec 13 12:12:06 CET 2007

 - Localized $1 within the grammar parser (i.e., the method _process())
   before examining whether a regular expression succeeded and if it did,
   check whether it did capture some content and save it on the "regex-stack".

 - Enhanced the diagnostic printed when faulty grammar types are encountered.

 - Changed a type definition from 'SCALAR' to 'REGEXP' within EN.pm.

0.62_01 Tue Dec 11 13:28:31 CET 2007

 - No "functional" changes, merely "cosmetic" ones.

0.62 Mon Dec  3 21:06:05 CET 2007

 - Added support for abbreviated week-/monthnames when 'prefer_future'
   option is enabled. [rt #31254 - Shawn M. Moore <sartak@gmail.com>]

 - Deprecated export of subs within Lang/Base.pm to Lang/EN.pm
   (the ISA relationship is sufficient).

0.61 Sat Nov 24 10:32:31 CET 2007

 - Improved code efficiency a bit & removed some dead code.

0.60 Tue Nov 20 16:59:24 CET 2007

 - Implemented better timezone handling and added according tests.
   [rt #30765 - Shawn M. Moore <sartak@gmail.com>]

0.59 Thu Nov 15 23:54:25 CET 2007

 - Made the 'prefer_future' parameter a bit more context-sensitive
   with regard to incremental of the current year.
   [rt #30763 - Shawn M. Moore <sartak@gmail.com>]

 - Updated the "SEE ALSO" sections within the documentation
   to refer back to the main package.

0.58 Thu Nov  1 19:54:41 CET 2007

 - Deprecated broken 'debug' parameter to parse_datetime*().

 - Fixed some parameters within scripts/dateparse which were
   erroneously declarated.

0.57 Thu Oct 25 21:21:56 CEST 2007

 - Added tests for durations (i.e., the method parse_datetime_duration()).

0.56 Sat Oct 20 20:02:24 CEST 2007

 - Extended grammar to reflect some suggestions.
   [rt #30147 - Jason May <jason.a.may@gmail.com>]

0.55 Wed Oct 17 15:24:25 CEST 2007

 - Changed behavior of the 'prefer_future' option concerning weekdays.
   [rt #29068 - Jesse Vincent <jesse@bestpractical.com>]

0.54 Fri Oct  5 23:30:28 CEST 2007

 - Added Term::ReadLine support to 'dateparse'.

 - Updated t/* to ensure that all results are being marked successful.

 - Fixed formatted dates, which never succeeded previously.

0.53 Sun Sep 30 13:55:11 CEST 2007

 - Added grammar definitions & according tests for "[day] at [daytime]".

 - Internally documented the grammar layout.

 - Replaced %s with %d for sprintf() format-strings.
   [Jonny Schulz <http://www.bloonix.de>]

0.52 Sat Sep 29 17:02:40 CEST 2007

 - Removed all mentions of german language support within the
   documentation and the code.

 - Extended documentation to explain the grammar a bit.

0.51 Thu Sep 27 17:12:49 CEST 2007

 - Removed no longer necessary 'use_ok()' test for the german language
   metadata. [rt #29651 - Andreas J. König <andreas.koenig@anima.de>]

0.50 Thu Sep 27 00:39:08 CEST 2007

 - Major redo of flexible language metadata handling.

0.40 Sun Sep 23 17:34:48 CEST 2007

 - Empty the marked tokens list on each instance of parse_datetime()/
   parse_datetime_duration().

0.39 Sun Sep  9 00:41:30 CEST 2007

 - Improved handling of dates when no format-string was provided
   or was unsuitable. [rt #29227 - Shawn M. Moore <sartak@gmail.com>]

 - Implemented mechanisms to mark tokens when processed and added
   an according getter method for multiple tokens.

0.38_01 Tue Sep  4 18:10:48 CEST 2007

 - Undone use'ing constant with a hashref provided (breaks on
   older versions of Perl [testers #598724 - David Cantrell <david@cantrell.co.uk>]).

0.38 Wed Aug 29 22:07:00 CEST 2007

 - Redone code formatting.

0.37 Sun Aug 19 11:33:05 CEST 2007

 - Fixed the parsing of unambigious dates such as "next [month]" &
   "last [month]" while the 'prefer_future' option is enabled.

 - Explicitly call methods within the superclass with 'SUPER::'.

 - Documented the 'prefer_future' switch in scripts/dateparse.

0.36 Thu Jun  7 13:42:35 CEST 2007

 - Fixed version numbers which were treated as floating point numbers,
   not as v-string. [rt #27350 - Andres J. König <andreas.koenig@anima.de>]

 - Fixed _set_datetime() which failed whenever a 31st day didn't exist
   in the current month. [rt #27360 - Chia-liang Kao <clkao@clkao.org>]

 - Reversed the order of the day/month/year setter calls within
   parse_datetime(). [mike <pulsation@gmail.com>]

 - Added a 'prefer_future' option to turn ambigious weekdays/months
   to their futuristic equivalents - implemented by counting how often
   an unit was being modified by the appropriate setter call within the
   Base class. [Shawn M. Moore <sartak@gmail.com>]

 - Extended the test-suite to include more exhaustive tests and accordingly
   updated the EXAMPLES in the language metadata classes.

 - Introduced the public method trace() which will show which methods were
   called within the Base class and how often certain units were modified
   by according Datetime setter calls.

0.35 Wed May 23 21:00:39 CEST 2007

 - Implemented next [monthname] & last [monthname] parsing and
   added according tests. [Shawn M. Moore <sartak@gmail.com>]

 - Added tests for the constant daytime values.

 - Albeit it's unlikely that someone will ever subclass Lang/Base.pm,
   a bug in the statement involving bless() within the constructor has
   been fixed (ref($class) 'check' must come first, otherwise subclassing
   is impossible).

 - scripts/dateparse is now being installed.

0.34 Sun May 20 17:09:09 CEST 2007

 - Hopefully fixed "Type of arg 1 to List::MoreUtils::any must be block
   or sub {} (not list)" errors.

 - Added _init_check() which is being called by _init() to validate
   the options passed to the constructor new().

0.33 Sat May 19 03:08:29 CEST 2007

 - Got mostly rid of the "no warnings 'uninitialized'" statements and
   ensured that no undefined values will be encountered by introducing
   an according token accessor which will return either a reference to
   an existing token or to a defined string (in case a token does not
   yield any defined value).

 - Disallowed 'am/pm' for german language metadata since they're
   not known to a native german speaker assuming it is referred
   to the german language itself. [Urs Stotz <stotz@gmx.ch]

 - Introduced two methods, success() and error(). Former indicates
   whether the parsing of a date/time string succeeded or not; latter
   provides the error string if former one should fail. Furthermore,
   the entire system is now reliant upon both of them and doesn't
   croak any longer if parsing should fail.

 - Added according getter/setter/unsetter accessors for the internal
   error and failure attributes.

0.32 Thu May 10 23:52:00 CEST 2007

 - Replaced some conditional variables with early return statements.

 - Introcuded Date::Calc's check_date() and check_time() to assure
   for integrity of date/time values submitted to according setter
   methods.

 - Wrapped check_date() and check_time() in subs which croak upon
   error and supply the type of value and the actual value in the
   message delivered to the caller, otherwise return true.

 - Separated datetime_parse_duration() logic from datetime_parse()
   and added according documentation [Cory Watson <jheephat@gmail.com>]

0.31 Sun May  6 02:57:13 CEST 2007

 - Replaced undef on hash elements within Natural/Base.pm with delete.

 - Changed 'time_zone' parameter's value in calls to DateTime->now()
   with 'floating' instead of 'local'. This should function as fix
   to failures reported on MSWin & Cygwin platforms according to
   [Dave Rolsky <urth@autarch.org>].

 - Due to an unlocalized signal warning handler, uninitialized
   warnings in code which either required/use'd DateTime::Format::Natural
   were being supressed. The handler has been commented out (and left in
   for debugging/development purpose) and replaced by an according
   'no warnings' statements in both Natural.pm & Natural/Base.pm.

0.30 Sun Apr 29 02:33:16 CEST 2007

 - Fixed some spurious date results assumptions in t/01-parse_en.t
   and t/02-parse_de.t which were caused by a bug.

 - Extended documentation to include options pertaining to method
   calls within the documentation in listed form.

 - Added functionality to change the default values for specific
   daytimes. Furthermore, according testcases have been added.

0.29 Mon Apr 16 22:00:27 CEST 2007

 - Support for parsing seconds and minutes in ago stanzas
   [Tuomas Jormola <tj@solitudo.net>]

 - Added according testcases to the testsuite for parsing
   seconds and minutes in ago stanzas.

 - Modified scripts/dateparse.pl to return a absolute time
   with precision in seconds.

0.28 Wed Apr 11 01:44:49 CEST 2007

 - Moved timespan separator definition to language metadata
   base classes.

 - scripts/dateparse.pl language chosen always defaulted
   to 'en' irrespective whether another one has been chosen
   or not. Changed it to only fallback to the default language
   ('en') if no other one has been provided.

 - Added t/03-parse_format.t to the testsuite which tests datestrings
   with various differing format strings.
 
0.27 Tue Apr 10 22:19:15 CEST 2007

 - Mentioning Tatsuhiko Miyagawa as the inspiration source in
   the documentation's Credits section.

 - Implemented a simple timespan calculation, provided the natural
   dates are separated by the literal token 'to' (case-insensitive).
   [Mark Stosberg <mark@summersault.com>]

0.26 Wed Mar 14 13:15:07 CET 2007

 - The constructor accepts now an optional 'format' parameter specifying
   in which format numeric dates should be parsed (either / or - may be
   used to separate the units). [mike <pulsation@gmail.com>]

0.25 Sun Mar 11 23:02:45 CET 2007

 - Separated the logic within parse_datetime() to _process()
   and according internal subroutines.

 - Commented the majority of functions within Base.pm.

 - Introduced List::MoreUtils' any() & none() functions;
   deprecated use of 'no warnings' statement which need
   arose by accessing indexes of @{$self->{tokens}} where
   no members were present.

 - Created TODO file with pending items.

0.24 Wed Jan 17 22:51:51 CET 2007

 - Introduced a warning handler to silence the warnings about
   undefined values when pattern matching, subtracting and
   performing string comparisons in Natural/Base.pm.

 - Merged the "frontend" scripts to a single one taking
   optionally a language argument indicating the country
   code among other arguments.

 - Made 01-parse_en.t's & 02-parse_de.t's code more readable
   by adding some more separating lines.

 - Moved 'our' declarations in DE.pm & EN.pm towards the top.

0.23 Tue Jan 16 19:51:50 CET 2007

 - The language metadata classes have an AUTOLOAD handler & __new
   constructor automatically exported to their namespaces. Because
   some local fiddling with AUTOLOAD and dynamic variable lookup is
   done, a bunch of symbolic references are created on-the-fly.

0.22 Tue Jan 16 02:58:15 CET 2007

 - Previously four digits were occasionally interpreted as year
   and as well as time based upon context. Disambiguated usage
   as year (applies to all Lang:: classes) and fixed all test
   cases were bogus return values from parse_datetime() have
   been expected in order to have no tests fail.

 - Bound the temporary disablement of strictness for references
   to a tighter scope (applies to all Lang:: classes).

0.21 Tue Nov 28 09:31:20 CET 2006

 - Corrected the classes names provided to use_ok() in 00-load.t.
   [SEKIMURA sekimura@gmail.com]

0.20 Tue Nov 28 01:44:46 CET 2006

 - Optimised the regular expressions used in the AUTOLOAD routine
   in the language classes.

0.19 Mon Nov 27 20:06:17 CET 2006

 - Added to DE.pm & EN.pm an AUTOLOAD handler for each of them.
   The subroutine called prefixed with two underscores will be
   translated to an according variable name without underscores.
   The parameter to the subroutine will function as variable
   lookup key.

0.18 Sun Nov 26 17:35:17 CET 2006

 - Fixed all occurences of the global weekday hash by adding the
   missing key "{data}" to the variable lookup.

0.17 Sun Nov 26 16:50:14 CET 2006

 - Encapsulated the metadata within the language packages in an
   object which class gets subclassed from Natural.pm.
   [Tatsuhiko Miyagawa <miyagawa@gmail.com>]

0.16 Sat Nov 25 18:09:48 CET 2006

 - Added missing '1;' to the documentation of Authoring.pod.

 - Changed strings in Authoring.pod to be italic.

 - The testsuite now contains a german aquivalent of the english
   parsing test.

0.15 Sam Nov 25 16:49:22 CET 2006

 - Added DateTime::Format::Natural::Lang::Authoring documentation.

0.14 Sat Nov 25 14:34:33 CET 2006

 - Corrected broken package definition.

0.13 Sat Nov 25 04:14:54 CET 2006

 - Separated data from logic by keeping all regular expressions in
   separate packages.

 - Language support for german has been included.

0.12 Fri Nov 24 20:36:37 CET 2006

 - Added some basic tests to the testsuite which exercice
   converting natural format strings to an according datetime object.

 - Enhanced the collection of valid strings that are translated.

0.11 Fri Nov 24 02:15:30 CET 2006

 - Refactored the code where duplicated chunks were available.

 - Evaluated whether the current listed expressions pass the parsing.

0.10 Thu Nov 23 01:14:44 CET 2006

 - Substituted additions/subtractions where possible with the
   appropriate DateTime method calls.

 - An Exception is thrown if no valid input has been given.
   [Tatsuhiko Miyagawa <miyagawa@gmail.com>]

0.09 Sun Nov 19 14:38:24 CET 2006

 - Date strings with slashes are now being split and assigned
   to the appropriate variables.

 - Moved the initialization of object data into a sub.
   Same procedure for the code chunk returning a datetime object.

0.08 Sun Nov 19 12:30:24 CET 2006

 - Code is now object-oriented.

0.07 Sat Oct 28 17:16:53 CEST 2006

 - Replaced all tabs in EN.pm with regular spaces (4).

0.06 Wed Oct 25 20:24:38 CEST 2006

 - Substituted exporting functions with an object-oriented constructor.
   parse_datetime() is now called as a method.
   [Dave Rolsky <urth@autarch.org>]

 - parse_datetime() takes either a datestring or an options hash.
   [Dave Rolsky <urth@autarch.org>]

0.05 Wed Oct 25 11:27:26 CEST 2006

 - Moved from namespace DateTime::Natural::Parse to DateTime::From::Natural::EN
   [Dave Rolsky <urth@autarch.org>]

 - Renamed natural_parse() to parse_datestring().

0.04 Wed Oct 25 00:17:01 CEST 2006

 - Updated the code to process some "complex" input.

 - Actualized the documentation accordingly.

0.03 Tue Oct 24 01:25:03 CEST 2006

 - Appended the i(ncasesensitive) Modifier to a few regular expressions.

 - Fixed the broken newlines for the example documentation.

0.02 Mon Oct 23 23:22:41 CEST 2006

 - DateTime has been added to the dependencies list.

 - natural_parse() returns a DateTime object [Clayton L. Scott <clscott@cpan.org>]

 - Extended documentation to include some example human readable time strings.

0.01 Sun Oct 22 22:15:54 CEST 2006

 - Initial version.