Class: OpenHAB::Core::Provider Abstract
- Inherits:
-
org.openhab.core.common.registry.AbstractProvider
- Object
- org.openhab.core.common.registry.AbstractProvider
- OpenHAB::Core::Provider
- Includes:
- Enumerable
- Defined in:
- lib/openhab/core/provider.rb
Overview
Direct Known Subclasses
Items::Metadata::Provider, Items::Provider, Rules::Provider, Things::Links::Provider, Things::Provider
Constant Summary collapse
- KNOWN_TYPES =
Known supported provider types
%i[items metadata things links].freeze
Class Attribute Summary collapse
-
.registry ⇒ org.openhab.core.common.registry.Registry
readonly
abstract
The registry that this provider provides elements for.
- .type ⇒ Symbol readonly
Class Method Summary collapse
-
.current(preferred_provider = nil, element = nil) ⇒ org.openhab.core.common.registry.Provider
Determines the current provider that should be used to create elements belonging to this registry.
Instance Method Summary collapse
-
#[](key) ⇒ Object
(also: #get)
Get an element from this provider.
-
#all ⇒ Array<Object>
(also: #getAll)
Get all elements in this provider.
- #inspect ⇒ String
Methods included from Enumerable
#all_groups, #all_members, #command, #decrease, #down, #equipments, #fast_forward, #groups, #increase, #locations, #member_of, #members, #move, #next, #not_member_of, #not_tagged, #off, #on, #pause, #play, #points, #previous, #refresh, #rewind, #stop, #tagged, #up
Class Attribute Details
.registry ⇒ org.openhab.core.common.registry.Registry (readonly)
The registry that this provider provides elements for.
103 104 105 |
# File 'lib/openhab/core/provider.rb', line 103 def registry raise NotImplementedError end |
.type ⇒ Symbol (readonly)
140 141 142 |
# File 'lib/openhab/core/provider.rb', line 140 def type name.split("::")[-2].downcase.to_sym end |
Class Method Details
.current(preferred_provider = nil, element = nil) ⇒ org.openhab.core.common.registry.Provider
Determines the current provider that should be used to create elements belonging to this registry.
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/openhab/core/provider.rb', line 74 def current(preferred_provider = nil, element = nil) preferred_provider ||= Thread.current[:openhab_providers]&.[](type) if preferred_provider.is_a?(Proc) preferred_provider = if preferred_provider.arity.zero? || element.nil? preferred_provider.call else preferred_provider.call(element) end end case preferred_provider when nil, :transient instance when :persistent registry.managed_provider.get when org.openhab.core.common.registry.ManagedProvider preferred_provider else raise ArgumentError, "#{preferred_provider.inspect} is not a ManagedProvider" end end |
Instance Method Details
#[](key) ⇒ Object Also known as: get
Get an element from this provider
172 173 174 |
# File 'lib/openhab/core/provider.rb', line 172 def [](key) @elements[key] end |
#all ⇒ Array<Object> Also known as: getAll
Get all elements in this provider
182 183 184 |
# File 'lib/openhab/core/provider.rb', line 182 def all @elements.values end |
#inspect ⇒ String
151 152 153 |
# File 'lib/openhab/core/provider.rb', line 151 def inspect "#<#{self.class.name}:#{object_id}>" end |