lib/dry/logic/rule.rb in dry-logic-0.1.4 vs lib/dry/logic/rule.rb in dry-logic-0.2.0

- old
+ new

@@ -1,52 +1,27 @@ module Dry module Logic class Rule - include Dry::Equalizer(:name, :predicate) + include Dry::Equalizer(:predicate, :options) - attr_reader :name, :predicate + attr_reader :predicate - class Negation < Rule - include Dry::Equalizer(:rule) + attr_reader :options - attr_reader :rule - - def initialize(rule) - @rule = rule - end - - def call(*args) - rule.(*args).negated - end - - def to_ary - [:not, rule.to_ary] - end - end - - def initialize(name, predicate) - @name = name + def initialize(predicate, options = {}) @predicate = predicate + @options = options end def predicate_id predicate.id end def type - :rule + raise NotImplementedError end - def call(*args) - Logic.Result(args, predicate.call, self) - end - - def to_ary - [type, [name, predicate.to_ary]] - end - alias_method :to_a, :to_ary - def and(other) Conjunction.new(self, other) end alias_method :&, :and @@ -68,26 +43,29 @@ def negation Negation.new(self) end def new(predicate) - self.class.new(name, predicate) + self.class.new(predicate, options) end def curry(*args) - self.class.new(name, predicate.curry(*args)) + self.class.new(predicate.curry(*args), options) end + + def each? + predicate.is_a?(Rule::Each) + end end end end +require 'dry/logic/rule/value' require 'dry/logic/rule/key' require 'dry/logic/rule/attr' -require 'dry/logic/rule/value' require 'dry/logic/rule/each' require 'dry/logic/rule/set' require 'dry/logic/rule/composite' +require 'dry/logic/rule/negation' require 'dry/logic/rule/check' -require 'dry/logic/rule/result' -require 'dry/logic/rule/group' require 'dry/logic/result'