Class: SimpleJsonapi::Parameters::SortFieldSpec

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_jsonapi/parameters/sort_spec.rb

Overview

Represents a single field (and direction) in a SortSpec.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(spec) ⇒ SortFieldSpec

Returns a new instance of SortFieldSpec.

Parameters:

  • spec (String)


72
73
74
75
76
77
78
79
# File 'lib/simple_jsonapi/parameters/sort_spec.rb', line 72

def initialize(spec)
  if spec =~ /\A(-?)(\w+)\Z/
    self.field = $2.to_sym
    self.dir = ($1 == '-' ? :desc : :asc)
  else
    raise ArgumentError, "field spec must match 'field' or '-field'"
  end
end

Instance Attribute Details

#dir:asc, :desc

Returns:

  • (:asc, :desc)


68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/simple_jsonapi/parameters/sort_spec.rb', line 68

class SortFieldSpec
  attr_accessor :field, :dir

  # @param spec [String]
  def initialize(spec)
    if spec =~ /\A(-?)(\w+)\Z/
      self.field = $2.to_sym
      self.dir = ($1 == '-' ? :desc : :asc)
    else
      raise ArgumentError, "field spec must match 'field' or '-field'"
    end
  end

  def asc?
    dir == :asc
  end

  def desc?
    dir == :desc
  end

  def dup
    SortFieldSpec.new(to_s)
  end

  def ==(other)
    other.respond_to?(:field) && other.respond_to?(:dir) && [field, dir] == [other.field, other.dir]
  end
  alias_method :eql?, :==

  def hash
    [field, dir].hash
  end

  def to_s
    "#{'-' if desc?}#{field}"
  end
  alias_method :inspect, :to_s
end

#fieldObject

Returns Symbol.

Returns:

  • Symbol



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/simple_jsonapi/parameters/sort_spec.rb', line 68

class SortFieldSpec
  attr_accessor :field, :dir

  # @param spec [String]
  def initialize(spec)
    if spec =~ /\A(-?)(\w+)\Z/
      self.field = $2.to_sym
      self.dir = ($1 == '-' ? :desc : :asc)
    else
      raise ArgumentError, "field spec must match 'field' or '-field'"
    end
  end

  def asc?
    dir == :asc
  end

  def desc?
    dir == :desc
  end

  def dup
    SortFieldSpec.new(to_s)
  end

  def ==(other)
    other.respond_to?(:field) && other.respond_to?(:dir) && [field, dir] == [other.field, other.dir]
  end
  alias_method :eql?, :==

  def hash
    [field, dir].hash
  end

  def to_s
    "#{'-' if desc?}#{field}"
  end
  alias_method :inspect, :to_s
end

Instance Method Details

#==(other) ⇒ Object Also known as: eql?



93
94
95
# File 'lib/simple_jsonapi/parameters/sort_spec.rb', line 93

def ==(other)
  other.respond_to?(:field) && other.respond_to?(:dir) && [field, dir] == [other.field, other.dir]
end

#asc?Boolean

Returns:

  • (Boolean)


81
82
83
# File 'lib/simple_jsonapi/parameters/sort_spec.rb', line 81

def asc?
  dir == :asc
end

#desc?Boolean

Returns:

  • (Boolean)


85
86
87
# File 'lib/simple_jsonapi/parameters/sort_spec.rb', line 85

def desc?
  dir == :desc
end

#dupObject



89
90
91
# File 'lib/simple_jsonapi/parameters/sort_spec.rb', line 89

def dup
  SortFieldSpec.new(to_s)
end

#hashObject



98
99
100
# File 'lib/simple_jsonapi/parameters/sort_spec.rb', line 98

def hash
  [field, dir].hash
end

#to_sObject Also known as: inspect



102
103
104
# File 'lib/simple_jsonapi/parameters/sort_spec.rb', line 102

def to_s
  "#{'-' if desc?}#{field}"
end