Revision history for Catmandu

1.2021  2023-11-06 10:41:11 CET
  - #397: Support empty paths
  - Updating documentation about CSV, TSV exports

1.2020  2023-02-08 16:29:37 CET
  - Reordering documentation focussing on command line functionality
  - Adding Catmandu::PerAPI documentation
  - Updating Catmandu::Introduction
  - Supporting fix on an Catmandu::Iterable (obs nichtich)

1.2019  2022-03-21 16:21:54 CET
  - wrap ->isa in eval
  - remove release tests from github actions matrix

1.2018  2022-03-09 16:26:23 CET
  - bump required version of Parser::MGC

1.2017  2022-03-09 15:59:27 CET
  - remove weird io test

1.2016  2021-09-17 09:07:55 CEST
  - new mapping fix
  - bump minimum required version of perl to 5.14, some dependencies already
    require this

1.2015  2021-01-22 16:23:42 CET
  - fix applying Readonly to bags that are not Droppable

1.2014  2021-01-15 15:29:19 CET
  - Path::Simple value argument is never stringified

1.2013  2020-07-09 09:47:03 CEST
  - rewritten Exporter::Count uses optimized count when available

1.2012  2020-05-25 14:14:08 CEST
  - support quote_space option in CSV exporter

1.2011  2019-12-20 14:08:54 CET
  - give commands access to the logger

1.2010  2019-11-26 12:20:03 CET
  - new Iterable every method
  - updated Iterable, Fix pod

1.2009  2019-11-04 16:03:36 CET
  - new is_float utility function
  - fix some bugs in emitting of strings that look like numbers

1.2008  2019-10-23 15:14:27 CEST
  - new disassoc fix
  - add missing dependency

1.2007  2019-09-25 15:48:32 CEST
  - Searchable stores get a new maximum_offset option to avoid deep paging if
    needed

1.2006  2019-09-19 17:38:31 CEST
  - add missing dependencies

1.2005  2019-09-19 11:04:58 CEST
  - switch to UUID::Tiny

1.2004  2019-08-28 14:00:59 CEST
  - new Flushable role for bags

