Module: RatatuiRuby::TUI::WidgetFactories
- Included in:
- RatatuiRuby::TUI
- Defined in:
- lib/ratatui_ruby/tui/widget_factories.rb
Overview
Widget factory methods for Session.
Provides convenient access to all Widgets::* classes without fully qualifying the class names. This is the largest mixin, covering all renderable UI components.
All factories use DWIM hash coercion: both ‘tui.table(hash)` and `tui.table(**hash)` work correctly.
Instance Method Summary collapse
-
#axis(first = nil, **kwargs) ⇒ Widgets::Axis
Creates a Widgets::Axis.
-
#bar(first = nil, **kwargs) ⇒ Widgets::BarChart::Bar
Creates a Widgets::BarChart::Bar.
-
#bar_chart(first = nil, **kwargs) ⇒ Widgets::BarChart
Creates a Widgets::BarChart.
-
#bar_chart_bar(first = nil, **kwargs) ⇒ Widgets::BarChart::Bar
Creates a Widgets::BarChart::Bar (alias).
-
#bar_chart_bar_group(first = nil, **kwargs) ⇒ Widgets::BarChart::BarGroup
Creates a Widgets::BarChart::BarGroup (alias).
-
#bar_group(first = nil, **kwargs) ⇒ Widgets::BarChart::BarGroup
Creates a Widgets::BarChart::BarGroup.
-
#block(first = nil, **kwargs) ⇒ Widgets::Block
Creates a Widgets::Block.
-
#calendar(first = nil, **kwargs) ⇒ Widgets::Calendar
Creates a Widgets::Calendar.
-
#canvas(first = nil, **kwargs) ⇒ Widgets::Canvas
Creates a Widgets::Canvas.
-
#center(first = nil, **kwargs) ⇒ Widgets::Center
Creates a Widgets::Center.
-
#chart(first = nil, **kwargs) ⇒ Widgets::Chart
Creates a Widgets::Chart.
-
#clear(first = nil, **kwargs) ⇒ Widgets::Clear
Creates a Widgets::Clear.
-
#cursor(first = nil, **kwargs) ⇒ Widgets::Cursor
Creates a Widgets::Cursor.
-
#dataset(first = nil, **kwargs) ⇒ Widgets::Dataset
Creates a Widgets::Dataset.
-
#gauge(first = nil, **kwargs) ⇒ Widgets::Gauge
Creates a Widgets::Gauge.
-
#line_gauge(first = nil, **kwargs) ⇒ Widgets::LineGauge
Creates a Widgets::LineGauge.
-
#list(first = nil, **kwargs) ⇒ Widgets::List
Creates a Widgets::List.
-
#list_item(first = nil, **kwargs) ⇒ Widgets::ListItem
(also: #item)
Creates a Widgets::ListItem.
-
#overlay(first = nil, **kwargs) ⇒ Widgets::Overlay
Creates a Widgets::Overlay.
-
#paragraph(first = nil, **kwargs) ⇒ Widgets::Paragraph
Creates a Widgets::Paragraph.
-
#ratatui_logo(first = nil, **kwargs) ⇒ Widgets::RatatuiLogo
Creates a Widgets::RatatuiLogo.
-
#ratatui_mascot(first = nil, **kwargs) ⇒ Widgets::RatatuiMascot
Creates a Widgets::RatatuiMascot.
-
#row(first = nil, **kwargs) ⇒ Widgets::Row
Creates a Widgets::Row (for Table rows).
-
#scrollbar(first = nil, **kwargs) ⇒ Widgets::Scrollbar
Creates a Widgets::Scrollbar.
-
#shape_label(first = nil, **kwargs) ⇒ Widgets::Shape::Label
Creates a Widgets::Shape::Label.
-
#sparkline(first = nil, **kwargs) ⇒ Widgets::Sparkline
Creates a Widgets::Sparkline.
-
#table(first = nil, **kwargs) ⇒ Widgets::Table
Creates a Widgets::Table.
-
#table_cell(first = nil, **kwargs) ⇒ Widgets::Cell
Creates a Widgets::Cell (for Table cells).
-
#table_row(first = nil, **kwargs) ⇒ Widgets::Row
Creates a Widgets::Row (alias for table row).
-
#tabs(first = nil, **kwargs) ⇒ Widgets::Tabs
Creates a Widgets::Tabs.
-
#widget(type, first = nil) ⇒ Widgets::*
Creates a widget by type symbol.
Instance Method Details
#axis(first = nil, **kwargs) ⇒ Widgets::Axis
Creates a Widgets::Axis.
142 143 144 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 142 def axis(first = nil, **kwargs) Widgets::Axis.coerce_args(first, kwargs) end |
#bar(first = nil, **kwargs) ⇒ Widgets::BarChart::Bar
Creates a Widgets::BarChart::Bar.
106 107 108 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 106 def (first = nil, **kwargs) Widgets::BarChart::Bar.coerce_args(first, kwargs) end |
#bar_chart(first = nil, **kwargs) ⇒ Widgets::BarChart
Creates a Widgets::BarChart.
100 101 102 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 100 def (first = nil, **kwargs) Widgets::BarChart.coerce_args(first, kwargs) end |
#bar_chart_bar(first = nil, **kwargs) ⇒ Widgets::BarChart::Bar
Creates a Widgets::BarChart::Bar (alias).
118 119 120 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 118 def (first = nil, **kwargs) Widgets::BarChart::Bar.coerce_args(first, kwargs) end |
#bar_chart_bar_group(first = nil, **kwargs) ⇒ Widgets::BarChart::BarGroup
Creates a Widgets::BarChart::BarGroup (alias).
124 125 126 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 124 def (first = nil, **kwargs) Widgets::BarChart::BarGroup.coerce_args(first, kwargs) end |
#bar_group(first = nil, **kwargs) ⇒ Widgets::BarChart::BarGroup
Creates a Widgets::BarChart::BarGroup.
112 113 114 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 112 def (first = nil, **kwargs) Widgets::BarChart::BarGroup.coerce_args(first, kwargs) end |
#block(first = nil, **kwargs) ⇒ Widgets::Block
Creates a Widgets::Block.
21 22 23 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 21 def block(first = nil, **kwargs) Widgets::Block.coerce_args(first, kwargs) end |
#calendar(first = nil, **kwargs) ⇒ Widgets::Calendar
Creates a Widgets::Calendar.
154 155 156 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 154 def calendar(first = nil, **kwargs) Widgets::Calendar.coerce_args(first, kwargs) end |
#canvas(first = nil, **kwargs) ⇒ Widgets::Canvas
Creates a Widgets::Canvas.
160 161 162 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 160 def canvas(first = nil, **kwargs) Widgets::Canvas.coerce_args(first, kwargs) end |
#center(first = nil, **kwargs) ⇒ Widgets::Center
Creates a Widgets::Center.
184 185 186 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 184 def center(first = nil, **kwargs) Widgets::Center.coerce_args(first, kwargs) end |
#chart(first = nil, **kwargs) ⇒ Widgets::Chart
Creates a Widgets::Chart.
130 131 132 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 130 def chart(first = nil, **kwargs) Widgets::Chart.coerce_args(first, kwargs) end |
#clear(first = nil, **kwargs) ⇒ Widgets::Clear
Creates a Widgets::Clear.
166 167 168 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 166 def clear(first = nil, **kwargs) Widgets::Clear.coerce_args(first, kwargs) end |
#cursor(first = nil, **kwargs) ⇒ Widgets::Cursor
Creates a Widgets::Cursor.
172 173 174 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 172 def cursor(first = nil, **kwargs) Widgets::Cursor.coerce_args(first, kwargs) end |
#dataset(first = nil, **kwargs) ⇒ Widgets::Dataset
Creates a Widgets::Dataset.
136 137 138 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 136 def dataset(first = nil, **kwargs) Widgets::Dataset.coerce_args(first, kwargs) end |
#gauge(first = nil, **kwargs) ⇒ Widgets::Gauge
Creates a Widgets::Gauge.
82 83 84 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 82 def gauge(first = nil, **kwargs) Widgets::Gauge.coerce_args(first, kwargs) end |
#line_gauge(first = nil, **kwargs) ⇒ Widgets::LineGauge
Creates a Widgets::LineGauge.
88 89 90 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 88 def line_gauge(first = nil, **kwargs) Widgets::LineGauge.coerce_args(first, kwargs) end |
#list(first = nil, **kwargs) ⇒ Widgets::List
Creates a Widgets::List.
33 34 35 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 33 def list(first = nil, **kwargs) Widgets::List.coerce_args(first, kwargs) end |
#list_item(first = nil, **kwargs) ⇒ Widgets::ListItem Also known as: item
Creates a Widgets::ListItem.
39 40 41 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 39 def list_item(first = nil, **kwargs) Widgets::ListItem.coerce_args(first, kwargs) end |
#overlay(first = nil, **kwargs) ⇒ Widgets::Overlay
Creates a Widgets::Overlay.
178 179 180 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 178 def (first = nil, **kwargs) Widgets::Overlay.coerce_args(first, kwargs) end |
#paragraph(first = nil, **kwargs) ⇒ Widgets::Paragraph
Creates a Widgets::Paragraph.
27 28 29 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 27 def paragraph(first = nil, **kwargs) Widgets::Paragraph.coerce_args(first, kwargs) end |
#ratatui_logo(first = nil, **kwargs) ⇒ Widgets::RatatuiLogo
Creates a Widgets::RatatuiLogo.
190 191 192 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 190 def ratatui_logo(first = nil, **kwargs) Widgets::RatatuiLogo.coerce_args(first, kwargs) end |
#ratatui_mascot(first = nil, **kwargs) ⇒ Widgets::RatatuiMascot
Creates a Widgets::RatatuiMascot.
196 197 198 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 196 def ratatui_mascot(first = nil, **kwargs) Widgets::RatatuiMascot.coerce_args(first, kwargs) end |
#row(first = nil, **kwargs) ⇒ Widgets::Row
Creates a Widgets::Row (for Table rows).
58 59 60 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 58 def row(first = nil, **kwargs) Widgets::Row.coerce_args(first, kwargs) end |
#scrollbar(first = nil, **kwargs) ⇒ Widgets::Scrollbar
Creates a Widgets::Scrollbar.
148 149 150 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 148 def (first = nil, **kwargs) Widgets::Scrollbar.coerce_args(first, kwargs) end |
#shape_label(first = nil, **kwargs) ⇒ Widgets::Shape::Label
Creates a Widgets::Shape::Label.
202 203 204 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 202 def shape_label(first = nil, **kwargs) Widgets::Shape::Label.coerce_args(first, kwargs) end |
#sparkline(first = nil, **kwargs) ⇒ Widgets::Sparkline
Creates a Widgets::Sparkline.
94 95 96 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 94 def sparkline(first = nil, **kwargs) Widgets::Sparkline.coerce_args(first, kwargs) end |
#table(first = nil, **kwargs) ⇒ Widgets::Table
Creates a Widgets::Table.
52 53 54 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 52 def table(first = nil, **kwargs) Widgets::Table.coerce_args(first, kwargs) end |
#table_cell(first = nil, **kwargs) ⇒ Widgets::Cell
Creates a Widgets::Cell (for Table cells).
70 71 72 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 70 def table_cell(first = nil, **kwargs) Widgets::Cell.coerce_args(first, kwargs) end |
#table_row(first = nil, **kwargs) ⇒ Widgets::Row
Creates a Widgets::Row (alias for table row).
64 65 66 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 64 def table_row(first = nil, **kwargs) Widgets::Row.coerce_args(first, kwargs) end |
#tabs(first = nil, **kwargs) ⇒ Widgets::Tabs
Creates a Widgets::Tabs.
76 77 78 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 76 def tabs(first = nil, **kwargs) Widgets::Tabs.coerce_args(first, kwargs) end |
#widget(type, first = nil) ⇒ Widgets::*
Creates a widget by type symbol.
Plugin systems and config-driven UIs need to instantiate widgets by name. Without a dispatcher, you need tedious case statements or reflection.
This method routes widget creation through a single entry point. Pass the type as a symbol and the remaining parameters as kwargs.
Use it for dynamic UI generation, dashboard builders, or plugin architectures.
Also available as: tui.paragraph, tui.list, etc.
Examples
– SPDX-SnippetBegin SPDX-FileCopyrightText: 2026 Kerrick Long SPDX-License-Identifier: MIT-0 ++
tui.(:paragraph, text: "Hello World")
tui.(:list, items: %w[One Two Three])
# Config-driven widget creation
.each do |cfg|
frame.(tui.(cfg[:type], **cfg[:options]), area)
end
– SPDX-SnippetEnd ++
242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 |
# File 'lib/ratatui_ruby/tui/widget_factories.rb', line 242 def (type, first = nil, **) case type when :block then block(first, **) when :paragraph then paragraph(first, **) when :list then list(first, **) when :table then table(first, **) when :tabs then tabs(first, **) when :gauge then gauge(first, **) when :line_gauge then line_gauge(first, **) when :sparkline then sparkline(first, **) when :bar_chart then (first, **) when :chart then chart(first, **) when :scrollbar then (first, **) when :calendar then calendar(first, **) when :canvas then canvas(first, **) when :clear then clear(first, **) when :cursor then cursor(first, **) when :overlay then (first, **) when :center then center(first, **) when :ratatui_logo then ratatui_logo(first, **) when :ratatui_mascot then ratatui_mascot(first, **) else raise ArgumentError, "Unknown widget type: #{type.inspect}. " \ "Valid types: :block, :paragraph, :list, :table, :tabs, :gauge, :line_gauge, " \ ":sparkline, :bar_chart, :chart, :scrollbar, :calendar, :canvas, :clear, " \ ":cursor, :overlay, :center, :ratatui_logo, :ratatui_mascot" end end |