Sha256: 3a0c792ed14340bef1b70ebafe027b5471b8b16be3137df3441fb8a08f04fd05

Contents?: true

Size: 1.15 KB

Versions: 5

Compression:

Stored size: 1.15 KB

Contents

# frozen_string_literal: true
module Might
  # User provided filtering on particular parameter
  #
  class SortParameter
    DIRECTIONS = %w(asc desc).freeze
    REVERSED_DIRECTIONS = {
      'asc' => 'desc',
      'desc' => 'asc',
    }.freeze

    attr_reader :direction

    # @return [ParameterDefinition]
    #
    attr_reader :definition

    # @param ['asc', desc'] direction
    # @param [SortParameterDefinition]
    #
    def initialize(direction, definition)
      @direction = direction.to_s
      fail ArgumentError unless DIRECTIONS.include?(@direction)
      @definition = definition
      @validator = definition.validator
    end

    attr_reader :validator
    delegate :name, to: :definition
    delegate :valid?, to: :validator
    delegate :invalid?, to: :validator

    def errors
      validator.errors.full_messages
    end

    def ==(other)
      is_a?(other.class) &&
        direction == other.direction &&
        definition == other.definition
    end

    # @return ['asc', desc']
    #
    def direction
      if definition.reverse_direction?
        REVERSED_DIRECTIONS[@direction]
      else
        @direction
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

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