Class: GenerativeUI::ComponentSet

Inherits:
Object
  • Object
show all
Defined in:
lib/generative_ui/component_set.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(components) ⇒ ComponentSet

Returns a new instance of ComponentSet.



11
12
13
# File 'lib/generative_ui/component_set.rb', line 11

def initialize(components)
  @components = components
end

Instance Attribute Details

#componentsObject (readonly)

Returns the value of attribute components.



5
6
7
# File 'lib/generative_ui/component_set.rb', line 5

def components
  @components
end

Class Method Details

.from_args(raw_components) ⇒ Object



7
8
9
# File 'lib/generative_ui/component_set.rb', line 7

def self.from_args(raw_components)
  new(Array(raw_components).map { |raw| Component.from_raw(raw) })
end

Instance Method Details

#by_idObject



15
16
17
18
19
# File 'lib/generative_ui/component_set.rb', line 15

def by_id
  @by_id ||= components.each_with_object({}) do |component, index|
    index[component.id] ||= component
  end
end

#duplicate_idsObject



33
34
35
# File 'lib/generative_ui/component_set.rb', line 33

def duplicate_ids
  ids.compact.group_by(&:itself).select { |_id, entries| entries.size > 1 }.keys
end

#fetch(id) ⇒ Object



25
26
27
# File 'lib/generative_ui/component_set.rb', line 25

def fetch(id)
  by_id.fetch(id)
end

#idsObject



29
30
31
# File 'lib/generative_ui/component_set.rb', line 29

def ids
  components.map(&:id)
end

#rootObject



21
22
23
# File 'lib/generative_ui/component_set.rb', line 21

def root
  by_id["root"]
end