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.
Files changed (351) 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 +87 -171
  7. data/CHANGELOG.md +38 -1
  8. data/README.md +8 -3
  9. data/REUSE.toml +20 -0
  10. data/doc/application_architecture.md +105 -45
  11. data/doc/application_testing.md +5 -3
  12. data/doc/contributors/design/ruby_frontend.md +9 -5
  13. data/doc/contributors/developing_examples.md +76 -18
  14. data/doc/contributors/documentation_style.md +7 -0
  15. data/doc/contributors/index.md +2 -0
  16. data/doc/event_handling.md +10 -4
  17. data/doc/images/app_all_events.png +0 -0
  18. data/doc/images/app_color_picker.png +0 -0
  19. data/doc/images/verify_readme_usage.png +0 -0
  20. data/doc/images/widget_barchart_demo.png +0 -0
  21. data/doc/images/widget_block_padding.png +0 -0
  22. data/doc/images/widget_block_titles.png +0 -0
  23. data/doc/images/widget_box_demo.png +0 -0
  24. data/doc/images/widget_calendar_demo.png +0 -0
  25. data/doc/images/widget_cell_demo.png +0 -0
  26. data/doc/images/widget_chart_demo.png +0 -0
  27. data/doc/images/widget_gauge_demo.png +0 -0
  28. data/doc/images/widget_layout_split.png +0 -0
  29. data/doc/images/widget_line_gauge_demo.png +0 -0
  30. data/doc/images/widget_list_demo.png +0 -0
  31. data/doc/images/widget_ratatui_logo_demo.png +0 -0
  32. data/doc/images/widget_ratatui_mascot_demo.png +0 -0
  33. data/doc/images/widget_render.png +0 -0
  34. data/doc/images/widget_scrollbar_demo.png +0 -0
  35. data/doc/images/widget_sparkline_demo.png +0 -0
  36. data/doc/images/widget_style_colors.png +0 -0
  37. data/doc/images/widget_table_flex.png +0 -0
  38. data/doc/images/widget_tabs_demo.png +0 -0
  39. data/doc/interactive_design.md +25 -30
  40. data/doc/quickstart.md +147 -120
  41. data/examples/app_all_events/README.md +81 -0
  42. data/examples/app_all_events/app.rb +93 -0
  43. data/examples/app_all_events/model/event_color_cycle.rb +41 -0
  44. data/examples/app_all_events/model/event_entry.rb +75 -0
  45. data/examples/app_all_events/model/events.rb +180 -0
  46. data/examples/app_all_events/model/highlight.rb +57 -0
  47. data/examples/app_all_events/model/timestamp.rb +54 -0
  48. data/examples/app_all_events/test/snapshots/after_focus_lost.txt +24 -0
  49. data/examples/app_all_events/test/snapshots/after_focus_regained.txt +24 -0
  50. data/examples/app_all_events/test/snapshots/after_horizontal_resize.txt +24 -0
  51. data/examples/app_all_events/test/snapshots/after_key_a.txt +24 -0
  52. data/examples/app_all_events/test/snapshots/after_key_ctrl_x.txt +24 -0
  53. data/examples/app_all_events/test/snapshots/after_mouse_click.txt +24 -0
  54. data/examples/app_all_events/test/snapshots/after_mouse_drag.txt +24 -0
  55. data/examples/app_all_events/test/snapshots/after_multiple_events.txt +24 -0
  56. data/examples/app_all_events/test/snapshots/after_paste.txt +24 -0
  57. data/examples/app_all_events/test/snapshots/after_resize.txt +24 -0
  58. data/examples/app_all_events/test/snapshots/after_right_click.txt +24 -0
  59. data/examples/app_all_events/test/snapshots/after_vertical_resize.txt +24 -0
  60. data/examples/app_all_events/test/snapshots/initial_state.txt +24 -0
  61. data/examples/app_all_events/view/app_view.rb +78 -0
  62. data/examples/app_all_events/view/controls_view.rb +50 -0
  63. data/examples/app_all_events/view/counts_view.rb +55 -0
  64. data/examples/app_all_events/view/live_view.rb +69 -0
  65. data/examples/app_all_events/view/log_view.rb +60 -0
  66. data/examples/app_all_events/view.rb +7 -0
  67. data/examples/app_all_events/view_state.rb +42 -0
  68. data/examples/app_color_picker/README.md +94 -0
  69. data/examples/app_color_picker/app.rb +112 -0
  70. data/examples/app_color_picker/clipboard.rb +84 -0
  71. data/examples/app_color_picker/color.rb +191 -0
  72. data/examples/app_color_picker/copy_dialog.rb +170 -0
  73. data/examples/app_color_picker/harmony.rb +56 -0
  74. data/examples/app_color_picker/input.rb +142 -0
  75. data/examples/app_color_picker/palette.rb +80 -0
  76. data/examples/app_color_picker/scene.rb +201 -0
  77. data/examples/{login_form → app_login_form}/app.rb +39 -42
  78. data/examples/{map_demo → app_map_demo}/app.rb +24 -21
  79. data/examples/{table_select → app_table_select}/app.rb +68 -65
  80. data/examples/{quickstart_dsl → verify_quickstart_dsl}/app.rb +15 -6
  81. data/examples/verify_quickstart_layout/app.rb +69 -0
  82. data/examples/{quickstart_lifecycle → verify_quickstart_lifecycle}/app.rb +19 -10
  83. data/examples/verify_readme_usage/app.rb +34 -0
  84. data/examples/widget_barchart_demo/app.rb +238 -0
  85. data/examples/{block_padding → widget_block_padding}/app.rb +17 -13
  86. data/examples/{block_titles → widget_block_titles}/app.rb +25 -17
  87. data/examples/{box_demo → widget_box_demo}/app.rb +99 -65
  88. data/examples/widget_calendar_demo/app.rb +109 -0
  89. data/examples/widget_cell_demo/app.rb +104 -0
  90. data/examples/widget_chart_demo/app.rb +213 -0
  91. data/examples/widget_gauge_demo/app.rb +212 -0
  92. data/examples/widget_layout_split/app.rb +246 -0
  93. data/examples/widget_line_gauge_demo/app.rb +217 -0
  94. data/examples/widget_list_demo/app.rb +382 -0
  95. data/examples/widget_list_styles/app.rb +141 -0
  96. data/examples/widget_popup_demo/app.rb +104 -0
  97. data/examples/widget_ratatui_logo_demo/app.rb +103 -0
  98. data/examples/widget_ratatui_mascot_demo/app.rb +93 -0
  99. data/examples/widget_rect/app.rb +205 -0
  100. data/examples/widget_render/app.rb +184 -0
  101. data/examples/widget_rich_text/app.rb +137 -0
  102. data/examples/widget_scroll_text/app.rb +108 -0
  103. data/examples/widget_scrollbar_demo/app.rb +153 -0
  104. data/examples/widget_sparkline_demo/app.rb +274 -0
  105. data/examples/widget_style_colors/app.rb +19 -21
  106. data/examples/widget_table_flex/app.rb +95 -0
  107. data/examples/widget_tabs_demo/app.rb +167 -0
  108. data/ext/ratatui_ruby/Cargo.lock +1 -1
  109. data/ext/ratatui_ruby/Cargo.toml +1 -1
  110. data/ext/ratatui_ruby/src/events.rs +121 -36
  111. data/ext/ratatui_ruby/src/frame.rs +115 -0
  112. data/ext/ratatui_ruby/src/lib.rs +79 -26
  113. data/ext/ratatui_ruby/src/rendering.rs +8 -4
  114. data/ext/ratatui_ruby/src/style.rs +138 -57
  115. data/ext/ratatui_ruby/src/terminal.rs +5 -9
  116. data/ext/ratatui_ruby/src/text.rs +13 -6
  117. data/ext/ratatui_ruby/src/widgets/barchart.rs +56 -54
  118. data/ext/ratatui_ruby/src/widgets/block.rs +7 -6
  119. data/ext/ratatui_ruby/src/widgets/canvas.rs +21 -3
  120. data/ext/ratatui_ruby/src/widgets/chart.rs +20 -10
  121. data/ext/ratatui_ruby/src/widgets/layout.rs +9 -4
  122. data/ext/ratatui_ruby/src/widgets/list.rs +32 -9
  123. data/ext/ratatui_ruby/src/widgets/overlay.rs +2 -1
  124. data/ext/ratatui_ruby/src/widgets/paragraph.rs +1 -1
  125. data/ext/ratatui_ruby/src/widgets/ratatui_logo.rs +19 -8
  126. data/ext/ratatui_ruby/src/widgets/ratatui_mascot.rs +17 -10
  127. data/ext/ratatui_ruby/src/widgets/scrollbar.rs +4 -2
  128. data/ext/ratatui_ruby/src/widgets/sparkline.rs +14 -11
  129. data/ext/ratatui_ruby/src/widgets/table.rs +8 -4
  130. data/ext/ratatui_ruby/src/widgets/tabs.rs +11 -11
  131. data/lib/ratatui_ruby/cell.rb +3 -3
  132. data/lib/ratatui_ruby/event/key.rb +1 -1
  133. data/lib/ratatui_ruby/event/none.rb +43 -0
  134. data/lib/ratatui_ruby/event.rb +56 -4
  135. data/lib/ratatui_ruby/frame.rb +87 -0
  136. data/lib/ratatui_ruby/schema/bar_chart/bar.rb +11 -11
  137. data/lib/ratatui_ruby/schema/bar_chart/bar_group.rb +1 -5
  138. data/lib/ratatui_ruby/schema/bar_chart.rb +217 -217
  139. data/lib/ratatui_ruby/schema/block.rb +163 -168
  140. data/lib/ratatui_ruby/schema/calendar.rb +66 -67
  141. data/lib/ratatui_ruby/schema/canvas.rb +63 -63
  142. data/lib/ratatui_ruby/schema/center.rb +46 -46
  143. data/lib/ratatui_ruby/schema/chart.rb +135 -143
  144. data/lib/ratatui_ruby/schema/clear.rb +42 -42
  145. data/lib/ratatui_ruby/schema/constraint.rb +76 -76
  146. data/lib/ratatui_ruby/schema/cursor.rb +25 -25
  147. data/lib/ratatui_ruby/schema/gauge.rb +53 -53
  148. data/lib/ratatui_ruby/schema/layout.rb +87 -87
  149. data/lib/ratatui_ruby/schema/line_gauge.rb +62 -62
  150. data/lib/ratatui_ruby/schema/list.rb +86 -84
  151. data/lib/ratatui_ruby/schema/overlay.rb +31 -31
  152. data/lib/ratatui_ruby/schema/paragraph.rb +80 -80
  153. data/lib/ratatui_ruby/schema/ratatui_logo.rb +10 -6
  154. data/lib/ratatui_ruby/schema/ratatui_mascot.rb +10 -5
  155. data/lib/ratatui_ruby/schema/rect.rb +60 -60
  156. data/lib/ratatui_ruby/schema/scrollbar.rb +119 -119
  157. data/lib/ratatui_ruby/schema/shape/label.rb +1 -1
  158. data/lib/ratatui_ruby/schema/sparkline.rb +111 -110
  159. data/lib/ratatui_ruby/schema/style.rb +46 -46
  160. data/lib/ratatui_ruby/schema/table.rb +112 -119
  161. data/lib/ratatui_ruby/schema/tabs.rb +66 -67
  162. data/lib/ratatui_ruby/session/autodoc.rb +417 -0
  163. data/lib/ratatui_ruby/session.rb +40 -23
  164. data/lib/ratatui_ruby/test_helper.rb +185 -19
  165. data/lib/ratatui_ruby/version.rb +1 -1
  166. data/lib/ratatui_ruby.rb +65 -39
  167. data/{examples/sparkline_demo → sig/examples/app_all_events}/app.rbs +3 -2
  168. data/sig/examples/app_all_events/model/event_entry.rbs +16 -0
  169. data/sig/examples/app_all_events/model/events.rbs +15 -0
  170. data/sig/examples/app_all_events/model/timestamp.rbs +11 -0
  171. data/sig/examples/app_all_events/view/app_view.rbs +8 -0
  172. data/sig/examples/app_all_events/view/controls_view.rbs +6 -0
  173. data/sig/examples/app_all_events/view/counts_view.rbs +6 -0
  174. data/sig/examples/app_all_events/view/live_view.rbs +6 -0
  175. data/sig/examples/app_all_events/view/log_view.rbs +6 -0
  176. data/sig/examples/app_all_events/view.rbs +8 -0
  177. data/sig/examples/app_all_events/view_state.rbs +15 -0
  178. data/{examples/list_demo → sig/examples/app_color_picker}/app.rbs +2 -2
  179. data/sig/examples/app_login_form/app.rbs +11 -0
  180. data/sig/examples/app_map_demo/app.rbs +11 -0
  181. data/sig/examples/app_table_select/app.rbs +11 -0
  182. data/sig/examples/verify_quickstart_dsl/app.rbs +11 -0
  183. data/sig/examples/verify_quickstart_lifecycle/app.rbs +11 -0
  184. data/sig/examples/verify_readme_usage/app.rbs +11 -0
  185. data/sig/examples/widget_block_padding/app.rbs +11 -0
  186. data/sig/examples/widget_block_titles/app.rbs +11 -0
  187. data/sig/examples/widget_box_demo/app.rbs +11 -0
  188. data/sig/examples/widget_calendar_demo/app.rbs +11 -0
  189. data/sig/examples/widget_cell_demo/app.rbs +11 -0
  190. data/sig/examples/widget_chart_demo/app.rbs +11 -0
  191. data/{examples/gauge_demo → sig/examples/widget_gauge_demo}/app.rbs +4 -0
  192. data/sig/examples/widget_layout_split/app.rbs +10 -0
  193. data/sig/examples/widget_line_gauge_demo/app.rbs +11 -0
  194. data/sig/examples/widget_list_demo/app.rbs +12 -0
  195. data/sig/examples/widget_list_styles/app.rbs +11 -0
  196. data/sig/examples/widget_popup_demo/app.rbs +11 -0
  197. data/sig/examples/widget_ratatui_logo_demo/app.rbs +11 -0
  198. data/sig/examples/widget_ratatui_mascot_demo/app.rbs +11 -0
  199. data/sig/examples/widget_rect/app.rbs +12 -0
  200. data/sig/examples/widget_render/app.rbs +10 -0
  201. data/sig/examples/widget_rich_text/app.rbs +11 -0
  202. data/sig/examples/widget_scroll_text/app.rbs +11 -0
  203. data/sig/examples/widget_scrollbar_demo/app.rbs +11 -0
  204. data/sig/examples/widget_sparkline_demo/app.rbs +10 -0
  205. data/{examples → sig/examples}/widget_style_colors/app.rbs +1 -1
  206. data/sig/examples/widget_table_flex/app.rbs +11 -0
  207. data/sig/ratatui_ruby/frame.rbs +9 -0
  208. data/sig/ratatui_ruby/ratatui_ruby.rbs +3 -2
  209. data/sig/ratatui_ruby/schema/draw.rbs +4 -0
  210. data/sig/ratatui_ruby/schema/layout.rbs +1 -1
  211. data/sig/ratatui_ruby/session.rbs +94 -0
  212. data/tasks/autodoc/inventory.rb +61 -0
  213. data/tasks/autodoc/member.rb +56 -0
  214. data/tasks/autodoc/name.rb +19 -0
  215. data/tasks/autodoc/notice.rb +26 -0
  216. data/tasks/autodoc/rbs.rb +38 -0
  217. data/tasks/autodoc/rdoc.rb +45 -0
  218. data/tasks/autodoc.rake +47 -0
  219. data/tasks/bump/history.rb +2 -2
  220. data/tasks/doc.rake +600 -6
  221. data/tasks/example_viewer.html.erb +172 -0
  222. data/tasks/lint.rake +8 -4
  223. data/tasks/resources/index.html.erb +6 -0
  224. data/tasks/sourcehut.rake +4 -4
  225. data/tasks/terminal_preview/app_screenshot.rb +1 -3
  226. data/tasks/terminal_preview/crash_report.rb +7 -9
  227. data/tasks/terminal_preview/launcher_script.rb +4 -6
  228. data/tasks/terminal_preview/preview_collection.rb +4 -6
  229. data/tasks/terminal_preview/safety_confirmation.rb +3 -5
  230. data/tasks/terminal_preview/saved_screenshot.rb +7 -9
  231. data/tasks/terminal_preview/terminal_window.rb +7 -9
  232. data/tasks/test.rake +1 -1
  233. data/tasks/website/index_page.rb +3 -3
  234. data/tasks/website/version.rb +10 -10
  235. data/tasks/website/version_menu.rb +10 -12
  236. data/tasks/website/versioned_documentation.rb +49 -17
  237. data/tasks/website/website.rb +6 -8
  238. data/tasks/website.rake +4 -4
  239. metadata +156 -125
  240. data/LICENSES/BSD-2-Clause.txt +0 -9
  241. data/doc/contributors/better_dx.md +0 -543
  242. data/doc/contributors/example_analysis.md +0 -82
  243. data/doc/images/all_events.png +0 -0
  244. data/doc/images/block_padding.png +0 -0
  245. data/doc/images/block_titles.png +0 -0
  246. data/doc/images/box_demo.png +0 -0
  247. data/doc/images/calendar_demo.png +0 -0
  248. data/doc/images/cell_demo.png +0 -0
  249. data/doc/images/chart_demo.png +0 -0
  250. data/doc/images/flex_layout.png +0 -0
  251. data/doc/images/gauge_demo.png +0 -0
  252. data/doc/images/line_gauge_demo.png +0 -0
  253. data/doc/images/list_demo.png +0 -0
  254. data/doc/images/readme_usage.png +0 -0
  255. data/doc/images/scrollbar_demo.png +0 -0
  256. data/doc/images/sparkline_demo.png +0 -0
  257. data/doc/images/table_flex.png +0 -0
  258. data/examples/all_events/app.rb +0 -169
  259. data/examples/all_events/app.rbs +0 -7
  260. data/examples/all_events/test_app.rb +0 -139
  261. data/examples/analytics/app.rb +0 -258
  262. data/examples/analytics/app.rbs +0 -7
  263. data/examples/analytics/test_app.rb +0 -132
  264. data/examples/block_padding/app.rbs +0 -7
  265. data/examples/block_padding/test_app.rb +0 -31
  266. data/examples/block_titles/app.rbs +0 -7
  267. data/examples/block_titles/test_app.rb +0 -34
  268. data/examples/box_demo/app.rbs +0 -7
  269. data/examples/box_demo/test_app.rb +0 -88
  270. data/examples/calendar_demo/app.rb +0 -101
  271. data/examples/calendar_demo/app.rbs +0 -7
  272. data/examples/calendar_demo/test_app.rb +0 -108
  273. data/examples/cell_demo/app.rb +0 -108
  274. data/examples/cell_demo/app.rbs +0 -7
  275. data/examples/cell_demo/test_app.rb +0 -36
  276. data/examples/chart_demo/app.rb +0 -203
  277. data/examples/chart_demo/app.rbs +0 -7
  278. data/examples/chart_demo/test_app.rb +0 -102
  279. data/examples/custom_widget/app.rb +0 -51
  280. data/examples/custom_widget/app.rbs +0 -7
  281. data/examples/custom_widget/test_app.rb +0 -30
  282. data/examples/flex_layout/app.rb +0 -156
  283. data/examples/flex_layout/app.rbs +0 -7
  284. data/examples/flex_layout/test_app.rb +0 -65
  285. data/examples/gauge_demo/app.rb +0 -182
  286. data/examples/gauge_demo/test_app.rb +0 -120
  287. data/examples/hit_test/app.rb +0 -175
  288. data/examples/hit_test/app.rbs +0 -7
  289. data/examples/hit_test/test_app.rb +0 -102
  290. data/examples/line_gauge_demo/app.rb +0 -190
  291. data/examples/line_gauge_demo/app.rbs +0 -7
  292. data/examples/line_gauge_demo/test_app.rb +0 -129
  293. data/examples/list_demo/app.rb +0 -253
  294. data/examples/list_demo/test_app.rb +0 -237
  295. data/examples/list_styles/app.rb +0 -140
  296. data/examples/list_styles/app.rbs +0 -7
  297. data/examples/list_styles/test_app.rb +0 -157
  298. data/examples/login_form/app.rbs +0 -7
  299. data/examples/login_form/test_app.rb +0 -51
  300. data/examples/map_demo/app.rbs +0 -7
  301. data/examples/map_demo/test_app.rb +0 -149
  302. data/examples/mouse_events/app.rb +0 -97
  303. data/examples/mouse_events/app.rbs +0 -7
  304. data/examples/mouse_events/test_app.rb +0 -53
  305. data/examples/popup_demo/app.rb +0 -103
  306. data/examples/popup_demo/app.rbs +0 -7
  307. data/examples/popup_demo/test_app.rb +0 -54
  308. data/examples/quickstart_dsl/app.rbs +0 -7
  309. data/examples/quickstart_dsl/test_app.rb +0 -29
  310. data/examples/quickstart_lifecycle/app.rbs +0 -7
  311. data/examples/quickstart_lifecycle/test_app.rb +0 -29
  312. data/examples/ratatui_logo_demo/app.rb +0 -79
  313. data/examples/ratatui_logo_demo/app.rbs +0 -7
  314. data/examples/ratatui_logo_demo/test_app.rb +0 -51
  315. data/examples/ratatui_mascot_demo/app.rb +0 -84
  316. data/examples/ratatui_mascot_demo/app.rbs +0 -7
  317. data/examples/ratatui_mascot_demo/test_app.rb +0 -47
  318. data/examples/readme_usage/app.rb +0 -29
  319. data/examples/readme_usage/app.rbs +0 -7
  320. data/examples/readme_usage/test_app.rb +0 -29
  321. data/examples/rich_text/app.rb +0 -141
  322. data/examples/rich_text/app.rbs +0 -7
  323. data/examples/rich_text/test_app.rb +0 -166
  324. data/examples/scroll_text/app.rb +0 -103
  325. data/examples/scroll_text/app.rbs +0 -7
  326. data/examples/scroll_text/test_app.rb +0 -110
  327. data/examples/scrollbar_demo/app.rb +0 -143
  328. data/examples/scrollbar_demo/app.rbs +0 -7
  329. data/examples/scrollbar_demo/test_app.rb +0 -77
  330. data/examples/sparkline_demo/app.rb +0 -240
  331. data/examples/sparkline_demo/test_app.rb +0 -107
  332. data/examples/table_flex/app.rb +0 -65
  333. data/examples/table_flex/app.rbs +0 -7
  334. data/examples/table_flex/test_app.rb +0 -36
  335. data/examples/table_select/app.rbs +0 -7
  336. data/examples/table_select/test_app.rb +0 -180
  337. data/examples/widget_style_colors/test_app.rb +0 -48
  338. /data/doc/images/{analytics.png → app_analytics.png} +0 -0
  339. /data/doc/images/{custom_widget.png → app_custom_widget.png} +0 -0
  340. /data/doc/images/{login_form.png → app_login_form.png} +0 -0
  341. /data/doc/images/{map_demo.png → app_map_demo.png} +0 -0
  342. /data/doc/images/{mouse_events.png → app_mouse_events.png} +0 -0
  343. /data/doc/images/{table_select.png → app_table_select.png} +0 -0
  344. /data/doc/images/{quickstart_dsl.png → verify_quickstart_dsl.png} +0 -0
  345. /data/doc/images/{ratatui_logo_demo.png → verify_quickstart_layout.png} +0 -0
  346. /data/doc/images/{quickstart_lifecycle.png → verify_quickstart_lifecycle.png} +0 -0
  347. /data/doc/images/{list_styles.png → widget_list_styles.png} +0 -0
  348. /data/doc/images/{popup_demo.png → widget_popup_demo.png} +0 -0
  349. /data/doc/images/{hit_test.png → widget_rect.png} +0 -0
  350. /data/doc/images/{rich_text.png → widget_rich_text.png} +0 -0
  351. /data/doc/images/{scroll_text.png → widget_scroll_text.png} +0 -0
