ratatui_ruby 0.4.0 → 0.5.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 +1 -1
- data/.builds/ruby-3.3.yml +1 -1
- data/.builds/ruby-3.4.yml +1 -1
- data/.builds/ruby-4.0.0.yml +1 -1
- data/AGENTS.md +87 -171
- data/CHANGELOG.md +38 -1
- data/README.md +8 -3
- data/REUSE.toml +20 -0
- data/doc/application_architecture.md +105 -45
- data/doc/application_testing.md +5 -3
- data/doc/contributors/design/ruby_frontend.md +9 -5
- data/doc/contributors/developing_examples.md +76 -18
- data/doc/contributors/documentation_style.md +7 -0
- data/doc/contributors/index.md +2 -0
- data/doc/event_handling.md +10 -4
- data/doc/images/app_all_events.png +0 -0
- data/doc/images/app_color_picker.png +0 -0
- data/doc/images/verify_readme_usage.png +0 -0
- data/doc/images/widget_barchart_demo.png +0 -0
- data/doc/images/widget_block_padding.png +0 -0
- data/doc/images/widget_block_titles.png +0 -0
- data/doc/images/widget_box_demo.png +0 -0
- data/doc/images/widget_calendar_demo.png +0 -0
- data/doc/images/widget_cell_demo.png +0 -0
- data/doc/images/widget_chart_demo.png +0 -0
- data/doc/images/widget_gauge_demo.png +0 -0
- data/doc/images/widget_layout_split.png +0 -0
- data/doc/images/widget_line_gauge_demo.png +0 -0
- data/doc/images/widget_list_demo.png +0 -0
- data/doc/images/widget_ratatui_logo_demo.png +0 -0
- data/doc/images/widget_ratatui_mascot_demo.png +0 -0
- data/doc/images/widget_render.png +0 -0
- data/doc/images/widget_scrollbar_demo.png +0 -0
- data/doc/images/widget_sparkline_demo.png +0 -0
- data/doc/images/widget_style_colors.png +0 -0
- data/doc/images/widget_table_flex.png +0 -0
- data/doc/images/widget_tabs_demo.png +0 -0
- data/doc/interactive_design.md +25 -30
- data/doc/quickstart.md +147 -120
- data/examples/app_all_events/README.md +81 -0
- data/examples/app_all_events/app.rb +93 -0
- data/examples/app_all_events/model/event_color_cycle.rb +41 -0
- data/examples/app_all_events/model/event_entry.rb +75 -0
- data/examples/app_all_events/model/events.rb +180 -0
- data/examples/app_all_events/model/highlight.rb +57 -0
- data/examples/app_all_events/model/timestamp.rb +54 -0
- data/examples/app_all_events/test/snapshots/after_focus_lost.txt +24 -0
- data/examples/app_all_events/test/snapshots/after_focus_regained.txt +24 -0
- data/examples/app_all_events/test/snapshots/after_horizontal_resize.txt +24 -0
- data/examples/app_all_events/test/snapshots/after_key_a.txt +24 -0
- data/examples/app_all_events/test/snapshots/after_key_ctrl_x.txt +24 -0
- data/examples/app_all_events/test/snapshots/after_mouse_click.txt +24 -0
- data/examples/app_all_events/test/snapshots/after_mouse_drag.txt +24 -0
- data/examples/app_all_events/test/snapshots/after_multiple_events.txt +24 -0
- data/examples/app_all_events/test/snapshots/after_paste.txt +24 -0
- data/examples/app_all_events/test/snapshots/after_resize.txt +24 -0
- data/examples/app_all_events/test/snapshots/after_right_click.txt +24 -0
- data/examples/app_all_events/test/snapshots/after_vertical_resize.txt +24 -0
- data/examples/app_all_events/test/snapshots/initial_state.txt +24 -0
- data/examples/app_all_events/view/app_view.rb +78 -0
- data/examples/app_all_events/view/controls_view.rb +50 -0
- data/examples/app_all_events/view/counts_view.rb +55 -0
- data/examples/app_all_events/view/live_view.rb +69 -0
- data/examples/app_all_events/view/log_view.rb +60 -0
- data/examples/app_all_events/view.rb +7 -0
- data/examples/app_all_events/view_state.rb +42 -0
- data/examples/app_color_picker/README.md +94 -0
- data/examples/app_color_picker/app.rb +112 -0
- data/examples/app_color_picker/clipboard.rb +84 -0
- data/examples/app_color_picker/color.rb +191 -0
- data/examples/app_color_picker/copy_dialog.rb +170 -0
- data/examples/app_color_picker/harmony.rb +56 -0
- data/examples/app_color_picker/input.rb +142 -0
- data/examples/app_color_picker/palette.rb +80 -0
- data/examples/app_color_picker/scene.rb +201 -0
- data/examples/{login_form → app_login_form}/app.rb +39 -42
- data/examples/{map_demo → app_map_demo}/app.rb +24 -21
- data/examples/{table_select → app_table_select}/app.rb +68 -65
- data/examples/{quickstart_dsl → verify_quickstart_dsl}/app.rb +15 -6
- data/examples/verify_quickstart_layout/app.rb +69 -0
- data/examples/{quickstart_lifecycle → verify_quickstart_lifecycle}/app.rb +19 -10
- data/examples/verify_readme_usage/app.rb +34 -0
- data/examples/widget_barchart_demo/app.rb +238 -0
- data/examples/{block_padding → widget_block_padding}/app.rb +17 -13
- data/examples/{block_titles → widget_block_titles}/app.rb +25 -17
- data/examples/{box_demo → widget_box_demo}/app.rb +99 -65
- data/examples/widget_calendar_demo/app.rb +109 -0
- data/examples/widget_cell_demo/app.rb +104 -0
- data/examples/widget_chart_demo/app.rb +213 -0
- data/examples/widget_gauge_demo/app.rb +212 -0
- data/examples/widget_layout_split/app.rb +246 -0
- data/examples/widget_line_gauge_demo/app.rb +217 -0
- data/examples/widget_list_demo/app.rb +382 -0
- data/examples/widget_list_styles/app.rb +141 -0
- data/examples/widget_popup_demo/app.rb +104 -0
- data/examples/widget_ratatui_logo_demo/app.rb +103 -0
- data/examples/widget_ratatui_mascot_demo/app.rb +93 -0
- data/examples/widget_rect/app.rb +205 -0
- data/examples/widget_render/app.rb +184 -0
- data/examples/widget_rich_text/app.rb +137 -0
- data/examples/widget_scroll_text/app.rb +108 -0
- data/examples/widget_scrollbar_demo/app.rb +153 -0
- data/examples/widget_sparkline_demo/app.rb +274 -0
- data/examples/widget_style_colors/app.rb +19 -21
- data/examples/widget_table_flex/app.rb +95 -0
- data/examples/widget_tabs_demo/app.rb +167 -0
- data/ext/ratatui_ruby/Cargo.lock +1 -1
- data/ext/ratatui_ruby/Cargo.toml +1 -1
- data/ext/ratatui_ruby/src/events.rs +121 -36
- data/ext/ratatui_ruby/src/frame.rs +115 -0
- data/ext/ratatui_ruby/src/lib.rs +79 -26
- data/ext/ratatui_ruby/src/rendering.rs +8 -4
- data/ext/ratatui_ruby/src/style.rs +138 -57
- data/ext/ratatui_ruby/src/terminal.rs +5 -9
- data/ext/ratatui_ruby/src/text.rs +13 -6
- data/ext/ratatui_ruby/src/widgets/barchart.rs +56 -54
- data/ext/ratatui_ruby/src/widgets/block.rs +7 -6
- data/ext/ratatui_ruby/src/widgets/canvas.rs +21 -3
- data/ext/ratatui_ruby/src/widgets/chart.rs +20 -10
- data/ext/ratatui_ruby/src/widgets/layout.rs +9 -4
- data/ext/ratatui_ruby/src/widgets/list.rs +32 -9
- data/ext/ratatui_ruby/src/widgets/overlay.rs +2 -1
- data/ext/ratatui_ruby/src/widgets/paragraph.rs +1 -1
- data/ext/ratatui_ruby/src/widgets/ratatui_logo.rs +19 -8
- data/ext/ratatui_ruby/src/widgets/ratatui_mascot.rs +17 -10
- data/ext/ratatui_ruby/src/widgets/scrollbar.rs +4 -2
- data/ext/ratatui_ruby/src/widgets/sparkline.rs +14 -11
- data/ext/ratatui_ruby/src/widgets/table.rs +8 -4
- data/ext/ratatui_ruby/src/widgets/tabs.rs +11 -11
- data/lib/ratatui_ruby/cell.rb +3 -3
- data/lib/ratatui_ruby/event/key.rb +1 -1
- data/lib/ratatui_ruby/event/none.rb +43 -0
- data/lib/ratatui_ruby/event.rb +56 -4
- data/lib/ratatui_ruby/frame.rb +87 -0
- data/lib/ratatui_ruby/schema/bar_chart/bar.rb +11 -11
- data/lib/ratatui_ruby/schema/bar_chart/bar_group.rb +1 -5
- data/lib/ratatui_ruby/schema/bar_chart.rb +217 -217
- data/lib/ratatui_ruby/schema/block.rb +163 -168
- data/lib/ratatui_ruby/schema/calendar.rb +66 -67
- data/lib/ratatui_ruby/schema/canvas.rb +63 -63
- data/lib/ratatui_ruby/schema/center.rb +46 -46
- data/lib/ratatui_ruby/schema/chart.rb +135 -143
- data/lib/ratatui_ruby/schema/clear.rb +42 -42
- data/lib/ratatui_ruby/schema/constraint.rb +76 -76
- data/lib/ratatui_ruby/schema/cursor.rb +25 -25
- data/lib/ratatui_ruby/schema/gauge.rb +53 -53
- data/lib/ratatui_ruby/schema/layout.rb +87 -87
- data/lib/ratatui_ruby/schema/line_gauge.rb +62 -62
- data/lib/ratatui_ruby/schema/list.rb +86 -84
- data/lib/ratatui_ruby/schema/overlay.rb +31 -31
- data/lib/ratatui_ruby/schema/paragraph.rb +80 -80
- data/lib/ratatui_ruby/schema/ratatui_logo.rb +10 -6
- data/lib/ratatui_ruby/schema/ratatui_mascot.rb +10 -5
- data/lib/ratatui_ruby/schema/rect.rb +60 -60
- data/lib/ratatui_ruby/schema/scrollbar.rb +119 -119
- data/lib/ratatui_ruby/schema/shape/label.rb +1 -1
- data/lib/ratatui_ruby/schema/sparkline.rb +111 -110
- data/lib/ratatui_ruby/schema/style.rb +46 -46
- data/lib/ratatui_ruby/schema/table.rb +112 -119
- data/lib/ratatui_ruby/schema/tabs.rb +66 -67
- data/lib/ratatui_ruby/session/autodoc.rb +417 -0
- data/lib/ratatui_ruby/session.rb +40 -23
- data/lib/ratatui_ruby/test_helper.rb +185 -19
- data/lib/ratatui_ruby/version.rb +1 -1
- data/lib/ratatui_ruby.rb +65 -39
- data/{examples/sparkline_demo → sig/examples/app_all_events}/app.rbs +3 -2
- data/sig/examples/app_all_events/model/event_entry.rbs +16 -0
- data/sig/examples/app_all_events/model/events.rbs +15 -0
- data/sig/examples/app_all_events/model/timestamp.rbs +11 -0
- data/sig/examples/app_all_events/view/app_view.rbs +8 -0
- data/sig/examples/app_all_events/view/controls_view.rbs +6 -0
- data/sig/examples/app_all_events/view/counts_view.rbs +6 -0
- data/sig/examples/app_all_events/view/live_view.rbs +6 -0
- data/sig/examples/app_all_events/view/log_view.rbs +6 -0
- data/sig/examples/app_all_events/view.rbs +8 -0
- data/sig/examples/app_all_events/view_state.rbs +15 -0
- data/{examples/list_demo → sig/examples/app_color_picker}/app.rbs +2 -2
- data/sig/examples/app_login_form/app.rbs +11 -0
- data/sig/examples/app_map_demo/app.rbs +11 -0
- data/sig/examples/app_table_select/app.rbs +11 -0
- data/sig/examples/verify_quickstart_dsl/app.rbs +11 -0
- data/sig/examples/verify_quickstart_lifecycle/app.rbs +11 -0
- data/sig/examples/verify_readme_usage/app.rbs +11 -0
- data/sig/examples/widget_block_padding/app.rbs +11 -0
- data/sig/examples/widget_block_titles/app.rbs +11 -0
- data/sig/examples/widget_box_demo/app.rbs +11 -0
- data/sig/examples/widget_calendar_demo/app.rbs +11 -0
- data/sig/examples/widget_cell_demo/app.rbs +11 -0
- data/sig/examples/widget_chart_demo/app.rbs +11 -0
- data/{examples/gauge_demo → sig/examples/widget_gauge_demo}/app.rbs +4 -0
- data/sig/examples/widget_layout_split/app.rbs +10 -0
- data/sig/examples/widget_line_gauge_demo/app.rbs +11 -0
- data/sig/examples/widget_list_demo/app.rbs +12 -0
- data/sig/examples/widget_list_styles/app.rbs +11 -0
- data/sig/examples/widget_popup_demo/app.rbs +11 -0
- data/sig/examples/widget_ratatui_logo_demo/app.rbs +11 -0
- data/sig/examples/widget_ratatui_mascot_demo/app.rbs +11 -0
- data/sig/examples/widget_rect/app.rbs +12 -0
- data/sig/examples/widget_render/app.rbs +10 -0
- data/sig/examples/widget_rich_text/app.rbs +11 -0
- data/sig/examples/widget_scroll_text/app.rbs +11 -0
- data/sig/examples/widget_scrollbar_demo/app.rbs +11 -0
- data/sig/examples/widget_sparkline_demo/app.rbs +10 -0
- data/{examples → sig/examples}/widget_style_colors/app.rbs +1 -1
- data/sig/examples/widget_table_flex/app.rbs +11 -0
- data/sig/ratatui_ruby/frame.rbs +9 -0
- data/sig/ratatui_ruby/ratatui_ruby.rbs +3 -2
- data/sig/ratatui_ruby/schema/draw.rbs +4 -0
- data/sig/ratatui_ruby/schema/layout.rbs +1 -1
- data/sig/ratatui_ruby/session.rbs +94 -0
- data/tasks/autodoc/inventory.rb +61 -0
- data/tasks/autodoc/member.rb +56 -0
- data/tasks/autodoc/name.rb +19 -0
- data/tasks/autodoc/notice.rb +26 -0
- data/tasks/autodoc/rbs.rb +38 -0
- data/tasks/autodoc/rdoc.rb +45 -0
- data/tasks/autodoc.rake +47 -0
- data/tasks/bump/history.rb +2 -2
- data/tasks/doc.rake +600 -6
- data/tasks/example_viewer.html.erb +172 -0
- data/tasks/lint.rake +8 -4
- data/tasks/resources/index.html.erb +6 -0
- data/tasks/sourcehut.rake +4 -4
- data/tasks/terminal_preview/app_screenshot.rb +1 -3
- data/tasks/terminal_preview/crash_report.rb +7 -9
- data/tasks/terminal_preview/launcher_script.rb +4 -6
- data/tasks/terminal_preview/preview_collection.rb +4 -6
- data/tasks/terminal_preview/safety_confirmation.rb +3 -5
- data/tasks/terminal_preview/saved_screenshot.rb +7 -9
- data/tasks/terminal_preview/terminal_window.rb +7 -9
- data/tasks/test.rake +1 -1
- data/tasks/website/index_page.rb +3 -3
- data/tasks/website/version.rb +10 -10
- data/tasks/website/version_menu.rb +10 -12
- data/tasks/website/versioned_documentation.rb +49 -17
- data/tasks/website/website.rb +6 -8
- data/tasks/website.rake +4 -4
- metadata +156 -125
- data/LICENSES/BSD-2-Clause.txt +0 -9
- data/doc/contributors/better_dx.md +0 -543
- data/doc/contributors/example_analysis.md +0 -82
- data/doc/images/all_events.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/flex_layout.png +0 -0
- data/doc/images/gauge_demo.png +0 -0
- data/doc/images/line_gauge_demo.png +0 -0
- data/doc/images/list_demo.png +0 -0
- data/doc/images/readme_usage.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/examples/all_events/app.rb +0 -169
- data/examples/all_events/app.rbs +0 -7
- data/examples/all_events/test_app.rb +0 -139
- data/examples/analytics/app.rb +0 -258
- data/examples/analytics/app.rbs +0 -7
- data/examples/analytics/test_app.rb +0 -132
- data/examples/block_padding/app.rbs +0 -7
- data/examples/block_padding/test_app.rb +0 -31
- data/examples/block_titles/app.rbs +0 -7
- data/examples/block_titles/test_app.rb +0 -34
- data/examples/box_demo/app.rbs +0 -7
- data/examples/box_demo/test_app.rb +0 -88
- data/examples/calendar_demo/app.rb +0 -101
- data/examples/calendar_demo/app.rbs +0 -7
- data/examples/calendar_demo/test_app.rb +0 -108
- data/examples/cell_demo/app.rb +0 -108
- data/examples/cell_demo/app.rbs +0 -7
- data/examples/cell_demo/test_app.rb +0 -36
- data/examples/chart_demo/app.rb +0 -203
- data/examples/chart_demo/app.rbs +0 -7
- data/examples/chart_demo/test_app.rb +0 -102
- data/examples/custom_widget/app.rb +0 -51
- data/examples/custom_widget/app.rbs +0 -7
- data/examples/custom_widget/test_app.rb +0 -30
- data/examples/flex_layout/app.rb +0 -156
- data/examples/flex_layout/app.rbs +0 -7
- data/examples/flex_layout/test_app.rb +0 -65
- data/examples/gauge_demo/app.rb +0 -182
- data/examples/gauge_demo/test_app.rb +0 -120
- data/examples/hit_test/app.rb +0 -175
- data/examples/hit_test/app.rbs +0 -7
- data/examples/hit_test/test_app.rb +0 -102
- data/examples/line_gauge_demo/app.rb +0 -190
- data/examples/line_gauge_demo/app.rbs +0 -7
- data/examples/line_gauge_demo/test_app.rb +0 -129
- data/examples/list_demo/app.rb +0 -253
- data/examples/list_demo/test_app.rb +0 -237
- data/examples/list_styles/app.rb +0 -140
- data/examples/list_styles/app.rbs +0 -7
- data/examples/list_styles/test_app.rb +0 -157
- data/examples/login_form/app.rbs +0 -7
- data/examples/login_form/test_app.rb +0 -51
- data/examples/map_demo/app.rbs +0 -7
- data/examples/map_demo/test_app.rb +0 -149
- data/examples/mouse_events/app.rb +0 -97
- data/examples/mouse_events/app.rbs +0 -7
- data/examples/mouse_events/test_app.rb +0 -53
- data/examples/popup_demo/app.rb +0 -103
- data/examples/popup_demo/app.rbs +0 -7
- data/examples/popup_demo/test_app.rb +0 -54
- data/examples/quickstart_dsl/app.rbs +0 -7
- data/examples/quickstart_dsl/test_app.rb +0 -29
- data/examples/quickstart_lifecycle/app.rbs +0 -7
- data/examples/quickstart_lifecycle/test_app.rb +0 -29
- data/examples/ratatui_logo_demo/app.rb +0 -79
- data/examples/ratatui_logo_demo/app.rbs +0 -7
- data/examples/ratatui_logo_demo/test_app.rb +0 -51
- data/examples/ratatui_mascot_demo/app.rb +0 -84
- data/examples/ratatui_mascot_demo/app.rbs +0 -7
- data/examples/ratatui_mascot_demo/test_app.rb +0 -47
- data/examples/readme_usage/app.rb +0 -29
- data/examples/readme_usage/app.rbs +0 -7
- data/examples/readme_usage/test_app.rb +0 -29
- data/examples/rich_text/app.rb +0 -141
- data/examples/rich_text/app.rbs +0 -7
- data/examples/rich_text/test_app.rb +0 -166
- data/examples/scroll_text/app.rb +0 -103
- data/examples/scroll_text/app.rbs +0 -7
- data/examples/scroll_text/test_app.rb +0 -110
- data/examples/scrollbar_demo/app.rb +0 -143
- data/examples/scrollbar_demo/app.rbs +0 -7
- data/examples/scrollbar_demo/test_app.rb +0 -77
- data/examples/sparkline_demo/app.rb +0 -240
- data/examples/sparkline_demo/test_app.rb +0 -107
- data/examples/table_flex/app.rb +0 -65
- data/examples/table_flex/app.rbs +0 -7
- data/examples/table_flex/test_app.rb +0 -36
- data/examples/table_select/app.rbs +0 -7
- data/examples/table_select/test_app.rb +0 -180
- data/examples/widget_style_colors/test_app.rb +0 -48
- /data/doc/images/{analytics.png → app_analytics.png} +0 -0
- /data/doc/images/{custom_widget.png → app_custom_widget.png} +0 -0
- /data/doc/images/{login_form.png → app_login_form.png} +0 -0
- /data/doc/images/{map_demo.png → app_map_demo.png} +0 -0
- /data/doc/images/{mouse_events.png → app_mouse_events.png} +0 -0
- /data/doc/images/{table_select.png → app_table_select.png} +0 -0
- /data/doc/images/{quickstart_dsl.png → verify_quickstart_dsl.png} +0 -0
- /data/doc/images/{ratatui_logo_demo.png → verify_quickstart_layout.png} +0 -0
- /data/doc/images/{quickstart_lifecycle.png → verify_quickstart_lifecycle.png} +0 -0
- /data/doc/images/{list_styles.png → widget_list_styles.png} +0 -0
- /data/doc/images/{popup_demo.png → widget_popup_demo.png} +0 -0
- /data/doc/images/{hit_test.png → widget_rect.png} +0 -0
- /data/doc/images/{rich_text.png → widget_rich_text.png} +0 -0
- /data/doc/images/{scroll_text.png → widget_scroll_text.png} +0 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
5
|
+
|
|
6
|
+
class WidgetListDemo
|
|
7
|
+
# @public
|
|
8
|
+
def self.new: () -> WidgetListDemo
|
|
9
|
+
|
|
10
|
+
# @public
|
|
11
|
+
def run: () -> void
|
|
12
|
+
end
|
|
@@ -8,9 +8,10 @@ module RatatuiRuby
|
|
|
8
8
|
def to_s: () -> String
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
def self.init_terminal: () -> void
|
|
11
|
+
def self.init_terminal: (focus_events: bool, bracketed_paste: bool) -> void
|
|
12
12
|
def self.restore_terminal: () -> void
|
|
13
|
-
def self.draw: (widget) -> void
|
|
13
|
+
def self.draw: (widget tree) -> void
|
|
14
|
+
| () { (Frame) -> void } -> void
|
|
14
15
|
def self._poll_event: () -> Hash[Symbol, untyped]?
|
|
15
16
|
def self.poll_event: () -> Event?
|
|
16
17
|
def self.inject_test_event: (String, Hash[Symbol, untyped]) -> void
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
2
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
3
|
+
|
|
4
|
+
# !!! DO NOT EDIT THIS FILE BY HAND !!!
|
|
5
|
+
# This file is automatically generated by `rake autodoc:rbs:session`.
|
|
6
|
+
# Any changes will be overwritten.
|
|
7
|
+
|
|
8
|
+
module RatatuiRuby
|
|
9
|
+
class Session
|
|
10
|
+
def self.new: () -> Session
|
|
11
|
+
| () { (Session) -> void } -> void
|
|
12
|
+
|
|
13
|
+
def _paragraph_line_count: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
14
|
+
def _paragraph_line_width: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
15
|
+
def _tabs_width: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
16
|
+
def clear_events: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
17
|
+
def draw: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
18
|
+
def experimental_warnings: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
19
|
+
def experimental_warnings=: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
20
|
+
def get_buffer_content: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
21
|
+
def get_cell_at: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
22
|
+
def get_cursor_position: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
23
|
+
def init_terminal: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
24
|
+
def init_test_terminal: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
25
|
+
def inject_test_event: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
26
|
+
def poll_event: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
27
|
+
def resize_terminal: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
28
|
+
def restore_terminal: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
29
|
+
def run: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
30
|
+
def warn_experimental_feature: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
31
|
+
def axis: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
32
|
+
def bar_chart: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
33
|
+
def bar_chart_bar: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
34
|
+
def bar_chart_bar_group: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
35
|
+
def block: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
36
|
+
def calendar: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
37
|
+
def canvas: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
38
|
+
def cell: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
39
|
+
def cell_char: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
40
|
+
def cell_default: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
41
|
+
def cell_empty: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
42
|
+
def cell_symbol: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
43
|
+
def center: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
44
|
+
def chart: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
45
|
+
def clear: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
46
|
+
def constraint: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
47
|
+
def constraint_fill: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
48
|
+
def constraint_length: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
49
|
+
def constraint_max: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
50
|
+
def constraint_min: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
51
|
+
def constraint_percentage: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
52
|
+
def constraint_ratio: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
53
|
+
def cursor: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
54
|
+
def dataset: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
55
|
+
def draw_cell_cmd: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
56
|
+
def draw_string_cmd: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
57
|
+
def error: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
58
|
+
def event: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
59
|
+
def event_focus_gained: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
60
|
+
def event_focus_lost: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
61
|
+
def event_key: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
62
|
+
def event_mouse: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
63
|
+
def event_none: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
64
|
+
def event_paste: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
65
|
+
def event_resize: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
66
|
+
def frame: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
67
|
+
def gauge: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
68
|
+
def layout: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
69
|
+
def layout_split: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
70
|
+
def line_chart: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
71
|
+
def line_gauge: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
72
|
+
def list: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
73
|
+
def overlay: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
74
|
+
def paragraph: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
75
|
+
def paragraph_new: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
76
|
+
def ratatui_logo: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
77
|
+
def ratatui_mascot: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
78
|
+
def rect: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
79
|
+
def scrollbar: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
80
|
+
def shape_circle: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
81
|
+
def shape_label: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
82
|
+
def shape_line: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
83
|
+
def shape_map: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
84
|
+
def shape_point: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
85
|
+
def shape_rectangle: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
86
|
+
def sparkline: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
87
|
+
def style: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
88
|
+
def style_default: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
89
|
+
def table: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
90
|
+
def tabs: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
91
|
+
def text_line: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
92
|
+
def text_span: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped
|
|
93
|
+
end
|
|
94
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
5
|
+
|
|
6
|
+
require_relative "name"
|
|
7
|
+
require_relative "member"
|
|
8
|
+
|
|
9
|
+
module Autodoc
|
|
10
|
+
class Inventory
|
|
11
|
+
include Enumerable
|
|
12
|
+
|
|
13
|
+
def each(&)
|
|
14
|
+
delegates.each(&)
|
|
15
|
+
factories.each(&)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def delegates
|
|
19
|
+
RatatuiRuby.singleton_methods(false).sort.map do |method_name|
|
|
20
|
+
Member::Delegate.new(name: method_name)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def factories
|
|
25
|
+
members = []
|
|
26
|
+
RatatuiRuby.constants.sort.each do |const_name|
|
|
27
|
+
next if const_name == :Buffer
|
|
28
|
+
|
|
29
|
+
const = RatatuiRuby.const_get(const_name)
|
|
30
|
+
next unless const.is_a?(Module)
|
|
31
|
+
|
|
32
|
+
if const.is_a?(Class)
|
|
33
|
+
snake_name = Name.new(const_name).snake
|
|
34
|
+
members << Member::Factory.new(name: snake_name, const_name:)
|
|
35
|
+
|
|
36
|
+
const.singleton_methods(false).sort.each do |class_method|
|
|
37
|
+
members << Member::Helper.new(
|
|
38
|
+
name: "#{snake_name}_#{class_method}",
|
|
39
|
+
class_method:,
|
|
40
|
+
const_name:
|
|
41
|
+
)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
const.constants.sort.each do |child_name|
|
|
46
|
+
child = const.const_get(child_name)
|
|
47
|
+
next unless child.is_a?(Class)
|
|
48
|
+
|
|
49
|
+
parent_prefix = Name.new(const_name).snake
|
|
50
|
+
child_suffix = Name.new(child_name).snake
|
|
51
|
+
|
|
52
|
+
members << Member::Factory.new(
|
|
53
|
+
name: "#{parent_prefix}_#{child_suffix}",
|
|
54
|
+
const_name: "#{const_name}::#{child_name}"
|
|
55
|
+
)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
members
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
5
|
+
|
|
6
|
+
module Autodoc
|
|
7
|
+
module Member
|
|
8
|
+
class Delegate < Data.define(:name)
|
|
9
|
+
def rbs
|
|
10
|
+
" def #{name}: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def rdoc
|
|
14
|
+
[
|
|
15
|
+
" # :method: #{name}",
|
|
16
|
+
" # :call-seq: #{name}(*args, **kwargs, &block)",
|
|
17
|
+
" #",
|
|
18
|
+
" # Delegates to RatatuiRuby.#{name}.",
|
|
19
|
+
" #",
|
|
20
|
+
]
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
class Factory < Data.define(:name, :const_name)
|
|
25
|
+
def rbs
|
|
26
|
+
" def #{name}: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def rdoc
|
|
30
|
+
[
|
|
31
|
+
" # :method: #{name}",
|
|
32
|
+
" # :call-seq: #{name}(*args, **kwargs, &block)",
|
|
33
|
+
" #",
|
|
34
|
+
" # Factory for RatatuiRuby::#{const_name}.new.",
|
|
35
|
+
" #",
|
|
36
|
+
]
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
class Helper < Data.define(:name, :class_method, :const_name)
|
|
41
|
+
def rbs
|
|
42
|
+
" def #{name}: (*untyped args, **untyped kwargs) ?{ (*untyped) -> untyped } -> untyped"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def rdoc
|
|
46
|
+
[
|
|
47
|
+
" # :method: #{name}",
|
|
48
|
+
" # :call-seq: #{name}(*args, **kwargs, &block)",
|
|
49
|
+
" #",
|
|
50
|
+
" # Helper for RatatuiRuby::#{const_name}.#{class_method}.",
|
|
51
|
+
" #",
|
|
52
|
+
]
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
5
|
+
|
|
6
|
+
module Autodoc
|
|
7
|
+
class Name < Data.define(:string)
|
|
8
|
+
def snake
|
|
9
|
+
string.to_s
|
|
10
|
+
.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
|
11
|
+
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
|
12
|
+
.downcase
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def to_s
|
|
16
|
+
string.to_s
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
5
|
+
|
|
6
|
+
module Autodoc
|
|
7
|
+
class Notice < Data.define(:task_name)
|
|
8
|
+
def rbs
|
|
9
|
+
[
|
|
10
|
+
"# !!! DO NOT EDIT THIS FILE BY HAND !!!",
|
|
11
|
+
"# This file is automatically generated by `rake #{task_name}`.",
|
|
12
|
+
"# Any changes will be overwritten.",
|
|
13
|
+
"",
|
|
14
|
+
]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def rdoc
|
|
18
|
+
[
|
|
19
|
+
"# !!! DO NOT EDIT THIS FILE BY HAND !!!",
|
|
20
|
+
"# This file is automatically generated by `rake #{task_name}`.",
|
|
21
|
+
"# Any changes will be overwritten.",
|
|
22
|
+
"",
|
|
23
|
+
]
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
5
|
+
|
|
6
|
+
module Autodoc
|
|
7
|
+
class Rbs < Data.define(:path, :notice)
|
|
8
|
+
def write(inventory)
|
|
9
|
+
FileUtils.mkdir_p(File.dirname(path))
|
|
10
|
+
|
|
11
|
+
# REUSE-IgnoreStart
|
|
12
|
+
lines = [
|
|
13
|
+
"# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>",
|
|
14
|
+
"# SPDX-License-Identifier: AGPL-3.0-or-later",
|
|
15
|
+
"",
|
|
16
|
+
]
|
|
17
|
+
# REUSE-IgnoreEnd
|
|
18
|
+
lines += notice.rbs
|
|
19
|
+
lines += [
|
|
20
|
+
"module RatatuiRuby",
|
|
21
|
+
" class Session",
|
|
22
|
+
" def self.new: () -> Session",
|
|
23
|
+
" | () { (Session) -> void } -> void",
|
|
24
|
+
"",
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
inventory.each do |member|
|
|
28
|
+
lines << member.rbs
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
lines << " end"
|
|
32
|
+
lines << "end"
|
|
33
|
+
|
|
34
|
+
File.write(path, "#{lines.join("\n")}\n")
|
|
35
|
+
puts "Generated #{path}"
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
5
|
+
|
|
6
|
+
module Autodoc
|
|
7
|
+
class Rdoc < Data.define(:path, :notice)
|
|
8
|
+
def write(inventory)
|
|
9
|
+
FileUtils.mkdir_p(File.dirname(path))
|
|
10
|
+
|
|
11
|
+
# REUSE-IgnoreStart
|
|
12
|
+
lines = [
|
|
13
|
+
"# frozen_string_literal: true",
|
|
14
|
+
"",
|
|
15
|
+
"# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>",
|
|
16
|
+
"# SPDX-License-Identifier: AGPL-3.0-or-later",
|
|
17
|
+
"",
|
|
18
|
+
]
|
|
19
|
+
# REUSE-IgnoreEnd
|
|
20
|
+
lines += notice.rdoc
|
|
21
|
+
lines += [
|
|
22
|
+
"module RatatuiRuby",
|
|
23
|
+
" class Session",
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
lines << " # == RatatuiRuby Delegates"
|
|
27
|
+
lines << " #"
|
|
28
|
+
inventory.delegates.each do |member|
|
|
29
|
+
lines += member.rdoc
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
lines << " # == Widget Factories"
|
|
33
|
+
lines << " #"
|
|
34
|
+
inventory.factories.each do |member|
|
|
35
|
+
lines += member.rdoc
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
lines << " end"
|
|
39
|
+
lines << "end"
|
|
40
|
+
|
|
41
|
+
File.write(path, "#{lines.join("\n")}\n")
|
|
42
|
+
puts "Generated #{path}"
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|