ratatui_ruby 0.7.0 → 0.7.2

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.
Files changed (284) hide show
  1. checksums.yaml +4 -4
  2. data/.builds/ruby-3.2.yml +1 -1
  3. data/.builds/ruby-3.3.yml +1 -1
  4. data/.builds/ruby-3.4.yml +1 -1
  5. data/.builds/ruby-4.0.0.yml +1 -1
  6. data/AGENTS.md +8 -1
  7. data/CHANGELOG.md +34 -0
  8. data/README.md +5 -5
  9. data/Rakefile +1 -1
  10. data/doc/{application_architecture.md → concepts/application_architecture.md} +30 -0
  11. data/doc/concepts/async.md +160 -0
  12. data/doc/{event_handling.md → concepts/event_handling.md} +1 -1
  13. data/doc/contributors/auditing/parity.md +233 -0
  14. data/doc/contributors/developing_examples.md +3 -3
  15. data/doc/contributors/v1.0.0_blockers.md +8 -8
  16. data/doc/{quickstart.md → getting_started/quickstart.md} +26 -26
  17. data/doc/{why.md → getting_started/why.md} +1 -1
  18. data/doc/index.md +23 -9
  19. data/doc/troubleshooting/debugging.md +71 -0
  20. data/doc/{terminal_limitations.md → troubleshooting/terminal_limitations.md} +33 -0
  21. data/examples/app_all_events/README.md +1 -0
  22. data/examples/app_all_events/app.rb +2 -0
  23. data/examples/app_all_events/model/app_model.rb +2 -0
  24. data/examples/app_all_events/model/event_color_cycle.rb +2 -0
  25. data/examples/app_all_events/model/event_entry.rb +2 -0
  26. data/examples/app_all_events/model/msg.rb +2 -0
  27. data/examples/app_all_events/model/timestamp.rb +2 -0
  28. data/examples/app_all_events/update.rb +2 -0
  29. data/examples/app_all_events/view/app_view.rb +2 -0
  30. data/examples/app_all_events/view/controls_view.rb +2 -0
  31. data/examples/app_all_events/view/counts_view.rb +2 -0
  32. data/examples/app_all_events/view/live_view.rb +2 -0
  33. data/examples/app_all_events/view/log_view.rb +2 -0
  34. data/examples/app_all_events/view.rb +2 -0
  35. data/examples/app_color_picker/README.md +2 -0
  36. data/examples/app_color_picker/app.rb +2 -0
  37. data/examples/app_color_picker/clipboard.rb +2 -0
  38. data/examples/app_color_picker/color.rb +2 -0
  39. data/examples/app_color_picker/controls.rb +2 -0
  40. data/examples/app_color_picker/copy_dialog.rb +2 -0
  41. data/examples/app_color_picker/export_pane.rb +2 -0
  42. data/examples/app_color_picker/harmony.rb +2 -0
  43. data/examples/app_color_picker/input.rb +2 -0
  44. data/examples/app_color_picker/main_container.rb +2 -0
  45. data/examples/app_color_picker/palette.rb +2 -0
  46. data/examples/app_login_form/README.md +3 -0
  47. data/examples/app_login_form/app.rb +2 -0
  48. data/examples/app_stateful_interaction/README.md +2 -0
  49. data/examples/app_stateful_interaction/app.rb +2 -0
  50. data/examples/timeout_demo.rb +2 -0
  51. data/examples/verify_quickstart_dsl/README.md +2 -2
  52. data/examples/verify_quickstart_dsl/app.rb +2 -0
  53. data/examples/verify_quickstart_layout/README.md +2 -2
  54. data/examples/verify_quickstart_layout/app.rb +2 -0
  55. data/examples/verify_quickstart_lifecycle/README.md +2 -2
  56. data/examples/verify_quickstart_lifecycle/app.rb +2 -0
  57. data/examples/verify_readme_usage/app.rb +2 -0
  58. data/examples/{widget_barchart_demo → widget_barchart}/README.md +5 -3
  59. data/examples/{widget_barchart_demo → widget_barchart}/app.rb +7 -5
  60. data/examples/{widget_block_demo → widget_block}/README.md +5 -3
  61. data/examples/{widget_block_demo → widget_block}/app.rb +6 -4
  62. data/examples/{widget_box_demo → widget_box}/README.md +7 -4
  63. data/examples/{widget_box_demo → widget_box}/app.rb +7 -5
  64. data/examples/{widget_calendar_demo → widget_calendar}/README.md +6 -3
  65. data/examples/{widget_calendar_demo → widget_calendar}/app.rb +6 -4
  66. data/examples/{widget_canvas_demo → widget_canvas}/README.md +2 -2
  67. data/examples/{widget_canvas_demo → widget_canvas}/app.rb +6 -4
  68. data/examples/{widget_cell_demo → widget_cell}/README.md +6 -3
  69. data/examples/{widget_cell_demo → widget_cell}/app.rb +7 -5
  70. data/examples/{widget_center_demo → widget_center}/README.md +2 -2
  71. data/examples/{widget_center_demo → widget_center}/app.rb +6 -4
  72. data/examples/{widget_chart_demo → widget_chart}/README.md +7 -4
  73. data/examples/{widget_chart_demo → widget_chart}/app.rb +7 -5
  74. data/examples/{widget_gauge_demo → widget_gauge}/README.md +6 -3
  75. data/examples/{widget_gauge_demo → widget_gauge}/app.rb +7 -5
  76. data/examples/widget_layout_split/README.md +5 -2
  77. data/examples/widget_layout_split/app.rb +3 -1
  78. data/examples/{widget_line_gauge_demo → widget_line_gauge}/README.md +6 -3
  79. data/examples/{widget_line_gauge_demo → widget_line_gauge}/app.rb +7 -5
  80. data/examples/{widget_list_demo → widget_list}/README.md +7 -4
  81. data/examples/{widget_list_demo → widget_list}/app.rb +7 -5
  82. data/examples/{widget_map_demo → widget_map}/README.md +7 -4
  83. data/examples/{widget_map_demo → widget_map}/app.rb +4 -2
  84. data/examples/{widget_overlay_demo → widget_overlay}/README.md +6 -3
  85. data/examples/{widget_overlay_demo → widget_overlay}/app.rb +5 -3
  86. data/examples/{widget_popup_demo → widget_popup}/README.md +7 -4
  87. data/examples/{widget_popup_demo → widget_popup}/app.rb +6 -4
  88. data/examples/{widget_ratatui_logo_demo → widget_ratatui_logo}/README.md +6 -3
  89. data/examples/{widget_ratatui_logo_demo → widget_ratatui_logo}/app.rb +8 -6
  90. data/examples/{widget_ratatui_mascot_demo → widget_ratatui_mascot}/README.md +6 -3
  91. data/examples/{widget_ratatui_mascot_demo → widget_ratatui_mascot}/app.rb +6 -4
  92. data/examples/widget_rect/README.md +5 -2
  93. data/examples/widget_rect/app.rb +2 -0
  94. data/examples/widget_render/README.md +4 -1
  95. data/examples/widget_render/app.rb +2 -0
  96. data/examples/widget_rich_text/README.md +4 -1
  97. data/examples/widget_rich_text/app.rb +2 -0
  98. data/examples/widget_scroll_text/README.md +4 -1
  99. data/examples/widget_scroll_text/app.rb +3 -1
  100. data/examples/{widget_scrollbar_demo → widget_scrollbar}/README.md +7 -4
  101. data/examples/{widget_scrollbar_demo → widget_scrollbar}/app.rb +6 -4
  102. data/examples/{widget_sparkline_demo → widget_sparkline}/README.md +6 -3
  103. data/examples/{widget_sparkline_demo → widget_sparkline}/app.rb +7 -5
  104. data/examples/widget_style_colors/README.md +4 -1
  105. data/examples/widget_style_colors/app.rb +2 -0
  106. data/examples/{widget_table_demo → widget_table}/README.md +7 -4
  107. data/examples/{widget_table_demo → widget_table}/app.rb +4 -2
  108. data/examples/{widget_tabs_demo → widget_tabs}/README.md +6 -3
  109. data/examples/{widget_tabs_demo → widget_tabs}/app.rb +7 -5
  110. data/examples/widget_text_width/README.md +5 -2
  111. data/examples/widget_text_width/app.rb +2 -0
  112. data/exe/.gitkeep +0 -0
  113. data/ext/ratatui_ruby/Cargo.lock +1 -1
  114. data/ext/ratatui_ruby/Cargo.toml +1 -1
  115. data/ext/ratatui_ruby/extconf.rb +2 -0
  116. data/ext/ratatui_ruby/src/style.rs +25 -9
  117. data/ext/ratatui_ruby/src/widgets/barchart.rs +8 -6
  118. data/ext/ratatui_ruby/src/widgets/chart.rs +26 -4
  119. data/ext/ratatui_ruby/src/widgets/table.rs +13 -5
  120. data/ext/ratatui_ruby/src/widgets/tabs.rs +49 -9
  121. data/lib/ratatui_ruby/buffer/cell.rb +2 -0
  122. data/lib/ratatui_ruby/buffer.rb +2 -0
  123. data/lib/ratatui_ruby/cell.rb +2 -0
  124. data/lib/ratatui_ruby/event/focus_gained.rb +2 -0
  125. data/lib/ratatui_ruby/event/focus_lost.rb +2 -0
  126. data/lib/ratatui_ruby/event/key/character.rb +2 -0
  127. data/lib/ratatui_ruby/event/key/media.rb +2 -0
  128. data/lib/ratatui_ruby/event/key/modifier.rb +2 -0
  129. data/lib/ratatui_ruby/event/key/navigation.rb +2 -0
  130. data/lib/ratatui_ruby/event/key/system.rb +2 -0
  131. data/lib/ratatui_ruby/event/key.rb +2 -0
  132. data/lib/ratatui_ruby/event/mouse.rb +2 -0
  133. data/lib/ratatui_ruby/event/none.rb +2 -0
  134. data/lib/ratatui_ruby/event/paste.rb +2 -0
  135. data/lib/ratatui_ruby/event/resize.rb +2 -0
  136. data/lib/ratatui_ruby/event.rb +2 -0
  137. data/lib/ratatui_ruby/frame.rb +2 -0
  138. data/lib/ratatui_ruby/layout/constraint.rb +2 -0
  139. data/lib/ratatui_ruby/layout/layout.rb +2 -0
  140. data/lib/ratatui_ruby/layout/rect.rb +2 -0
  141. data/lib/ratatui_ruby/layout.rb +2 -0
  142. data/lib/ratatui_ruby/list_state.rb +2 -0
  143. data/lib/ratatui_ruby/schema/bar_chart/bar.rb +2 -0
  144. data/lib/ratatui_ruby/schema/bar_chart/bar_group.rb +2 -0
  145. data/lib/ratatui_ruby/schema/bar_chart.rb +4 -2
  146. data/lib/ratatui_ruby/schema/block.rb +4 -2
  147. data/lib/ratatui_ruby/schema/calendar.rb +4 -2
  148. data/lib/ratatui_ruby/schema/canvas.rb +2 -0
  149. data/lib/ratatui_ruby/schema/center.rb +2 -0
  150. data/lib/ratatui_ruby/schema/chart.rb +4 -2
  151. data/lib/ratatui_ruby/schema/clear.rb +2 -0
  152. data/lib/ratatui_ruby/schema/constraint.rb +2 -0
  153. data/lib/ratatui_ruby/schema/cursor.rb +2 -0
  154. data/lib/ratatui_ruby/schema/draw.rb +2 -0
  155. data/lib/ratatui_ruby/schema/gauge.rb +4 -2
  156. data/lib/ratatui_ruby/schema/layout.rb +2 -0
  157. data/lib/ratatui_ruby/schema/line_gauge.rb +4 -2
  158. data/lib/ratatui_ruby/schema/list.rb +3 -1
  159. data/lib/ratatui_ruby/schema/list_item.rb +2 -0
  160. data/lib/ratatui_ruby/schema/overlay.rb +2 -0
  161. data/lib/ratatui_ruby/schema/paragraph.rb +2 -0
  162. data/lib/ratatui_ruby/schema/ratatui_logo.rb +4 -2
  163. data/lib/ratatui_ruby/schema/ratatui_mascot.rb +4 -2
  164. data/lib/ratatui_ruby/schema/rect.rb +2 -0
  165. data/lib/ratatui_ruby/schema/row.rb +2 -0
  166. data/lib/ratatui_ruby/schema/scrollbar.rb +4 -2
  167. data/lib/ratatui_ruby/schema/shape/label.rb +2 -0
  168. data/lib/ratatui_ruby/schema/sparkline.rb +4 -2
  169. data/lib/ratatui_ruby/schema/style.rb +2 -0
  170. data/lib/ratatui_ruby/schema/table.rb +2 -0
  171. data/lib/ratatui_ruby/schema/tabs.rb +4 -2
  172. data/lib/ratatui_ruby/schema/text.rb +2 -0
  173. data/lib/ratatui_ruby/scrollbar_state.rb +2 -0
  174. data/lib/ratatui_ruby/style/style.rb +2 -0
  175. data/lib/ratatui_ruby/style.rb +2 -0
  176. data/lib/ratatui_ruby/table_state.rb +2 -0
  177. data/lib/ratatui_ruby/test_helper/event_injection.rb +2 -0
  178. data/lib/ratatui_ruby/test_helper/snapshot.rb +2 -0
  179. data/lib/ratatui_ruby/test_helper/style_assertions.rb +2 -0
  180. data/lib/ratatui_ruby/test_helper/terminal.rb +2 -0
  181. data/lib/ratatui_ruby/test_helper/test_doubles.rb +2 -0
  182. data/lib/ratatui_ruby/test_helper.rb +5 -3
  183. data/lib/ratatui_ruby/tui/buffer_factories.rb +2 -0
  184. data/lib/ratatui_ruby/tui/canvas_factories.rb +2 -0
  185. data/lib/ratatui_ruby/tui/core.rb +2 -0
  186. data/lib/ratatui_ruby/tui/layout_factories.rb +2 -0
  187. data/lib/ratatui_ruby/tui/state_factories.rb +2 -0
  188. data/lib/ratatui_ruby/tui/style_factories.rb +2 -0
  189. data/lib/ratatui_ruby/tui/text_factories.rb +2 -0
  190. data/lib/ratatui_ruby/tui/widget_factories.rb +2 -0
  191. data/lib/ratatui_ruby/tui.rb +2 -0
  192. data/lib/ratatui_ruby/version.rb +3 -1
  193. data/lib/ratatui_ruby/widgets/bar_chart/bar.rb +2 -0
  194. data/lib/ratatui_ruby/widgets/bar_chart/bar_group.rb +2 -0
  195. data/lib/ratatui_ruby/widgets/bar_chart.rb +4 -2
  196. data/lib/ratatui_ruby/widgets/block.rb +4 -2
  197. data/lib/ratatui_ruby/widgets/calendar.rb +4 -2
  198. data/lib/ratatui_ruby/widgets/canvas.rb +2 -0
  199. data/lib/ratatui_ruby/widgets/cell.rb +2 -0
  200. data/lib/ratatui_ruby/widgets/center.rb +2 -0
  201. data/lib/ratatui_ruby/widgets/chart.rb +4 -2
  202. data/lib/ratatui_ruby/widgets/clear.rb +2 -0
  203. data/lib/ratatui_ruby/widgets/cursor.rb +2 -0
  204. data/lib/ratatui_ruby/widgets/gauge.rb +4 -2
  205. data/lib/ratatui_ruby/widgets/line_gauge.rb +4 -2
  206. data/lib/ratatui_ruby/widgets/list.rb +3 -1
  207. data/lib/ratatui_ruby/widgets/list_item.rb +2 -0
  208. data/lib/ratatui_ruby/widgets/overlay.rb +2 -0
  209. data/lib/ratatui_ruby/widgets/paragraph.rb +2 -0
  210. data/lib/ratatui_ruby/widgets/ratatui_logo.rb +4 -2
  211. data/lib/ratatui_ruby/widgets/ratatui_mascot.rb +4 -2
  212. data/lib/ratatui_ruby/widgets/row.rb +2 -0
  213. data/lib/ratatui_ruby/widgets/scrollbar.rb +4 -2
  214. data/lib/ratatui_ruby/widgets/shape/label.rb +2 -0
  215. data/lib/ratatui_ruby/widgets/sparkline.rb +4 -2
  216. data/lib/ratatui_ruby/widgets/table.rb +2 -0
  217. data/lib/ratatui_ruby/widgets/tabs.rb +12 -8
  218. data/lib/ratatui_ruby/widgets.rb +2 -0
  219. data/lib/ratatui_ruby.rb +2 -0
  220. data/tasks/autodoc/examples.rb +2 -0
  221. data/tasks/autodoc/member.rb +2 -0
  222. data/tasks/autodoc/name.rb +2 -0
  223. data/tasks/autodoc.rake +2 -0
  224. data/tasks/bump/cargo_lockfile.rb +2 -0
  225. data/tasks/bump/changelog.rb +10 -0
  226. data/tasks/bump/header.rb +2 -0
  227. data/tasks/bump/history.rb +2 -0
  228. data/tasks/bump/links.rb +2 -0
  229. data/tasks/bump/manifest.rb +2 -0
  230. data/tasks/bump/ruby_gem.rb +14 -0
  231. data/tasks/bump/sem_ver.rb +2 -0
  232. data/tasks/bump/unreleased_section.rb +18 -0
  233. data/tasks/bump.rake +2 -0
  234. data/tasks/doc.rake +268 -0
  235. data/tasks/extension.rake +2 -0
  236. data/tasks/lint.rake +115 -0
  237. data/tasks/rdoc_config.rb +18 -4
  238. data/tasks/sourcehut.rake +2 -0
  239. data/tasks/terminal_preview/app_screenshot.rb +2 -0
  240. data/tasks/terminal_preview/crash_report.rb +2 -0
  241. data/tasks/terminal_preview/example_app.rb +2 -0
  242. data/tasks/terminal_preview/launcher_script.rb +2 -0
  243. data/tasks/terminal_preview/preview_collection.rb +2 -0
  244. data/tasks/terminal_preview/preview_timing.rb +2 -0
  245. data/tasks/terminal_preview/safety_confirmation.rb +2 -0
  246. data/tasks/terminal_preview/saved_screenshot.rb +2 -0
  247. data/tasks/terminal_preview/system_appearance.rb +2 -0
  248. data/tasks/terminal_preview/terminal_window.rb +2 -0
  249. data/tasks/terminal_preview/window_id.rb +2 -0
  250. data/tasks/terminal_preview.rake +2 -0
  251. data/tasks/test.rake +2 -0
  252. data/tasks/website/index_page.rb +2 -0
  253. data/tasks/website/version.rb +12 -2
  254. data/tasks/website/version_menu.rb +2 -0
  255. data/tasks/website/versioned_documentation.rb +2 -0
  256. data/tasks/website/website.rb +2 -0
  257. data/tasks/website.rake +2 -0
  258. metadata +72 -72
  259. data/doc/contributors/architectural_overhaul/chat_conversations.md +0 -4952
  260. data/doc/contributors/architectural_overhaul/implementation_plan.md +0 -60
  261. data/doc/contributors/architectural_overhaul/task.md +0 -37
  262. /data/doc/{application_testing.md → concepts/application_testing.md} +0 -0
  263. /data/doc/{interactive_design.md → concepts/interactive_design.md} +0 -0
  264. /data/doc/images/{widget_barchart_demo.png → widget_barchart.png} +0 -0
  265. /data/doc/images/{widget_block_demo.png → widget_block.png} +0 -0
  266. /data/doc/images/{widget_box_demo.png → widget_box.png} +0 -0
  267. /data/doc/images/{widget_calendar_demo.png → widget_calendar.png} +0 -0
  268. /data/doc/images/{widget_canvas_demo.png → widget_canvas.png} +0 -0
  269. /data/doc/images/{widget_cell_demo.png → widget_cell.png} +0 -0
  270. /data/doc/images/{widget_center_demo.png → widget_center.png} +0 -0
  271. /data/doc/images/{widget_chart_demo.png → widget_chart.png} +0 -0
  272. /data/doc/images/{widget_gauge_demo.png → widget_gauge.png} +0 -0
  273. /data/doc/images/{widget_line_gauge_demo.png → widget_line_gauge.png} +0 -0
  274. /data/doc/images/{widget_list_demo.png → widget_list.png} +0 -0
  275. /data/doc/images/{widget_map_demo.png → widget_map.png} +0 -0
  276. /data/doc/images/{widget_overlay_demo.png → widget_overlay.png} +0 -0
  277. /data/doc/images/{widget_popup_demo.png → widget_popup.png} +0 -0
  278. /data/doc/images/{widget_ratatui_logo_demo.png → widget_ratatui_logo.png} +0 -0
  279. /data/doc/images/{widget_ratatui_mascot_demo.png → widget_ratatui_mascot.png} +0 -0
  280. /data/doc/images/{widget_scrollbar_demo.png → widget_scrollbar.png} +0 -0
  281. /data/doc/images/{widget_sparkline_demo.png → widget_sparkline.png} +0 -0
  282. /data/doc/images/{widget_table_demo.png → widget_table.png} +0 -0
  283. /data/doc/images/{widget_tabs_demo.png → widget_tabs.png} +0 -0
  284. /data/doc/{v0.7.0_migration.md → migration/v0_7_0.md} +0 -0
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  require "timeout"
7
9
  require "minitest/mock"
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module TestHelper
@@ -1,5 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
4
+ # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
5
+ # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
7
+
3
8
  require "fileutils"
