Sha256: fef96fc500c06f9d7acebe3218bc0ca0ddfe650039257285991050f12653154d

Contents?: true

Size: 817 Bytes

Versions: 18

Compression:

Stored size: 817 Bytes

Contents

# TODO: add #reverse and #reverse! methods

module DataMapper
  class Query
    class Sort
      # @api semipublic
      attr_reader :value

      # @api semipublic
      def direction
        @ascending ? :ascending : :descending
      end

      # @api private
      def <=>(other)
        other_value = other.value
        value_nil   = @value.nil?
        other_nil   = other_value.nil?

        cmp = case
          when value_nil then other_nil ? 0 : 1
          when other_nil then -1
          else
            @value <=> other_value
        end

        @ascending ? cmp : cmp * -1
      end

      private

      # @api private
      def initialize(value, ascending = true)
        @value     = value
        @ascending = ascending
      end
    end # class Sort
  end # class Query
end # module DataMapper

Version data entries

18 entries across 18 versions & 3 rubygems

Version Path
ardm-core-1.3.0 lib/dm-core/query/sort.rb
ardm-core-1.2.1 lib/dm-core/query/sort.rb
dm-core-1.2.1 lib/dm-core/query/sort.rb
ghost_dm-core-1.3.0.beta lib/dm-core/query/sort.rb
dm-core-1.2.0 lib/dm-core/query/sort.rb
dm-core-1.2.0.rc2 lib/dm-core/query/sort.rb
dm-core-1.2.0.rc1 lib/dm-core/query/sort.rb
dm-core-1.1.0 lib/dm-core/query/sort.rb
dm-core-1.1.0.rc3 lib/dm-core/query/sort.rb
dm-core-1.1.0.rc2 lib/dm-core/query/sort.rb
dm-core-1.1.0.rc1 lib/dm-core/query/sort.rb
dm-core-1.0.2 lib/dm-core/query/sort.rb
dm-core-1.0.1 lib/dm-core/query/sort.rb
dm-core-1.0.0 lib/dm-core/query/sort.rb
dm-core-1.0.0.rc3 lib/dm-core/query/sort.rb
dm-core-1.0.0.rc2 lib/dm-core/query/sort.rb
dm-core-1.0.0.rc1 lib/dm-core/query/sort.rb
dm-core-0.10.2 lib/dm-core/query/sort.rb