- Introduce
Uber::Optionas a replacement forUber::Options::Value. It is still there, but deprecated. - New API for
Uber::Builder: You now add builders toUber::Builder::Buildersand simply call that instance while passing in context and args. This allows very simple reusable builders that can be used anywhere. Uber::Optionsnow usesUber::Option.- Removing
Uber::Versionas this is done nicely byGem::Version.
Value#evaluateis now#call. This will make it easier to introduce Null objects.- Options passed to
::buildsare now wrapped inUber::Options::Valuewhich allows specifying builder class methods usingbuilds :builder_method. Builder::class_buildernow accepts an optional context object which is used toinstance_execthe builder blocks. This allows to share predefined builder blocks between different classes while resolving the constants in the respective class.
- Add
inheritable_attr :title, clone: false. Thanks to @katafrakt. - When calling
Option::Value#evaluatewithnilas context, and theValuerepresents a lambda, the block is called it its original context viablock.call.
- Add proc syntax for builders. This allows using
returnin the block. Thanks to @dutow for implementing this.
- Make it run with Ruby 2.2.
- Don't clone nil, false, true and symbols in
::inheritable_attr.
- Builders are not inherited to subclasses. This allows instantiating subclasses directly without running builders.
- Add
Uber::Builder.
- Add
Uber::Delegatesthat provides delegation that can be overridden and called withsuper.
- Add
Uber::Callableand support for it inOptions::Value.
- Fix
Version#>=partially.
- Add
Uber::Versionfor simple gem version deciders.
- Fix a bug where
dynamic: truewouldn't invoke a method but try to run it as a block.
- Add
Optionsand `Options::Value´ for abstracting dynamic options.
- Add
::inheritable_attr.