4
9
  require_relative "test_helper/terminal"
5
10
  require_relative "test_helper/snapshot"
@@ -7,9 +12,6 @@ require_relative "test_helper/event_injection"
7
12
  require_relative "test_helper/style_assertions"
8
13
  require_relative "test_helper/test_doubles"
9
14
 
10
- # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
11
- # SPDX-License-Identifier: AGPL-3.0-or-later
12
-
13
15
  module RatatuiRuby
14
16
  ##
15
17
  # Helpers for testing RatatuiRuby applications.
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  class TUI
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  class TUI
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  class TUI
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  class TUI
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  class TUI
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  class TUI
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  class TUI
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  class TUI
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  require_relative "tui/core"
7
9
  require_relative "tui/layout_factories"
@@ -1,10 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  # The version of the ratatui_ruby gem.
8
10
  # See https://semver.org/spec/v2.0.0.html
9
- VERSION = "0.7.0"
11
+ VERSION = "0.7.2"
10
12
  end
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -13,13 +15,13 @@ module RatatuiRuby
13
15
  #
14
16
  # Use it to compare server loads, sales figures, or any discrete datasets.
15
17
  #
16
- # {rdoc-image:/doc/images/widget_barchart_demo.png}[link:/examples/widget_barchart_demo/app_rb.html]
18
+ # {rdoc-image:/doc/images/widget_barchart.png}[link:/examples/widget_barchart/app_rb.html]
17
19
  #
