module Dry module Logic class Rule::Result < Rule def call(input) result = if name.is_a?(Hash) parent, _ = name.to_a.flatten input[parent] else input[name] end if result.success? Result::Wrapped.new(input, predicate.(evaluate_input(input)), self) else result end end def evaluate_input(result) if name.is_a?(Hash) parent, child = name.to_a.flatten result[parent].input[child] else result[name].input end end def type :res end end end end