Sha256: 8ebe2d5e736a2f08589186692fb9d04773c00fd769784e97f18ef5a423eef060

Contents?: true

Size: 624 Bytes

Versions: 5

Compression:

Stored size: 624 Bytes

Contents

# frozen_string_literal: true
module Might
  # Validates filters and raises error if one of them is invalid
  #
  class FilterParametersValidator
    # @param app [#call]
    def initialize(app)
      @app = app
    end

    # @param env [<{:filter => <Might::FilterParameter>, Array>}]
    # @return [<{:filter => <Might::FilterParameter>, Array>}]
    #
    def call(env)
      params, errors = env

      invalid_filters = Array(params[:filter]).select(&:invalid?)
      messages = invalid_filters.flat_map(&:errors)

      app.call([params, errors.concat(messages)])
    end

    private

    attr_reader :app
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
might-0.7.6 lib/might/filter_parameters_validator.rb
might-0.7.5 lib/might/filter_parameters_validator.rb
might-0.7.4 lib/might/filter_parameters_validator.rb
might-0.7.3 lib/might/filter_parameters_validator.rb
might-0.7.2 lib/might/filter_parameters_validator.rb