Class: AtomicAdmin::Interaction::Manager
- Inherits:
-
Object
- Object
- AtomicAdmin::Interaction::Manager
- Includes:
- Enumerable
- Defined in:
- lib/atomic_admin/interaction/manager.rb
Constant Summary collapse
- INTERACTIONS =
{ analytics: AtomicAdmin::Interaction::Analytics, jsonform: AtomicAdmin::Interaction::JsonForm, resource: AtomicAdmin::Interaction::Resource, launch: AtomicAdmin::Interaction::Launch, }.freeze
Instance Method Summary collapse
- #[](key) ⇒ Object
- #add(key, type:, **kwargs) ⇒ Object
- #each(&block) ⇒ Object
- #for_type(type) ⇒ Object
- #get(key) ⇒ Object
-
#initialize ⇒ Manager
constructor
A new instance of Manager.
- #resolve(**kwargs) ⇒ Object
- #tap {|_self| ... } ⇒ Object
Constructor Details
#initialize ⇒ Manager
Returns a new instance of Manager.
12 13 14 15 |
# File 'lib/atomic_admin/interaction/manager.rb', line 12 def initialize @interactions = {} @curr_index = 0 end |
Instance Method Details
#[](key) ⇒ Object
37 38 39 |
# File 'lib/atomic_admin/interaction/manager.rb', line 37 def [](key) @interactions[key] end |
#add(key, type:, **kwargs) ⇒ Object
23 24 25 26 27 28 29 30 31 |
# File 'lib/atomic_admin/interaction/manager.rb', line 23 def add(key, type:, **kwargs) interaction_cls = INTERACTIONS[type] || AtomicAdmin::Interaction::Base interaction = interaction_cls.new(key:, type:, order: @curr_index, **kwargs) @interactions[key] = interaction @curr_index += 1 nil end |
#each(&block) ⇒ Object
17 18 19 20 21 |
# File 'lib/atomic_admin/interaction/manager.rb', line 17 def each(&block) @interactions.each do |key, interaction| block.call(key, interaction) end end |
#for_type(type) ⇒ Object
46 47 48 |
# File 'lib/atomic_admin/interaction/manager.rb', line 46 def for_type(type) @interactions.values.select { |interaction| interaction.type == type } end |
#get(key) ⇒ Object
33 34 35 |
# File 'lib/atomic_admin/interaction/manager.rb', line 33 def get(key) @interactions[key] end |
#resolve(**kwargs) ⇒ Object
51 52 53 54 55 56 |
# File 'lib/atomic_admin/interaction/manager.rb', line 51 def resolve(**kwargs) sorted = @interactions.sort_by { |key, interaction| interaction.order } sorted.map do |key, interaction| interaction.resolve(**kwargs) end end |
#tap {|_self| ... } ⇒ Object
41 42 43 44 |
# File 'lib/atomic_admin/interaction/manager.rb', line 41 def tap yield self self end |