class Dry::Logic::Result
Constants
- SUCCESS
Attributes
id[R]
serializer[R]
success[R]
Public Class Methods
new(success, id = nil, &block)
click to toggle source
# File lib/dry/logic/result.rb, line 22 def initialize(success, id = nil, &block) @success = success @id = id @serializer = block end
Public Instance Methods
ast(input = Undefined)
click to toggle source
# File lib/dry/logic/result.rb, line 40 def ast(input = Undefined) serializer.(input) end
failure?()
click to toggle source
# File lib/dry/logic/result.rb, line 32 def failure? !success? end
success?()
click to toggle source
# File lib/dry/logic/result.rb, line 28 def success? success end
to_ast()
click to toggle source
# File lib/dry/logic/result.rb, line 44 def to_ast if id [type, [id, ast]] else ast end end
to_s()
click to toggle source
# File lib/dry/logic/result.rb, line 52 def to_s visit(to_ast) end
type()
click to toggle source
# File lib/dry/logic/result.rb, line 36 def type success? ? :success : :failure end
Private Instance Methods
visit(ast)
click to toggle source
# File lib/dry/logic/result.rb, line 58 def visit(ast) __send__(:"visit_#{ast[0]}", ast[1]) end
visit_and(node)
click to toggle source
# File lib/dry/logic/result.rb, line 72 def visit_and(node) left, right = node "#{visit(left)} AND #{visit(right)}" end
visit_hint(node)
click to toggle source
# File lib/dry/logic/result.rb, line 91 def visit_hint(node) visit(node) end
visit_not(node)
click to toggle source
# File lib/dry/logic/result.rb, line 87 def visit_not(node) "not(#{visit(node)})" end
visit_or(node)
click to toggle source
# File lib/dry/logic/result.rb, line 77 def visit_or(node) left, right = node "#{visit(left)} OR #{visit(right)}" end
visit_predicate(node)
click to toggle source
# File lib/dry/logic/result.rb, line 62 def visit_predicate(node) name, args = node if args.empty? name.to_s else "#{name}(#{args.map(&:last).map(&:inspect).join(", ")})" end end
visit_xor(node)
click to toggle source
# File lib/dry/logic/result.rb, line 82 def visit_xor(node) left, right = node "#{visit(left)} XOR #{visit(right)}" end