18
20
  # === Example
19
21
  #
20
22
  # Run the interactive demo from the terminal:
21
23
  #
22
- # ruby examples/widget_barchart_demo/app.rb
24
+ # ruby examples/widget_barchart/app.rb
23
25
  #
24
26
  # # Grouped Bar Chart
25
27
  # BarChart.new(
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -13,13 +15,13 @@ module RatatuiRuby
13
15
  #
14
16
  # Use blocks to define distinct areas. Group related information. Create a visual hierarchy that guides the user's eye.
15
17
  #
16
- # {rdoc-image:/doc/images/widget_box_demo.png}[link:/examples/widget_box_demo/app_rb.html]
18
+ # {rdoc-image:/doc/images/widget_box.png}[link:/examples/widget_box/app_rb.html]
17
19
  #
18
20
  # === Example
19
21
  #
20
22
  # Run the interactive demo from the terminal:
21
23
  #
22
- # ruby examples/widget_box_demo/app.rb
24
+ # ruby examples/widget_box/app.rb
23
25
  class Block < Data.define(:title, :titles, :title_alignment, :title_style, :borders, :border_color, :border_style, :border_type, :border_set, :style, :padding, :children)
24
26
  ##
25
27
  # :attr_reader: title
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -14,13 +16,13 @@ module RatatuiRuby
14
16
  #
