Class: Kward::PluginUI::Backend
- Inherits:
-
Object
- Object
- Kward::PluginUI::Backend
- Defined in:
- lib/kward/plugins/ui.rb
Overview
Adapts frontend callbacks to the structured plugin UI contract.
Instance Attribute Summary collapse
-
#capabilities ⇒ Object
readonly
Returns the value of attribute capabilities.
Instance Method Summary collapse
- #emit(kind, payload) ⇒ Object
-
#initialize(capabilities: {}, requester: nil, emitter: nil) ⇒ Backend
constructor
A new instance of Backend.
- #request(kind, payload, cancellation: nil) ⇒ Object
- #supported?(feature) ⇒ Boolean
Constructor Details
#initialize(capabilities: {}, requester: nil, emitter: nil) ⇒ Backend
Returns a new instance of Backend.
20 21 22 23 24 |
# File 'lib/kward/plugins/ui.rb', line 20 def initialize(capabilities: {}, requester: nil, emitter: nil) @capabilities = FEATURES.to_h { |feature| [feature, capability_enabled?(capabilities, feature)] }.freeze @requester = requester @emitter = emitter end |
Instance Attribute Details
#capabilities ⇒ Object (readonly)
Returns the value of attribute capabilities.
26 27 28 |
# File 'lib/kward/plugins/ui.rb', line 26 def capabilities @capabilities end |
Instance Method Details
#emit(kind, payload) ⇒ Object
38 39 40 41 42 43 |
# File 'lib/kward/plugins/ui.rb', line 38 def emit(kind, payload) return false unless supported?(kind) && @emitter @emitter.call(kind.to_sym, payload) true end |
#request(kind, payload, cancellation: nil) ⇒ Object
32 33 34 35 36 |
# File 'lib/kward/plugins/ui.rb', line 32 def request(kind, payload, cancellation: nil) return nil unless supported?(kind) && @requester @requester.call(kind.to_sym, payload, cancellation: cancellation) end |
#supported?(feature) ⇒ Boolean
28 29 30 |
# File 'lib/kward/plugins/ui.rb', line 28 def supported?(feature) @capabilities.fetch(feature.to_sym, false) end |