# v0.5.0 2019-01-29 ### Added - `:nil?` predicate (`none?` is now an alias) (solnic) ### Fixed - `Operation::Key#ast` will now return a correct AST with non-Undefined inputs (solnic) [Compare v0.4.2...v0.5.0](https://github.com/dry-rb/dry-logic/compare/v0.4.2...v0.5.0) # v0.4.2 2017-09-15 ### Added - New `:case?` predicate matches a value against the given object with `#===` (flash-gordon) - New `:is?` predicate checks objects identity (using `#equal?`) (flash-gordon) ### Fixed - A bug with using custom predicates within a standalone module in `dry-validation` (flash-gordon) [Compare v0.4.1...v0.4.2](https://github.com/dry-rb/dry-logic/compare/v0.4.1...v0.4.2) # v0.4.1 2017-01-23 ### Changed - Predicates simply reuse other predicate methods instead of referring to them via `#[]` (georgemillo) ### Fixed - Warnings on MRI 2.4.0 are gone (jtippett) [Compare v0.4.0...v0.4.1](https://github.com/dry-rb/dry-logic/compare/v0.4.0...v0.4.1) # v0.4.0 2016-09-21 This is a partial rewrite focused on internal clean up and major performance improvements. This is also the beginning of the work to make this library first-class rather than "just" a rule backend for dry-validation and dry-types. ### Added - `Rule#[]` which applies a rule and always returns `true` or `false` (solnic) - `Rule#bind` which returns a rule with its predicate bound to a given object (solnic) - `Rule#eval_args` which evaluates unbound-methods-args in the context of a given object (solnic) - `Logic.Rule` builder function (solnic) - Nice `#inspect` on rules and operation objects (solnic) ### Changed - [BRAEKING] New result API (solnic) - [BREAKING] `Predicate` is now `Rule::Predicate` (solnic) - [BREAKING] `Rule::Conjunction` is now `Operation::And` (solnic) - [BREAKING] `Rule::Disjunction` is now `Operation::Or` (solnic) - [BREAKING] `Rule::ExlusiveDisjunction` is now `Operation::Xor` (solnic) - [BREAKING] `Rule::Implication` is now `Operation::Implication` (solnic) - [BREAKING] `Rule::Set` is now `Operation::Set` (solnic) - [BREAKING] `Rule::Each` is now `Operation::Each` (solnic) - [BREAKING] `Rule.new` accepts a predicate function as its first arg now (solnic) - [BREAKING] `Rule#name` is now `Rule#id` (solnic) - `Rule#parameters` is public now (solnic) [Compare v0.3.0...v0.4.0](https://github.com/dry-rb/dry-logic/compare/v0.3.0...v0.4.0) # v0.3.0 2016-07-01 ### Added - `:type?` predicate imported from dry-types (solnic) - `Rule#curry` interface (solnic) ### Changed - Predicates AST now includes information about args (names & possible values) (fran-worley + solnic) - Predicates raise errors when they are called with invalid arity (fran-worley + solnic) - Rules no longer evaluate input twice when building result objects (solnic) [Compare v0.2.3...v0.3.0](https://github.com/dry-rb/dry-logic/compare/v0.2.3...v0.3.0) # v0.2.3 2016-05-11 ### Added - `not_eql?`, `includes?`, `excludes?` predicates (fran-worley) ### Changed - Renamed `inclusion?` to `included_in?` and deprecated `inclusion?` (fran-worley) - Renamed `exclusion?` to `excluded_from?` and deprecated `exclusion?` (fran-worley) [Compare v0.2.2...v0.2.3](https://github.com/dry-rb/dry-logic/compare/v0.2.2...v0.2.3) # v0.2.2 2016-03-30 ### Added - `number?`, `odd?`, `even?` predicates (fran-worley) [Compare v0.2.1...v0.2.2](https://github.com/dry-rb/dry-logic/compare/v0.2.1...v0.2.2) # v0.2.1 2016-03-20 ### Fixed - Result AST for `Rule::Each` correctly maps elements with eql inputs (solnic) # v0.2.0 2016-03-11 ### Changed - Entire AST has been redefined (solnic) [Compare v0.1.4...v0.2.0](https://github.com/dry-rb/dry-logic/compare/v0.1.4...v0.2.0) # v0.1.4 2016-01-27 ### Added - Support for hash-names in `Check` and `Result` which can properly resolve input from nested results (solnic) [Compare v0.1.3...v0.1.4](https://github.com/dry-rb/dry-logic/compare/v0.1.3...v0.1.4) # v0.1.3 2016-01-27 ### Added - Support for resolving input from `Rule::Result` (solnic) ### Changed - `Check` and `Result` carry original input(s) (solnic) [Compare v0.1.2...v0.1.3](https://github.com/dry-rb/dry-logic/compare/v0.1.2...v0.1.3) # v0.1.2 2016-01-19 ### Fixed - `xor` returns wrapped results when used against another result-rule (solnic) [Compare v0.1.1...v0.1.2](https://github.com/dry-rb/dry-logic/compare/v0.1.1...v0.1.2) # v0.1.1 2016-01-18 ### Added - `Rule::Attr` which can be applied to a data object with attr readers (SunnyMagadan) - `Rule::Result` which can be applied to a result object (solnic) - `true?` and `false?` predicates (solnic) [Compare v0.1.0...v0.1.1](https://github.com/dry-rb/dry-logic/compare/v0.1.0...v0.1.1) # v0.1.0 2016-01-11 Code extracted from dry-validation 0.4.1