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