15
17
  # Use it for date pickers, schedulers, or logs.
16
18
  #
17
- # {rdoc-image:/doc/images/widget_calendar_demo.png}[link:/examples/widget_calendar_demo/app_rb.html]
19
+ # {rdoc-image:/doc/images/widget_calendar.png}[link:/examples/widget_calendar/app_rb.html]
18
20
  #
19
21
  # === Example
20
22
  #
21
23
  # Run the interactive demo from the terminal:
22
24
  #
23
- # ruby examples/widget_calendar_demo/app.rb
25
+ # ruby examples/widget_calendar/app.rb
24
26
  class Calendar < Data.define(:year, :month, :events, :default_style, :header_style, :block, :show_weekdays_header, :show_surrounding, :show_month_header)
25
27
  ##
26
28
  # :attr_reader: year
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -106,13 +108,13 @@ module RatatuiRuby
106
108
  #
107
109
  # Use it for analytics, scientific data, or monitoring metrics over time.
108
110
  #
109
- # {rdoc-image:/doc/images/widget_chart_demo.png}[link:/examples/widget_chart_demo/app_rb.html]
111
+ # {rdoc-image:/doc/images/widget_chart.png}[link:/examples/widget_chart/app_rb.html]
110
112
  #
111
113
  # === Example
112
114
  #
