ratatui_ruby 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.builds/ruby-3.2.yml +14 -12
- data/.builds/ruby-3.3.yml +14 -12
- data/.builds/ruby-3.4.yml +14 -12
- data/.builds/ruby-4.0.0.yml +14 -12
- data/AGENTS.md +54 -13
- data/CHANGELOG.md +186 -1
- data/README.md +17 -15
- data/doc/application_architecture.md +116 -0
- data/doc/application_testing.md +12 -7
- data/doc/contributors/better_dx.md +543 -0
- data/doc/contributors/design/ruby_frontend.md +1 -1
- data/doc/contributors/developing_examples.md +203 -0
- data/doc/contributors/documentation_style.md +97 -0
- data/doc/contributors/dwim_dx.md +366 -0
- data/doc/contributors/example_analysis.md +82 -0
- data/doc/custom.css +14 -0
- data/doc/event_handling.md +119 -0
- data/doc/images/all_events.png +0 -0
- data/doc/images/analytics.png +0 -0
- data/doc/images/block_padding.png +0 -0
- data/doc/images/block_titles.png +0 -0
- data/doc/images/box_demo.png +0 -0
- data/doc/images/calendar_demo.png +0 -0
- data/doc/images/cell_demo.png +0 -0
- data/doc/images/chart_demo.png +0 -0
- data/doc/images/custom_widget.png +0 -0
- data/doc/images/flex_layout.png +0 -0
- data/doc/images/gauge_demo.png +0 -0
- data/doc/images/hit_test.png +0 -0
- data/doc/images/line_gauge_demo.png +0 -0
- data/doc/images/list_demo.png +0 -0
- data/doc/images/list_styles.png +0 -0
- data/doc/images/login_form.png +0 -0
- data/doc/images/map_demo.png +0 -0
- data/doc/images/mouse_events.png +0 -0
- data/doc/images/popup_demo.png +0 -0
- data/doc/images/quickstart_dsl.png +0 -0
- data/doc/images/quickstart_lifecycle.png +0 -0
- data/doc/images/ratatui_logo_demo.png +0 -0
- data/doc/images/readme_usage.png +0 -0
- data/doc/images/rich_text.png +0 -0
- data/doc/images/scroll_text.png +0 -0
- data/doc/images/scrollbar_demo.png +0 -0
- data/doc/images/sparkline_demo.png +0 -0
- data/doc/images/table_flex.png +0 -0
- data/doc/images/table_select.png +0 -0
- data/doc/images/widget_style_colors.png +0 -0
- data/doc/index.md +1 -0
- data/doc/interactive_design.md +121 -0
- data/doc/quickstart.md +147 -72
- data/examples/all_events/app.rb +169 -0
- data/examples/all_events/app.rbs +7 -0
- data/examples/all_events/test_app.rb +139 -0
- data/examples/analytics/app.rb +258 -0
- data/examples/analytics/app.rbs +7 -0
- data/examples/analytics/test_app.rb +132 -0
- data/examples/block_padding/app.rb +63 -0
- data/examples/block_padding/app.rbs +7 -0
- data/examples/block_padding/test_app.rb +31 -0
- data/examples/block_titles/app.rb +61 -0
- data/examples/block_titles/app.rbs +7 -0
- data/examples/block_titles/test_app.rb +34 -0
- data/examples/box_demo/app.rb +216 -0
- data/examples/box_demo/app.rbs +7 -0
- data/examples/box_demo/test_app.rb +88 -0
- data/examples/calendar_demo/app.rb +101 -0
- data/examples/calendar_demo/app.rbs +7 -0
- data/examples/calendar_demo/test_app.rb +108 -0
- data/examples/cell_demo/app.rb +108 -0
- data/examples/cell_demo/app.rbs +7 -0
- data/examples/cell_demo/test_app.rb +36 -0
- data/examples/chart_demo/app.rb +203 -0
- data/examples/chart_demo/app.rbs +7 -0
- data/examples/chart_demo/test_app.rb +102 -0
- data/examples/custom_widget/app.rb +51 -0
- data/examples/custom_widget/app.rbs +7 -0
- data/examples/custom_widget/test_app.rb +30 -0
- data/examples/flex_layout/app.rb +156 -0
- data/examples/flex_layout/app.rbs +7 -0
- data/examples/flex_layout/test_app.rb +65 -0
- data/examples/gauge_demo/app.rb +182 -0
- data/examples/gauge_demo/app.rbs +7 -0
- data/examples/gauge_demo/test_app.rb +120 -0
- data/examples/hit_test/app.rb +175 -0
- data/examples/hit_test/app.rbs +7 -0
- data/examples/hit_test/test_app.rb +102 -0
- data/examples/line_gauge_demo/app.rb +190 -0
- data/examples/line_gauge_demo/app.rbs +7 -0
- data/examples/line_gauge_demo/test_app.rb +129 -0
- data/examples/list_demo/app.rb +253 -0
- data/examples/list_demo/app.rbs +12 -0
- data/examples/list_demo/test_app.rb +237 -0
- data/examples/list_styles/app.rb +140 -0
- data/examples/list_styles/app.rbs +7 -0
- data/examples/list_styles/test_app.rb +157 -0
- data/examples/{login_form.rb → login_form/app.rb} +12 -16
- data/examples/login_form/app.rbs +7 -0
- data/examples/login_form/test_app.rb +51 -0
- data/examples/map_demo/app.rb +90 -0
- data/examples/map_demo/app.rbs +7 -0
- data/examples/map_demo/test_app.rb +149 -0
- data/examples/{mouse_events.rb → mouse_events/app.rb} +29 -27
- data/examples/mouse_events/app.rbs +7 -0
- data/examples/mouse_events/test_app.rb +53 -0
- data/examples/{popup_demo.rb → popup_demo/app.rb} +15 -17
- data/examples/popup_demo/app.rbs +7 -0
- data/examples/{test_popup_demo.rb → popup_demo/test_app.rb} +18 -26
- data/examples/quickstart_dsl/app.rb +36 -0
- data/examples/quickstart_dsl/app.rbs +7 -0
- data/examples/quickstart_dsl/test_app.rb +29 -0
- data/examples/quickstart_lifecycle/app.rb +39 -0
- data/examples/quickstart_lifecycle/app.rbs +7 -0
- data/examples/quickstart_lifecycle/test_app.rb +29 -0
- data/examples/ratatui_logo_demo/app.rb +79 -0
- data/examples/ratatui_logo_demo/app.rbs +7 -0
- data/examples/ratatui_logo_demo/test_app.rb +51 -0
- data/examples/ratatui_mascot_demo/app.rb +84 -0
- data/examples/ratatui_mascot_demo/app.rbs +7 -0
- data/examples/ratatui_mascot_demo/test_app.rb +47 -0
- data/examples/readme_usage/app.rb +29 -0
- data/examples/readme_usage/app.rbs +7 -0
- data/examples/readme_usage/test_app.rb +29 -0
- data/examples/rich_text/app.rb +141 -0
- data/examples/rich_text/app.rbs +7 -0
- data/examples/rich_text/test_app.rb +166 -0
- data/examples/scroll_text/app.rb +103 -0
- data/examples/scroll_text/app.rbs +7 -0
- data/examples/scroll_text/test_app.rb +110 -0
- data/examples/scrollbar_demo/app.rb +143 -0
- data/examples/scrollbar_demo/app.rbs +7 -0
- data/examples/scrollbar_demo/test_app.rb +77 -0
- data/examples/sparkline_demo/app.rb +240 -0
- data/examples/sparkline_demo/app.rbs +10 -0
- data/examples/sparkline_demo/test_app.rb +107 -0
- data/examples/table_flex/app.rb +65 -0
- data/examples/table_flex/app.rbs +7 -0
- data/examples/table_flex/test_app.rb +36 -0
- data/examples/table_select/app.rb +198 -0
- data/examples/table_select/app.rbs +7 -0
- data/examples/table_select/test_app.rb +180 -0
- data/examples/widget_style_colors/app.rb +104 -0
- data/examples/widget_style_colors/app.rbs +14 -0
- data/examples/widget_style_colors/test_app.rb +48 -0
- data/ext/ratatui_ruby/Cargo.lock +889 -115
- data/ext/ratatui_ruby/Cargo.toml +4 -3
- data/ext/ratatui_ruby/clippy.toml +7 -0
- data/ext/ratatui_ruby/extconf.rb +7 -0
- data/ext/ratatui_ruby/src/events.rs +218 -229
- data/ext/ratatui_ruby/src/lib.rs +38 -10
- data/ext/ratatui_ruby/src/rendering.rs +90 -10
- data/ext/ratatui_ruby/src/style.rs +281 -98
- data/ext/ratatui_ruby/src/terminal.rs +119 -25
- data/ext/ratatui_ruby/src/text.rs +171 -0
- data/ext/ratatui_ruby/src/widgets/barchart.rs +97 -24
- data/ext/ratatui_ruby/src/widgets/block.rs +31 -3
- data/ext/ratatui_ruby/src/widgets/calendar.rs +45 -44
- data/ext/ratatui_ruby/src/widgets/canvas.rs +46 -29
- data/ext/ratatui_ruby/src/widgets/chart.rs +69 -27
- data/ext/ratatui_ruby/src/widgets/clear.rs +3 -1
- data/ext/ratatui_ruby/src/widgets/gauge.rs +11 -4
- data/ext/ratatui_ruby/src/widgets/layout.rs +218 -15
- data/ext/ratatui_ruby/src/widgets/line_gauge.rs +92 -0
- data/ext/ratatui_ruby/src/widgets/list.rs +91 -11
- data/ext/ratatui_ruby/src/widgets/mod.rs +3 -0
- data/ext/ratatui_ruby/src/widgets/overlay.rs +3 -2
- data/ext/ratatui_ruby/src/widgets/paragraph.rs +35 -13
- data/ext/ratatui_ruby/src/widgets/ratatui_logo.rs +29 -0
- data/ext/ratatui_ruby/src/widgets/ratatui_mascot.rs +44 -0
- data/ext/ratatui_ruby/src/widgets/scrollbar.rs +59 -7
- data/ext/ratatui_ruby/src/widgets/sparkline.rs +70 -6
- data/ext/ratatui_ruby/src/widgets/table.rs +173 -64
- data/ext/ratatui_ruby/src/widgets/tabs.rs +105 -5
- data/lib/ratatui_ruby/cell.rb +166 -0
- data/lib/ratatui_ruby/event/focus_gained.rb +49 -0
- data/lib/ratatui_ruby/event/focus_lost.rb +50 -0
- data/lib/ratatui_ruby/event/key.rb +211 -0
- data/lib/ratatui_ruby/event/mouse.rb +124 -0
- data/lib/ratatui_ruby/event/paste.rb +71 -0
- data/lib/ratatui_ruby/event/resize.rb +80 -0
- data/lib/ratatui_ruby/event.rb +79 -0
- data/lib/ratatui_ruby/schema/bar_chart/bar.rb +45 -0
- data/lib/ratatui_ruby/schema/bar_chart/bar_group.rb +27 -0
- data/lib/ratatui_ruby/schema/bar_chart.rb +228 -19
- data/lib/ratatui_ruby/schema/block.rb +186 -14
- data/lib/ratatui_ruby/schema/calendar.rb +74 -17
- data/lib/ratatui_ruby/schema/canvas.rb +215 -48
- data/lib/ratatui_ruby/schema/center.rb +49 -11
- data/lib/ratatui_ruby/schema/chart.rb +151 -41
- data/lib/ratatui_ruby/schema/clear.rb +41 -72
- data/lib/ratatui_ruby/schema/constraint.rb +82 -22
- data/lib/ratatui_ruby/schema/cursor.rb +27 -9
- data/lib/ratatui_ruby/schema/draw.rb +53 -0
- data/lib/ratatui_ruby/schema/gauge.rb +59 -15
- data/lib/ratatui_ruby/schema/layout.rb +95 -13
- data/lib/ratatui_ruby/schema/line_gauge.rb +78 -0
- data/lib/ratatui_ruby/schema/list.rb +93 -19
- data/lib/ratatui_ruby/schema/overlay.rb +34 -8
- data/lib/ratatui_ruby/schema/paragraph.rb +87 -30
- data/lib/ratatui_ruby/schema/ratatui_logo.rb +25 -0
- data/lib/ratatui_ruby/schema/ratatui_mascot.rb +29 -0
- data/lib/ratatui_ruby/schema/rect.rb +64 -15
- data/lib/ratatui_ruby/schema/scrollbar.rb +132 -24
- data/lib/ratatui_ruby/schema/shape/label.rb +66 -0
- data/lib/ratatui_ruby/schema/sparkline.rb +122 -15
- data/lib/ratatui_ruby/schema/style.rb +49 -21
- data/lib/ratatui_ruby/schema/table.rb +119 -21
- data/lib/ratatui_ruby/schema/tabs.rb +75 -13
- data/lib/ratatui_ruby/schema/text.rb +90 -0
- data/lib/ratatui_ruby/session.rb +146 -0
- data/lib/ratatui_ruby/test_helper.rb +156 -13
- data/lib/ratatui_ruby/version.rb +1 -1
- data/lib/ratatui_ruby.rb +143 -23
- data/sig/ratatui_ruby/event.rbs +69 -0
- data/sig/ratatui_ruby/ratatui_ruby.rbs +2 -1
- data/sig/ratatui_ruby/schema/bar_chart/bar.rbs +16 -0
- data/sig/ratatui_ruby/schema/bar_chart/bar_group.rbs +13 -0
- data/sig/ratatui_ruby/schema/bar_chart.rbs +20 -2
- data/sig/ratatui_ruby/schema/block.rbs +5 -4
- data/sig/ratatui_ruby/schema/calendar.rbs +6 -2
- data/sig/ratatui_ruby/schema/canvas.rbs +52 -39
- data/sig/ratatui_ruby/schema/center.rbs +3 -3
- data/sig/ratatui_ruby/schema/chart.rbs +8 -5
- data/sig/ratatui_ruby/schema/constraint.rbs +8 -5
- data/sig/ratatui_ruby/schema/cursor.rbs +1 -1
- data/sig/ratatui_ruby/schema/draw.rbs +23 -0
- data/sig/ratatui_ruby/schema/gauge.rbs +4 -2
- data/sig/ratatui_ruby/schema/layout.rbs +11 -1
- data/sig/ratatui_ruby/schema/line_gauge.rbs +16 -0
- data/sig/ratatui_ruby/schema/list.rbs +5 -1
- data/sig/ratatui_ruby/schema/paragraph.rbs +4 -1
- data/{lib/ratatui_ruby/output.rb → sig/ratatui_ruby/schema/ratatui_logo.rbs} +3 -2
- data/sig/ratatui_ruby/{buffer.rbs → schema/ratatui_mascot.rbs} +4 -3
- data/sig/ratatui_ruby/schema/rect.rbs +2 -1
- data/sig/ratatui_ruby/schema/scrollbar.rbs +18 -2
- data/sig/ratatui_ruby/schema/sparkline.rbs +6 -2
- data/sig/ratatui_ruby/schema/table.rbs +8 -1
- data/sig/ratatui_ruby/schema/tabs.rbs +5 -1
- data/sig/ratatui_ruby/schema/text.rbs +22 -0
- data/tasks/resources/build.yml.erb +13 -11
- data/tasks/terminal_preview/app_screenshot.rb +35 -0
- data/tasks/terminal_preview/crash_report.rb +54 -0
- data/tasks/terminal_preview/example_app.rb +25 -0
- data/tasks/terminal_preview/launcher_script.rb +48 -0
- data/tasks/terminal_preview/preview_collection.rb +60 -0
- data/tasks/terminal_preview/preview_timing.rb +22 -0
- data/tasks/terminal_preview/safety_confirmation.rb +58 -0
- data/tasks/terminal_preview/saved_screenshot.rb +55 -0
- data/tasks/terminal_preview/system_appearance.rb +11 -0
- data/tasks/terminal_preview/terminal_window.rb +138 -0
- data/tasks/terminal_preview/window_id.rb +14 -0
- data/tasks/terminal_preview.rake +28 -0
- data/tasks/test.rake +1 -1
- metadata +174 -53
- data/doc/images/examples-analytics.rb.png +0 -0
- data/doc/images/examples-box_demo.rb.png +0 -0
- data/doc/images/examples-calendar_demo.rb.png +0 -0
- data/doc/images/examples-chart_demo.rb.png +0 -0
- data/doc/images/examples-custom_widget.rb.png +0 -0
- data/doc/images/examples-dashboard.rb.png +0 -0
- data/doc/images/examples-list_styles.rb.png +0 -0
- data/doc/images/examples-login_form.rb.png +0 -0
- data/doc/images/examples-map_demo.rb.png +0 -0
- data/doc/images/examples-mouse_events.rb.png +0 -0
- data/doc/images/examples-popup_demo.rb.gif +0 -0
- data/doc/images/examples-quickstart_lifecycle.rb.png +0 -0
- data/doc/images/examples-scroll_text.rb.png +0 -0
- data/doc/images/examples-scrollbar_demo.rb.png +0 -0
- data/doc/images/examples-stock_ticker.rb.png +0 -0
- data/doc/images/examples-system_monitor.rb.png +0 -0
- data/doc/images/examples-table_select.rb.png +0 -0
- data/examples/analytics.rb +0 -88
- data/examples/box_demo.rb +0 -71
- data/examples/calendar_demo.rb +0 -55
- data/examples/chart_demo.rb +0 -84
- data/examples/custom_widget.rb +0 -43
- data/examples/dashboard.rb +0 -72
- data/examples/list_styles.rb +0 -66
- data/examples/map_demo.rb +0 -58
- data/examples/quickstart_dsl.rb +0 -30
- data/examples/quickstart_lifecycle.rb +0 -40
- data/examples/readme_usage.rb +0 -21
- data/examples/scroll_text.rb +0 -74
- data/examples/scrollbar_demo.rb +0 -75
- data/examples/stock_ticker.rb +0 -93
- data/examples/system_monitor.rb +0 -94
- data/examples/table_select.rb +0 -70
- data/examples/test_analytics.rb +0 -65
- data/examples/test_box_demo.rb +0 -38
- data/examples/test_calendar_demo.rb +0 -66
- data/examples/test_dashboard.rb +0 -38
- data/examples/test_list_styles.rb +0 -61
- data/examples/test_login_form.rb +0 -63
- data/examples/test_map_demo.rb +0 -100
- data/examples/test_scroll_text.rb +0 -130
- data/examples/test_stock_ticker.rb +0 -39
- data/examples/test_system_monitor.rb +0 -40
- data/examples/test_table_select.rb +0 -37
- data/ext/ratatui_ruby/src/buffer.rs +0 -54
- data/lib/ratatui_ruby/dsl.rb +0 -64
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
2
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
3
|
+
|
|
4
|
+
module RatatuiRuby
|
|
5
|
+
class Event
|
|
6
|
+
def key?: () -> bool
|
|
7
|
+
def mouse?: () -> bool
|
|
8
|
+
def resize?: () -> bool
|
|
9
|
+
def paste?: () -> bool
|
|
10
|
+
def focus_gained?: () -> bool
|
|
11
|
+
def focus_lost?: () -> bool
|
|
12
|
+
def deconstruct_keys: (Array[Symbol]?) -> Hash[Symbol, untyped]
|
|
13
|
+
|
|
14
|
+
class Key < Event
|
|
15
|
+
attr_reader code: String
|
|
16
|
+
attr_reader modifiers: Array[String]
|
|
17
|
+
|
|
18
|
+
def initialize: (code: String, modifiers: Array[String]) -> void
|
|
19
|
+
def ==: (untyped other) -> bool
|
|
20
|
+
def to_sym: () -> Symbol
|
|
21
|
+
def to_s: () -> String
|
|
22
|
+
def inspect: () -> String
|
|
23
|
+
def ctrl?: () -> bool
|
|
24
|
+
def alt?: () -> bool
|
|
25
|
+
def shift?: () -> bool
|
|
26
|
+
def text?: () -> bool
|
|
27
|
+
def deconstruct_keys: (Array[Symbol]?) -> Hash[Symbol, untyped]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
class Mouse < Event
|
|
31
|
+
attr_reader kind: String
|
|
32
|
+
attr_reader x: Integer
|
|
33
|
+
attr_reader y: Integer
|
|
34
|
+
attr_reader button: String
|
|
35
|
+
attr_reader modifiers: Array[String]
|
|
36
|
+
|
|
37
|
+
def initialize: (kind: String, x: Integer, y: Integer, button: String?, modifiers: Array[String]) -> void
|
|
38
|
+
def down?: () -> bool
|
|
39
|
+
def up?: () -> bool
|
|
40
|
+
def drag?: () -> bool
|
|
41
|
+
def scroll_up?: () -> bool
|
|
42
|
+
def scroll_down?: () -> bool
|
|
43
|
+
def deconstruct_keys: (Array[Symbol]?) -> Hash[Symbol, untyped]
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
class Resize < Event
|
|
47
|
+
attr_reader width: Integer
|
|
48
|
+
attr_reader height: Integer
|
|
49
|
+
|
|
50
|
+
def initialize: (width: Integer, height: Integer) -> void
|
|
51
|
+
def deconstruct_keys: (Array[Symbol]?) -> Hash[Symbol, untyped]
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
class Paste < Event
|
|
55
|
+
attr_reader content: String
|
|
56
|
+
|
|
57
|
+
def initialize: (content: String) -> void
|
|
58
|
+
def deconstruct_keys: (Array[Symbol]?) -> Hash[Symbol, untyped]
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
class FocusGained < Event
|
|
62
|
+
def deconstruct_keys: (Array[Symbol]?) -> Hash[Symbol, untyped]
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
class FocusLost < Event
|
|
66
|
+
def deconstruct_keys: (Array[Symbol]?) -> Hash[Symbol, untyped]
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -11,6 +11,7 @@ module RatatuiRuby
|
|
|
11
11
|
def self.init_terminal: () -> void
|
|
12
12
|
def self.restore_terminal: () -> void
|
|
13
13
|
def self.draw: (widget) -> void
|
|
14
|
-
def self.
|
|
14
|
+
def self._poll_event: () -> Hash[Symbol, untyped]?
|
|
15
|
+
def self.poll_event: () -> Event?
|
|
15
16
|
def self.inject_test_event: (String, Hash[Symbol, untyped]) -> void
|
|
16
17
|
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
2
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
3
|
+
|
|
4
|
+
module RatatuiRuby
|
|
5
|
+
class BarChart
|
|
6
|
+
class Bar < Data
|
|
7
|
+
attr_reader value: Integer
|
|
8
|
+
attr_reader label: String?
|
|
9
|
+
attr_reader style: Style?
|
|
10
|
+
attr_reader value_style: Style?
|
|
11
|
+
attr_reader text_value: String?
|
|
12
|
+
|
|
13
|
+
def self.new: (value: Numeric, ?label: String?, ?style: Style?, ?value_style: Style?, ?text_value: String?) -> Bar
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
2
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
3
|
+
|
|
4
|
+
module RatatuiRuby
|
|
5
|
+
class BarChart
|
|
6
|
+
class BarGroup < Data
|
|
7
|
+
attr_reader label: String
|
|
8
|
+
attr_reader bars: Array[BarChart::Bar]
|
|
9
|
+
|
|
10
|
+
def self.new: (label: String, bars: Array[BarChart::Bar]) -> BarGroup
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -3,12 +3,30 @@
|
|
|
3
3
|
|
|
4
4
|
module RatatuiRuby
|
|
5
5
|
class BarChart < Data
|
|
6
|
-
attr_reader data:
|
|
6
|
+
attr_reader data: Array[BarChart::BarGroup]
|
|
7
7
|
attr_reader bar_width: Integer
|
|
8
8
|
attr_reader bar_gap: Integer
|
|
9
|
+
attr_reader group_gap: Integer
|
|
9
10
|
attr_reader max: Integer?
|
|
10
11
|
attr_reader style: Style?
|
|
11
12
|
attr_reader block: Block?
|
|
12
|
-
|
|
13
|
+
attr_reader direction: :vertical | :horizontal
|
|
14
|
+
attr_reader label_style: Style?
|
|
15
|
+
attr_reader value_style: Style?
|
|
16
|
+
attr_reader bar_set: String?
|
|
17
|
+
|
|
18
|
+
def self.new: (
|
|
19
|
+
data: Hash[String | Symbol | _ToS, Numeric] | Array[Array[String | Symbol | _ToS | Numeric]] | Array[BarChart::BarGroup],
|
|
20
|
+
?bar_width: Numeric,
|
|
21
|
+
?bar_gap: Numeric,
|
|
22
|
+
?group_gap: Numeric,
|
|
23
|
+
?max: Numeric?,
|
|
24
|
+
?style: Style?,
|
|
25
|
+
?block: Block?,
|
|
26
|
+
?direction: :vertical | :horizontal,
|
|
27
|
+
?label_style: Style?,
|
|
28
|
+
?value_style: Style?,
|
|
29
|
+
?bar_set: String?
|
|
30
|
+
) -> BarChart
|
|
13
31
|
end
|
|
14
32
|
end
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
|
|
4
4
|
module RatatuiRuby
|
|
5
5
|
class Block < Data
|
|
6
|
-
attr_reader
|
|
7
|
-
attr_reader
|
|
8
|
-
attr_reader
|
|
9
|
-
|
|
6
|
+
attr_reader titles: Array[Hash[Symbol, untyped]]
|
|
7
|
+
attr_reader title_style: (Style | Hash[Symbol, untyped])?
|
|
8
|
+
attr_reader border_style: (Style | Hash[Symbol, untyped])?
|
|
9
|
+
attr_reader children: Array[untyped]
|
|
10
|
+
def self.new: (?title: String?, ?titles: Array[Hash[Symbol, untyped]], ?title_alignment: Symbol?, ?title_style: (Style | Hash[Symbol, untyped])?, ?borders: Array[Symbol], ?border_color: (String | Symbol)?, ?border_style: (Style | Hash[Symbol, untyped])?, ?border_type: Symbol?, ?border_set: Hash[Symbol, String]?, ?style: (Style | Hash[Symbol, untyped])?, ?padding: (Numeric | Array[Numeric]), ?children: Array[untyped]) -> Block
|
|
10
11
|
end
|
|
11
12
|
end
|
|
@@ -5,9 +5,13 @@ module RatatuiRuby
|
|
|
5
5
|
class Calendar < Data
|
|
6
6
|
attr_reader year: Integer
|
|
7
7
|
attr_reader month: Integer
|
|
8
|
-
attr_reader
|
|
8
|
+
attr_reader events: Hash[untyped, Style]
|
|
9
|
+
attr_reader default_style: Style?
|
|
9
10
|
attr_reader header_style: Style?
|
|
10
11
|
attr_reader block: Block?
|
|
11
|
-
|
|
12
|
+
attr_reader show_weekdays_header: bool
|
|
13
|
+
attr_reader show_surrounding: Style?
|
|
14
|
+
attr_reader show_month_header: bool
|
|
15
|
+
def self.new: (year: Numeric, month: Numeric, ?events: Hash[untyped, Style], ?default_style: Style?, ?header_style: Style?, ?block: Block?, ?show_weekdays_header: bool, ?show_surrounding: Style?, ?show_month_header: bool) -> Calendar
|
|
12
16
|
end
|
|
13
17
|
end
|
|
@@ -2,61 +2,74 @@
|
|
|
2
2
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
3
3
|
|
|
4
4
|
module RatatuiRuby
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
module Shape
|
|
6
|
+
class Point < Data
|
|
7
|
+
attr_reader x: Float
|
|
8
|
+
attr_reader y: Float
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
def self.new: (x: Numeric, y: Numeric) -> Point
|
|
11
|
+
| (Numeric, Numeric) -> Point
|
|
12
|
+
end
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
class Line < Data
|
|
15
|
+
attr_reader x1: Float
|
|
16
|
+
attr_reader y1: Float
|
|
17
|
+
attr_reader x2: Float
|
|
18
|
+
attr_reader y2: Float
|
|
19
|
+
attr_reader color: String | Symbol
|
|
19
20
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
def self.new: (x1: Numeric, y1: Numeric, x2: Numeric, y2: Numeric, color: String | Symbol) -> Line
|
|
22
|
+
| (Numeric, Numeric, Numeric, Numeric, String | Symbol) -> Line
|
|
23
|
+
end
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
class Rectangle < Data
|
|
26
|
+
attr_reader x: Float
|
|
27
|
+
attr_reader y: Float
|
|
28
|
+
attr_reader width: Float
|
|
29
|
+
attr_reader height: Float
|
|
30
|
+
attr_reader color: String | Symbol
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
def self.new: (x: Numeric, y: Numeric, width: Numeric, height: Numeric, color: String | Symbol) -> Rectangle
|
|
33
|
+
| (Numeric, Numeric, Numeric, Numeric, String | Symbol) -> Rectangle
|
|
34
|
+
end
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
class Circle < Data
|
|
37
|
+
attr_reader x: Float
|
|
38
|
+
attr_reader y: Float
|
|
39
|
+
attr_reader radius: Float
|
|
40
|
+
attr_reader color: String | Symbol
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
def self.new: (x: Numeric, y: Numeric, radius: Numeric, color: String | Symbol) -> Circle
|
|
43
|
+
| (Numeric, Numeric, Numeric, String | Symbol) -> Circle
|
|
44
|
+
end
|
|
44
45
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
class Map < Data
|
|
47
|
+
attr_reader color: String | Symbol
|
|
48
|
+
attr_reader resolution: Symbol
|
|
48
49
|
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
def self.new: (color: String | Symbol, resolution: Symbol) -> Map
|
|
51
|
+
| (String | Symbol, Symbol) -> Map
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
class Label < Data
|
|
55
|
+
attr_reader x: Float
|
|
56
|
+
attr_reader y: Float
|
|
57
|
+
attr_reader text: String | Text::Line
|
|
58
|
+
attr_reader style: Style?
|
|
59
|
+
|
|
60
|
+
def self.new: (x: Numeric, y: Numeric, text: String | Text::Line, ?style: Style?) -> Label
|
|
61
|
+
end
|
|
51
62
|
end
|
|
52
63
|
|
|
53
64
|
class Canvas < Data
|
|
54
|
-
attr_reader shapes: Array[Line | Rectangle | Circle | Map]
|
|
65
|
+
attr_reader shapes: Array[Shape::Line | Shape::Rectangle | Shape::Circle | Shape::Map | Shape::Label]
|
|
55
66
|
attr_reader x_bounds: Array[Float]
|
|
56
67
|
attr_reader y_bounds: Array[Float]
|
|
57
68
|
attr_reader marker: Symbol
|
|
58
69
|
attr_reader block: Block?
|
|
59
70
|
|
|
60
|
-
|
|
71
|
+
attr_reader background_color: String | Symbol | nil
|
|
72
|
+
|
|
73
|
+
def self.new: (?shapes: Array[Shape::Line | Shape::Rectangle | Shape::Circle | Shape::Map | Shape::Label], ?x_bounds: Array[Numeric], ?y_bounds: Array[Numeric], ?marker: Symbol, ?block: Block?, ?background_color: String | Symbol | nil) -> Canvas
|
|
61
74
|
end
|
|
62
75
|
end
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
module RatatuiRuby
|
|
5
5
|
class Center < Data
|
|
6
6
|
attr_reader child: widget
|
|
7
|
-
attr_reader width_percent:
|
|
8
|
-
attr_reader height_percent:
|
|
9
|
-
def self.new: (child: widget, width_percent:
|
|
7
|
+
attr_reader width_percent: Float
|
|
8
|
+
attr_reader height_percent: Float
|
|
9
|
+
def self.new: (child: widget, ?width_percent: Numeric, ?height_percent: Numeric) -> Center
|
|
10
10
|
end
|
|
11
11
|
end
|
|
@@ -7,16 +7,17 @@ module RatatuiRuby
|
|
|
7
7
|
attr_reader bounds: [Float, Float]
|
|
8
8
|
attr_reader labels: Array[String]
|
|
9
9
|
attr_reader style: Style?
|
|
10
|
-
|
|
10
|
+
attr_reader labels_alignment: Symbol?
|
|
11
|
+
def self.new: (?title: String, ?bounds: [Numeric, Numeric], ?labels: Array[String], ?style: Style?, ?labels_alignment: Symbol?) -> Axis
|
|
11
12
|
end
|
|
12
13
|
|
|
13
14
|
class Dataset < Data
|
|
14
15
|
attr_reader name: String | Symbol
|
|
15
16
|
attr_reader data: Array[[Float, Float]]
|
|
16
|
-
attr_reader
|
|
17
|
+
attr_reader style: Style?
|
|
17
18
|
attr_reader marker: Symbol
|
|
18
19
|
attr_reader graph_type: Symbol
|
|
19
|
-
def self.new: (name: String | Symbol, data: Array[[
|
|
20
|
+
def self.new: (name: String | Symbol, data: Array[[Numeric, Numeric]], ?style: Style?, ?marker: Symbol, ?graph_type: Symbol) -> Dataset
|
|
20
21
|
end
|
|
21
22
|
|
|
22
23
|
class Chart < Data
|
|
@@ -25,7 +26,9 @@ module RatatuiRuby
|
|
|
25
26
|
attr_reader y_axis: Axis
|
|
26
27
|
attr_reader block: Block?
|
|
27
28
|
attr_reader style: Style?
|
|
28
|
-
|
|
29
|
+
attr_reader legend_position: Symbol?
|
|
30
|
+
attr_reader hidden_legend_constraints: Array[Constraint]
|
|
31
|
+
def self.new: (datasets: Array[Dataset], x_axis: Axis, y_axis: Axis, ?block: Block?, ?style: Style?, ?legend_position: Symbol?, ?hidden_legend_constraints: Array[Constraint]) -> Chart
|
|
29
32
|
end
|
|
30
33
|
|
|
31
34
|
class LineChart < Data
|
|
@@ -34,6 +37,6 @@ module RatatuiRuby
|
|
|
34
37
|
attr_reader y_labels: Array[String]
|
|
35
38
|
attr_reader y_bounds: [Float, Float]
|
|
36
39
|
attr_reader block: Block?
|
|
37
|
-
def self.new: (datasets: Array[Dataset], ?x_labels: Array[String], ?y_labels: Array[String], ?y_bounds: [
|
|
40
|
+
def self.new: (datasets: Array[Dataset], ?x_labels: Array[String], ?y_labels: Array[String], ?y_bounds: [Numeric, Numeric], ?block: Block?) -> LineChart
|
|
38
41
|
end
|
|
39
42
|
end
|
|
@@ -4,10 +4,13 @@
|
|
|
4
4
|
module RatatuiRuby
|
|
5
5
|
class Constraint < Data
|
|
6
6
|
attr_reader type: Symbol
|
|
7
|
-
attr_reader value: Integer
|
|
8
|
-
def self.length: (
|
|
9
|
-
def self.percentage: (
|
|
10
|
-
def self.min: (
|
|
11
|
-
def self.
|
|
7
|
+
attr_reader value: (Integer | Array[Integer])
|
|
8
|
+
def self.length: (Numeric) -> Constraint
|
|
9
|
+
def self.percentage: (Numeric) -> Constraint
|
|
10
|
+
def self.min: (Numeric) -> Constraint
|
|
11
|
+
def self.max: (Numeric) -> Constraint
|
|
12
|
+
def self.fill: (?Numeric) -> Constraint
|
|
13
|
+
def self.ratio: (Numeric, Numeric) -> Constraint
|
|
14
|
+
def self.new: (type: Symbol, value: (Integer | Array[Integer])) -> Constraint
|
|
12
15
|
end
|
|
13
16
|
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module RatatuiRuby
|
|
2
|
+
module Draw
|
|
3
|
+
class StringCmd < Data
|
|
4
|
+
attr_reader x: Integer
|
|
5
|
+
attr_reader y: Integer
|
|
6
|
+
attr_reader string: String
|
|
7
|
+
attr_reader style: Style | Hash[Symbol, untyped]
|
|
8
|
+
|
|
9
|
+
def self.new: (x: Integer, y: Integer, string: String, style: Style | Hash[Symbol, untyped]) -> StringCmd
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
class CellCmd < Data
|
|
13
|
+
attr_reader x: Integer
|
|
14
|
+
attr_reader y: Integer
|
|
15
|
+
attr_reader cell: Cell
|
|
16
|
+
|
|
17
|
+
def self.new: (x: Integer, y: Integer, cell: Cell) -> CellCmd
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.string: (Numeric x, Numeric y, String string, ?Style | Hash[Symbol, untyped] style) -> StringCmd
|
|
21
|
+
def self.cell: (Numeric x, Numeric y, Cell cell) -> CellCmd
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -5,9 +5,11 @@ module RatatuiRuby
|
|
|
5
5
|
class Gauge < Data
|
|
6
6
|
attr_reader ratio: Float
|
|
7
7
|
attr_reader label: String?
|
|
8
|
-
attr_reader style: Style
|
|
8
|
+
attr_reader style: Style?
|
|
9
|
+
attr_reader gauge_style: Style?
|
|
9
10
|
attr_reader block: Block?
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
attr_reader use_unicode: bool
|
|
13
|
+
def self.new: (?ratio: Numeric?, ?percent: Numeric?, ?label: String?, ?style: Style?, ?gauge_style: Style?, ?block: Block?, ?use_unicode: bool) -> Gauge
|
|
12
14
|
end
|
|
13
15
|
end
|
|
@@ -2,10 +2,20 @@
|
|
|
2
2
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
3
3
|
|
|
4
4
|
module RatatuiRuby
|
|
5
|
+
type flex_mode = :legacy | :start | :center | :end | :space_between | :space_around | :space_evenly
|
|
6
|
+
|
|
5
7
|
class Layout < Data
|
|
8
|
+
FLEX_MODES: Array[Symbol]
|
|
9
|
+
|
|
6
10
|
attr_reader direction: Symbol
|
|
7
11
|
attr_reader constraints: Array[Constraint]
|
|
8
12
|
attr_reader children: Array[widget]
|
|
9
|
-
|
|
13
|
+
attr_reader flex: flex_mode
|
|
14
|
+
def self.new: (?direction: Symbol, ?constraints: Array[Constraint], ?children: Array[widget], ?flex: flex_mode) -> Layout
|
|
15
|
+
def self.split: (Rect | Hash[Symbol, Integer] area, ?direction: Symbol, constraints: Array[Constraint], ?flex: flex_mode) -> Array[Rect]
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
def self._split: (Rect | Hash[Symbol, Integer], Symbol, Array[Constraint], Symbol) -> Array[Hash[Symbol, Integer]]
|
|
10
20
|
end
|
|
11
21
|
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
2
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
3
|
+
|
|
4
|
+
module RatatuiRuby
|
|
5
|
+
class LineGauge < Data
|
|
6
|
+
attr_reader ratio: Float
|
|
7
|
+
attr_reader label: String?
|
|
8
|
+
attr_reader filled_style: Style?
|
|
9
|
+
attr_reader unfilled_style: Style?
|
|
10
|
+
attr_reader block: Block?
|
|
11
|
+
attr_reader filled_symbol: String
|
|
12
|
+
attr_reader unfilled_symbol: String
|
|
13
|
+
|
|
14
|
+
def self.new: (?ratio: Numeric, ?label: String?, ?style: Style?, ?filled_style: Style?, ?unfilled_style: Style?, ?block: Block?, ?filled_symbol: String, ?unfilled_symbol: String) -> LineGauge
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -8,7 +8,11 @@ module RatatuiRuby
|
|
|
8
8
|
attr_reader style: Style?
|
|
9
9
|
attr_reader highlight_style: Style?
|
|
10
10
|
attr_reader highlight_symbol: String?
|
|
11
|
+
attr_reader repeat_highlight_symbol: bool
|
|
12
|
+
attr_reader highlight_spacing: Symbol
|
|
13
|
+
attr_reader direction: Symbol
|
|
14
|
+
attr_reader scroll_padding: Integer?
|
|
11
15
|
attr_reader block: Block?
|
|
12
|
-
def self.new: (?items: Array[String], ?selected_index:
|
|
16
|
+
def self.new: (?items: Array[String], ?selected_index: Numeric?, ?style: Style?, ?highlight_style: Style?, ?highlight_symbol: String?, ?repeat_highlight_symbol: bool, ?highlight_spacing: Symbol, ?direction: Symbol, ?scroll_padding: Numeric?, ?block: Block?) -> List
|
|
13
17
|
end
|
|
14
18
|
end
|
|
@@ -6,6 +6,9 @@ module RatatuiRuby
|
|
|
6
6
|
attr_reader text: String
|
|
7
7
|
attr_reader style: Style
|
|
8
8
|
attr_reader block: Block?
|
|
9
|
-
|
|
9
|
+
attr_reader wrap: bool
|
|
10
|
+
attr_reader alignment: Symbol
|
|
11
|
+
def initialize: (text: String, ?style: Style, ?block: Block?, ?wrap: bool, ?alignment: Symbol, ?scroll: [Numeric, Numeric]) -> void
|
|
12
|
+
def self.new: (text: String, ?style: Style?, ?fg: (String | Symbol)?, ?bg: (String | Symbol)?, ?block: Block?, ?wrap: bool, ?alignment: Symbol, ?scroll: [Numeric, Numeric]) -> Paragraph
|
|
10
13
|
end
|
|
11
14
|
end
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
5
5
|
|
|
6
6
|
module RatatuiRuby
|
|
7
|
-
class
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
class RatatuiMascot < Data
|
|
8
|
+
attr_reader block: Block?
|
|
9
|
+
|
|
10
|
+
def self.new: (?block: Block?) -> RatatuiMascot
|
|
10
11
|
end
|
|
11
12
|
end
|
|
@@ -9,6 +9,7 @@ module RatatuiRuby
|
|
|
9
9
|
attr_reader y: Integer
|
|
10
10
|
attr_reader width: Integer
|
|
11
11
|
attr_reader height: Integer
|
|
12
|
-
def self.new: (x:
|
|
12
|
+
def self.new: (?x: Numeric, ?y: Numeric, ?width: Numeric, ?height: Numeric) -> instance
|
|
13
|
+
def contains?: (Integer px, Integer py) -> bool
|
|
13
14
|
end
|
|
14
15
|
end
|
|
@@ -7,13 +7,29 @@ module RatatuiRuby
|
|
|
7
7
|
attr_reader position: Integer
|
|
8
8
|
attr_reader orientation: Symbol
|
|
9
9
|
attr_reader thumb_symbol: String
|
|
10
|
+
attr_reader thumb_style: Style?
|
|
11
|
+
attr_reader track_symbol: String?
|
|
12
|
+
attr_reader track_style: Style?
|
|
13
|
+
attr_reader begin_symbol: String?
|
|
14
|
+
attr_reader begin_style: Style?
|
|
15
|
+
attr_reader end_symbol: String?
|
|
16
|
+
attr_reader end_style: Style?
|
|
17
|
+
attr_reader style: Style?
|
|
10
18
|
attr_reader block: Block?
|
|
11
19
|
|
|
12
20
|
def self.new: (
|
|
13
|
-
content_length:
|
|
14
|
-
position:
|
|
21
|
+
content_length: Numeric,
|
|
22
|
+
position: Numeric,
|
|
15
23
|
?orientation: Symbol,
|
|
16
24
|
?thumb_symbol: String,
|
|
25
|
+
?thumb_style: Style?,
|
|
26
|
+
?track_symbol: String?,
|
|
27
|
+
?track_style: Style?,
|
|
28
|
+
?begin_symbol: String?,
|
|
29
|
+
?begin_style: Style?,
|
|
30
|
+
?end_symbol: String?,
|
|
31
|
+
?end_style: Style?,
|
|
32
|
+
?style: Style?,
|
|
17
33
|
?block: Block?
|
|
18
34
|
) -> Scrollbar
|
|
19
35
|
end
|
|
@@ -3,10 +3,14 @@
|
|
|
3
3
|
|
|
4
4
|
module RatatuiRuby
|
|
5
5
|
class Sparkline < Data
|
|
6
|
-
attr_reader data: Array[Integer]
|
|
6
|
+
attr_reader data: Array[Integer?]
|
|
7
7
|
attr_reader max: Integer?
|
|
8
8
|
attr_reader style: Style?
|
|
9
9
|
attr_reader block: Block?
|
|
10
|
-
|
|
10
|
+
attr_reader direction: (:left_to_right | :right_to_left)?
|
|
11
|
+
attr_reader absent_value_symbol: String?
|
|
12
|
+
attr_reader absent_value_style: Style?
|
|
13
|
+
attr_reader bar_set: Hash[Symbol, String]?
|
|
14
|
+
def self.new: (data: Array[Numeric?], ?max: Numeric?, ?style: Style?, ?block: Block?, ?direction: (:left_to_right | :right_to_left)?, ?absent_value_symbol: String?, ?absent_value_style: Style?, ?bar_set: Hash[Symbol, String]?) -> Sparkline
|
|
11
15
|
end
|
|
12
16
|
end
|
|
@@ -7,7 +7,14 @@ module RatatuiRuby
|
|
|
7
7
|
attr_reader rows: Array[Array[String | Paragraph | Style | _ToS]]
|
|
8
8
|
attr_reader widths: Array[Constraint]
|
|
9
9
|
attr_reader block: Block?
|
|
10
|
+
attr_reader footer: Array[String | Paragraph]?
|
|
11
|
+
attr_reader flex: Symbol
|
|
12
|
+
attr_reader style: (Style | Hash[Symbol, untyped])?
|
|
13
|
+
attr_reader column_spacing: Integer?
|
|
14
|
+
attr_reader highlight_spacing: Symbol
|
|
15
|
+
attr_reader column_highlight_style: Style?
|
|
16
|
+
attr_reader selected_column: Integer?
|
|
10
17
|
|
|
11
|
-
def self.new: (?header: Array[String | Paragraph]?, ?rows: Array[Array[String | Paragraph | Style | _ToS]], ?widths: Array[Constraint], ?block: Block?) -> Table
|
|
18
|
+
def self.new: (?header: Array[String | Paragraph]?, ?rows: Array[Array[String | Paragraph | Style | _ToS]], ?widths: Array[Constraint], ?highlight_style: Style?, ?highlight_symbol: String, ?highlight_spacing: Symbol, ?column_highlight_style: Style?, ?cell_highlight_style: Style?, ?selected_row: Numeric?, ?selected_column: Numeric?, ?block: Block?, ?footer: Array[String | Paragraph]?, ?flex: Symbol, ?style: (Style | Hash[Symbol, untyped])?, ?column_spacing: Numeric) -> Table
|
|
12
19
|
end
|
|
13
20
|
end
|
|
@@ -6,6 +6,10 @@ module RatatuiRuby
|
|
|
6
6
|
attr_reader titles: Array[String | _ToS]
|
|
7
7
|
attr_reader selected_index: Integer
|
|
8
8
|
attr_reader block: Block?
|
|
9
|
-
|
|
9
|
+
attr_reader divider: String?
|
|
10
|
+
attr_reader highlight_style: Style
|
|
11
|
+
attr_reader padding_left: Integer
|
|
12
|
+
attr_reader padding_right: Integer
|
|
13
|
+
def self.new: (?titles: Array[String | _ToS], ?selected_index: Numeric, ?block: Block?, ?divider: String?, ?highlight_style: Style?, ?style: Style?, ?padding_left: Numeric, ?padding_right: Numeric) -> Tabs
|
|
10
14
|
end
|
|
11
15
|
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
2
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
3
|
+
|
|
4
|
+
module RatatuiRuby
|
|
5
|
+
module Text
|
|
6
|
+
class Span < Data
|
|
7
|
+
attr_reader content: String
|
|
8
|
+
attr_reader style: Style?
|
|
9
|
+
|
|
10
|
+
def self.new: (content: String, ?style: Style?) -> Span
|
|
11
|
+
def self.styled: (String, ?Style?) -> Span
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class Line < Data
|
|
15
|
+
attr_reader spans: Array[Span]
|
|
16
|
+
attr_reader alignment: (:left | :center | :right)?
|
|
17
|
+
|
|
18
|
+
def self.new: (?spans: Array[Span], ?alignment: (:left | :center | :right)?) -> Line
|
|
19
|
+
def self.from_string: (String, ?alignment: (:left | :center | :right)?) -> Line
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|