class Mongoid::Contextual::Mongo
Public Instance Methods
sort_with_collation(values = nil, &block)
click to toggle source
# File lib/mongoid_collation.rb, line 6 def sort_with_collation(values = nil, &block) if klass.respond_to?(:collation_aliases) values = replace_collation_aliases(values) end sort_without_collation(values, &block) end
Private Instance Methods
collated_alias(key)
click to toggle source
# File lib/mongoid_collation.rb, line 49 def collated_alias(key) klass.collation_aliases[key.to_s] end
is_collated?(key)
click to toggle source
# File lib/mongoid_collation.rb, line 45 def is_collated?(key) klass.collation_aliases.has_key?(key.to_s) end
rebuild_origin_key(key, name)
click to toggle source
# File lib/mongoid_collation.rb, line 53 def rebuild_origin_key(key, name) ::Origin::Key.new(name, key.strategy, key.operator, key.expanded, &key.block) end
replace_collation_aliases(values)
click to toggle source
# File lib/mongoid_collation.rb, line 18 def replace_collation_aliases(values) case values when Hash values.dup.tap do |values_copy| values_copy.keys.each do |key| if is_collated?(key) values_copy[collated_alias(key)] = values[key] values_copy.delete(key) end end end else Array(values).dup.tap do |values_copy| values_copy.each do |key| if key.is_a?(Origin::Key) if is_collated?(key.name) values_copy.delete(key) values_copy << rebuild_origin_key(key, collated_alias(key.name)) end end end end end end