113
115
  # Run the interactive demo from the terminal:
114
116
  #
115
- # ruby examples/widget_chart_demo/app.rb
117
+ # ruby examples/widget_chart/app.rb
116
118
  class Chart < Data.define(:datasets, :x_axis, :y_axis, :block, :style, :legend_position, :hidden_legend_constraints)
117
119
  ##
118
120
  # :attr_reader: datasets
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -13,13 +15,13 @@ module RatatuiRuby
13
15
  #
14
16
  # Use it for downloads, installations, or processing jobs.
15
17
  #
16
- # {rdoc-image:/doc/images/widget_gauge_demo.png}[link:/examples/widget_gauge_demo/app_rb.html]
18
+ # {rdoc-image:/doc/images/widget_gauge.png}[link:/examples/widget_gauge/app_rb.html]
17
19
  #
18
20
  # === Example
19
21
  #
20
22
  # Run the interactive demo from the terminal:
21
23
  #
22
- # ruby examples/widget_gauge_demo/app.rb
24
+ # ruby examples/widget_gauge/app.rb
23
25
  class Gauge < Data.define(:ratio, :label, :style, :gauge_style, :block, :use_unicode)
24
26
  ##
25
27
  # :attr_reader: ratio
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -13,13 +15,13 @@ module RatatuiRuby
13
15
  #
