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'