1.2003  2019-08-19 13:47:43 CEST
  - switch to Data::UUID::MT to avoid file related problems (see
    https://github.com/rjbs/Data-UUID/issues/5 and
    https://github.com/rjbs/Data-UUID/issues/33). We now use the UUID v4 method
    instead of v3.

1.2002  2019-05-27 16:01:17 CEST
  - a Catmandu::Error can now build it's own message

1.2001  2019-05-22 15:32:43 CEST
  - new IterableOnce role for iterators that can only run once like importers
  - fix replacing the root object itself in the new builder versions of
    copy_field and move_field

1.20  2019-05-21 10:02:02 CEST
  - Fix::Builder and Path make writing fixes much easier
  - new eval fix
  - new cp,mv and rm shortcuts for copy_field, move_field and remove_field
  - CSV exporter accepts escaped whitespace literals as sep_char just like the
    TSV exporter
  - fix --transaction option in copy and import commands
  - bump required version of List::MoreUtils

1.10_03  2019-05-17 10:44:49 CEST
  - new cp,mv and rm shortcuts for copy_field, move_field and remove_field
  - CSV exporter accepts escaped whitespace literals as sep_char just like the
    TSV exporter
  - fix --transaction option in copy and import commands
  - fix bug in Emit

1.10_02  2018-11-09 09:09:02 CET
  - bump required version of List::MoreUtils

1.10_01  2018-11-08 15:38:48 CET
  - Fix::Builder and Path make writing fixes much easier
  - new eval fix

1.10  2018-08-30 10:38:16 CEST
  - split off Catmandu::FileStore
  - bring Dockerfile back to this repository
  - include fix now accepts glob patterns
  - the export and convert commands get a new --id-file option

1.09  2018-03-06 11:24:35 CET
  - add validator method to Catmandu
  - new Mock validator
  - new validate fix and valid fix condition
  - JSON importer byte buffer size is now configurable to optimize performance
  - command line help improvements

1.08  2018-02-02 14:48:51 CET
  - fix language gets support for namespaces
  - fix language gets support lexical blocks
  - filter fix gets a new invert option
  - Iterable map method can now return multiple values (or none)
  - cleanup cli error handling code
  - file store tests are now threadsafe

1.07  2017-11-09 10:03:51 CET
  - new Readonly plugin
  - new DKVP importer for delimited key-value pairs
  - new Store bags method
  - new Store default_options for bag

1.0606  2017-09-26 10:42:35 CEST
  - fix bug with numeric strings in fix preprocessing

1.0605  2017-09-21 10:58:21 CEST
  - fix touch command pod

1.0604  2017-09-21 10:35:26 CEST
  - new touch command and bag touch method
  - new Util::now function
  - remove dependency on LWP::UserAgent::Determined
  - add a basic vim syntax definiton for fix files
  - add, copy, join, move, remove, set, sort and split fix shortcuts

1.0603  2017-09-04 10:16:55 CEST
  - bags can have default plugins applied
  - add hard dependency on List::MoreUtils::XS

1.0602  2017-06-23 10:16:48 CEST
  - fix filestore permission bug on Windows

1.0601  2017-06-21 14:49:30 CEST
  - bugfix release

1.06  2017-06-20 15:48:00 CEST
  - new FileStores for handling binary data
  - new iterator bind
  - better bind performance
  - more pod

1.0507  2017-05-19 17:32:57 CEST
  - correctly handle escapes in fix langauge quoted strings

1.0506  2017-05-12 16:36:03 CEST
  - Catmandu gets new define_importer, define_exporter, define_store and
    define_fixer convenience methods
  - Versioning plugin get_version can now also return the current version

1.0505  2017-05-12 12:52:18 CEST
  - new compact fix
  - bag gets a convenience exists method
  - Versioning plugin get_version($id, 1) behaves correctly if no versions have
    been created yet

1.0504  2017-04-21 12:22:59 CEST
  - new string fix
  - new int fix
  - Datestamps plugin field names are now configurable

1.0503  2017-04-06 15:20:58 CEST
  - the store wide id_key is also aliased as id_field

1.0502  2017-04-06 15:15:57 CEST
  - id_key is now also a store wide option

1.0501  2017-04-06 14:34:00 CEST
  - id_key and version_key aliased as id_field and version_field

1.05  2017-03-31 13:51:48 CEST
  - Windows build was broken since 1.0304, should now build again
  - fix language has new elsif statement
  - fix language has new boolean keywords
  - fix language do statement aliased as bind
  - config is now reloadable
  - Plugin::Datestamps datetime format is now configurable
  - pod corrections

1.04  2017-03-23 13:56:32 CET
  - new error fix
  - new rename fix
  - new search_in_store fix
  - new import_from_string fix
  - new export_to_string fix
  - new valid fix condition ties Validator to fixes
  - new CQLSearchable role
  - new Iterable run method
  - relevant commands get new transaction, sort and sru-sortkeys options
  - remove deprecated data command
  - improved info command
  - inline use of fixes is now cached by default and much faster
  - solved memory leak in Fix::Base
  - the perl code generated by Fix is now a reusable standalone sub
  - more pod

1.0306  2017-02-09 15:22:04 CET
  - config command has new fix and preprocess options
  - memoize loggers

1.0305  2017-01-26 09:32:09 CET
  - fix command line repeated argument bug

1.0304  2016-11-23 11:21:32 CET
  - new index fix
  - fix command line argument utf8 bug

1.0303  2016-10-18 14:45:49 CEST
  - convert and export commands get a new id option

1.0302  2016-10-04 10:43:51 CEST
  - Hash store is now transactional for testing purposes

1.0301  2016-09-22 09:33:53 CEST
  - fix hashmap bind tests

1.03  2016-09-21 10:32:51 CEST
  - specialized id generators for bags
  - rewrite of the fix parser using Parser::MGC
  - Catmandu->fixer($fixer) echoes the $fixer back as expected

1.0201_02  2016-05-27 09:46:53 CEST
  - rewrite of the fix parser using Parser::MGC
  - Catmandu->fixer($fixer) echoes the $fixer back as expected

1.0201_01  2016-05-26 14:45:25 CEST
  - rewrite of the fix parser using Parser::MGC
  - Catmandu->fixer($fixer) echoes the $fixer back as expected

1.0201  2016-05-23 14:25:25 CEST
  - faster, simpler vacuum fix
  - update required version of Marpa

1.02  2016-05-20 11:33:38 CEST
  - all fixes and fix conditions can be used inline now
  - more fast type tests
  - fix type check bug

1.01  2016-05-10 13:03:58 CEST
  - configurable prefixes for internal store data keys (_id, _version, ...)
  - fix file or inline fix preprocessing with moustache templates
  - faster type tests with Ref::Util
  - is_true and is_false fix conditions have a new strict mode
  - new is_array, is_object, is_string, is_number and is_null fix conditions
  - new Importer http_timing and http_retry options
  - better info command
  - switch to Cpanel::JSON::XS
  - consistent interpretation of backslash in fixes with regexes
  - fix bugs relating to perltidy
  - more and better pod
  - more tests

1.0002_03  2016-04-28 10:00:55 CEST
  - fix file or inline fix preprocessing with moustache templates
  - faster type tests with Ref::Util
  - is_true and is_false fix conditions have a new strict mode
  - new is_array, is_object, is_string, is_number and is_null fix conditions
  - new Importer http_timing and http_retry options
  - better info command
  - switch to Cpanel::JSON::XS
  - consistent interpretation of backslash in fixes with regexes
  - fix bugs relating to perltidy
  - more and better pod
  - more tests

1.0002_02  2016-04-22 09:38:41 CEST
  - is_true and is_false fix conditions have a new strict mode
  - new is_array, is_object, is_string, is_number and is_null fix conditions
  - new Importer http_timing and http_retry options
  - better info command
  - switch to Cpanel::JSON::XS
  - consistent interpretation of backslash in fixes with regexes
  - fix bugs relating to perltidy
  - more and better pod
  - more tests

1.0002_01  2016-04-14 14:19:42 CEST
  - better info command
  - switch to Cpanel::JSON::XS
  - consistent interpretation of backslash in fixes with regexes
  - fix bugs relating to perltidy
  - more and better pod
  - more tests

1.0002  2016-04-01 13:36:28 CEST
  - fix debug mode dying if Perl::Tidy is missing
  - error messages now default to empty string
  - improved Importer::TSV and Exporter::TSV

1.0001  2016-03-03 16:28:16 CET
  - fix some pod typos
  - fix handling multivalued response http headers in Importer

1.00  2016-02-22 16:16:07 CET
  - fix os-dependent paths in tests
  - throw an error if an Importer file path doesn't exist
  - bump required version of URI::Template because we need variable names
    returned in order
  - pod fixes
  - lots of pod
  - lots of tests
  - new Exporter::Mock
  - new Importer::TSV and Exporter::TSV
  - new 'uri_decode' and 'uri_encode' fixes
  - new Droppable and Transactional roles for stores
  - new 'drop' command
  - switch to MooX::Role::Logger for logging
  - smarter CSV::Importer
  - new specialized TabularExporter base role
  - fix bug in 'array_to_sentence' helper function
  - fix $append bug in 'data_at' helper function
  - the 'data' command is deprecated. All it's functionality is now provided by
    the 'import', 'export', 'convert' and 'copy' commands
  - rename the 'move' command to the more accurate 'copy'
  - line delimited JSON is no longer the default for Importer::JSON and
    Exporter:JSON

1.00_03  2016-02-10 14:34:07 CET
  - fix os-dependent paths in tests
  - throw an error if an Importer file path doesn't exist

1.00_02  2016-02-09 10:17:58 CET
  - bump required version of URI::Template because we need variable names
    returned in order
  - pod fixes

1.00_01  2016-02-04 16:30:11 CET
  - lots of pod
  - lots of tests
  - new Exporter::Mock
  - new Importer::TSV and Exporter::TSV
  - new 'uri_decode' and 'uri_encode' fixes
  - new Droppable and Transactional roles for stores
  - new 'drop' command
  - switch to MooX::Role::Logger for logging
  - smarter CSV::Importer
  - new specialized TabularExporter base role
  - fix bug in 'array_to_sentence' helper function
  - fix $append bug in 'data_at' helper function
  - the 'data' command is deprecated. All it's functionality is now provided by
    the 'import', 'export', 'convert' and 'copy' commands
  - rename the 'move' command to the more accurate 'copy'
  - line delimited JSON is no longer the default for Importer::JSON and
    Exporter:JSON

0.9505  2015-12-02 10:36:58 CET
  - expand, collapse and vacuum fixes handle large arrays
  - more pod

0.9504  2015-11-03 11:30:48 CET
  - fix dereferencing bug in Util::is_string
  - move Dockerfile to it's own repository

0.9503  2015-10-29 16:32:28 CET
  - VERSION for all packages and cleanup

0.9502  2015-10-28 16:48:10 CET
  - new Store::Multi
  - new Exporter::Multi
  - new Importer::Multi
  - new MultiIterator
  - remove dependency on Data::Util so we can support perl 5.22
  - fix typos
  - fix Fix::Bind::list single execution bug
  - .mailmap file

0.9501  2015-10-15 16:30:28 CEST
  - 'trim' fix remove diacritics mode

0.95  2015-10-08 11:46:02 CEST
  - Importer can now fetch remote data over http(s)
  - catmandu run command and executable fixes
  - catmandu interactive fix interpreter
  - 'importer' bind
  - more powerful 'list' and 'hashmap' bind
  - autocommit option on all addables (Exporter,Store,...)
  - 'expand_date' fix replaced by 'split_date' in the Catmandu-Fix-Date
    distribution
  - more pod and tests

0.9403  2015-09-17 16:44:45 CEST
  - make 'include' fix load path aware

0.9402  2015-09-16 14:30:07 CEST
  - rename Iterable 'sort' to 'sorted' to fix name conflict

0.9401  2015-09-15 11:19:57 CEST
  - new 'uniq' fix
  - new 'flatten' fix
  - new 'include' fix to load other fix files
  - Importer has a new 'data_path' option to import data substructure(s) instead
  - fix emitted null bug in the 'reject' and 'select' fixes
  - more pod and many typos corrected

0.94  2015-07-10 13:26:34 CEST
  - lots more pod and many typos corrected
  - more fix tests
  - new Text importer to import data similar to sed and awk
  - Modules importer supports multiple namespaces and module description
  - 'help' command now shows importer and exporter options
  - new utility functions 'pod_section' and 'array_split'
  - empty path now refers to the root in fixes
  - new 'assoc' fix
  - new 'perlcode' fix
  - new 'with' and 'visitor' binds
  - new 'in' fix condition
  - new 'any_equal', 'all_equal' fix conditions
  - new 'is_bool', 'is_true', 'is_false' fix conditions
  - utf8 support tests
  - more robust header detection in CSV exporter
  - more robust 'copy_field' fix
  - 'expand' and 'collapse' fixes have a new 'sep_char' option
  - add .dockerignore file
  - fix travis.yml
  - more robust 'lookup' and 'lookup_in_store' fixes
  - Iterable 'select' method aliased as 'grep'
  - Hash store has a new 'init_data' option
  - remove conflicting VERSION sub from CLI

0.9301  2015-02-24 11:17:36 CET
  - Cmd output test failed sometimes

0.93  2015-02-24 09:54:04 CET
  - Iterable can now behave like an external iterator (see next and rewind
    methods)
  - better Fix::Parser error handling
  - new hash_merge fix
  - fix Versioning bugs
  - more consistent Importer::JSON and Exporter::JSON parameter naming
  - fix regex bug in emit
  - new set_array and set_hash fixes
  - new filter fix
  - Iterable stop_if method
  - pod fixes

0.9210  2015-01-06 09:28:23 CET
  - fix log tests

0.9209  2014-12-04 13:58:02 CET
  - info command
  - ignore installed but depreciated commands
  - improved retain fix will replace retain_field
  - simple emitting fixes require a bit less boilerplate
  - JSON::XS is now required to avoid bugs in other
    implementations

0.9208  2014-11-20 09:50:56 CET
  - lazy and more robust fix building in Fix.pm

0.9207  2014-11-06 09:53:08 CET
  - greater_than, less_than fix conditions
  - fix bug in Paged
  - Exporter::JSON pod
  - sort_field fix handles undef values

0.9206  2014-10-07 09:06:43 CEST
  - remove orphan test

0.9205  2014-10-06 14:09:06 CEST
  - more pod
  - combine the various info modules in Importer::Modules
  - Bind::hashmap fix

0.9204  2014-06-13 09:44:48 CEST
  - fix issue #93 octal number bug

0.9203  2014-06-13 09:27:54 CEST
  - fix counting bugs

0.9202  2014-06-10 09:30:24 CEST
  - fix Logger bug

0.9201  2014-06-06 14:44:33 CEST
  - Iterable benchmark and format method pod

0.92  2014-06-06 13:06:01 CEST
  - catmandu debug flag and more informative error messages
  - more pod
  - bump required version of Moo
  - require YAML::XS to avoid YAML weirdness
  - fix CLI include path load order
  - MooX::Log::Any replaced by Catmandu::Logger because it doesn't set the
    correct category
  - config command can use any Exporter
  - Importer::JSON multiline is more robust
  - Exporter::JSON supports canonical, indent, space_before, space_after
    options
  - info commands and matching importers

0.9103  2014-05-23 10:24:52 CEST
  - fix script dir in build script
  - Fix::Parser handles empty comments
  - Exporter pod

0.9102  2014-05-20 14:07:46 CEST
  - Marpa requires Time::Piece

0.9101  2014-05-20 11:58:46 CEST
  - less_than, greater_than conditions

0.91  2014-05-20 09:29:01 CEST
  - adding monads in disguise Catmandu::Fix::Bind
  - much more pod
  - make travis a bit happier

0.9  2014-05-12 10:18:40 CEST
  - switch to Dist::Milla
  - Marpa based fix parser
  - Config::Onion based config loader
  - :up load path
  - move documentation to the Github wiki
  - Validators

0.8014  2014-04-03
  - fix Paged bugs
  - more tests

0.8013  2014-03-27
  - Importer::JSON multiline switch
  - Importer pod

0.8012  2014-03-24
  - add missing List::MoreUtils dependency

0.8011  2014-03-18
  - fix Paged bugs
  - array and hash fixes
  - more tests
  - more pod

0.8010  2014-03-11
  - bump required version of YAML::Any
  - use List::Util::sum instead of List::Util::sum0 (not present in older
    versions)

0.8009  2014-03-07
  - sort_field fix
  - fix undefined lib_path

0.8008  2014-03-05
  - split off Catmandu::Exporter::Template

0.8007  2014-03-04
  - rewrite Catmandu::Serializer
  - split off Catmandu::Serializer::storable
  - split off Catmandu::Serializer::messagepack
  - tests for Catmandu::Serializer

0.8006  2014-03-04
  - expand_date fix
  - CLI --lib-path option
  - more tests
  - remove dependency on Data::SpreadPagination
  - Importer encoding is now an attribute
  - fixes inheriting from Fix::Base can now export their functionality as a
    function

0.8005  2013-12-20
  - Catmandu::Plugin:: pod

0.8004  2013-12-18
  - Exporter::CSV always_quote option

0.8003  2013-12-18
  - fix bug in Store::bags

0.8002  2013-12-09
  - fix pod

0.8001  2013-11-19
  - add one step install to pod

0.8     2013-11-14
  - Fix::Condition now supports otherwise clause
  - Fix, Fix::Condition bugfixes
  - TY RIS tag needs to come first for some exporters
  - fix version command

0.7002  2013-09-12
  - sort keys extracted from a hash in Exporter::CSV and Importer::CSV

0.7001  2013-09-09
  - fix bug in data command with option values evaling to false

0.7     2013-09-02
  - JSON Exporter array option

0.6     2013-09-02
  - Util::trim also removes vertical whitespace
  - updated introduction, developers guide
  - more tests
  - sum fix
  - travis
  - pod links

0.5004  2013-07-01
  - lookup, lookup_in_store fixes handle -delete option with wildcard correctly

0.5003  2013-06-28
  - lookup_in_store fix

0.5002  2013-06-26
  - count fix
  - nothing fix

0.5001  2013-06-25
  - trim fix nonword option

0.5     2013-06-12
  - ArrayIterator pod
  - split off Store::DBI,
  - split off Importer::Atom
  - split off Exporter::Atom
  - split off Exporter::BibTeX
  - split off Exporter::XLS
  - remove dependency on Module::Info

0.4001  2013-06-20
  - lookup fix tests, -default, -delete options

0.4     2013-06-19
  - to_json fix
  - from_json fix

0.3     2013-06-18
  - Exporter::JSON pod
  - lookup fix

0.2003  2013-05-27
  - remove given/when statements (experimental since perl 5.16)
  - fix endless loop if iterators returned by Iterable group method are not consumed

0.2002  2013-05-08
  - revert to IO::String because open with scalar ref has
    binmode bugs

0.2001  2013-05-07
  - ArrayIterator
  - fix Util::is_instance()
  - avoid using IO::String

0.2     2013-04-24
  - better config command
  - convert command
  - count command
  - delete command
  - export command
  - import command
  - move command

0.1003  2013-04-16
  - fix Exporter::Template dynamic scope

0.1002  2013-04-02
  - missing Env::fixers

0.1001  2013-03-28
  - don't throw empty messages
  - bump required version of Throwable

0.1     2013-03-26
  - logging with MooX::Log::Any
  - error hierarchy
  - Store forwards all Bag methods to the default Bag
  - make Perl::Tidy optional
  - namespace::clean
  - Sane exports Try::Tiny::ByClass
  - Sane no longer exports confess, use the Error classes
  - a new Env class takes care of loading the config and other
    environment related tasks
  - Buffer and Counter have better encapsulation
  - Iterable has a new benchmark method
  - Exporter::RIS AR tag
  - Exporter::BibTeX articleno field
  - rename Pager to Paged

0.0901  2013-03-07
  - fix makefile

0.09    2013-03-06
  - Exporter::Atom
  - fix pod

0.08    2013-02-26
  - compile fixes to perl closure
  - tests for all fixes
  - fix typo in Importer::RIS
  - add doi field to Exporter::BibTeX

0.07    2013-02-07
  - conditionals in fixes
  - append, prepend fixes

0.06    2013-02-05
  - Util::io() can now take a callback to read to or write from
  - fixer method enables named fixers in config
  - default fixers, importers, exporters equivalent to default store

0.05    2012-12-04
  - split off Catmandu::Store::ElasticSearch
  - split off Catmandu::Store::Solr
  - split off Plack::Session::Store::Catmandu
  - split off Dancer::Plugin::Catmandu::OAI
  - split off Dancer::Plugin::Catmandu::SRU
  - split off Dancer::Session::Catmandu
  - Exporter::Template dies if template isn't found
  - fix accidental creation of non-existing keys in Util::set_data()

0.0402  2012-11-12
  - Store::Hash is no longer Searchable
  - remove dependency on Data::Visitor::Callback
  - bump required version of Moo to 1.0
  - Util::write_file()
  - Util::join_path()
  - Util::normalize_path()
  - Util::segmented_path()
  - Util prefer io(binmode => ...) to io(encoding => ...)

0.0401  2012-10-24
  - split off Store::SBCatDB
  - more Util docs

0.04    2012-10-24
  - Util human output functions
  - Util xml functions
  - Util docs

0.0303  2012-10-15
  - pass limit option in Store::ElasticSearch::Searcher and
    Store::Solr::Searcher
  - fix Exporter::CSV docs
  - custom header labels in Exporter::CSV and Exporter::XLS

0.0302  2012-09-25
  - fix POST support in Dancer::Plugin::Catmandu::OAI
  - optimize Util::require_package

0.0301  2012-07-09
  - fix typo in Catmandu->load

0.03    2012-07-06
  - iterative version of CQL::ElasticSearch
  - Store::ElasticSearch searcher supports sort
  - faster Datestamps
  - Iterable->interleave()
  - Iterable->detect/select/reject(key => ['val', ...])
  - Iterable->detect/select/reject(key => 'val')
  - fix Dancer::Plugin::Catmandu::SRU recordPosition
  - Cmd::config can take a key to show only a subset

0.02    2012-06-12
  - remove guard feature from fixes
  - load split config files
  - Catmandu->roots()
  - support for nested object queries in CQL::ElasticSearch
  - improve Plugin::Versioning
  - more docs

0.0106  2012-05-29
  - fix Store::DBI transaction method

0.0105  2012-05-21
  - more docs

0.0104  2012-05-16
  - more docs

0.0103  2012-05-14
  - improve Plugin::Versioning
  - more docs
  - fix split on \r in tests
  - fix dependencies: parent.pm is only bundled with perl >= 5.10.1

0.0102  2012-05-09
  - pass data to Bag->generate_id()
  - fix typo in Cmd::data
  - fix YAML loading

0.0101  2012-05-08
  - fix dependencies

0.01    2012-05-05
  - initial release