14
16
  # Use it when you need to show status without stealing focus or space.
15
17
  #
16
- # {rdoc-image:/doc/images/widget_line_gauge_demo.png}[link:/examples/widget_line_gauge_demo/app_rb.html]
18
+ # {rdoc-image:/doc/images/widget_line_gauge.png}[link:/examples/widget_line_gauge/app_rb.html]
17
19
  #
18
20
  # === Example
19
21
  #
20
22
  # Run the interactive demo from the terminal:
21
23
  #
22
- # ruby examples/widget_line_gauge_demo/app.rb
24
+ # ruby examples/widget_line_gauge/app.rb
23
25
  class LineGauge < Data.define(:ratio, :label, :style, :filled_style, :unfilled_style, :block, :filled_symbol, :unfilled_symbol)
24
26
  ##
25
27
  # :attr_reader: ratio
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -14,7 +16,7 @@ module RatatuiRuby
14
16
  #
15
17
  # Use it to build main menus, navigation sidebars, or logs.
16
18
  #
17
- # {rdoc-image:/doc/images/widget_list_demo.png}[link:/examples/widget_list_demo/app_rb.html]
19
+ # {rdoc-image:/doc/images/widget_list.png}[link:/examples/widget_list/app_rb.html]
18
20
  #
19
21
  # === Examples
