Sha256: 3e6d9c76fc186a95f48742e011d8fe50f292322c27e1d9cc86d8d3985aea30e4

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

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 [](name)
        to_h[name]
      end

      def to_h
        @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

1 entries across 1 versions & 1 rubygems

Version Path
dry-validation-0.6.0 lib/dry/validation/result.rb