Class: Siftly::Registry

Inherits:
Object
  • Object
show all
Defined in:
lib/siftly/registry.rb

Class Method Summary collapse

Class Method Details

.availableObject



28
29
30
# File 'lib/siftly/registry.rb', line 28

def available
  filters.keys.sort
end

.clearObject



36
37
38
# File 'lib/siftly/registry.rb', line 36

def clear
  @filters = {}
end

.fetch(key) ⇒ Object



16
17
18
# File 'lib/siftly/registry.rb', line 16

def fetch(key)
  filters.fetch(key.to_sym) { raise UnknownFilterError, "unknown filter #{key.inspect}" }
end

.metadata_for(key) ⇒ Object



24
25
26
# File 'lib/siftly/registry.rb', line 24

def (key)
  fetch(key).fetch(:metadata)
end

.register(filter_class, replace: false, metadata: {}) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/siftly/registry.rb', line 6

def register(filter_class, replace: false, metadata: {})
  validate_filter_class!(filter_class)

  key = filter_class.key
  raise DuplicateFilterError, "filter #{key.inspect} is already registered" if !replace && filters.key?(key)

  filters[key] = { klass: filter_class, metadata: .dup.freeze }
  filter_class
end

.registered?(key) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/siftly/registry.rb', line 32

def registered?(key)
  filters.key?(key.to_sym)
end

.resolve(key) ⇒ Object



20
21
22
# File 'lib/siftly/registry.rb', line 20

def resolve(key)
  fetch(key).fetch(:klass)
end