Sha256: b8ef0323aed02809784cdb8da73419be13eb465a7e75fc863053ef465a81680c

Contents?: true

Size: 1.18 KB

Versions: 5

Compression:

Stored size: 1.18 KB

Contents

require_relative 'sort_value_validator'

module Might
  # Sorting parameter definition
  #
  class SortParameterDefinition
    # @return [String]
    attr_reader :name

    # If the property name doesn't match the name in the query string, use the :as option
    # @return [String]
    attr_reader :as

    # @return [Boolean]
    attr_reader :reverse_direction

    # @param [String] name of the field
    # @param [String] as (#name) alias for the property
    # @param [Boolean] reverse_direction (false) default sorting direction
    #
    def initialize(name, as: name, reverse_direction: false)
      @name = name.to_s
      @as = as.to_s
      @reverse_direction = reverse_direction
    end

    # If two parameters have the same name, they are equal.
    delegate :hash, to: :name

    def eql?(other)
      other.is_a?(self.class) && other.name == name
    end

    def ==(other)
      other.is_a?(self.class) &&
        other.name == name &&
        other.as == as
    end

    alias_method :reverse_direction?, :reverse_direction

    def validator
      SortValueValidator.build(self).new
    end

    def defined?
      true
    end

    def undefined?
      !self.defined?
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
might-0.5.1 lib/might/sort_parameter_definition.rb
might-0.5.0 lib/might/sort_parameter_definition.rb
might-0.4.0 lib/might/sort_parameter_definition.rb
might-0.3.1 lib/might/sort_parameter_definition.rb
might-0.3.0 lib/might/sort_parameter_definition.rb