Sha256: 6772b94873508941972e0ee4f26d83f2716d17c8e00e48d96d7d9516594bfd4b

Contents?: true

Size: 615 Bytes

Versions: 4

Compression:

Stored size: 615 Bytes

Contents

module Gate
  class Result
    attr_reader :attributes

    def initialize(attributes: {}, errors: {})
      @attributes = attributes
      @errors = errors
    end

    def valid?
      errors.empty?
    end

    def errors
      _errors(@errors)
    end

    def to_h
      {
        attributes: attributes,
        errors: @errors
      }
    end

    private

    def _errors(hash)
      hash.each_with_object({}) do |(k, v), result|
        if v.is_a?(Hash)
          nested = _errors(v)

          result[k] = nested if nested.any?
        else
          result[k] = v
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
gate-0.4.1 lib/gate/result.rb
gate-0.4.0 lib/gate/result.rb
gate-0.3.0 lib/gate/result.rb
gate-0.2.0 lib/gate/result.rb