0.033   2019-01-26 (PERLANCAR)

	- [Bugfix] date coercion rule float_epoch_always doesn't need to
	  preclude str_iso8601 because they won't be confused: str_iso8601
	  matches YYYY-MM-DD and not YYYYMMDD.

0.032   2019-01-21 (PERLANCAR)

        - Maintain a static list of default coercion modules instead of finding
          & loading all Data::Sah::Coerce::* modules on the system. The
          motivation for this change is performance, simplicity, as well as
          reduction of test warnings from CPAN Testers. Typically, a CPAN Tester
          would have tested an old version of a coercion rule distribution, say
          Data-Sah-Coerce-perl-date-str_alami and then later tests another
          module. Data::Sah::Coerce would then warn when it cannot load the old
          coercion rule module because the metadata version has been bumped.
          With this change, the list of default coercion rules is maintained in
          %Default_Rules in Data::Sah::Coerce instead of loading all coercion
          rule modules and trying to read its 'enable_by_default' meta property.

        - [Removed] Remove the ability to specify regexes in coerce_rules
          because it is never used in practice, so far. The use of regexes also
          requires us to find list of modules anyway.

        - [Incompatible change] Bump metadata version to 4, just to remove
          'enable_by_default' property. Data::Sah::Coerce still accepts old
          metadata version (3) but ignores the property.

0.031   2018-12-16 (PERLANCAR)

	- timeofday: Tweak str_hms regex: allow hh:mm in addition to hh:mm:ss
	  (e.g.: 11:00 instead of 11:00:00), allow h:m(:s)? in addition to
	  hh:mm(:ss)? (e.g.: 1:15 instead of 01:15).

0.030   2018-12-16 (PERLANCAR)

	- [Bugfix] Default coerce_to for timeofday in perl should be
	  str_hms, not float.

0.029   2018-12-16 (PERLANCAR)

	- Add standard coercion rules for timeofday.

0.028   2018-12-15 (PERLANCAR)

	- Add standard coercion rules for datenotime and datetime types.

0.027   2018-10-30 (PERLANCAR)

	- Add coercion rule: perl::date::float_epoch_always.

0.026   2018-06-03 (PERLANCAR)

	- [Bugfix] Multiple exclusion (e.g. ["!R1","!R2"]) did not work as

	- [Bugfix] Didn't sort rules by name.

0.025   2018-06-02 (PERLANCAR)


        - Bump coerce module's metadata version from 2 to 3. This is to allow
	  the coercer code to return error message (when coercion fails) in
	  addition to coerced data. The metadata property 'might_die' is now
	  replaced by 'might_fail'. The coercer code is not expected to die,
	  unless there's an extraordinary situation in which case the whole
	  coercer code or schema validator code which uses the coercer code will
	  die anyway. Instead, when 'might_fail' is set to true, the coercer
	  code is expected to return an array containing (error_message,
	  coerced_data) instead of just coerced_data. When coercion succeeds,
	  error_message should be set to undef and when coercion fails,
	  error_message is set to a string detailing why coercion fails, and
	  coerced_data is set to undef.

0.024   2018-03-27 (PERLANCAR)

	- Allow space in addition to 'T' as date and time separator, so we
	  can accept MySQL datetime format.

0.023   2017-07-10 (PERLANCAR)

	- No functional changes.

	- [doc] Forgot to replace mention of Log::Any with Log::ger in the

0.022   2017-07-10 (PERLANCAR)

	- No functional changes.

	- Replace Log::Any with Log::ger.

0.021   2017-03-14 (PERLANCAR)

	- Add coerce rules: {int,float}::str_percent.

