ratatui_ruby 0.5.0 → 0.7.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 +10 -4
- data/CHANGELOG.md +79 -7
- data/README.md +37 -5
- data/REUSE.toml +2 -7
- data/doc/application_architecture.md +96 -22
- data/doc/application_testing.md +76 -30
- data/doc/contributors/architectural_overhaul/chat_conversations.md +4952 -0
- data/doc/contributors/architectural_overhaul/implementation_plan.md +60 -0
- data/doc/contributors/architectural_overhaul/task.md +37 -0
- data/doc/contributors/design/ruby_frontend.md +288 -56
- data/doc/contributors/design/rust_backend.md +349 -54
- data/doc/contributors/developing_examples.md +134 -49
- data/doc/contributors/index.md +7 -5
- data/doc/contributors/v1.0.0_blockers.md +1729 -0
- data/doc/event_handling.md +11 -3
- data/doc/images/app_all_events.png +0 -0
- data/doc/images/app_color_picker.png +0 -0
- data/doc/images/app_login_form.png +0 -0
- data/doc/images/app_stateful_interaction.png +0 -0
- data/doc/images/verify_quickstart_dsl.png +0 -0
- data/doc/images/verify_quickstart_layout.png +0 -0
- data/doc/images/verify_quickstart_lifecycle.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_demo.png +0 -0
- data/doc/images/widget_canvas_demo.png +0 -0
- data/doc/images/widget_cell_demo.png +0 -0
- data/doc/images/widget_center_demo.png +0 -0
- data/doc/images/widget_chart_demo.png +0 -0
- data/doc/images/widget_list_demo.png +0 -0
- data/doc/images/widget_overlay_demo.png +0 -0
- data/doc/images/widget_render.png +0 -0
- data/doc/images/widget_rich_text.png +0 -0
- data/doc/images/widget_scroll_text.png +0 -0
- data/doc/images/widget_sparkline_demo.png +0 -0
- data/doc/images/widget_table_demo.png +0 -0
- data/doc/images/widget_tabs_demo.png +0 -0
- data/doc/images/widget_text_width.png +0 -0
- data/doc/index.md +11 -6
- data/doc/interactive_design.md +2 -2
- data/doc/quickstart.md +127 -165
- data/doc/terminal_limitations.md +92 -0
- data/doc/v0.7.0_migration.md +236 -0
- data/doc/why.md +93 -0
- data/examples/app_all_events/README.md +47 -27
- data/examples/app_all_events/app.rb +38 -35
- data/examples/app_all_events/model/app_model.rb +157 -0
- data/examples/app_all_events/model/event_entry.rb +17 -0
- data/examples/app_all_events/model/msg.rb +37 -0
- data/examples/app_all_events/update.rb +73 -0
- data/examples/app_all_events/view/app_view.rb +9 -9
- data/examples/app_all_events/view/controls_view.rb +9 -7
- data/examples/app_all_events/view/counts_view.rb +13 -9
- data/examples/app_all_events/view/live_view.rb +9 -8
- data/examples/app_all_events/view/log_view.rb +11 -16
- data/examples/app_color_picker/README.md +84 -42
- data/examples/app_color_picker/app.rb +24 -62
- data/examples/app_color_picker/controls.rb +90 -0
- data/examples/app_color_picker/copy_dialog.rb +45 -49
- data/examples/app_color_picker/export_pane.rb +126 -0
- data/examples/app_color_picker/input.rb +99 -67
- data/examples/app_color_picker/main_container.rb +178 -0
- data/examples/app_color_picker/palette.rb +55 -26
- data/examples/app_login_form/README.md +49 -0
- data/examples/app_login_form/app.rb +2 -3
- data/examples/app_stateful_interaction/README.md +33 -0
- data/examples/app_stateful_interaction/app.rb +272 -0
- data/examples/timeout_demo.rb +43 -0
- data/examples/verify_quickstart_dsl/README.md +49 -0
- data/examples/verify_quickstart_dsl/app.rb +2 -0
- data/examples/verify_quickstart_layout/README.md +71 -0
- data/examples/verify_quickstart_layout/app.rb +2 -0
- data/examples/verify_quickstart_lifecycle/README.md +56 -0
- data/examples/verify_quickstart_lifecycle/app.rb +10 -4
- data/examples/verify_readme_usage/README.md +43 -0
- data/examples/verify_readme_usage/app.rb +8 -2
- data/examples/widget_barchart_demo/README.md +50 -0
- data/examples/widget_barchart_demo/app.rb +5 -5
- data/examples/widget_block_demo/README.md +36 -0
- data/examples/widget_block_demo/app.rb +256 -0
- data/examples/widget_box_demo/README.md +45 -0
- data/examples/widget_calendar_demo/README.md +39 -0
- data/examples/widget_calendar_demo/app.rb +5 -1
- data/examples/widget_canvas_demo/README.md +27 -0
- data/examples/widget_canvas_demo/app.rb +123 -0
- data/examples/widget_cell_demo/README.md +36 -0
- data/examples/widget_cell_demo/app.rb +31 -24
- data/examples/widget_center_demo/README.md +29 -0
- data/examples/widget_center_demo/app.rb +116 -0
- data/examples/widget_chart_demo/README.md +41 -0
- data/examples/widget_chart_demo/app.rb +7 -2
- data/examples/widget_gauge_demo/README.md +41 -0
- data/examples/widget_layout_split/README.md +44 -0
- data/examples/widget_line_gauge_demo/README.md +41 -0
- data/examples/widget_list_demo/README.md +49 -0
- data/examples/widget_list_demo/app.rb +91 -107
- data/examples/widget_map_demo/README.md +39 -0
- data/examples/{app_map_demo → widget_map_demo}/app.rb +4 -4
- data/examples/widget_overlay_demo/README.md +36 -0
- data/examples/widget_overlay_demo/app.rb +248 -0
- data/examples/widget_popup_demo/README.md +36 -0
- data/examples/widget_ratatui_logo_demo/README.md +34 -0
- data/examples/widget_ratatui_logo_demo/app.rb +1 -1
- data/examples/widget_ratatui_mascot_demo/README.md +34 -0
- data/examples/widget_rect/README.md +38 -0
- data/examples/widget_render/README.md +37 -0
- data/examples/widget_render/app.rb +3 -3
- data/examples/widget_rich_text/README.md +35 -0
- data/examples/widget_rich_text/app.rb +62 -33
- data/examples/widget_scroll_text/README.md +37 -0
- data/examples/widget_scroll_text/app.rb +0 -1
- data/examples/widget_scrollbar_demo/README.md +37 -0
- data/examples/widget_sparkline_demo/README.md +42 -0
- data/examples/widget_sparkline_demo/app.rb +4 -3
- data/examples/widget_style_colors/README.md +34 -0
- data/examples/widget_table_demo/README.md +48 -0
- data/examples/{app_table_select → widget_table_demo}/app.rb +65 -12
- data/examples/widget_tabs_demo/README.md +41 -0
- data/examples/widget_tabs_demo/app.rb +15 -1
- data/examples/widget_text_width/README.md +35 -0
- data/examples/widget_text_width/app.rb +113 -0
- data/exe/.gitkeep +0 -0
- data/ext/ratatui_ruby/Cargo.lock +11 -4
- data/ext/ratatui_ruby/Cargo.toml +2 -1
- data/ext/ratatui_ruby/src/events.rs +238 -26
- data/ext/ratatui_ruby/src/frame.rs +116 -3
- data/ext/ratatui_ruby/src/lib.rs +37 -6
- data/ext/ratatui_ruby/src/rendering.rs +22 -21
- data/ext/ratatui_ruby/src/string_width.rs +101 -0
- data/ext/ratatui_ruby/src/terminal.rs +39 -15
- data/ext/ratatui_ruby/src/text.rs +13 -4
- data/ext/ratatui_ruby/src/widgets/barchart.rs +24 -6
- data/ext/ratatui_ruby/src/widgets/canvas.rs +5 -5
- data/ext/ratatui_ruby/src/widgets/gauge.rs +9 -2
- data/ext/ratatui_ruby/src/widgets/line_gauge.rs +9 -2
- data/ext/ratatui_ruby/src/widgets/list.rs +179 -3
- data/ext/ratatui_ruby/src/widgets/list_state.rs +137 -0
- data/ext/ratatui_ruby/src/widgets/mod.rs +3 -0
- data/ext/ratatui_ruby/src/widgets/scrollbar.rs +93 -1
- data/ext/ratatui_ruby/src/widgets/scrollbar_state.rs +169 -0
- data/ext/ratatui_ruby/src/widgets/table.rs +191 -34
- data/ext/ratatui_ruby/src/widgets/table_state.rs +121 -0
- data/lib/ratatui_ruby/buffer/cell.rb +168 -0
- data/lib/ratatui_ruby/buffer.rb +15 -0
- data/lib/ratatui_ruby/cell.rb +4 -4
- data/lib/ratatui_ruby/event/key/character.rb +35 -0
- data/lib/ratatui_ruby/event/key/media.rb +44 -0
- data/lib/ratatui_ruby/event/key/modifier.rb +95 -0
- data/lib/ratatui_ruby/event/key/navigation.rb +55 -0
- data/lib/ratatui_ruby/event/key/system.rb +45 -0
- data/lib/ratatui_ruby/event/key.rb +111 -51
- data/lib/ratatui_ruby/event/mouse.rb +3 -3
- data/lib/ratatui_ruby/event/paste.rb +1 -1
- data/lib/ratatui_ruby/frame.rb +100 -4
- data/lib/ratatui_ruby/layout/constraint.rb +95 -0
- data/lib/ratatui_ruby/layout/layout.rb +106 -0
- data/lib/ratatui_ruby/layout/rect.rb +118 -0
- data/lib/ratatui_ruby/layout.rb +19 -0
- data/lib/ratatui_ruby/list_state.rb +88 -0
- data/lib/ratatui_ruby/schema/bar_chart/bar.rb +2 -2
- data/lib/ratatui_ruby/schema/cursor.rb +5 -0
- data/lib/ratatui_ruby/schema/gauge.rb +3 -1
- data/lib/ratatui_ruby/schema/layout.rb +1 -1
- data/lib/ratatui_ruby/schema/line_gauge.rb +2 -2
- data/lib/ratatui_ruby/schema/list.rb +25 -4
- data/lib/ratatui_ruby/schema/list_item.rb +41 -0
- data/lib/ratatui_ruby/schema/rect.rb +43 -0
- data/lib/ratatui_ruby/schema/row.rb +66 -0
- data/lib/ratatui_ruby/schema/style.rb +24 -4
- data/lib/ratatui_ruby/schema/table.rb +29 -11
- data/lib/ratatui_ruby/schema/text.rb +96 -3
- data/lib/ratatui_ruby/scrollbar_state.rb +112 -0
- data/lib/ratatui_ruby/style/style.rb +81 -0
- data/lib/ratatui_ruby/style.rb +15 -0
- data/lib/ratatui_ruby/table_state.rb +90 -0
- data/lib/ratatui_ruby/test_helper/event_injection.rb +169 -0
- data/lib/ratatui_ruby/test_helper/snapshot.rb +414 -0
- data/lib/ratatui_ruby/test_helper/style_assertions.rb +351 -0
- data/lib/ratatui_ruby/test_helper/terminal.rb +127 -0
- data/lib/ratatui_ruby/test_helper/test_doubles.rb +68 -0
- data/lib/ratatui_ruby/test_helper.rb +65 -358
- data/lib/ratatui_ruby/tui/buffer_factories.rb +20 -0
- data/lib/ratatui_ruby/tui/canvas_factories.rb +44 -0
- data/lib/ratatui_ruby/tui/core.rb +38 -0
- data/lib/ratatui_ruby/tui/layout_factories.rb +74 -0
- data/lib/ratatui_ruby/tui/state_factories.rb +33 -0
- data/lib/ratatui_ruby/tui/style_factories.rb +20 -0
- data/lib/ratatui_ruby/tui/text_factories.rb +44 -0
- data/lib/ratatui_ruby/tui/widget_factories.rb +195 -0
- data/lib/ratatui_ruby/tui.rb +75 -0
- data/lib/ratatui_ruby/version.rb +1 -1
- data/lib/ratatui_ruby/widgets/bar_chart/bar.rb +47 -0
- data/lib/ratatui_ruby/widgets/bar_chart/bar_group.rb +25 -0
- data/lib/ratatui_ruby/widgets/bar_chart.rb +239 -0
- data/lib/ratatui_ruby/widgets/block.rb +192 -0
- data/lib/ratatui_ruby/widgets/calendar.rb +84 -0
- data/lib/ratatui_ruby/widgets/canvas.rb +231 -0
- data/lib/ratatui_ruby/widgets/cell.rb +47 -0
- data/lib/ratatui_ruby/widgets/center.rb +59 -0
- data/lib/ratatui_ruby/widgets/chart.rb +185 -0
- data/lib/ratatui_ruby/widgets/clear.rb +54 -0
- data/lib/ratatui_ruby/widgets/cursor.rb +42 -0
- data/lib/ratatui_ruby/widgets/gauge.rb +72 -0
- data/lib/ratatui_ruby/widgets/line_gauge.rb +80 -0
- data/lib/ratatui_ruby/widgets/list.rb +127 -0
- data/lib/ratatui_ruby/widgets/list_item.rb +43 -0
- data/lib/ratatui_ruby/widgets/overlay.rb +43 -0
- data/lib/ratatui_ruby/widgets/paragraph.rb +99 -0
- data/lib/ratatui_ruby/widgets/ratatui_logo.rb +31 -0
- data/lib/ratatui_ruby/widgets/ratatui_mascot.rb +36 -0
- data/lib/ratatui_ruby/widgets/row.rb +68 -0
- data/lib/ratatui_ruby/widgets/scrollbar.rb +143 -0
- data/lib/ratatui_ruby/widgets/shape/label.rb +68 -0
- data/lib/ratatui_ruby/widgets/sparkline.rb +134 -0
- data/lib/ratatui_ruby/widgets/table.rb +141 -0
- data/lib/ratatui_ruby/widgets/tabs.rb +85 -0
- data/lib/ratatui_ruby/widgets.rb +40 -0
- data/lib/ratatui_ruby.rb +64 -57
- data/sig/examples/app_all_events/view.rbs +1 -1
- data/sig/examples/app_all_events/view_state.rbs +1 -1
- data/sig/examples/app_stateful_interaction/app.rbs +33 -0
- data/sig/examples/widget_block_demo/app.rbs +32 -0
- data/sig/examples/{app_map_demo → widget_map_demo}/app.rbs +2 -2
- data/sig/examples/{app_table_select → widget_table_demo}/app.rbs +2 -2
- data/sig/examples/{widget_table_flex → widget_text_width}/app.rbs +2 -3
- data/sig/ratatui_ruby/event.rbs +11 -1
- data/sig/ratatui_ruby/frame.rbs +2 -0
- data/sig/ratatui_ruby/list_state.rbs +13 -0
- data/sig/ratatui_ruby/ratatui_ruby.rbs +2 -2
- data/sig/ratatui_ruby/schema/bar_chart/bar.rbs +3 -3
- data/sig/ratatui_ruby/schema/gauge.rbs +2 -2
- data/sig/ratatui_ruby/schema/line_gauge.rbs +2 -2
- data/sig/ratatui_ruby/schema/list.rbs +4 -2
- data/sig/ratatui_ruby/schema/list_item.rbs +10 -0
- data/sig/ratatui_ruby/schema/rect.rbs +3 -0
- data/sig/ratatui_ruby/schema/row.rbs +22 -0
- data/sig/ratatui_ruby/schema/style.rbs +3 -3
- data/sig/ratatui_ruby/schema/table.rbs +3 -1
- data/sig/ratatui_ruby/schema/text.rbs +9 -6
- data/sig/ratatui_ruby/scrollbar_state.rbs +18 -0
- data/sig/ratatui_ruby/session.rbs +41 -48
- data/sig/ratatui_ruby/table_state.rbs +15 -0
- data/sig/ratatui_ruby/test_helper/event_injection.rbs +16 -0
- data/sig/ratatui_ruby/test_helper/snapshot.rbs +12 -0
- data/sig/ratatui_ruby/test_helper/style_assertions.rbs +64 -0
- data/sig/ratatui_ruby/test_helper/terminal.rbs +14 -0
- data/sig/ratatui_ruby/test_helper/test_doubles.rbs +22 -0
- data/sig/ratatui_ruby/test_helper.rbs +5 -4
- data/sig/ratatui_ruby/tui/buffer_factories.rbs +10 -0
- data/sig/ratatui_ruby/tui/canvas_factories.rbs +14 -0
- data/sig/ratatui_ruby/tui/core.rbs +14 -0
- data/sig/ratatui_ruby/tui/layout_factories.rbs +19 -0
- data/sig/ratatui_ruby/tui/state_factories.rbs +12 -0
- data/sig/ratatui_ruby/tui/style_factories.rbs +10 -0
- data/sig/ratatui_ruby/tui/text_factories.rbs +14 -0
- data/sig/ratatui_ruby/tui/widget_factories.rbs +39 -0
- data/sig/ratatui_ruby/tui.rbs +19 -0
- data/tasks/autodoc/examples.rb +79 -0
- data/tasks/autodoc.rake +7 -35
- data/tasks/bump/changelog.rb +3 -3
- data/tasks/bump/links.rb +67 -0
- data/tasks/sourcehut.rake +64 -21
- data/tasks/terminal_preview/app_screenshot.rb +13 -3
- data/tasks/terminal_preview/saved_screenshot.rb +4 -3
- metadata +169 -48
- data/doc/contributors/dwim_dx.md +0 -366
- data/doc/images/app_analytics.png +0 -0
- data/doc/images/app_custom_widget.png +0 -0
- data/doc/images/app_mouse_events.png +0 -0
- data/doc/images/app_table_select.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_list_styles.png +0 -0
- data/doc/images/widget_table_flex.png +0 -0
- data/examples/app_all_events/model/events.rb +0 -180
- data/examples/app_all_events/model/highlight.rb +0 -57
- data/examples/app_all_events/test/snapshots/after_focus_lost.txt +0 -24
- data/examples/app_all_events/test/snapshots/after_focus_regained.txt +0 -24
- data/examples/app_all_events/test/snapshots/after_horizontal_resize.txt +0 -24
- data/examples/app_all_events/test/snapshots/after_key_a.txt +0 -24
- data/examples/app_all_events/test/snapshots/after_key_ctrl_x.txt +0 -24
- data/examples/app_all_events/test/snapshots/after_mouse_click.txt +0 -24
- data/examples/app_all_events/test/snapshots/after_mouse_drag.txt +0 -24
- data/examples/app_all_events/test/snapshots/after_multiple_events.txt +0 -24
- data/examples/app_all_events/test/snapshots/after_paste.txt +0 -24
- data/examples/app_all_events/test/snapshots/after_resize.txt +0 -24
- data/examples/app_all_events/test/snapshots/after_right_click.txt +0 -24
- data/examples/app_all_events/test/snapshots/after_vertical_resize.txt +0 -24
- data/examples/app_all_events/test/snapshots/initial_state.txt +0 -24
- data/examples/app_all_events/view_state.rb +0 -42
- data/examples/app_color_picker/scene.rb +0 -201
- data/examples/widget_block_padding/app.rb +0 -67
- data/examples/widget_block_titles/app.rb +0 -69
- data/examples/widget_list_styles/app.rb +0 -141
- data/examples/widget_table_flex/app.rb +0 -95
- data/lib/ratatui_ruby/session/autodoc.rb +0 -417
- data/lib/ratatui_ruby/session.rb +0 -163
- data/sig/examples/widget_block_padding/app.rbs +0 -11
- data/sig/examples/widget_block_titles/app.rbs +0 -11
- data/sig/examples/widget_list_styles/app.rbs +0 -11
- data/tasks/autodoc/inventory.rb +0 -61
- data/tasks/autodoc/notice.rb +0 -26
- data/tasks/autodoc/rbs.rb +0 -38
- data/tasks/autodoc/rdoc.rb +0 -45
- data/tasks/bump/comparison_links.rb +0 -41
- /data/doc/images/{app_map_demo.png → widget_map_demo.png} +0 -0
|
@@ -1,417 +0,0 @@
|
|
|
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
|
-
# !!! DO NOT EDIT THIS FILE BY HAND !!!
|
|
7
|
-
# This file is automatically generated by `rake autodoc:rdoc:session`.
|
|
8
|
-
# Any changes will be overwritten.
|
|
9
|
-
|
|
10
|
-
module RatatuiRuby
|
|
11
|
-
class Session
|
|
12
|
-
# == RatatuiRuby Delegates
|
|
13
|
-
#
|
|
14
|
-
# :method: _paragraph_line_count
|
|
15
|
-
# :call-seq: _paragraph_line_count(*args, **kwargs, &block)
|
|
16
|
-
#
|
|
17
|
-
# Delegates to RatatuiRuby._paragraph_line_count.
|
|
18
|
-
#
|
|
19
|
-
# :method: _paragraph_line_width
|
|
20
|
-
# :call-seq: _paragraph_line_width(*args, **kwargs, &block)
|
|
21
|
-
#
|
|
22
|
-
# Delegates to RatatuiRuby._paragraph_line_width.
|
|
23
|
-
#
|
|
24
|
-
# :method: _tabs_width
|
|
25
|
-
# :call-seq: _tabs_width(*args, **kwargs, &block)
|
|
26
|
-
#
|
|
27
|
-
# Delegates to RatatuiRuby._tabs_width.
|
|
28
|
-
#
|
|
29
|
-
# :method: clear_events
|
|
30
|
-
# :call-seq: clear_events(*args, **kwargs, &block)
|
|
31
|
-
#
|
|
32
|
-
# Delegates to RatatuiRuby.clear_events.
|
|
33
|
-
#
|
|
34
|
-
# :method: draw
|
|
35
|
-
# :call-seq: draw(*args, **kwargs, &block)
|
|
36
|
-
#
|
|
37
|
-
# Delegates to RatatuiRuby.draw.
|
|
38
|
-
#
|
|
39
|
-
# :method: experimental_warnings
|
|
40
|
-
# :call-seq: experimental_warnings(*args, **kwargs, &block)
|
|
41
|
-
#
|
|
42
|
-
# Delegates to RatatuiRuby.experimental_warnings.
|
|
43
|
-
#
|
|
44
|
-
# :method: experimental_warnings=
|
|
45
|
-
# :call-seq: experimental_warnings=(*args, **kwargs, &block)
|
|
46
|
-
#
|
|
47
|
-
# Delegates to RatatuiRuby.experimental_warnings=.
|
|
48
|
-
#
|
|
49
|
-
# :method: get_buffer_content
|
|
50
|
-
# :call-seq: get_buffer_content(*args, **kwargs, &block)
|
|
51
|
-
#
|
|
52
|
-
# Delegates to RatatuiRuby.get_buffer_content.
|
|
53
|
-
#
|
|
54
|
-
# :method: get_cell_at
|
|
55
|
-
# :call-seq: get_cell_at(*args, **kwargs, &block)
|
|
56
|
-
#
|
|
57
|
-
# Delegates to RatatuiRuby.get_cell_at.
|
|
58
|
-
#
|
|
59
|
-
# :method: get_cursor_position
|
|
60
|
-
# :call-seq: get_cursor_position(*args, **kwargs, &block)
|
|
61
|
-
#
|
|
62
|
-
# Delegates to RatatuiRuby.get_cursor_position.
|
|
63
|
-
#
|
|
64
|
-
# :method: init_terminal
|
|
65
|
-
# :call-seq: init_terminal(*args, **kwargs, &block)
|
|
66
|
-
#
|
|
67
|
-
# Delegates to RatatuiRuby.init_terminal.
|
|
68
|
-
#
|
|
69
|
-
# :method: init_test_terminal
|
|
70
|
-
# :call-seq: init_test_terminal(*args, **kwargs, &block)
|
|
71
|
-
#
|
|
72
|
-
# Delegates to RatatuiRuby.init_test_terminal.
|
|
73
|
-
#
|
|
74
|
-
# :method: inject_test_event
|
|
75
|
-
# :call-seq: inject_test_event(*args, **kwargs, &block)
|
|
76
|
-
#
|
|
77
|
-
# Delegates to RatatuiRuby.inject_test_event.
|
|
78
|
-
#
|
|
79
|
-
# :method: poll_event
|
|
80
|
-
# :call-seq: poll_event(*args, **kwargs, &block)
|
|
81
|
-
#
|
|
82
|
-
# Delegates to RatatuiRuby.poll_event.
|
|
83
|
-
#
|
|
84
|
-
# :method: resize_terminal
|
|
85
|
-
# :call-seq: resize_terminal(*args, **kwargs, &block)
|
|
86
|
-
#
|
|
87
|
-
# Delegates to RatatuiRuby.resize_terminal.
|
|
88
|
-
#
|
|
89
|
-
# :method: restore_terminal
|
|
90
|
-
# :call-seq: restore_terminal(*args, **kwargs, &block)
|
|
91
|
-
#
|
|
92
|
-
# Delegates to RatatuiRuby.restore_terminal.
|
|
93
|
-
#
|
|
94
|
-
# :method: run
|
|
95
|
-
# :call-seq: run(*args, **kwargs, &block)
|
|
96
|
-
#
|
|
97
|
-
# Delegates to RatatuiRuby.run.
|
|
98
|
-
#
|
|
99
|
-
# :method: warn_experimental_feature
|
|
100
|
-
# :call-seq: warn_experimental_feature(*args, **kwargs, &block)
|
|
101
|
-
#
|
|
102
|
-
# Delegates to RatatuiRuby.warn_experimental_feature.
|
|
103
|
-
#
|
|
104
|
-
# == Widget Factories
|
|
105
|
-
#
|
|
106
|
-
# :method: axis
|
|
107
|
-
# :call-seq: axis(*args, **kwargs, &block)
|
|
108
|
-
#
|
|
109
|
-
# Factory for RatatuiRuby::Axis.new.
|
|
110
|
-
#
|
|
111
|
-
# :method: bar_chart
|
|
112
|
-
# :call-seq: bar_chart(*args, **kwargs, &block)
|
|
113
|
-
#
|
|
114
|
-
# Factory for RatatuiRuby::BarChart.new.
|
|
115
|
-
#
|
|
116
|
-
# :method: bar_chart_bar
|
|
117
|
-
# :call-seq: bar_chart_bar(*args, **kwargs, &block)
|
|
118
|
-
#
|
|
119
|
-
# Factory for RatatuiRuby::BarChart::Bar.new.
|
|
120
|
-
#
|
|
121
|
-
# :method: bar_chart_bar_group
|
|
122
|
-
# :call-seq: bar_chart_bar_group(*args, **kwargs, &block)
|
|
123
|
-
#
|
|
124
|
-
# Factory for RatatuiRuby::BarChart::BarGroup.new.
|
|
125
|
-
#
|
|
126
|
-
# :method: block
|
|
127
|
-
# :call-seq: block(*args, **kwargs, &block)
|
|
128
|
-
#
|
|
129
|
-
# Factory for RatatuiRuby::Block.new.
|
|
130
|
-
#
|
|
131
|
-
# :method: calendar
|
|
132
|
-
# :call-seq: calendar(*args, **kwargs, &block)
|
|
133
|
-
#
|
|
134
|
-
# Factory for RatatuiRuby::Calendar.new.
|
|
135
|
-
#
|
|
136
|
-
# :method: canvas
|
|
137
|
-
# :call-seq: canvas(*args, **kwargs, &block)
|
|
138
|
-
#
|
|
139
|
-
# Factory for RatatuiRuby::Canvas.new.
|
|
140
|
-
#
|
|
141
|
-
# :method: cell
|
|
142
|
-
# :call-seq: cell(*args, **kwargs, &block)
|
|
143
|
-
#
|
|
144
|
-
# Factory for RatatuiRuby::Cell.new.
|
|
145
|
-
#
|
|
146
|
-
# :method: cell_char
|
|
147
|
-
# :call-seq: cell_char(*args, **kwargs, &block)
|
|
148
|
-
#
|
|
149
|
-
# Helper for RatatuiRuby::Cell.char.
|
|
150
|
-
#
|
|
151
|
-
# :method: cell_default
|
|
152
|
-
# :call-seq: cell_default(*args, **kwargs, &block)
|
|
153
|
-
#
|
|
154
|
-
# Helper for RatatuiRuby::Cell.default.
|
|
155
|
-
#
|
|
156
|
-
# :method: cell_empty
|
|
157
|
-
# :call-seq: cell_empty(*args, **kwargs, &block)
|
|
158
|
-
#
|
|
159
|
-
# Helper for RatatuiRuby::Cell.empty.
|
|
160
|
-
#
|
|
161
|
-
# :method: cell_symbol
|
|
162
|
-
# :call-seq: cell_symbol(*args, **kwargs, &block)
|
|
163
|
-
#
|
|
164
|
-
# Helper for RatatuiRuby::Cell.symbol.
|
|
165
|
-
#
|
|
166
|
-
# :method: center
|
|
167
|
-
# :call-seq: center(*args, **kwargs, &block)
|
|
168
|
-
#
|
|
169
|
-
# Factory for RatatuiRuby::Center.new.
|
|
170
|
-
#
|
|
171
|
-
# :method: chart
|
|
172
|
-
# :call-seq: chart(*args, **kwargs, &block)
|
|
173
|
-
#
|
|
174
|
-
# Factory for RatatuiRuby::Chart.new.
|
|
175
|
-
#
|
|
176
|
-
# :method: clear
|
|
177
|
-
# :call-seq: clear(*args, **kwargs, &block)
|
|
178
|
-
#
|
|
179
|
-
# Factory for RatatuiRuby::Clear.new.
|
|
180
|
-
#
|
|
181
|
-
# :method: constraint
|
|
182
|
-
# :call-seq: constraint(*args, **kwargs, &block)
|
|
183
|
-
#
|
|
184
|
-
# Factory for RatatuiRuby::Constraint.new.
|
|
185
|
-
#
|
|
186
|
-
# :method: constraint_fill
|
|
187
|
-
# :call-seq: constraint_fill(*args, **kwargs, &block)
|
|
188
|
-
#
|
|
189
|
-
# Helper for RatatuiRuby::Constraint.fill.
|
|
190
|
-
#
|
|
191
|
-
# :method: constraint_length
|
|
192
|
-
# :call-seq: constraint_length(*args, **kwargs, &block)
|
|
193
|
-
#
|
|
194
|
-
# Helper for RatatuiRuby::Constraint.length.
|
|
195
|
-
#
|
|
196
|
-
# :method: constraint_max
|
|
197
|
-
# :call-seq: constraint_max(*args, **kwargs, &block)
|
|
198
|
-
#
|
|
199
|
-
# Helper for RatatuiRuby::Constraint.max.
|
|
200
|
-
#
|
|
201
|
-
# :method: constraint_min
|
|
202
|
-
# :call-seq: constraint_min(*args, **kwargs, &block)
|
|
203
|
-
#
|
|
204
|
-
# Helper for RatatuiRuby::Constraint.min.
|
|
205
|
-
#
|
|
206
|
-
# :method: constraint_percentage
|
|
207
|
-
# :call-seq: constraint_percentage(*args, **kwargs, &block)
|
|
208
|
-
#
|
|
209
|
-
# Helper for RatatuiRuby::Constraint.percentage.
|
|
210
|
-
#
|
|
211
|
-
# :method: constraint_ratio
|
|
212
|
-
# :call-seq: constraint_ratio(*args, **kwargs, &block)
|
|
213
|
-
#
|
|
214
|
-
# Helper for RatatuiRuby::Constraint.ratio.
|
|
215
|
-
#
|
|
216
|
-
# :method: cursor
|
|
217
|
-
# :call-seq: cursor(*args, **kwargs, &block)
|
|
218
|
-
#
|
|
219
|
-
# Factory for RatatuiRuby::Cursor.new.
|
|
220
|
-
#
|
|
221
|
-
# :method: dataset
|
|
222
|
-
# :call-seq: dataset(*args, **kwargs, &block)
|
|
223
|
-
#
|
|
224
|
-
# Factory for RatatuiRuby::Dataset.new.
|
|
225
|
-
#
|
|
226
|
-
# :method: draw_cell_cmd
|
|
227
|
-
# :call-seq: draw_cell_cmd(*args, **kwargs, &block)
|
|
228
|
-
#
|
|
229
|
-
# Factory for RatatuiRuby::Draw::CellCmd.new.
|
|
230
|
-
#
|
|
231
|
-
# :method: draw_string_cmd
|
|
232
|
-
# :call-seq: draw_string_cmd(*args, **kwargs, &block)
|
|
233
|
-
#
|
|
234
|
-
# Factory for RatatuiRuby::Draw::StringCmd.new.
|
|
235
|
-
#
|
|
236
|
-
# :method: error
|
|
237
|
-
# :call-seq: error(*args, **kwargs, &block)
|
|
238
|
-
#
|
|
239
|
-
# Factory for RatatuiRuby::Error.new.
|
|
240
|
-
#
|
|
241
|
-
# :method: event
|
|
242
|
-
# :call-seq: event(*args, **kwargs, &block)
|
|
243
|
-
#
|
|
244
|
-
# Factory for RatatuiRuby::Event.new.
|
|
245
|
-
#
|
|
246
|
-
# :method: event_focus_gained
|
|
247
|
-
# :call-seq: event_focus_gained(*args, **kwargs, &block)
|
|
248
|
-
#
|
|
249
|
-
# Factory for RatatuiRuby::Event::FocusGained.new.
|
|
250
|
-
#
|
|
251
|
-
# :method: event_focus_lost
|
|
252
|
-
# :call-seq: event_focus_lost(*args, **kwargs, &block)
|
|
253
|
-
#
|
|
254
|
-
# Factory for RatatuiRuby::Event::FocusLost.new.
|
|
255
|
-
#
|
|
256
|
-
# :method: event_key
|
|
257
|
-
# :call-seq: event_key(*args, **kwargs, &block)
|
|
258
|
-
#
|
|
259
|
-
# Factory for RatatuiRuby::Event::Key.new.
|
|
260
|
-
#
|
|
261
|
-
# :method: event_mouse
|
|
262
|
-
# :call-seq: event_mouse(*args, **kwargs, &block)
|
|
263
|
-
#
|
|
264
|
-
# Factory for RatatuiRuby::Event::Mouse.new.
|
|
265
|
-
#
|
|
266
|
-
# :method: event_none
|
|
267
|
-
# :call-seq: event_none(*args, **kwargs, &block)
|
|
268
|
-
#
|
|
269
|
-
# Factory for RatatuiRuby::Event::None.new.
|
|
270
|
-
#
|
|
271
|
-
# :method: event_paste
|
|
272
|
-
# :call-seq: event_paste(*args, **kwargs, &block)
|
|
273
|
-
#
|
|
274
|
-
# Factory for RatatuiRuby::Event::Paste.new.
|
|
275
|
-
#
|
|
276
|
-
# :method: event_resize
|
|
277
|
-
# :call-seq: event_resize(*args, **kwargs, &block)
|
|
278
|
-
#
|
|
279
|
-
# Factory for RatatuiRuby::Event::Resize.new.
|
|
280
|
-
#
|
|
281
|
-
# :method: frame
|
|
282
|
-
# :call-seq: frame(*args, **kwargs, &block)
|
|
283
|
-
#
|
|
284
|
-
# Factory for RatatuiRuby::Frame.new.
|
|
285
|
-
#
|
|
286
|
-
# :method: gauge
|
|
287
|
-
# :call-seq: gauge(*args, **kwargs, &block)
|
|
288
|
-
#
|
|
289
|
-
# Factory for RatatuiRuby::Gauge.new.
|
|
290
|
-
#
|
|
291
|
-
# :method: layout
|
|
292
|
-
# :call-seq: layout(*args, **kwargs, &block)
|
|
293
|
-
#
|
|
294
|
-
# Factory for RatatuiRuby::Layout.new.
|
|
295
|
-
#
|
|
296
|
-
# :method: layout_split
|
|
297
|
-
# :call-seq: layout_split(*args, **kwargs, &block)
|
|
298
|
-
#
|
|
299
|
-
# Helper for RatatuiRuby::Layout.split.
|
|
300
|
-
#
|
|
301
|
-
# :method: line_chart
|
|
302
|
-
# :call-seq: line_chart(*args, **kwargs, &block)
|
|
303
|
-
#
|
|
304
|
-
# Factory for RatatuiRuby::LineChart.new.
|
|
305
|
-
#
|
|
306
|
-
# :method: line_gauge
|
|
307
|
-
# :call-seq: line_gauge(*args, **kwargs, &block)
|
|
308
|
-
#
|
|
309
|
-
# Factory for RatatuiRuby::LineGauge.new.
|
|
310
|
-
#
|
|
311
|
-
# :method: list
|
|
312
|
-
# :call-seq: list(*args, **kwargs, &block)
|
|
313
|
-
#
|
|
314
|
-
# Factory for RatatuiRuby::List.new.
|
|
315
|
-
#
|
|
316
|
-
# :method: overlay
|
|
317
|
-
# :call-seq: overlay(*args, **kwargs, &block)
|
|
318
|
-
#
|
|
319
|
-
# Factory for RatatuiRuby::Overlay.new.
|
|
320
|
-
#
|
|
321
|
-
# :method: paragraph
|
|
322
|
-
# :call-seq: paragraph(*args, **kwargs, &block)
|
|
323
|
-
#
|
|
324
|
-
# Factory for RatatuiRuby::Paragraph.new.
|
|
325
|
-
#
|
|
326
|
-
# :method: paragraph_new
|
|
327
|
-
# :call-seq: paragraph_new(*args, **kwargs, &block)
|
|
328
|
-
#
|
|
329
|
-
# Helper for RatatuiRuby::Paragraph.new.
|
|
330
|
-
#
|
|
331
|
-
# :method: ratatui_logo
|
|
332
|
-
# :call-seq: ratatui_logo(*args, **kwargs, &block)
|
|
333
|
-
#
|
|
334
|
-
# Factory for RatatuiRuby::RatatuiLogo.new.
|
|
335
|
-
#
|
|
336
|
-
# :method: ratatui_mascot
|
|
337
|
-
# :call-seq: ratatui_mascot(*args, **kwargs, &block)
|
|
338
|
-
#
|
|
339
|
-
# Factory for RatatuiRuby::RatatuiMascot.new.
|
|
340
|
-
#
|
|
341
|
-
# :method: rect
|
|
342
|
-
# :call-seq: rect(*args, **kwargs, &block)
|
|
343
|
-
#
|
|
344
|
-
# Factory for RatatuiRuby::Rect.new.
|
|
345
|
-
#
|
|
346
|
-
# :method: scrollbar
|
|
347
|
-
# :call-seq: scrollbar(*args, **kwargs, &block)
|
|
348
|
-
#
|
|
349
|
-
# Factory for RatatuiRuby::Scrollbar.new.
|
|
350
|
-
#
|
|
351
|
-
# :method: shape_circle
|
|
352
|
-
# :call-seq: shape_circle(*args, **kwargs, &block)
|
|
353
|
-
#
|
|
354
|
-
# Factory for RatatuiRuby::Shape::Circle.new.
|
|
355
|
-
#
|
|
356
|
-
# :method: shape_label
|
|
357
|
-
# :call-seq: shape_label(*args, **kwargs, &block)
|
|
358
|
-
#
|
|
359
|
-
# Factory for RatatuiRuby::Shape::Label.new.
|
|
360
|
-
#
|
|
361
|
-
# :method: shape_line
|
|
362
|
-
# :call-seq: shape_line(*args, **kwargs, &block)
|
|
363
|
-
#
|
|
364
|
-
# Factory for RatatuiRuby::Shape::Line.new.
|
|
365
|
-
#
|
|
366
|
-
# :method: shape_map
|
|
367
|
-
# :call-seq: shape_map(*args, **kwargs, &block)
|
|
368
|
-
#
|
|
369
|
-
# Factory for RatatuiRuby::Shape::Map.new.
|
|
370
|
-
#
|
|
371
|
-
# :method: shape_point
|
|
372
|
-
# :call-seq: shape_point(*args, **kwargs, &block)
|
|
373
|
-
#
|
|
374
|
-
# Factory for RatatuiRuby::Shape::Point.new.
|
|
375
|
-
#
|
|
376
|
-
# :method: shape_rectangle
|
|
377
|
-
# :call-seq: shape_rectangle(*args, **kwargs, &block)
|
|
378
|
-
#
|
|
379
|
-
# Factory for RatatuiRuby::Shape::Rectangle.new.
|
|
380
|
-
#
|
|
381
|
-
# :method: sparkline
|
|
382
|
-
# :call-seq: sparkline(*args, **kwargs, &block)
|
|
383
|
-
#
|
|
384
|
-
# Factory for RatatuiRuby::Sparkline.new.
|
|
385
|
-
#
|
|
386
|
-
# :method: style
|
|
387
|
-
# :call-seq: style(*args, **kwargs, &block)
|
|
388
|
-
#
|
|
389
|
-
# Factory for RatatuiRuby::Style.new.
|
|
390
|
-
#
|
|
391
|
-
# :method: style_default
|
|
392
|
-
# :call-seq: style_default(*args, **kwargs, &block)
|
|
393
|
-
#
|
|
394
|
-
# Helper for RatatuiRuby::Style.default.
|
|
395
|
-
#
|
|
396
|
-
# :method: table
|
|
397
|
-
# :call-seq: table(*args, **kwargs, &block)
|
|
398
|
-
#
|
|
399
|
-
# Factory for RatatuiRuby::Table.new.
|
|
400
|
-
#
|
|
401
|
-
# :method: tabs
|
|
402
|
-
# :call-seq: tabs(*args, **kwargs, &block)
|
|
403
|
-
#
|
|
404
|
-
# Factory for RatatuiRuby::Tabs.new.
|
|
405
|
-
#
|
|
406
|
-
# :method: text_line
|
|
407
|
-
# :call-seq: text_line(*args, **kwargs, &block)
|
|
408
|
-
#
|
|
409
|
-
# Factory for RatatuiRuby::Text::Line.new.
|
|
410
|
-
#
|
|
411
|
-
# :method: text_span
|
|
412
|
-
# :call-seq: text_span(*args, **kwargs, &block)
|
|
413
|
-
#
|
|
414
|
-
# Factory for RatatuiRuby::Text::Span.new.
|
|
415
|
-
#
|
|
416
|
-
end
|
|
417
|
-
end
|
data/lib/ratatui_ruby/session.rb
DELETED
|
@@ -1,163 +0,0 @@
|
|
|
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 RatatuiRuby
|
|
7
|
-
# Manages the terminal lifecycle and provides a concise API for the render loop.
|
|
8
|
-
#
|
|
9
|
-
# Writing a TUI loop involves repetitive boilerplate. You constantly instantiate widgets (<tt>RatatuiRuby::Paragraph.new</tt>) and call global methods (<tt>RatatuiRuby.draw</tt>). This is verbose and hard to read.
|
|
10
|
-
#
|
|
11
|
-
# The Session object simplifies this. It acts as a factory and a facade. It provides short helper methods for every widget and delegates core commands to the main module.
|
|
12
|
-
#
|
|
13
|
-
# Use it within <tt>RatatuiRuby.run</tt> to build your interface cleanly.
|
|
14
|
-
#
|
|
15
|
-
# == Available Methods
|
|
16
|
-
#
|
|
17
|
-
# The session dynamically defines factory methods for all RatatuiRuby constants.
|
|
18
|
-
#
|
|
19
|
-
# * <tt>draw(node)</tt> -> Delegates to <tt>RatatuiRuby.draw</tt>
|
|
20
|
-
# * <tt>poll_event</tt> -> Delegates to <tt>RatatuiRuby.poll_event</tt>
|
|
21
|
-
#
|
|
22
|
-
# === Widget Factories
|
|
23
|
-
#
|
|
24
|
-
# The session acts as a dynamic factory. It creates a helper method for **every** class defined in the `RatatuiRuby` module.
|
|
25
|
-
#
|
|
26
|
-
# **The Rule:**
|
|
27
|
-
# To instantiate a class like `RatatuiRuby::SomeWidget`, call `tui.some_widget(...)`.
|
|
28
|
-
#
|
|
29
|
-
# **Common Examples:**
|
|
30
|
-
# * <tt>paragraph(...)</tt> -> <tt>RatatuiRuby::Paragraph.new(...)</tt>
|
|
31
|
-
# * <tt>block(...)</tt> -> <tt>RatatuiRuby::Block.new(...)</tt>
|
|
32
|
-
# * <tt>layout(...)</tt> -> <tt>RatatuiRuby::Layout.new(...)</tt>
|
|
33
|
-
# * <tt>list(...)</tt> -> <tt>RatatuiRuby::List.new(...)</tt>
|
|
34
|
-
# * <tt>table(...)</tt> -> <tt>RatatuiRuby::Table.new(...)</tt>
|
|
35
|
-
# * <tt>style(...)</tt> -> <tt>RatatuiRuby::Style.new(...)</tt>
|
|
36
|
-
#
|
|
37
|
-
# If a new class is added to the library, it is automatically available here.
|
|
38
|
-
#
|
|
39
|
-
# === Nested Helpers
|
|
40
|
-
#
|
|
41
|
-
# * <tt>text_span(...)</tt> -> <tt>RatatuiRuby::Text::Span.new(...)</tt>
|
|
42
|
-
# * <tt>text_line(...)</tt> -> <tt>RatatuiRuby::Text::Line.new(...)</tt>
|
|
43
|
-
#
|
|
44
|
-
# === Examples
|
|
45
|
-
#
|
|
46
|
-
# ==== Basic Usage (Recommended)
|
|
47
|
-
#
|
|
48
|
-
# RatatuiRuby.run do |tui|
|
|
49
|
-
# loop do
|
|
50
|
-
# tui.draw \
|
|
51
|
-
# tui.paragraph \
|
|
52
|
-
# text: "Hello, Ratatui! Press 'q' to quit.",
|
|
53
|
-
# alignment: :center,
|
|
54
|
-
# block: tui.block(
|
|
55
|
-
# title: "My Ruby TUI App",
|
|
56
|
-
# borders: [:all],
|
|
57
|
-
# border_color: "cyan"
|
|
58
|
-
# )
|
|
59
|
-
# event = tui.poll_event
|
|
60
|
-
# break if event == "q" || event == :ctrl_c
|
|
61
|
-
# end
|
|
62
|
-
# end
|
|
63
|
-
#
|
|
64
|
-
# ==== Raw API (Verbose)
|
|
65
|
-
#
|
|
66
|
-
# RatatuiRuby.run do
|
|
67
|
-
# loop do
|
|
68
|
-
# RatatuiRuby.draw \
|
|
69
|
-
# RatatuiRuby::Paragraph.new(
|
|
70
|
-
# text: "Hello, Ratatui! Press 'q' to quit.",
|
|
71
|
-
# alignment: :center,
|
|
72
|
-
# block: RatatuiRuby::Block.new(
|
|
73
|
-
# title: "My Ruby TUI App",
|
|
74
|
-
# borders: [:all],
|
|
75
|
-
# border_color: "cyan"
|
|
76
|
-
# )
|
|
77
|
-
# )
|
|
78
|
-
# event = RatatuiRuby.poll_event
|
|
79
|
-
# break if event == "q" || event == :ctrl_c
|
|
80
|
-
# end
|
|
81
|
-
# end
|
|
82
|
-
#
|
|
83
|
-
# ==== Mixed Usage (Flexible)
|
|
84
|
-
#
|
|
85
|
-
# RatatuiRuby.run do |tui|
|
|
86
|
-
# loop do
|
|
87
|
-
# RatatuiRuby.draw \
|
|
88
|
-
# tui.paragraph \
|
|
89
|
-
# text: "Hello, Ratatui! Press 'q' to quit.",
|
|
90
|
-
# alignment: :center,
|
|
91
|
-
# block: tui.block(
|
|
92
|
-
# title: "My Ruby TUI App",
|
|
93
|
-
# borders: [:all],
|
|
94
|
-
# border_color: "cyan"
|
|
95
|
-
# )
|
|
96
|
-
# event = RatatuiRuby.poll_event
|
|
97
|
-
# break if event == "q" || event == :ctrl_c
|
|
98
|
-
# end
|
|
99
|
-
# end
|
|
100
|
-
class Session
|
|
101
|
-
# Wrap methods directly
|
|
102
|
-
RatatuiRuby.singleton_methods(false).each do |method_name|
|
|
103
|
-
define_method(method_name) do |*args, **kwargs, &block|
|
|
104
|
-
RatatuiRuby.public_send(method_name, *args, **kwargs, &block)
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
# Wrap classes and modules as snake_case factories
|
|
109
|
-
RatatuiRuby.constants.each do |const_name|
|
|
110
|
-
next if const_name == :Buffer
|
|
111
|
-
|
|
112
|
-
const = RatatuiRuby.const_get(const_name)
|
|
113
|
-
next unless const.is_a?(Module) # Class is a Module, so this catches both
|
|
114
|
-
|
|
115
|
-
# 1. Top-level factories (for Classes only)
|
|
116
|
-
# e.g. RatatuiRuby::Paragraph -> tui.paragraph(...)
|
|
117
|
-
if const.is_a?(Class)
|
|
118
|
-
method_name = const_name.to_s
|
|
119
|
-
.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
|
120
|
-
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
|
121
|
-
.downcase
|
|
122
|
-
|
|
123
|
-
define_method(method_name) do |*args, **kwargs, &block|
|
|
124
|
-
const.new(*args, **kwargs, &block)
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
# 2. Class Method Helpers (for Classes only)
|
|
128
|
-
# e.g. Layout.split -> layout_split
|
|
129
|
-
const.singleton_methods(false).each do |class_method|
|
|
130
|
-
session_method_name = "#{method_name}_#{class_method}"
|
|
131
|
-
|
|
132
|
-
define_method(session_method_name) do |*args, **kwargs, &block|
|
|
133
|
-
const.public_send(class_method, *args, **kwargs, &block)
|
|
134
|
-
end
|
|
135
|
-
end
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
# 3. Nested Class Factories (for both Modules and Classes)
|
|
139
|
-
# e.g. RatatuiRuby::Text::Span -> tui.text_span(...)
|
|
140
|
-
# e.g. RatatuiRuby::Shape::Line -> tui.shape_line(...)
|
|
141
|
-
const.constants.each do |child_name|
|
|
142
|
-
child = const.const_get(child_name)
|
|
143
|
-
next unless child.is_a?(Class)
|
|
144
|
-
|
|
145
|
-
parent_prefix = const_name.to_s
|
|
146
|
-
.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
|
147
|
-
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
|
148
|
-
.downcase
|
|
149
|
-
|
|
150
|
-
child_suffix = child_name.to_s
|
|
151
|
-
.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
|
152
|
-
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
|
153
|
-
.downcase
|
|
154
|
-
|
|
155
|
-
method_name = "#{parent_prefix}_#{child_suffix}"
|
|
156
|
-
|
|
157
|
-
define_method(method_name) do |*args, **kwargs, &block|
|
|
158
|
-
child.new(*args, **kwargs, &block)
|
|
159
|
-
end
|
|
160
|
-
end
|
|
161
|
-
end
|
|
162
|
-
end
|
|
163
|
-
end
|
data/tasks/autodoc/inventory.rb
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
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
|
data/tasks/autodoc/notice.rb
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
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
|