20
22
  #
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -13,13 +15,13 @@ module RatatuiRuby
13
15
  #
14
16
  # Use it for splash screens, about sections, or terminal dashboards.
15
17
  #
16
- # {rdoc-image:/doc/images/widget_ratatui_logo_demo.png}[link:/examples/widget_ratatui_logo_demo/app_rb.html]
18
+ # {rdoc-image:/doc/images/widget_ratatui_logo.png}[link:/examples/widget_ratatui_logo/app_rb.html]
17
19
  #
18
20
  # === Example
19
21
  #
20
22
  # Run the interactive demo from the terminal:
21
23
  #
22
- # ruby examples/widget_ratatui_logo_demo/app.rb
24
+ # ruby examples/widget_ratatui_logo/app.rb
23
25
  class RatatuiLogo < Data.define
24
26
  ##
25
27
  # :method: new
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -13,13 +15,13 @@ module RatatuiRuby
13
15
  #
14
16
  # Use it to add charm to your application, greet users on startup, or as a decorative element in sidebars.
15
17
  #
16
- # {rdoc-image:/doc/images/widget_ratatui_mascot_demo.png}[link:/examples/widget_ratatui_mascot_demo/app_rb.html]
18
+ # {rdoc-image:/doc/images/widget_ratatui_mascot.png}[link:/examples/widget_ratatui_mascot/app_rb.html]
17
19
  #
18
20
  # === Example
19
21
  #
20
22
  # Run the interactive demo from the terminal:
21
23
  #
22
- # ruby examples/widget_ratatui_mascot_demo/app.rb
24
+ # ruby examples/widget_ratatui_mascot/app.rb
23
25
  class RatatuiMascot < Data.define(:block)
24
26
  ##