@@ -0,0 +1,417 @@
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
@@ -105,40 +105,57 @@ module RatatuiRuby
105
105
  end
106
106
  end
107
107
 
108
- # Wrap classes as snake_case factories
108
+ # Wrap classes and modules as snake_case factories
109
109
  RatatuiRuby.constants.each do |const_name|
110
110
  next if const_name == :Buffer
111
111
 
112
- klass = RatatuiRuby.const_get(const_name)
113
- next unless klass.is_a?(Class)
112
+ const = RatatuiRuby.const_get(const_name)
113
+ next unless const.is_a?(Module) # Class is a Module, so this catches both
114
114
 
115
- method_name = const_name.to_s
116
- .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
117
- .gsub(/([a-z\d])([A-Z])/, '\1_\2')
118
- .downcase
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
119
122
 
120
- define_method(method_name) do |*args, **kwargs, &block|
121
- klass.new(*args, **kwargs, &block)
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
122
136
  end
123
- end
124
137
 
125
- # Wrap nested module classes with prefixed names (e.g., shape_line, text_span)
126
- { Shape: :shape, Text: :text }.each do |mod_name, prefix|
127
- next unless RatatuiRuby.const_defined?(mod_name)
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
128
149
 
129
- mod = RatatuiRuby.const_get(mod_name)
130
- mod.constants.each do |const_name|
131
- klass = mod.const_get(const_name)
132
- next unless klass.is_a?(Class)
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
133
154
 
134
- class_snake = const_name.to_s
135
- .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
136
- .gsub(/([a-z\d])([A-Z])/, '\1_\2')
137
- .downcase
138
- method_name = "#{prefix}_#{class_snake}"
155
+ method_name = "#{parent_prefix}_#{child_suffix}"
139
156
 
140
157
  define_method(method_name) do |*args, **kwargs, &block|
141
- klass.new(*args, **kwargs, &block)
158
+ child.new(*args, **kwargs, &block)
142
159
  end
143
160
  end
144
161
  end