Sha256: 18414d5ec16ab3a9cd8a1904b973c3358068721285b4afaa2b978d8e6ec5e5bb

Contents?: true

Size: 698 Bytes

Versions: 1

Compression:

Stored size: 698 Bytes

Contents

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

    def initialize
      @list = []
      freeze
    end

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

    def reverse
      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

1 entries across 1 versions & 1 rubygems

Version Path
jsonapionify-0.9.0 lib/jsonapionify/api/sort_field_set.rb