Module: Lite::Containers::TopN

Defined in:
lib/lite/containers/top_n.rb,
lib/lite/containers/top_n/heap.rb,
lib/lite/containers/top_n/deque.rb,
lib/lite/containers/top_n/error.rb,
lib/lite/containers/top_n/abstract.rb,
lib/lite/containers/top_n/avl_tree.rb

Defined Under Namespace

Modules: Abstract, Deque Classes: AvlTree, Error, Heap

Class Method Summary collapse

Class Method Details

.instance(backend, type, limit: nil, filter: nil, **backend_options) ⇒ Object

Raises:



16
17
18
19
20
21
22
# File 'lib/lite/containers/top_n.rb', line 16

def self.instance(backend, type, limit: nil, filter: nil, **backend_options)
  limit = Integer(limit) unless limit.nil?
  raise Error, "Expected positive integer or nil for limit, got '#{limit}'" unless limit.nil? || limit.positive?

  wrapper_class = wrapper_class(backend)
  wrapper_class.instance type, limit: limit, filter: filter, **backend_options
end

.register_backend(name, backend) ⇒ Object



8
9
10
# File 'lib/lite/containers/top_n.rb', line 8

def self.register_backend(name, backend)
  registry[name] = backend
end

.registryObject



12
13
14
# File 'lib/lite/containers/top_n.rb', line 12

def self.registry
  @registry ||= {}
end

.wrapper_class(name) ⇒ Object

Raises:



24
25
26
27
28
# File 'lib/lite/containers/top_n.rb', line 24

def self.wrapper_class(name)
  raise Error, "Unexpected backend: #{name}" unless registry.key?(name)

  registry[name]
end