Sha256: b55474d14c10f3632a09d186d2cb2655ecce8069971bd0f29029f8910c1d0665

Contents?: true

Size: 1007 Bytes

Versions: 3

Compression:

Stored size: 1007 Bytes

Contents

module Dry
  module Validation
    class Result
      include Enumerable

      attr_reader :rule_results

      def initialize(rule_results)
        @rule_results = rule_results
      end

      def each(&block)
        rule_results.each(&block)
      end

      def to_h
        each_with_object({}) { |result, hash| hash[result.name] = result }
      end

      def merge!(other)
        rule_results.concat(other.rule_results)
      end

      def to_ary
        failures.map(&:to_ary)
      end

      def <<(rule_result)
        rule_results << rule_result
      end

      def with_values(names, &block)
        values = names.map { |name| by_name(name) }.compact.map(&:input)
        yield(values) if values.size == names.size
      end

      def by_name(name)
        successes.detect { |rule_result| rule_result.name == name }
      end

      def successes
        rule_results.select(&:success?)
      end

      def failures
        rule_results.select(&:failure?)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dry-validation-0.5.0 lib/dry/validation/result.rb
dry-validation-0.4.1 lib/dry/validation/result.rb
dry-validation-0.4.0 lib/dry/validation/result.rb