class MemDB::IndexingObject
Public Class Methods
new()
click to toggle source
# File lib/mem_db/indexing_object.rb, line 7 def initialize @params = {} @attrs = {} @idx_value = {} end
Public Instance Methods
[](attr)
click to toggle source
# File lib/mem_db/indexing_object.rb, line 21 def [](attr) if @attrs.key?(attr) @attrs[attr] else @attrs[attr] ||= prepare_attr(attr) end end
[]=(param, value)
click to toggle source
# File lib/mem_db/indexing_object.rb, line 29 def []=(param, value) @params[param] = value end
assign!(params)
click to toggle source
# File lib/mem_db/indexing_object.rb, line 13 def assign!(params) @params = params @attrs.clear @idx_value.clear self end
delete(param)
click to toggle source
# File lib/mem_db/indexing_object.rb, line 33 def delete(param) @params.delete(param) @attrs.delete(param) end
idx_value(idx)
click to toggle source
# File lib/mem_db/indexing_object.rb, line 38 def idx_value(idx) if @idx_value.key?(idx) @idx_value[idx] else @idx_value[idx] ||= idx.value(self) end end
prepare_attr(attr)
click to toggle source
# File lib/mem_db/indexing_object.rb, line 46 def prepare_attr(attr) v = @params[attr] if v == MemDB::Idx::ANY || v.nil? || v.is_a?(Array) v else [v] end end