Revision history for Perl module Module::Generic

v0.32.3 2023-09-25T23:37:41+0900
    - Minor issue in unit test 14.core.t corrected

v0.32.2 2023-09-20T15:08:44+0900
    - Updated method _is_empty in Module::Generic to include array and hash
    - Improved method _is_class_loaded() in Module::Generic
    - Corrected the error() method in Module::Generic::Array that was not working as intended
    - Added the method reduce() in Module::Generic::Array as an implementation of the JavaScript equivalent.
    - Added in Module::Generic the methods _has_symbol, _get_symbol and _list_symbols

v0.32.1 2023-09-19T20:15:02+0900
    - Corrected a negative side affect of allowing, by default, the use of reference as hash keys when some key names are stringifyable objects. They would not stringify because they are object. Now allowing reference as hash keys is disabled by default and is an option.

v0.32.0 2023-09-05T16:11:30+0900
    - Cleaned up code and improved speed substantially
    - $_ in method foreach() of Module::Generic::Array refers to the current value of the array and can be altered directly
    - Added the default option 'allow_tags' to the method new_json() in Module::Generic
    - Improved module Module::Generic::TieHash
    - Enabled use of reference as keys in Module::Generic::TieHash
    - tying recursively hash reference in Module::Generic::TieHash
    - Updated POD documentation for Module::Generic::TieHash
    - Updated method as_hash() in Module::Generic::Array
    - Updated method as_string() in Module::Generic::Exception to stringify the value of message() when it contains an overloaded value.
    - Changed private object variable to be prefixed with '_'
    - Method as_hash() in Module::Generic::Hash no longer returns a regular hash, but instead the current object, since this is already an hash
    - Corrected callback in method _set_get_scalar_as_object() in Module::Generic

v0.31.2 2023-08-31T11:37:06+0900
    - Updated methods _set_get_file() and _set_get_glob() to allow for undef() value to essentially remove existing value.

v0.31.1 2023-07-31T08:50:04+0900
    - Improved methods _set_get_hash, _set_get_array and _set_get_boolean in Module::Generic
    - Improved method load_json in Module::Generic::File
    - Added method cause to Module::Generic::Exception to mirror the similar property found in JavaScript exception objects.
    - Corrected a small bug in method _set_get_class_array_object in Module::Generic
    - Updated Module::Generic::Finfo to use File::MMagic::XS if it is installed or fallback to File::MMagic

v0.31.0 2023-07-30T08:12:20+0900
    - Added the support method _on_error as a callback triggered by call to error()
    - Added the option 'wantlist' to method _set_get_array_as_object() in Module::Generic
    - Updated method _set_get_scalar_as_object in Module::Generic
    - Improved the method unload_perl() in Module::Generic::File to allow for the use of a callback to format the perl data.
    - Improved the method _set_get_version to allow to pass a definition hash reference and specify a class to handle the version number.
    - Improved the method _set_get_class
    - Created the class _set_get_class_array_object
    - Improved method as_hash in Module::Generic
    - Improved method __create_class in Module::Generic
    - Improved method init() in Module::Generic to allow hash or hash reference to be provided containing keys with dashes inside, such as "some-thing" and be checked against both "some-thing" and "some_thing"
    - Improved AUTOLOAD in Module::Generic to check for object property also using the underscore converted to dash, such as some_thing -> some-thing
    - Improved the methods load() and load_utf8() in Module::Generic::File to return a scalar object in object context.

v0.30.5 2023-06-11T10:24:31+0900
    - Improved method error() to also allow for the return of array, code, glob, hash or scalar reference when required

v0.30.4 2023-05-25T04:12:20+0900
    - Corrected a small bug in unit test 22.parse_timestamp.t when module DateTime::Format::JP is not installed

v0.30.3 2023-05-23T17:56:46+0900
    - Minor bug correction in support method _set_get_callback in Module::Generic

v0.30.2 2023-05-16T21:33:10+0900
    - Corrected a small bug in unload_json() in Module::Generic when JSON option utf8 was provided in overlap with the binmode also set to utf8, thus yielding mojibake.

v0.30.1 2023-05-14T21:44:27+0900
    - Corrected small bug in support function _set_get_number
    - Improved the code of some support functions

v0.30.0 2023-05-14T08:35:33+0900
    - Changes to inner working of several support functions to better support lvalue methods