0.020   2016-09-29 (PERLANCAR)

        - [build] Rebuild to remove dependencies on
          Data::Sah::Compiler::perl::TH::* (which was accidentally added by a
          dzil plugin). [RT#118115]

0.019   2016-09-26 (PERLANCAR)

	- Revert from using JSON::MaybeXS to JSON because JSON::MaybeXS is
          currently not depakable (hard dependency to XS module

0.018   2016-06-29 (PERLANCAR)

	- Include nanoseconds when coercing from DateTime::Duration object
	  to float(secs).

0.017   2016-06-13 (PERLANCAR)

	- Load required modules in the generated code, not in

0.016   2016-06-12 (PERLANCAR)

	- Tweak js-bool test to be more flexible of JSON decode result.

	- Adjust to IPC::System::Options 0.27+ (backtick() renamed to

	- [doc] Wording/typo/fmt.

0.015   2016-06-04 (PERLANCAR)

	- Use IPC::System::Options 0.25's backtick() to properly
	  shell-quote on win32.

	- [doc] Mention App::SahUtils & coerce-with-sah.

0.014   2016-05-27 (PERLANCAR)

	- Impart default coerce_to knowledge to each rule, for convenience.

0.013   2016-05-25 (PERLANCAR)

	- No functional changes.

	- [test] Forgot to add test_needs(Time::Duration::Parse::AsHash) to
	  some tests [CT].

0.012   2016-05-24 (PERLANCAR)

	- [Bugfix] Precludes should be checked to all rules, not just rules
	  after the precluding rule.

0.011   2016-05-23 (PERLANCAR)

        - [Incompatible change] Replace 'dont_coerce_from' and 'coerce_from'
          options to 'coerce_rules' which are more flexible.

        - Interpret rule metadata property 'precludes'.

        - [test] Forgot to add test_needs() to a subtest [CT].

0.010   2016-05-22 (PERLANCAR)

        - Introduce rule metadata: v & precludes.

        - [Incompatible change] Bump metadata version from 1 -> 2 to exclude old
          rule modules (i.e. date::int_epoch from 0.005, which generate
          CPANTesters failures).

        - [Internal] Refactor routine: get_coerce_rules() to avoid code
          duplication between Data::Sah::Coerce and Data::Sah::CoerceJS (and

0.009   2016-05-22 (PERLANCAR)

	- [Incompatible change] Replace return_type=bool+val with str+val.

0.008   2016-05-21 (PERLANCAR)

	- No functional changes.

	- [test] Skip js tests when node.js is not available [CT].

0.007   2016-05-20 (PERLANCAR)

        - Add option: return_type. The default is 'val' which is the same as
          before, but another return type 'bool+val' makes the coercer return a
          2-element array instead: the first element is a bool value indicating
          whether value has been coerced, and the second is the (possibly)
          coerced value. This is useful e.g. for testing/debugging.

0.006   2016-05-19 (PERLANCAR)


        - Rename js rules: date::int_epoch -> date::float_epoch. Rename perl
          rules: date::int_epoch -> date::float_epoch. This means when
          upgrading, you must first uninstall the old version to remove the old
          module names. Sorry for this.


        - Introduce ordering ('prio' key in rule metadata). prio is a number
          between 0-100 and the lower the number, the higher the priority is.
          Rules will be sorted using their priority.

        - Add coercion rules for type 'bool'.


        - Complete the rest of the test suite (js compiler, duration and bool

0.005   2016-05-18 (PERLANCAR)

	- No functional changes.

	- Add test suite (so far only for compiler=perl, type=date).

0.004   2016-05-18 (PERLANCAR)

	- js: Add coercion rule for duration from float/float-string.

0.003   2016-05-17 (PERLANCAR)

        - Add coercion rules for type 'duration'.

0.002   2016-05-17 (PERLANCAR)

        - Add js rules for type 'date'.

        - Introduce rule metadata 'might_die'.

        - Add module: Data::Sah::CoerceJS.

        - perl: Tweak error messages to make it more helpfule.

        - Documentationf fixes and addition.

0.001   2016-05-16 (PERLANCAR)

        - First release, incomplete (no JS implementation & test suite yet).