Module: Ohm::Sorted::ClassMethods

Defined in:
lib/ohm/sorted.rb

Instance Method Summary collapse

Instance Method Details

#sorted(attribute, options = {}) ⇒ Object



145
146
147
# File 'lib/ohm/sorted.rb', line 145

def sorted(attribute, options={})
  sorted_indices << [attribute, options]
end

#sorted_find(attribute, dict = {}) ⇒ Object



153
154
155
156
157
158
159
160
# File 'lib/ohm/sorted.rb', line 153

def sorted_find(attribute, dict={})
  unless sorted_index_exists?(attribute, to_options(dict))
    raise index_not_found(attribute)
  end

  index_key = sorted_index_key(attribute, dict)
  Ohm::SortedSet.new(index_key, key, self)
end

#sorted_index_exists?(attribute, options = nil) ⇒ Boolean

Returns:

  • (Boolean)


162
163
164
# File 'lib/ohm/sorted.rb', line 162

def sorted_index_exists?(attribute, options=nil)
  !!sorted_indices.detect { |i| i == [attribute, options] }
end

#sorted_index_key(attribute, dict = {}) ⇒ Object



166
167
168
169
170
171
172
173
174
175
# File 'lib/ohm/sorted.rb', line 166

def sorted_index_key(attribute, dict={})
  index_key = [key, "sorted", attribute]
  if dict.keys.size == 1
    index_key << dict.keys.first
    index_key << dict.values.first
  elsif dict.keys.size > 1
    raise ArgumentError
  end
  index_key.join(":")
end

#sorted_indicesObject



149
150
151
# File 'lib/ohm/sorted.rb', line 149

def sorted_indices
  @sorted_indices ||= []
end