Sha256: 106aceb15f53d19bfd89d7227f99c34729ff3372c9eee8f1e40c35943f9f42e8

Contents?: true

Size: 691 Bytes

Versions: 17

Compression:

Stored size: 691 Bytes

Contents

module JSONAPIonify::Api
  class SortFieldSet
    include Enumerable
    delegate :[], :length, :to_s, :inspect, :each, to: :@list

    def initialize
      @list = []
      freeze
    end

    def to_h
      map(&:to_h).reduce(:merge)
    end

    def invert
      self.class.new.tap do |set|
        each do |field|
          name =
            case field.order
            when :asc
              "-#{field.name}"
            when :desc
              "#{field.name}"
            end
          set << SortField.new(name)
        end
      end
    end

    def <<(field)
      raise TypeError unless field.is_a? SortField
      @list << field unless @list.include? field
    end

  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
jsonapionify-0.12.10 lib/jsonapionify/api/sort_field_set.rb
jsonapionify-0.12.9 lib/jsonapionify/api/sort_field_set.rb
jsonapionify-0.12.8 lib/jsonapionify/api/sort_field_set.rb
jsonapionify-0.12.7 lib/jsonapionify/api/sort_field_set.rb
jsonapionify-0.12.5 lib/jsonapionify/api/sort_field_set.rb
jsonapionify-0.12.4 lib/jsonapionify/api/sort_field_set.rb
jsonapionify-0.12.3 lib/jsonapionify/api/sort_field_set.rb
jsonapionify-0.12.2 lib/jsonapionify/api/sort_field_set.rb
jsonapionify-0.12.1 lib/jsonapionify/api/sort_field_set.rb
jsonapionify-0.12.0 lib/jsonapionify/api/sort_field_set.rb
jsonapionify-0.11.11 lib/jsonapionify/api/sort_field_set.rb
jsonapionify-0.11.10 lib/jsonapionify/api/sort_field_set.rb
jsonapionify-0.11.9 lib/jsonapionify/api/sort_field_set.rb
jsonapionify-0.11.8 lib/jsonapionify/api/sort_field_set.rb
jsonapionify-0.11.7 lib/jsonapionify/api/sort_field_set.rb
jsonapionify-0.11.6 lib/jsonapionify/api/sort_field_set.rb
jsonapionify-0.11.5 lib/jsonapionify/api/sort_field_set.rb