Class: GenerativeUI::Renderers::Json

Inherits:
GenerativeUI::Renderer show all
Defined in:
lib/generative_ui/renderers/json.rb

Instance Method Summary collapse

Methods inherited from GenerativeUI::Renderer

#catalog, #catalog=, #render_component_instance

Constructor Details

#initialize(catalog: :default, mode: :materialized) ⇒ Json

Returns a new instance of Json.



6
7
8
9
# File 'lib/generative_ui/renderers/json.rb', line 6

def initialize(catalog: :default, mode: :materialized)
  super(catalog:)
  @mode = mode
end

Instance Method Details

#call(component_set) ⇒ Object

Raises:

  • (ArgumentError)


11
12
13
14
15
16
# File 'lib/generative_ui/renderers/json.rb', line 11

def call(component_set)
  return { 'components' => component_set.components.map(&:to_h) } if @mode == :flat
  raise ArgumentError, "Unknown JSON render mode: #{@mode}" unless @mode == :materialized

  super
end

#render_component(definition:, attributes:, additional_properties:) ⇒ Object



18
19
20
21
22
23
# File 'lib/generative_ui/renderers/json.rb', line 18

def render_component(definition:, attributes:, additional_properties:)
  props = attributes.dup
  props.merge!(additional_properties) if additional_properties

  { 'component' => definition.component, 'props' => props }.deep_stringify_keys
end