Class: Siftly::Registry
- Inherits:
-
Object
- Object
- Siftly::Registry
- Defined in:
- lib/siftly/registry.rb
Class Method Summary collapse
- .available ⇒ Object
- .clear ⇒ Object
- .fetch(key) ⇒ Object
- .metadata_for(key) ⇒ Object
- .register(filter_class, replace: false, metadata: {}) ⇒ Object
- .registered?(key) ⇒ Boolean
- .resolve(key) ⇒ Object
Class Method Details
.available ⇒ Object
28 29 30 |
# File 'lib/siftly/registry.rb', line 28 def available filters.keys.sort end |
.clear ⇒ Object
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
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 |