All notable changes to this project will be documented in this file.
:finalize
block is not invoked on theoption
withoptional: true
flag;
- New options for option and param attributes:
- Support for attribute aliasing (
:as
parameter);- supports:
option
,param
;
- supports:
- Support for attribute auto-casting (
:auto_cast
parameter);- supports:
option
,param
;
- supports:
- Support for mutable attributes (
:mutable
parameter) with type-validation inside;- supports:
option
,options
,param
,params
;
- supports:
- Support for optional attributes (
:optional
parameter);- supports:
option
;
- supports:
- Support for attribute aliasing (
- SmartCore::Initializer::Configuration:
- Configuration setting
strict_options
now works separately "per-class" in all configs manner (each class shares the global state but has own state too) - Support for per-class/global
:auto_cast
configuration;- provides a global/per-class behavior for
:cast
option (false
by default);
- provides a global/per-class behavior for
- Configuration setting
options
declaration now supportsprivacy
option;params
declaration now supportsprivacy
option;
- Drop support of [email protected];
:default
attribute parameter now duplicates the passed value during object instantiation;:default
attribute parameter only works withoption
attribute (param
can't havedefault
parameter now);- Attribute values generated by
:finalize
are type-validated now too; - Now lambda-based
:finalize
attributes are being checked for the signature during attribute declaration; - Some error messages have become more readable;
send
method overlaping/rewriting: otions and params named assend
breaks the internal framework-related invocations of the attribute definitioning inside the custom object constructor (this name rewrites internal Ruby'ssend
method and brokes some things);
strict_options
config option for non-strict checking of passed options;
- Validation messages for incorrect attribute types;
- Updated
smart_types
dependency (~> 0.4.0
) to guarantee Ruby@3 compatibility; - Updated development dependencies;
- Support for Ruby 3;
- Moved from
TravisCI
to nothing (todo: migrate toGitHub Actions
). Temporary: we must run test cases locally. - Updated development dependencies;
- Deeply inherited entities lose their
__initializer_settings__
entitiy;
- Deeply inherited entities lose their class attribute definers;
extend_initialization_flow
alias method forSmartCore::Initializer.ext_init
;- Access methods to the instance attribute lists (
#__params
,#__options__
,#__attributes__
);
- Updated development dependencies;
- Constructor: disallow unknown option attributes;
- Release :)