v0.29.6 2023-03-12T06:55:19+0900
    - Minor improvements in Module::Generic::Scalar by adding Regexp::Common as a regexp class on top of perl's Regexp
    - Improved the helper method _set_get_object and corrected _set_get_object_without_init
    - Added the 'code' option to method 'pass_error' in Module::Generic
    - Support method '_can' in Module::Generic now also accepts an array of methods to check
    - Added _is_warnings_enabled as an alias to _warnings_is_enabled in Module::Generic
    - Improved Module::Generic::Hash json method to allow for more options
    - Added method _set_get_callback as an lvalue support method
    - Aliased _lvalue to _set_get_callback

v0.29.5 2023-02-25T13:51:43+0900
    - Minor improvement in Module::Generic::File in unload_json()

v0.29.4 2023-01-11T06:39:03+0900
    - Minor improvement in Module::Generic::Exception
    - Minor improvement in baseinfo()

v0.29.3 2022-12-18T13:03:04+0900
    - Correcting unit test for Module::Generic::Number

v0.29.2 2022-12-11T14:00:48+0900
    - Correcting oversight when dealing with undefined, but necessary property values in Module::Generic::Number

v0.29.1 2022-12-09T19:30:04+0900
    - Improvement of method _set_get_hash_as_mix_object in Module::Generic

v0.29.0 2022-12-07T11:51:47+0900
    - Mitigation around the use of Scalar::Util::reftype that returns undef for false, which in turn yields a perl warning of 'uninitialized value' when used in string comparison such as: Scalar::Util::reftype( $this ) eq 'ARRAY'
    - Corrected resolve() in Module::Generic::File to default $max_recursion to 0 if undefined.
    - Improved a bit Module::Generic::Number by caching number regular expression
    - Improved Module::Generic::SharedMem and Module::Generic::SharedMemXS
    - New method new_version() and _set_get_version in Module::Generic
    - Corrected a missing requirement in method _set_get_array_as_object() in Module::Generic
    - Updated how one can end a loop in for() and foreach() in Module::Generic::Array
    - Added missing method is_decimal in Module::Generic::Number
    - Reworked parts of Module::Generic::Number and integrating some codes from Number::Format
    - Removed dependency on Number::Format
    - Updated clone() in Module::Generic to deal with cases when called as a class function: MyClass->clone()
    - Added is_empty method to Module::Generic::Number
    - Updated _set_get_number() in Module::Generic to take n hash of options instead of field name and accept undef value
    - Improved error reporting upon object instantiation in Module::Generic::Number

v0.28.5 2022-10-30T19:51:48+0900
    - Minor correction in Module::Generic::Array
    - Added methods finddepth, flock and readdir to Module::Generic::File
    - Added rmtree as exportable function in Module::Generic::File
    - Added the option to fdopen a file descriptor in constructor new() in Module::Generic::File::IO
    - Added the exportable function wraphandle in Module::Generic::File::IO
    - Minor correction to AUTOLOAD
    - Improvement for method length() in Module::Generic::Scalar when the underlying scalar is undef
    - Improved _datetime in Module::Generic::Finfo
    - Improved methods _parse_datetime() and _set_get_datetime() in Module::Generic
    - Improved methods op() and op_minus_plus() in Module::Generic::DateTime
    - Added 'lock' parameter to method unload in Module::Generic::File
    - Improved 'auto_remove' property during init
    - Improvement of documentation in Module::Generic::DateTime, Module::Generic::File::IO and Module::Generic::File::Mmap
    - Minor improvements to Module::Generic::SharedMem

v0.28.4 2022-09-27T18:38:27+0900
    - Added method can_exec() in Module::Generic::File
    - Improved method remove() in Module::Generic::File::Cache
    - Improved Module::Generic::Array with cleanup upon object destruction
    - Improved unload_json() in Module::Generic::File to allow any JSON supported options.
    - Added methods load_perl() and unload_perl() in Module::Generic::File

v0.28.3 2022-09-25T17:03:10+0900
    - Added method unchomp to Module::Generic::Array
    - Better sanity check on the file cache directory in method 'open' in module Module::Generic::File::Cache
    - Added method close as an alias to 'remove' in Module::Generic::SharedMemXS
    - Added the tmpdir() parameter for new() and related method in Module::Generic::File::Cache
    - Improved method remove() in Module::Generic::File::Cache to remove the cache directory if it is empty.
    - Improved the method is_empty() in Module::Generic::File

v0.28.2 2022-09-18T21:18:30+0900
    - Corrected missing module in _parse_timestamp and parameters to DateTime::Format::Strptime

