The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for Data-ModeMerge

0.29   2012-12-13 (SHARYANTO)

       Thank God the apocalypse did not happen, allowing me to do this release.

       - Fix cloning bug exposed by hash randomization of perl 5.17.6
         [RT#81807]. Turns out Data::Clone does not deep-copy objects by
         default. So now we copy configs manually.


0.28   2012-11-30 (SHARYANTO)

       - Replace Clone::Any with Data::Clone (Clone::Any fallbacks to Storable
         which doesnt support storing Regexp)

       - Add missing dependency to Test::Exception [RT#81544]


0.27   2011-02-24 (SHARYANTO)

       - regression: Clone needed as dependency


0.26   2011-02-23 (SHARYANTO)

       - switch from Mouse to Moo


0.25   2010-11-10 (SHARYANTO)

       - add use 5.010 instead of use feature (5.8.x doesn't have this yet)


0.24   2010-07-23 (SHARYANTO)

       - switch from Clone to Clone::Any (but still list Clone as dep)


0.23   2010-02-17 (SHARYANTO)

       - switch from Moose to Any::Moose (+Mouse as dependency)


0.22   2009-12-17 (SHARYANTO)

       - some work on doc
       - minor fixes


0.21   2009-12-15 (SHARYANTO)

       - replace Storable + Regexp::Copy with Clone


0.20   2009-12-15 (SHARYANTO)

       - use Regexp::Copy


0.19   2009-12-14 (SHARYANTO)

       - fix copy-paste bug


0.18   2009-12-12 (SHARYANTO)

       - bug fix: custom prefix_re got reset in hash merge

       - bug fix: restore_config() didn't recreate DM::Config object
         but hash instead


0.17   2009-12-12 (SHARYANTO)

       - INCOMPATIBLE BEHAVIOUR CHANGE: SUBTRACT merge on two hashes
         is now defined as a NORMAL merge, except that all keys on the
         right-side hash which do not have a merge prefix will be
         assumed to have a DELETE prefix. This means the SUBTRACT mode
         can now grok mode prefix and options key too.

       - INCOMPATIBLE BEHAVIOUR CHANGE: merging hash keys with DELETE
         mode now will make the key disappear even if there is no
         corresponding left or right side. merge({}, {"!a"=>1}) and
         merge({"!a"=>1}, {}) used to be {"!a"=>1} but now will be
         {}. I believe this is more intuitive/expected.


0.16   2009-12-11 (SHARYANTO)

       - some work on doc


0.15   2009-12-11 (SHARYANTO)

       - new config; premerge_pair_filter

       - NORMAL mode can handle CODE refs

       - can merge recursive/circular references (though not all possible cases)


0.14    2009-12-07 (SHARYANTO)

        - Minor fix to Makefile.PL

        - Minor fix to options key handling


0.13    2009-12-07 (SHARYANTO)

        This is a major refactoring of the module. The goal is to make
        the code more flexible (e.g. adding future modes, changing
        prefix for each mode, etc). Configuration is also
        significantly expanded.

        - rename dist: Data-PrefixMerge -> Data-ModeMerge (to reflect
          the fact that merging mode can be selected not only via a
          "prefix" but more generally by a regex test on key).

        - incompatible behaviour: all hash prefixes on the left-side
          and right-side hash will be removed recursively after merge,
          even if it is not a hash-hash merge, e.g. mode_merge({a=>1},
          {b=>{"+c"=>1}) used to become {a=>1, b=>{"+c"=>1}} but now
          it will become {a=>1, b=>{c=>1}}. this ensures that all
          prefixes are "cleaned" after merge.

        - incompatible behaviour: KEEP prefix (^) is now always sticky
          so it always protects future merges (equivalent to old
          config's preserve_keep_prefix). If you want KEEP prefix to
          be removed after merge, set config C<readd_prefix> to 0.

        - incompatible change: options key is now enabled by
          default, with "" (empty string) as the key.

        - incompatible change: configuration 'parse_hash_key_prefix'
          renamed to 'parse_prefix'.

        - removed: remove_keep_prefix(), replaced by the more generic
          remove_prefix().

        - configurable prefix for each merging mode.

        - new config: set_prefix allows you to change prefixes, even
          in the middle of recursive merge.

        - new config: allow_override & disallow_override.

        - new config: allow_create_array, allow_create_hash,
          allow_destroy_array, allow_destroy_hash.

        - new config: exclude_parse, exclude_parse_regex,
          include_parse, include_parse_regex.

        - new config: exclude_merge, exclude_merge_regex,
          include_merge, include_merge_regex.

        - new config: disable_modes. each merging mode can now be
          individually enabled/disabled through configuration.

        - options key now understands almost all configuration.


0.12    2009-11-25 (SHARYANTO)

        - new option: hash_options_key

        - fixed random ordering bug (closes #51799)


0.11    2009-11-23 (SHARYANTO)

        - add max_level parameter to remove_keep_prefixes()


0.10    2009-11-23 (SHARYANTO)

        - handle recursion in remove_keep_prefixes()


0.09    2009-11-18 (SHARYANTO)

        - fix bug in remove_keep_prefixes()


0.08    2009-11-18 (SHARYANTO)

        - new method: remove_keep_prefixes()


0.07    2009-11-18 (SHARYANTO)

        - minor fixes


0.06    2009-11-08 (SHARYANTO)

        - INCOMPATIBLE CHANGE: getting and setting config is now done via
          $merger->config->confname instead of $merger->config->{confname} to
          catch config name typos at compile time.


0.05    2009-06-22 (SHARYANTO)

        - yet another incompatible change: keep prefix now uses '^' instead of
          '!' on the left side. this allows keep mode on the right side. on a
          series of merge we can now introduce keep mode at one point (not just
          on the first hash) and then preserve that keep mode afterwards.


0.04    2009-06-17 (SHARYANTO)

        - support KEEP merge for hash & hash


0.03    2009-06-12 (SHARYANTO)

        - incompatible change: '*' prefix on the left now means normal merge
          mode (to protect hash keys having special characters). keep mode now
          uses '!' on the left side.

        - add config: preserve_prefix (default is 0)


0.02    2009-03-30 (SHARYANTO)

        Rename Data-RecMerge to Data-PrefixMerge


0.01    2009-03-29 (SHARYANTO)

        First release