Module: GenerativeUI
- Defined in:
- lib/generative_ui.rb,
lib/generative_ui/tool.rb,
lib/generative_ui/engine.rb,
lib/generative_ui/catalog.rb,
lib/generative_ui/version.rb,
lib/generative_ui/renderer.rb,
lib/generative_ui/component.rb,
lib/generative_ui/attributes.rb,
lib/generative_ui/conventions.rb,
lib/generative_ui/component_set.rb,
lib/generative_ui/renderers/json.rb,
lib/generative_ui/structural_ref.rb,
lib/generative_ui/renderers/partial.rb,
app/helpers/generative_ui/view_helper.rb,
lib/generative_ui/component_validator.rb,
lib/generative_ui/component_definition.rb,
lib/generative_ui/component_tree_validator.rb,
lib/generative_ui/renderers/view_component.rb,
lib/generative_ui/invalid_component_tree_error.rb
Defined Under Namespace
Modules: Conventions, Renderers, ViewHelper
Classes: Attributes, Catalog, Component, ComponentDefinition, ComponentSet, ComponentTreeValidator, ComponentValidator, Configuration, Engine, InvalidComponentTreeError, Renderer, StructuralRef, Tool
Constant Summary
collapse
- VERSION =
'0.0.1'
Class Method Summary
collapse
Class Method Details
.configuration ⇒ Object
74
75
76
|
# File 'lib/generative_ui.rb', line 74
def configuration
@configuration ||= Configuration.new
end
|
70
71
72
|
# File 'lib/generative_ui.rb', line 70
def configure
yield configuration
end
|
.render(arguments, renderer:, catalog: :default, view_context: nil) ⇒ Object
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
# File 'lib/generative_ui.rb', line 92
def render(arguments, renderer:, catalog: :default, view_context: nil)
raise ArgumentError, 'arguments must be a Hash' unless arguments.is_a?(Hash)
unknown = arguments.keys.map(&:to_s) - %w[components]
raise InvalidComponentTreeError, { '_arguments' => ["unknown arguments: #{unknown.join(', ')}"] } if unknown.any?
components = arguments['components'] || arguments[:components]
raise InvalidComponentTreeError, { '_arguments' => ['components must be an array'] } unless components.is_a?(Array)
catalog = Catalog.coerce(catalog)
raise ArgumentError, 'generative UI catalog is empty' if catalog.empty?
set = ComponentSet.from_args(components)
validation = ComponentTreeValidator.call(set, catalog:)
raise InvalidComponentTreeError, validation.errors unless validation.valid?
resolve_renderer(renderer, view_context:, catalog:).call(set)
end
|
.renderer_for(view_context, renderer: nil, catalog: nil) ⇒ Object
82
83
84
85
86
87
88
89
90
|
# File 'lib/generative_ui.rb', line 82
def renderer_for(view_context, renderer: nil, catalog: nil)
name = (renderer || configuration.default_renderer).to_sym
factory = configuration.renderers[name]
raise ArgumentError, "Unknown renderer: #{name}" unless factory
factory.call(view_context).tap do |renderer|
renderer.catalog = catalog if catalog && renderer.respond_to?(:catalog=)
end
end
|
.reset_configuration! ⇒ Object
78
79
80
|
# File 'lib/generative_ui.rb', line 78
def reset_configuration!
@configuration = Configuration.new
end
|