v0.28.1 2022-08-30T06:16:26+0900
    - Corrected missing POSIX module use (#4 thanks to Nicholas R.)

v0.28.0 2022-08-29T17:13:47+0900
    - Added support in serialise() and deserialise() for CBOR::Free
    - Improved support check in Module::Generic::SharedMem
    - Improved unit tests

v0.27.2 2022-08-07T17:36:42+0900
    - Corrected deserialiser(9 in Module::Generic, which wrongly was requiring Crypt::Misc (a leftover from previous modifications made).

v0.27.1 2022-08-05T07:38:11+0900
    - Correcting a debugging leftover in test unit.
    - Updating modules FREEZE method reflecting the latest documented change of Sereal::Encoder
    - Added support for JSON in methods serialise and deserialise in Module::Generic

v0.27.0 2022-08-01T12:12:43+0900
    - Added missing reset() method in Module::Generic::File::Mmap
    - Improved write method in Module::Generic::File::Cache, Module::Generic::File::Mmap and Module::Generic::SharedMem
    - Added alias method is_directory in Module::Generic::File
    - Added options crypt_base64 and base64 to methods serialise and deserialise in Module::Generic
    - Added the module Module::Generic::SharedMemXS

v0.26.0 2022-07-28T11:47:10+0900
    - Correcting mistake in test unit 17.serialise_storable.t, 18.serialise_sereal.t and 19.serialise_cbor.t
    - Implemented new module Module::Generic::File::Mmap using Cache::FastMmap
    - Updated documentation for Module::Generic::File::Cache and Module::Generic::SharedMem

v0.25.0 2022-07-18T00:44:48+0900
    - Implemented support for CBOR, Sereal and Storable with STORABLE_freeze and STORABLE_thaw in all modules
    - Changed serialise() and deserialise() to now use Storable::Improved instead of Storable, as Storable poorly handles GLOB objects and XS objects and ignores the return value from STORABLE_thaw().
    - Change dependency from Storable to Storable::Improved for better support for GLOB and XS modules objects
    - Added support for CBOR and Sereal when serialising shared data

v0.24.3 2022-07-15T15:07:18+0900
    - Improved checking shared memory support

v0.24.2 2022-06-28T14:12:48+0900
    - Corrected a missing condition in_set_get_code to return a dummy anonymous sub in object context

v0.24.1 2022-06-24T07:36:36+0900
    - Added the extensions method in Module::Generic::File
    - Improved _set_get_code method in Module::Generic
    - Improved pass_error to throw an error when fatal is enabled
    - Improved _is_integer in Module::Generic

v0.24.0 2022-04-28T06:55:11+0900
    - Corrected minor bug in _filehandle_method() in Module::Generic::File
    - Implemented mitigation for URI module who removes any leading and/or trailing space in the path
    - Made substantial improvements to glob() in Module::Generic::File
    - Added value_name and value_data in Module::Generic::HeaderValue
    - Spun off the package Module::Generic::Scalar::IO into its own file and heavily modified it, getting rid of IO::Scalar
    - Optimised Module::Generic to remove unnecessary modules and only load them when required
    - Added method has_valid_name() in Module::Generic::File
    - Added module Module::Generic::File::IO to provide a uniform and exception safe interface to IO::File
    - Modified tempfile() in Module::Generic::File to accept an extension with or without leading dot.
    - Added method _load_classes to Module::Generic
    - Changed read() in Module::Generic::File so that it accept the as_object option to return an object instead of a string.
    - Added method except() in Module::Generic::Array
    - Corrected _parse_timestamp for a date patter that is for GMT and ensures the format set has GMT time zone.
    - Improved the support method _warnings_is_enabled to check if class is even registered
    - Corrected mishandling of IO layer when opening scalar with Module::Generic::Scalar::IO
    - Improved _get_args_as_hash in Module::Generic to allow parameters to be mixed with other arguments

v0.23.1 2022-03-28T11:18:17+0900
    - Added method  _set_get_glob in Module::Generic
    - Corrected a small bug in Module::Generic::Dynamic
    - Corrected a small bug in method content() in Module::Generic::File
    - Added method chown in Module::Generic::File
    - Added method datetime in Module::Generic::DateTime
    - Made a minor correction in chmod when reporting the mode upon error
    - Changed autoload of methods in Module::Generic
    - Updated the methods append and prepend in Module::Generic::Scalar to also accept sa calar reference or object
    - Changed return value for _set_get_scalar_as_object to the object when the context is object
    - Corrected a minor bug in pass_error in Module::Generic
    - Minor improvement on when a directory was removed while perl was running affecting _uri_file_cwd() in Module::Generic::File

v0.23.0 2022-03-27T20:30:48+0900
    - Minor improvement in _parse_timestamp
    - Implemented inline autoloading of some subroutines

v0.22.1 2022-03-21T15:39:24+0900
    - Corrected shared memory unit test

v0.22.0 2022-03-18T14:57:40+0900
    - Corrected a minor bug in can_write() in Module::Generic::File
    - Added module Module::Generic::File::Cache to provide a file-base caching mechanism across processes
    - Updated _set_get_object and _set_get_object_without_init in Module::Generic to accept an array of classes
    - Updated method deserialise to check if data in file was serialise with Storable::store or Storable::freeze

v0.21.12 2022-03-11T21:41:04+0900
    - Added the 'skip' parameter to find() in Module::Generic::File
    - Added the 'glob' parameter to resolve() in Module::Generic::File
    - Added the 'globbing' parameter to new() in Module::Generic::File
    - Added the $GLOBBING in Module::Generic::File
    - Added the glob() method in Module::Generic::File
    - Made minor improvements to Module::Generic::SharedMem
    - Added serialise/serialize and deserialise/deserialize to Module::Generic

v0.21.11 2022-03-10T23:50:16+0900
    - Correction of a minor, but annoying bug in Module::Generic::Array with $TRUE and $FALSE not properly set.

v0.21.10 2022-03-10T17:25:56+0900
    - Correction to unit test with DateTime and system missing components

v0.21.9 2022-03-09T17:37:34+0900
    - Improvements with Module::Generic::SharedMem encoding and decoding of JSON data

v0.21.8 2022-03-08T14:47:21+0900
    - Corrected a minor bug in resolve() whereby 'base_dir' was not taken under account
    - Updated documentation in Module::Generic::DateTime and added new documentation for Module::Generic::DateTime::Interval
    - Allowed Module::Generic::DateTime to instantiate a default DateTime object when provided no argument
    - Updated method _datetime in Module::Generic::Finfo, and _parse_timestamp and _set_get_datetime in Module::Generic to trap issues DateTime::TimeZone::Local exceptions triggered when system lacks proper time zone components.

v0.21.7 2022-03-06T16:50:58+0900
    - Added methods load_json and unlaod_json in Module::Generic::File and new_json in Module::Generic
    - Added methods checksum_md5, checksum_256 and checksum512 in Module::Generic::File

v0.21.6 2022-03-06T13:10:02+0900
    - Corrected DateTime version requirement to avoid "Cannot determine local time zone" error

v0.21.5 2022-03-05T16:40:09+0900
    - Removing a unit test

v0.21.4 2022-03-05T14:23:20+0900
    - Updated Module::Generic::Number
    - Made Class::* modules separate

v0.21.3 2022-02-28T07:14:12+0900
    - Resubmission due to error on CPAN

v0.21.2 2022-02-27T23:52:10+0900
    - Resubmission after transfer from Dan Kogai of Class::Array and Class::Scalar

v0.21.1 2022-02-27T22:34:58+0900
    - Resubmission due to error

v0.21.0 2022-02-27T17:18:25+0900
    - Improved code and removed warnings
    - Added modules Class, Class::Array, Class::Boolean, Class::Exception, Class::File, Class::Finfo, Class::Hash, Class::Null, Class::Class::Number, Class::Scalar

v0.20.0 2022-01-17T05:17:16+0900
    - Corrected small time lag in test unit 08.datetime.t
    - Add class functions stdin, stdout and stderr to Module::Generic::File
    - Corrected a bug in Module::Generic::File

v0.19.0 2022-12-23T14:04:47+0900
    - Added method mkdir in Module::Generic::File for a simpler way to create a directory than mkpath
    - Minor change to _move_or_copy() in Module::Generic::File
    - Added callback method to Module::Generic::Array to control, accept or reject insertion or deletion
    - Added callback method to Module::Generic::Scalar to control, accept or reject addition or removal
    - Added method _set_get_object_lvalue in Module::Generic to allow setting object in lvalue context
    - Added method error in Module::Generic::Array
    - Added method _lvalue as a generic lvalue method to Module::Generic
    - Added method filter to Module::Generic::Array

v0.18.4 2021-12-17T09:10:36+0900
    - Updated _parse_timestamp to handle unix timestamp provided by Time::HiRes, i.e with a decimal
    - Small correction in _obj2h in Module::Generic
    - Added method _is_integer in Module::Generic
    - Modified exists in Module::Generic::Array to take under account objects.

v0.18.3 2021-12-14T12:44:31+0900
    - Added method replace in Module::Generic::Array
    - Added methods is_empty and remove in Module::Generic::Hash
    - Changed Module::Generic::SharedMem default encoding tool to JSON instead of Storable

v0.18.2 2021-12-08T15:27:47+0900
    - Correction in Number::Format when default locale is C or POSIX

v0.18.1 2021-12-07T21:24:28+0900
    - Resubmission

v0.18.0 2021-12-04T11:13:15+0900
    - Correction in baseinfo() in Module::Generic::File
    - Minor improvement in helper method _is_a in Module::Generic
    - Added the standard PROPAGATE method in Module::Generic::Exeption
    - Added the support for global variable FATAL_ERROR to trigger fatal error
    - Implemented virtualisation in Module::Generic::File. See documentation
    - Improved error() in Module::Generic to allow the use of "class" parameter
    - Added method aliases append() and prepend() in Module::Generic::Array
    - Implemented lvalue support for many support methods in Module::Generic
    - Added test units to better test Module::Generic
    - Improved Module::Generic::Number, lightening new()
    - Corrected a bug in as_String in Module::Generic::HeaderValue
    - Module::Generic::HeaderValue returns a boolean rather than the string in boolean context

v0.17.3 2021-11-22T11:14:35+0900
    - Minor correction in Module::Generic removing the INIT block

v0.17.2 2021-11-16T12:20:03+0900
    - Minor improvement to _parse_timestamp in Module::Generic

v0.17.1 2021-11-15T11:55:16+0900
    - Minor correction in Module::Generic in _parse_timestamp
    - Fine tuning of the module versions requirements

v0.17.0 2021-11-05T20:40:13+0900
    - Updated Module::Generic::Hash, adding alias method size() pointing to length()
    - Added class Module::Generic::HeaderValue
    - Added shortcut methods device, inode, mode, nlink, uid, gid, rdev, atime, mtime, ctime, block_size, blocks, last_accessed and last_modified in package Module::Generic::File
    - Added method utime in package Module::Generic::File
    - Added method line in package Module::Generic::Scalar::IO

v0.16.5 2021-10-24T12:10:52+0900
    - Corrected Module::Generic::SharedMem read() method to not decode if buffer is empty

v0.16.4 2021-10-22T15:51:20+0900
    - Correcting an oversight in Module::Generic (module Devel::Confess was required for debugging but not removed later)

v0.16.3 2021-10-21T12:17:58+0900
    - Improved mmap method in Module::Generic::File

v0.16.2 2021-10-15T16:10:14+0900
    - Improved mmap method in Module::Generic::File

v0.16.1 2021-10-12T22:46:58+0900
    - Added methods blocking, eof, fcntl, fdopen, flush, format_write, getc, getline, getlines, ioctl, printflush, sync, sysread, sysseek, syswrite, ungetc and content_objects in Module::Generic::File
    - Corrected test units for Module::Generif::File

v0.16.0 2021-10-11T13:51:57+0900
    - Tuned _set_get_datetime method to only set a default DateTime formatter when none were already set yet
    - Added support method _set_get_uuid to store universal unique identifier with data validation
    - Added method as_json in Module::Generic::Hash to return a json string representation of the hash object
    - Added method _can in Module::Generic to quickly check if a given object has support for a given method
    - Corrected an error check in Module::Generic::SharedMem for method lock()
    - Added methods get_null in Module::Generic::Array to get a Module::Generic::Null object when offset value is undef
    - Added methods second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth
    - Made a slight adjustment in Module::Generic::Null so that the parameter value for 'wants' can be specified in lowercase and updated the documentation
    - Added method _is_ip to check IPv4 and IPv6 syntax, including with CIDR notation in Module::Generic
    - Added method _set_get_ip and _is_uuid to check syntax of UUID
    - Improved Module::Generic::Dynamic
    - Added method as_hash in Module::Generic::Hash to get the hash object as a regular hash reference
    - Improved method _is_class_loaded to more simply check at the %INC rather than rely on external module
    - Improved method _load_class to allow for passing semantics to import and provided an hash reference of options such as package version and caller's package to import the module into.
    - Added missing TO_JSON method in Module::Generic::Exception and Module::Generic::Number
    - Updated _set_get_uri in Module::Generic to initiate a URI object if value is available and not yet an object.
    - Added method aliases lower and upper in Module::Generic::Scalar
    - Added methods pack and unpack in Module::Generic::Scalar
    - Added method pack in Module::Generic::Array
    - Modified Module::Generic::Array new method to accept also a list of elements.
    - Updated the method join in Module::Generic::Array to allow passing additional arguments on top of the current array object: $a->join( ',', $more_data );
    - Updated method replace in Module::Generic::Scalar to return a special Module::Generic::RegexpCapture object
    - Added method dump_hex() which uses Devel::Hexdump if it is installed
    - Updated the method new() in Module::Generic so that a possible error be propagated to its calling object when called from object like my $new = $old->new || die( $old->error );
    - Updated AUTOLOAD to pass $self as first argument if defined
    - Updated _set_get_object_array in Module::Generic to allow any non-blessed value to be passed for object instantiation, instead of hash reference previously.
    - Added the methods intersection, max, min in Module::Generic::Array
    - Added a destruction mechanism in the END block in Module::Generic::File for file or directory set to be auto removed
    - Updated method autoflush in Module::Generic::File to affect the underlying file handle with the value provided. Before, it was just storing the boolean value.
    - Added methods mmap and unmap in Module::Generic::File to use file-based variable that can be shared across processes

v0.15.8 2021-08-21T14:13:52+0900
    - Corrected an overlooked warning in Module::Generic::Array->split

v0.15.7 2021-08-20T18:14:07+0900
    - Added support method _get_stack_trace in Module::Generic
    - Updated method init to not issue any warning when a package method returns undef when passing undef value to those methods in Module::Generic. Normally a method returning undef is a sign of an error having occurred.
    - Updated the test units for Module::Generic::SharedMem
    - Improved documentation for Module::Generic::Array

v0.15.6 2021-08-18T09:44:08+0900
    - Updated documentation for Module::Generic::Scalar (lc, lcfirst, uc, ucfirst)
    - Updated the test unit for shared memory to better handle platform not supporting IPC SysV

v0.15.5 2021-07-26T12:54:23+0900
    - Corrected mistake with module name Module::Generic::DateTime
    - Added alias makpath() to mkpath() in Module::Generic::File
    - Added alias absolute() to abs() in Module::Generic::File

v0.15.4 2021-06-29T18:34:17+0900
    - Added methods join and split in Module::Generic::File
    - Changed method extension which can now take a new value and then return a new file object
    - Added method fragments to Module::Generic::File
    - Added helper method _is_number in Module::Generic

v0.15.3 2021-06-26T14:31:27+0900
    - Improvement for Module::Generic::File for method load
    - Switched Module::Generic::SharedMem to use json xs module by default as data packing mechanism, but with the choice left to the user between JSON and Storable
    - Corrected a bug in Module::Generic::File in method tmpfile that, due to errors in parameters, inadvertently, was creating also temporary directories
    - Corrected a bug in rmtree whereby the directory itself was not removed. Added the option "keep_root" to decide whether to keep it or not.

v0.15.2 2021-06-26T06:06:16+0900
    - Added missing documentation for Module::Generic::File
    - Improved documentation for Module::Generic

v0.15.1 2021-06-20T10:19:58+0900
    - Resubmission due to bundling error

v0.15.0 2021-04-18T12:05:35+0900
    - Corrected a minor bug in Module::Generic::Dynamic, ignoring now fields that do not contain any valid chracter to become a method
    - Added method as_array(), offset() and merge() in Module::Generic::Array
    - Added method empty() in Module::Generic::Array as an alias to reset()
    - Added methods as_array(), as_number(), join() and prepend() in Module::Generic::Scalar
    - Added method as_array(), as_scalar() in Module::Generic::Number
    - Added method as_array() and as_scalar() in Module::Generic::Boolean
    - Added support for changing the offset position in a for loop in Module::Generic::Array by returning a scalar reference of an integer
    - Added the return method in Module::Generic::Array to end embedded loops.
    - Added methods even, odd, remove and unique (based on List::Util::uniq) in Module::Generic::Array
    - Added TO_JSON to Module::Generic::Array, Module::Generic::Hash and Module::Generic::Scalar to allow its object to be encoded with JSON. You still need to set the convert_blessed JSON property to true though: my $j = JSON->new->convert_blessed;
    - In Module::Generic::Array, the following methods have been changed to return a Module::Generic::Scalar object in object context and if the value retrieved from the array is not a reference of any sort: first, get, index, last, pop, shift. The splice method has been modified to return a new Module::Generic::Array object in object context when only an offset and length, or just an offset was provided.
    - Added support method _is_class_loadable in Module::Generic to check if a module can be loaded without loading it
    - Added support method _get_args_as_array in Module::Generic
    - Corrected an obscure bug in clone() when using Want.
    - Added method new_null in Module::Generic
    - Added modules Module::Generic::File and Module::Generic::Finfo to deal with files
    - Added inline class Module::Generic::Scalar::IO that inherits from IO::Scalar and enables to print to scalar
    - Added module Module::Generic::SharedMem for easy-to-use shared memory interface

v0.14.2 2021-04-03T17:22:00+0900
    - Corrected a bug in _set_get_scalar_as_object to accept overloaded objects that implement stringification
    - Corrected a bug in _set_get_hash

v0.14.1 2021-03-31T14:50:43+0900
    - Correcting a test unit in datetime and upgrading version numbers for sub modules

v0.14.0 2021-03-20T21:43:18+0900
    - Added Module::Generic::Datetime and split inline modules to their own files
    - Added method _get_args_as_hash to get methods parameters as hash reference whether they were provided initially as such or not

v0.13.6 2021-02-14T13:01:16+0900
    - Improved test unit for cygwin not supporting crypt

v0.13.5 2021-02-06T11:46:18+0900
    - Corrected a mising require for DateTime::Format::Strptime
    - Improved the _warnings_is_enabled helper method

v0.13.4 2021-01-25T18:47:55+0900
    - Moved the requirement on Apache module to the BEGIN block as it should.

v0.13.3 2020-12-08T11:12:15+0900
    - Removed method message_switch
    - Added method _set_get_object_without_init for object that cannot just simply be initiated without specific parameters, such as Apache2::RequestRec.

v0.13.2 2020-11-20T22:14:54+0900
    - Corrected method _set_get_class_array when testing if data received are an array
    - Added parameter alias 'package' to parameter 'class' in _set_get_class
    - Added data type alias in _set_get_class for convenience.
    - Corrected pass_error to create an error object when it is passed a string rather than an error object.
    - Expanded method _parse_timestamp to include keyword 'now', relative timestamp and unix timestamp.

v0.13.1 2020-09-20T08:12:16+0900
    - Updated the error method to accept and use an Exception object as parameter
    - Updated the method throw in Module::Generic::Exception to either take a string and instantiate a new exception object or use the current one.
    - Improved the error() method to better report from the start of the call stack, excluding internal package and better handling exception object
    - Added "prefix" option in method Module::Generic::message to specify something else than "##" when displaying debugging message.
    - Updated clear_error to return $self instead of just 1 and allow chaining
    - Improved message_switch to avoid replacing existing message method
    - Modified __create_class that was missing the handling of object_array_object type of method.
    - Modified as_hash so that DateTime object are converted to string

v0.13.0 2020-07-10T10:30:10+0900
    - Added alias method _set_get_number_as_object for convenience and pointing to _set_get_number
    - Added the method append in Module::Generic::Scalar
    - Added an iterator class with Module::Generic::Iterator and Module::Generic::Iterator::Element
    - Added methods index, iterator and pos in Module::Generic::Array
    - Improved documentation for Module::Generic::Array
    - Corrected 2 typos in pod for Module::Generic::Scalar
    - Added method _set_get_lvalue to make it easy to implement object oriented lvalue methods
    - Changed the _set_get_number so that now it can also be accesed as lvalue
    - Added method is_even and is_odd to Module::Generic::Number
    - Added helper method _to_array_object to make it easy to create array object out of any parameters
    - Added method "has" as an alias to method "exists" to Module::Generic::Array and Module::Generic::Hash
    - dump now() uses Data::Dump instead of Data::Printer that offers a cleaner output
    - Added method map() map_array and map_hash in Module::Generic::Hash
    - Modified method as_hash in Module::Generic::Array to take an optional hash reference of options
    - Module::Generic::Hash object can now be instantiated with no hash provided. Before it required an hash reference to be provided to instantiate the object.
    - corrected methods map_array() and map_hash() in Module::Generic::Hash
    - Updated _set_get_url to better capture all kinds of url

v0.12.16 2020-06-17T15:03:17+0900
    - Added the helper method _is_a to simplify the check for object class
    - Added method get() and list() in Module::Generic::Array
    - Added method tr in Module::Generic::Scalar
    - Corrected error in exiting a for/foreach loop in Module::Generic::Array
    - Switched clone() method to using XS module Clone::clone()
    - Added methods new_array, new_hash, new_number and new_scalar in Module::Generic to make it more convenient to create object from those classes
    - Added some missing documentation to Module::Generic::Scalar

v0.12.15 2020-06-16T12:22:19+0900
    - Fixed some test units

v0.12.14 2020-05-28T05:46:04+0900
    - Tweaked Module::Generic::Number::_set_get_prop in my last desperate attempt to correct this tedious bug. Should fix RT #132714

v0.12.13 2020-05-27T13:58:32+0900
    - Corrected (hopefully) an issue whereby some undefined hash keys would not be undefined affecting test unit

v0.12.12 2020-05-25T13:55:00+0900
    - Corrected issues with Number::Format whereby it would revert to some default, so made all of the Number::Format argument explicit, even setting them to '' to avoid Number::Format from using its inadequate default
    - Implemented a workaround to Number::Format on Windows whereby some of the POSIX::localconv values are -1. When there is no value, such as when the locale is C or when it is on Windows (value being -1), then numeric values default to 0
    - Improved test units for when running on Windows Strawberry

v0.12.11 2020-05-25T14:56:15+0900

v0.12.10 2020-05-24T13:00:03+0900
    - Corrected bug in test unit for Module::Generic::Number. Fix bug RT #132671
    - Updated Module::Generic::Scalar to return undef when creating an object with an undefined value. Fix bug RT #132681 (

v0.12.9 2020-05-23T15:00:57+0900
    - Corrected bug in test unit for Module::Generic::Number

v0.12.8 2020-05-22T16:15:00+0900
    - Change POSIX requirement to version 1.53_01 and perl minimum version to v5.26.1

v0.12.7 2020-05-22T16:15:00+0900
    - Corrected RT bug #132664 in Module::Number::init

v0.12.6 2020-05-21T14:52:00+0900
    - Corrected a small bug in creating a Number::Format object.

v0.12.5 2020-05-20T23:22:00+0900
    - Change from TryCatch to Nice::Try because TryCatch got broken with release of Devel::Declare version 0.006020

v0.12.4 2020-05-16T17:22:00+0900
    - Specified more clearly version 0.006019 for Devel::Declare, because upper version break TryCatch

v0.12.3 2020-05-16
    - Corrected minor issues at line at lines 5428 and 5430 where a typo existed

v0.12.2 2020-05-05
    - Added Module::Generic::Number, its test units and pod documentations
    - _set_get_number now sets and gets a Module::Generic::Number instead of Text::Number
    - Added Module::Generic::Hash providing an object oriented approach to hash while stil enabling direct access as usual
    - Added missing test units

v0.12.1 2020-05-03
    - Corrected issue when @_ contains an undef value in __instantiate_object

v0.12.0 2020-05-01
    - Added colour_closest, colour_format, colour_parse and message_colour
    - Added missing pod documentation

v0.11.9 2020-04-27
    - Removed some ambiguity in the use of shift

v0.11.8 2020-04-25
    - Changed init when an object preset value looks like a package name, this now also requires that the package be loaded to consider it as a package requirement. Example: $self->{url} = 'URI'; requires an object URI for the object property 'url'
    - error() method now respect the 'no warnings' pragma
    - If 'no warnings' is set, an error wil still be set, but no warning will be printed out on STDERR

v0.11.7 2020-03-30

v0.11.6 2020-03-27

v0.11.5 2020-03-27

v0.11.4 2020-03-27

v0.11.3 2020-03-26

v0.11.2 2020-03-06

v0.11.1 2020-02-04

v0.11.0 2020-02-04

v0.10.2 2020-01-11

v0.10.1 2020-01-10

v0.10.0 2020-01-07

v0.9.0 2020-01-04

v0.8.0 2020-01-01

v0.7.2 2019-12-28

v0.7.1 2019-12-27

v0.7.0 2019-12-25

v0.6.11 2019-12-13

v0.6.10 2019-11-28

v0.6.9 2019-11-27

v0.6.8 2019-11-14

v0.6.7 2019-11-08

v0.6.6 2019-11-03
    - Adjusted the functionning of _set_get_hash_as_object so that it always returns an object even when there was no data. This is to avoid the perl error of "Can't call method "this_property" on an undefined value" when doing something like my_dynamic_hash->this_property

v0.6.5 2019-11-02
    - Added an inline package Module::Generic::Boolean to handle boolean value and the _set_get_boolean method
    - Added the use of Class::Load for loading dynamically packages as used in _instantiate_object
    - Added the methods true, false under Module::Generic to be used in _set_get_boolean and _is_class_loaded and _load_class which are wrappers for Class::Load::is_class_loaded and Class::Load::load_class

v0.6.4 2019-10-31
    - Added handling of undef passed as a parameter to some of the _set_get_* methods

v0.6.3 2019-10-23
    - Add _set_get_hash_as_object with recursive processing

v0.6.1 2019-10-19

v0.5.5 2919-10-13

v0.2.0 2019-08-28
    - Switched from Class::Struct to inner package for management of exceptions for better granularity

v0.1.0 2019-08-26
    - Initial version from pre-existing work done