25
27
  # :method: new
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -13,13 +15,13 @@ module RatatuiRuby
13
15
  #
14
16
  # Overlay it on top of lists, paragraphs, or tables to provide spatial awareness.
15
17
  #
16
- # {rdoc-image:/doc/images/widget_scrollbar_demo.png}[link:/examples/widget_scrollbar_demo/app_rb.html]
18
+ # {rdoc-image:/doc/images/widget_scrollbar.png}[link:/examples/widget_scrollbar/app_rb.html]
17
19
  #
18
20
  # === Example
19
21
  #
20
22
  # Run the interactive demo from the terminal:
21
23
  #
22
- # ruby examples/widget_scrollbar_demo/app.rb
24
+ # ruby examples/widget_scrollbar/app.rb
23
25
  class Scrollbar < Data.define(
24
26
  :content_length,
25
27
  :position,
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -14,13 +16,13 @@ module RatatuiRuby
14
16
  #
15
17
  # Use it in dashboards, headers, or list items to providing trending data at a glance.
16
18
  #
17
- # {rdoc-image:/doc/images/widget_sparkline_demo.png}[link:/examples/widget_sparkline_demo/app_rb.html]
19
+ # {rdoc-image:/doc/images/widget_sparkline.png}[link:/examples/widget_sparkline/app_rb.html]
18
20
  #
19
21
  # === Example
20
22
  #
21
23
  # Run the interactive demo from the terminal:
22
24
  #
23
- # ruby examples/widget_sparkline_demo/app.rb
25
+ # ruby examples/widget_sparkline/app.rb
24
26
  class Sparkline < Data.define(:data, :max, :style, :block, :direction, :absent_value_symbol, :absent_value_style, :bar_set)
25
27
  ##
26
28
  # :attr_reader: data
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  module Widgets
@@ -13,13 +15,13 @@ module RatatuiRuby
13
15
  #
14
16
  # Use it at the top of your interface to switch between major modes or contexts.
15
17
  #
16
- # {rdoc-image:/doc/images/widget_tabs_demo.png}[link:/examples/widget_tabs_demo/app_rb.html]
18
+ # {rdoc-image:/doc/images/widget_tabs.png}[link:/examples/widget_tabs/app_rb.html]
17
19
  #
18
20
  # === Example
19
21
  #
20
22
  # Run the interactive demo from the terminal:
21
23
  #
22
- # ruby examples/widget_tabs_demo/app.rb
24
+ # ruby examples/widget_tabs/app.rb
23
25
  class Tabs < Data.define(:titles, :selected_index, :block, :divider, :highlight_style, :style, :padding_left, :padding_right)
24
26
  ##
25
27
  # :attr_reader: titles
@@ -47,11 +49,13 @@ module RatatuiRuby
47
49
 
48
50
  ##
49
51
  # :attr_reader: padding_left
50
- # Left padding for the tabs area (Integer, default: 0).
52
+ # Left padding for the tabs area.
53
+ # Accepts Integer (number of spaces), String, or Line for styled content.
51
54
 
52
55
  ##
53
56
  # :attr_reader: padding_right
54
- # Right padding for the tabs area (Integer, default: 0).
57
+ # Right padding for the tabs area.
58
+ # Accepts Integer (number of spaces), String, or Line for styled content.
55
59
 
56
60
  # Creates a new Tabs widget.
57
61
  #
@@ -61,8 +65,8 @@ module RatatuiRuby
61
65
  # [divider] String (optional).
62
66
  # [highlight_style] Style (optional).
63
67
  # [style] Style (optional).
64
- # [padding_left] Integer (default: 0).
65
- # [padding_right] Integer (default: 0).
68
+ # [padding_left] Integer, String, or Line (default: 0).
69
+ # [padding_right] Integer, String, or Line (default: 0).
66
70
  def initialize(titles: [], selected_index: 0, block: nil, divider: nil, highlight_style: nil, style: nil, padding_left: 0, padding_right: 0)
67
71
  super(
68
72
  titles:,
@@ -71,8 +75,8 @@ module RatatuiRuby
71
75
  divider:,
72
76
  highlight_style:,
73
77
  style:,
74
- padding_left: Integer(padding_left),
75
- padding_right: Integer(padding_right)
78
+ padding_left:,
79
+ padding_right:
76
80
  )
77
81
  end
78
82
 
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RatatuiRuby
7
9
  # Widget classes for building terminal UIs.