ratatui_ruby 1.5.1-arm64-darwin-23

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 (295) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +15 -0
  3. data/LICENSES/AGPL-3.0-or-later.txt +661 -0
  4. data/LICENSES/CC-BY-SA-4.0.txt +427 -0
  5. data/LICENSES/CC0-1.0.txt +121 -0
  6. data/LICENSES/LGPL-3.0-or-later.txt +304 -0
  7. data/LICENSES/MIT-0.txt +16 -0
  8. data/LICENSES/MIT.txt +21 -0
  9. data/REUSE.toml +42 -0
  10. data/exe/.gitkeep +0 -0
  11. data/ext/ratatui_ruby/.cargo/config.toml +13 -0
  12. data/ext/ratatui_ruby/.gitignore +4 -0
  13. data/ext/ratatui_ruby/Cargo.lock +1730 -0
  14. data/ext/ratatui_ruby/Cargo.toml +23 -0
  15. data/ext/ratatui_ruby/clippy.toml +7 -0
  16. data/ext/ratatui_ruby/extconf.rb +21 -0
  17. data/ext/ratatui_ruby/src/color.rs +82 -0
  18. data/ext/ratatui_ruby/src/errors.rs +28 -0
  19. data/ext/ratatui_ruby/src/events.rs +706 -0
  20. data/ext/ratatui_ruby/src/frame.rs +241 -0
  21. data/ext/ratatui_ruby/src/lib.rs +343 -0
  22. data/ext/ratatui_ruby/src/lib_header.rs +11 -0
  23. data/ext/ratatui_ruby/src/rendering.rs +158 -0
  24. data/ext/ratatui_ruby/src/string_width.rs +26 -0
  25. data/ext/ratatui_ruby/src/style.rs +469 -0
  26. data/ext/ratatui_ruby/src/terminal/capabilities.rs +46 -0
  27. data/ext/ratatui_ruby/src/terminal/init.rs +233 -0
  28. data/ext/ratatui_ruby/src/terminal/mod.rs +42 -0
  29. data/ext/ratatui_ruby/src/terminal/mutations.rs +158 -0
  30. data/ext/ratatui_ruby/src/terminal/queries.rs +249 -0
  31. data/ext/ratatui_ruby/src/terminal/query.rs +400 -0
  32. data/ext/ratatui_ruby/src/terminal/storage.rs +109 -0
  33. data/ext/ratatui_ruby/src/terminal/wrapper.rs +16 -0
  34. data/ext/ratatui_ruby/src/text.rs +225 -0
  35. data/ext/ratatui_ruby/src/widgets/barchart.rs +169 -0
  36. data/ext/ratatui_ruby/src/widgets/block.rs +41 -0
  37. data/ext/ratatui_ruby/src/widgets/calendar.rs +84 -0
  38. data/ext/ratatui_ruby/src/widgets/canvas.rs +183 -0
  39. data/ext/ratatui_ruby/src/widgets/center.rs +79 -0
  40. data/ext/ratatui_ruby/src/widgets/chart.rs +222 -0
  41. data/ext/ratatui_ruby/src/widgets/clear.rs +39 -0
  42. data/ext/ratatui_ruby/src/widgets/cursor.rs +32 -0
  43. data/ext/ratatui_ruby/src/widgets/gauge.rs +65 -0
  44. data/ext/ratatui_ruby/src/widgets/layout.rs +379 -0
  45. data/ext/ratatui_ruby/src/widgets/line_gauge.rs +100 -0
  46. data/ext/ratatui_ruby/src/widgets/list.rs +378 -0
  47. data/ext/ratatui_ruby/src/widgets/list_state.rs +173 -0
  48. data/ext/ratatui_ruby/src/widgets/mod.rs +26 -0
  49. data/ext/ratatui_ruby/src/widgets/overlay.rs +24 -0
  50. data/ext/ratatui_ruby/src/widgets/paragraph.rs +87 -0
  51. data/ext/ratatui_ruby/src/widgets/ratatui_logo.rs +40 -0
  52. data/ext/ratatui_ruby/src/widgets/ratatui_mascot.rs +55 -0
  53. data/ext/ratatui_ruby/src/widgets/scrollbar.rs +214 -0
  54. data/ext/ratatui_ruby/src/widgets/scrollbar_state.rs +169 -0
  55. data/ext/ratatui_ruby/src/widgets/sparkline.rs +127 -0
  56. data/ext/ratatui_ruby/src/widgets/table.rs +415 -0
  57. data/ext/ratatui_ruby/src/widgets/table_state.rs +203 -0
  58. data/ext/ratatui_ruby/src/widgets/tabs.rs +194 -0
  59. data/lib/ratatui_ruby/3.2/ratatui_ruby.bundle +0 -0
  60. data/lib/ratatui_ruby/3.3/ratatui_ruby.bundle +0 -0
  61. data/lib/ratatui_ruby/3.4/ratatui_ruby.bundle +0 -0
  62. data/lib/ratatui_ruby/4.0/ratatui_ruby.bundle +0 -0
  63. data/lib/ratatui_ruby/backend/window_size.rb +50 -0
  64. data/lib/ratatui_ruby/backend.rb +59 -0
  65. data/lib/ratatui_ruby/buffer/cell.rb +212 -0
  66. data/lib/ratatui_ruby/buffer.rb +149 -0
  67. data/lib/ratatui_ruby/cell.rb +208 -0
  68. data/lib/ratatui_ruby/debug.rb +215 -0
  69. data/lib/ratatui_ruby/draw.rb +63 -0
  70. data/lib/ratatui_ruby/event/focus_gained.rb +125 -0
  71. data/lib/ratatui_ruby/event/focus_lost.rb +127 -0
  72. data/lib/ratatui_ruby/event/key/character.rb +53 -0
  73. data/lib/ratatui_ruby/event/key/dwim.rb +301 -0
  74. data/lib/ratatui_ruby/event/key/media.rb +46 -0
  75. data/lib/ratatui_ruby/event/key/modifier.rb +107 -0
  76. data/lib/ratatui_ruby/event/key/navigation.rb +72 -0
  77. data/lib/ratatui_ruby/event/key/system.rb +47 -0
  78. data/lib/ratatui_ruby/event/key.rb +479 -0
  79. data/lib/ratatui_ruby/event/mouse.rb +291 -0
  80. data/lib/ratatui_ruby/event/none.rb +53 -0
  81. data/lib/ratatui_ruby/event/paste.rb +130 -0
  82. data/lib/ratatui_ruby/event/resize.rb +221 -0
  83. data/lib/ratatui_ruby/event/sync.rb +52 -0
  84. data/lib/ratatui_ruby/event.rb +163 -0
  85. data/lib/ratatui_ruby/frame.rb +257 -0
  86. data/lib/ratatui_ruby/labs/a11y.rb +182 -0
  87. data/lib/ratatui_ruby/labs/frame_a11y_capture.rb +50 -0
  88. data/lib/ratatui_ruby/labs.rb +47 -0
  89. data/lib/ratatui_ruby/layout/alignment.rb +91 -0
  90. data/lib/ratatui_ruby/layout/constraint.rb +337 -0
  91. data/lib/ratatui_ruby/layout/layout.rb +258 -0
  92. data/lib/ratatui_ruby/layout/position.rb +81 -0
  93. data/lib/ratatui_ruby/layout/rect.rb +733 -0
  94. data/lib/ratatui_ruby/layout/size.rb +62 -0
  95. data/lib/ratatui_ruby/layout.rb +29 -0
  96. data/lib/ratatui_ruby/list_state.rb +201 -0
  97. data/lib/ratatui_ruby/output_guard.rb +171 -0
  98. data/lib/ratatui_ruby/scrollbar_state.rb +122 -0
  99. data/lib/ratatui_ruby/style/color.rb +149 -0
  100. data/lib/ratatui_ruby/style/style.rb +147 -0
  101. data/lib/ratatui_ruby/style.rb +19 -0
  102. data/lib/ratatui_ruby/symbols.rb +435 -0
  103. data/lib/ratatui_ruby/synthetic_events.rb +106 -0
  104. data/lib/ratatui_ruby/table_state.rb +251 -0
  105. data/lib/ratatui_ruby/terminal/capabilities.rb +316 -0
  106. data/lib/ratatui_ruby/terminal/viewport.rb +80 -0
  107. data/lib/ratatui_ruby/terminal.rb +66 -0
  108. data/lib/ratatui_ruby/terminal_lifecycle.rb +303 -0
  109. data/lib/ratatui_ruby/terminal_lifecycle.rb.bak +197 -0
  110. data/lib/ratatui_ruby/test_helper/event_injection.rb +244 -0
  111. data/lib/ratatui_ruby/test_helper/global_state.rb +111 -0
  112. data/lib/ratatui_ruby/test_helper/snapshot.rb +568 -0
  113. data/lib/ratatui_ruby/test_helper/snapshots/axis_labels_alignment.ansi +24 -0
  114. data/lib/ratatui_ruby/test_helper/snapshots/axis_labels_alignment.txt +24 -0
  115. data/lib/ratatui_ruby/test_helper/snapshots/barchart_styled_label.ansi +5 -0
  116. data/lib/ratatui_ruby/test_helper/snapshots/barchart_styled_label.txt +5 -0
  117. data/lib/ratatui_ruby/test_helper/snapshots/chart_rendering.ansi +24 -0
  118. data/lib/ratatui_ruby/test_helper/snapshots/chart_rendering.txt +24 -0
  119. data/lib/ratatui_ruby/test_helper/snapshots/half_block_marker.ansi +12 -0
  120. data/lib/ratatui_ruby/test_helper/snapshots/half_block_marker.txt +12 -0
  121. data/lib/ratatui_ruby/test_helper/snapshots/legend_position_bottom.ansi +12 -0
  122. data/lib/ratatui_ruby/test_helper/snapshots/legend_position_bottom.txt +12 -0
  123. data/lib/ratatui_ruby/test_helper/snapshots/legend_position_left.ansi +12 -0
  124. data/lib/ratatui_ruby/test_helper/snapshots/legend_position_left.txt +12 -0
  125. data/lib/ratatui_ruby/test_helper/snapshots/legend_position_right.ansi +12 -0
  126. data/lib/ratatui_ruby/test_helper/snapshots/legend_position_right.txt +12 -0
  127. data/lib/ratatui_ruby/test_helper/snapshots/legend_position_top.ansi +12 -0
  128. data/lib/ratatui_ruby/test_helper/snapshots/legend_position_top.txt +12 -0
  129. data/lib/ratatui_ruby/test_helper/snapshots/my_snapshot.txt +1 -0
  130. data/lib/ratatui_ruby/test_helper/snapshots/styled_axis_title.ansi +10 -0
  131. data/lib/ratatui_ruby/test_helper/snapshots/styled_axis_title.txt +10 -0
  132. data/lib/ratatui_ruby/test_helper/snapshots/styled_dataset_name.ansi +10 -0
  133. data/lib/ratatui_ruby/test_helper/snapshots/styled_dataset_name.txt +10 -0
  134. data/lib/ratatui_ruby/test_helper/style_assertions.rb +449 -0
  135. data/lib/ratatui_ruby/test_helper/subprocess_timeout.rb +35 -0
  136. data/lib/ratatui_ruby/test_helper/terminal.rb +187 -0
  137. data/lib/ratatui_ruby/test_helper/test_doubles.rb +86 -0
  138. data/lib/ratatui_ruby/test_helper.rb +115 -0
  139. data/lib/ratatui_ruby/text/line.rb +245 -0
  140. data/lib/ratatui_ruby/text/span.rb +158 -0
  141. data/lib/ratatui_ruby/text.rb +99 -0
  142. data/lib/ratatui_ruby/tui/buffer_factories.rb +22 -0
  143. data/lib/ratatui_ruby/tui/canvas_factories.rb +149 -0
  144. data/lib/ratatui_ruby/tui/core.rb +67 -0
  145. data/lib/ratatui_ruby/tui/layout_factories.rb +153 -0
  146. data/lib/ratatui_ruby/tui/state_factories.rb +77 -0
  147. data/lib/ratatui_ruby/tui/style_factories.rb +22 -0
  148. data/lib/ratatui_ruby/tui/text_factories.rb +86 -0
  149. data/lib/ratatui_ruby/tui/widget_factories.rb +272 -0
  150. data/lib/ratatui_ruby/tui.rb +106 -0
  151. data/lib/ratatui_ruby/version.rb +12 -0
  152. data/lib/ratatui_ruby/widgets/bar_chart/bar.rb +51 -0
  153. data/lib/ratatui_ruby/widgets/bar_chart/bar_group.rb +29 -0
  154. data/lib/ratatui_ruby/widgets/bar_chart.rb +308 -0
  155. data/lib/ratatui_ruby/widgets/block.rb +266 -0
  156. data/lib/ratatui_ruby/widgets/calendar.rb +88 -0
  157. data/lib/ratatui_ruby/widgets/canvas.rb +297 -0
  158. data/lib/ratatui_ruby/widgets/cell.rb +59 -0
  159. data/lib/ratatui_ruby/widgets/center.rb +71 -0
  160. data/lib/ratatui_ruby/widgets/chart.rb +172 -0
  161. data/lib/ratatui_ruby/widgets/clear.rb +66 -0
  162. data/lib/ratatui_ruby/widgets/coerceable_widget.rb +77 -0
  163. data/lib/ratatui_ruby/widgets/cursor.rb +54 -0
  164. data/lib/ratatui_ruby/widgets/gauge.rb +146 -0
  165. data/lib/ratatui_ruby/widgets/line_gauge.rb +158 -0
  166. data/lib/ratatui_ruby/widgets/list.rb +252 -0
  167. data/lib/ratatui_ruby/widgets/list_item.rb +55 -0
  168. data/lib/ratatui_ruby/widgets/overlay.rb +55 -0
  169. data/lib/ratatui_ruby/widgets/paragraph.rb +113 -0
  170. data/lib/ratatui_ruby/widgets/ratatui_logo.rb +35 -0
  171. data/lib/ratatui_ruby/widgets/ratatui_mascot.rb +40 -0
  172. data/lib/ratatui_ruby/widgets/row.rb +123 -0
  173. data/lib/ratatui_ruby/widgets/scrollbar.rb +147 -0
  174. data/lib/ratatui_ruby/widgets/shape/label.rb +80 -0
  175. data/lib/ratatui_ruby/widgets/sparkline.rb +153 -0
  176. data/lib/ratatui_ruby/widgets/table.rb +213 -0
  177. data/lib/ratatui_ruby/widgets/tabs.rb +91 -0
  178. data/lib/ratatui_ruby/widgets.rb +43 -0
  179. data/lib/ratatui_ruby.rb +556 -0
  180. data/sig/examples/app_all_events/app.rbs +11 -0
  181. data/sig/examples/app_all_events/model/app_model.rbs +23 -0
  182. data/sig/examples/app_all_events/model/event_entry.rbs +23 -0
  183. data/sig/examples/app_all_events/model/timestamp.rbs +11 -0
  184. data/sig/examples/app_all_events/view/app_view.rbs +8 -0
  185. data/sig/examples/app_all_events/view/controls_view.rbs +6 -0
  186. data/sig/examples/app_all_events/view/counts_view.rbs +6 -0
  187. data/sig/examples/app_all_events/view/live_view.rbs +6 -0
  188. data/sig/examples/app_all_events/view/log_view.rbs +6 -0
  189. data/sig/examples/app_all_events/view.rbs +14 -0
  190. data/sig/examples/app_cli_rich_moments/app.rbs +12 -0
  191. data/sig/examples/app_color_picker/app.rbs +17 -0
  192. data/sig/examples/app_external_editor/app.rbs +12 -0
  193. data/sig/examples/app_login_form/app.rbs +11 -0
  194. data/sig/examples/app_stateful_interaction/app.rbs +39 -0
  195. data/sig/examples/verify_quickstart_dsl/app.rbs +17 -0
  196. data/sig/examples/verify_quickstart_lifecycle/app.rbs +17 -0
  197. data/sig/examples/verify_readme_usage/app.rbs +17 -0
  198. data/sig/examples/widget_block_demo/app.rbs +38 -0
  199. data/sig/examples/widget_box_demo/app.rbs +17 -0
  200. data/sig/examples/widget_calendar_demo/app.rbs +17 -0
  201. data/sig/examples/widget_cell_demo/app.rbs +17 -0
  202. data/sig/examples/widget_chart_demo/app.rbs +17 -0
  203. data/sig/examples/widget_gauge_demo/app.rbs +17 -0
  204. data/sig/examples/widget_layout_split/app.rbs +16 -0
  205. data/sig/examples/widget_line_gauge_demo/app.rbs +17 -0
  206. data/sig/examples/widget_list_demo/app.rbs +17 -0
  207. data/sig/examples/widget_map_demo/app.rbs +17 -0
  208. data/sig/examples/widget_popup_demo/app.rbs +17 -0
  209. data/sig/examples/widget_ratatui_logo_demo/app.rbs +17 -0
  210. data/sig/examples/widget_ratatui_mascot_demo/app.rbs +17 -0
  211. data/sig/examples/widget_rect/app.rbs +18 -0
  212. data/sig/examples/widget_render/app.rbs +16 -0
  213. data/sig/examples/widget_rich_text/app.rbs +17 -0
  214. data/sig/examples/widget_scroll_text/app.rbs +17 -0
  215. data/sig/examples/widget_scrollbar_demo/app.rbs +17 -0
  216. data/sig/examples/widget_sparkline_demo/app.rbs +16 -0
  217. data/sig/examples/widget_style_colors/app.rbs +20 -0
  218. data/sig/examples/widget_table_demo/app.rbs +17 -0
  219. data/sig/examples/widget_text_width/app.rbs +16 -0
  220. data/sig/generated/event_key_predicates.rbs +1348 -0
  221. data/sig/manifest.yaml +5 -0
  222. data/sig/patches/data.rbs +26 -0
  223. data/sig/patches/debugger__.rbs +8 -0
  224. data/sig/ratatui_ruby/backend/window_size.rbs +17 -0
  225. data/sig/ratatui_ruby/backend.rbs +12 -0
  226. data/sig/ratatui_ruby/buffer/cell.rbs +46 -0
  227. data/sig/ratatui_ruby/buffer.rbs +18 -0
  228. data/sig/ratatui_ruby/cell.rbs +44 -0
  229. data/sig/ratatui_ruby/clear.rbs +18 -0
  230. data/sig/ratatui_ruby/constraint.rbs +26 -0
  231. data/sig/ratatui_ruby/debug.rbs +45 -0
  232. data/sig/ratatui_ruby/draw.rbs +30 -0
  233. data/sig/ratatui_ruby/event.rbs +249 -0
  234. data/sig/ratatui_ruby/frame.rbs +23 -0
  235. data/sig/ratatui_ruby/interfaces.rbs +25 -0
  236. data/sig/ratatui_ruby/labs.rbs +90 -0
  237. data/sig/ratatui_ruby/layout/alignment.rbs +26 -0
  238. data/sig/ratatui_ruby/layout/constraint.rbs +39 -0
  239. data/sig/ratatui_ruby/layout/layout.rbs +45 -0
  240. data/sig/ratatui_ruby/layout/position.rbs +18 -0
  241. data/sig/ratatui_ruby/layout/rect.rbs +64 -0
  242. data/sig/ratatui_ruby/layout/size.rbs +18 -0
  243. data/sig/ratatui_ruby/list_state.rbs +23 -0
  244. data/sig/ratatui_ruby/output_guard.rbs +23 -0
  245. data/sig/ratatui_ruby/ratatui_ruby.rbs +113 -0
  246. data/sig/ratatui_ruby/rect.rbs +17 -0
  247. data/sig/ratatui_ruby/scrollbar_state.rbs +24 -0
  248. data/sig/ratatui_ruby/session.rbs +93 -0
  249. data/sig/ratatui_ruby/style/color.rbs +22 -0
  250. data/sig/ratatui_ruby/style/style.rbs +29 -0
  251. data/sig/ratatui_ruby/symbols.rbs +141 -0
  252. data/sig/ratatui_ruby/synthetic_events.rbs +24 -0
  253. data/sig/ratatui_ruby/table_state.rbs +27 -0
  254. data/sig/ratatui_ruby/terminal/capabilities.rbs +38 -0
  255. data/sig/ratatui_ruby/terminal/viewport.rbs +33 -0
  256. data/sig/ratatui_ruby/terminal_lifecycle.rbs +39 -0
  257. data/sig/ratatui_ruby/test_helper/event_injection.rbs +22 -0
  258. data/sig/ratatui_ruby/test_helper/snapshot.rbs +37 -0
  259. data/sig/ratatui_ruby/test_helper/style_assertions.rbs +77 -0
  260. data/sig/ratatui_ruby/test_helper/terminal.rbs +20 -0
  261. data/sig/ratatui_ruby/test_helper/test_doubles.rbs +32 -0
  262. data/sig/ratatui_ruby/test_helper.rbs +18 -0
  263. data/sig/ratatui_ruby/text/line.rbs +27 -0
  264. data/sig/ratatui_ruby/text/span.rbs +23 -0
  265. data/sig/ratatui_ruby/text.rbs +12 -0
  266. data/sig/ratatui_ruby/tui/buffer_factories.rbs +16 -0
  267. data/sig/ratatui_ruby/tui/canvas_factories.rbs +38 -0
  268. data/sig/ratatui_ruby/tui/core.rbs +23 -0
  269. data/sig/ratatui_ruby/tui/layout_factories.rbs +39 -0
  270. data/sig/ratatui_ruby/tui/state_factories.rbs +23 -0
  271. data/sig/ratatui_ruby/tui/style_factories.rbs +18 -0
  272. data/sig/ratatui_ruby/tui/text_factories.rbs +23 -0
  273. data/sig/ratatui_ruby/tui/widget_factories.rbs +138 -0
  274. data/sig/ratatui_ruby/tui.rbs +25 -0
  275. data/sig/ratatui_ruby/version.rbs +12 -0
  276. data/sig/ratatui_ruby/widgets/bar_chart.rbs +95 -0
  277. data/sig/ratatui_ruby/widgets/block.rbs +51 -0
  278. data/sig/ratatui_ruby/widgets/calendar.rbs +45 -0
  279. data/sig/ratatui_ruby/widgets/canvas.rbs +95 -0
  280. data/sig/ratatui_ruby/widgets/chart.rbs +91 -0
  281. data/sig/ratatui_ruby/widgets/coerceable_widget.rbs +26 -0
  282. data/sig/ratatui_ruby/widgets/gauge.rbs +44 -0
  283. data/sig/ratatui_ruby/widgets/line_gauge.rbs +48 -0
  284. data/sig/ratatui_ruby/widgets/list.rbs +63 -0
  285. data/sig/ratatui_ruby/widgets/misc.rbs +158 -0
  286. data/sig/ratatui_ruby/widgets/paragraph.rbs +45 -0
  287. data/sig/ratatui_ruby/widgets/row.rbs +43 -0
  288. data/sig/ratatui_ruby/widgets/scrollbar.rbs +53 -0
  289. data/sig/ratatui_ruby/widgets/shape/label.rbs +37 -0
  290. data/sig/ratatui_ruby/widgets/sparkline.rbs +45 -0
  291. data/sig/ratatui_ruby/widgets/table.rbs +78 -0
  292. data/sig/ratatui_ruby/widgets/tabs.rbs +44 -0
  293. data/sig/ratatui_ruby/widgets.rbs +16 -0
  294. data/vendor/goodcop/base.yml +1047 -0
  295. metadata +738 -0
metadata ADDED
@@ -0,0 +1,738 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ratatui_ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.5.1
5
+ platform: arm64-darwin-23
6
+ authors:
7
+ - Kerrick Long
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: rb_sys
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '0.9'
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: 0.9.129
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '0.9'
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: 0.9.129
32
+ - !ruby/object:Gem::Dependency
33
+ name: rexml
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - "~>"
37
+ - !ruby/object:Gem::Version
38
+ version: '3.4'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - "~>"
44
+ - !ruby/object:Gem::Version
45
+ version: '3.4'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake-compiler
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '1.2'
53
+ type: :development
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '1.2'
60
+ - !ruby/object:Gem::Dependency
61
+ name: rdoc
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '7.0'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '7.0'
74
+ - !ruby/object:Gem::Dependency
75
+ name: faker
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: 3.5.3
81
+ type: :development
82
+ prerelease: false
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: 3.5.3
88
+ - !ruby/object:Gem::Dependency
89
+ name: debug
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '1.0'
95
+ type: :development
96
+ prerelease: false
97
+ version_requirements: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '1.0'
102
+ description: |2-
103
+
104
+ == Terminal UIs, the Ruby Way
105
+
106
+ RatatuiRuby[https://rubygems.org/gems/ratatui_ruby] is a RubyGem built on
107
+ Ratatui[https://ratatui.rs], a leading TUI library written in
108
+ Rust[https://rust-lang.org]. You get native performance with the joy of Ruby.
109
+
110
+ gem install ratatui_ruby
111
+
112
+ {rdoc-image:https://ratatui-ruby.dev/hero.gif}[https://www.ratatui-ruby.dev/docs/v0.10/examples/app_cli_rich_moments/README_md.html]
113
+
114
+ === Rich Moments
115
+
116
+ Add a spinner, a progress bar, or an inline menu to your CLI script. No
117
+ full-screen takeover. Your terminal history stays intact.
118
+
119
+ ==== Inline Viewports
120
+
121
+ Standard TUIs erase themselves on exit. Your carefully formatted CLI output
122
+ disappears. Users lose their scrollback.
123
+
124
+ <b>Inline viewports</b> solve this. They occupy a fixed number of lines, render
125
+ rich UI, then leave the output in place when done.
126
+
127
+ Perfect for spinners, menus, progress indicators—any brief moment of richness.
128
+
129
+ require "ratatui_ruby"
130
+
131
+ RatatuiRuby.run(viewport: :inline, height: 1) do |tui|
132
+ until connected?
133
+ status = tui.paragraph(text: "\#{spin} Connecting...")
134
+ tui.draw { |frame| frame.render_widget(status, frame.area) }
135
+ end
136
+ end
137
+
138
+ === Build Something Real
139
+
140
+ Full-screen applications with {keyboard and mouse input}[https://www.ratatui-ruby.dev/docs/v0.10/examples/app_all_events/README_md.html]. The managed loop
141
+ sets up the terminal and restores it on exit, even after crashes.
142
+
143
+ RatatuiRuby.run do |tui|
144
+ loop do
145
+ tui.draw do |frame|
146
+ frame.render_widget(
147
+ tui.paragraph(text: "Hello, RatatuiRuby!", alignment: :center),
148
+ frame.area
149
+ )
150
+ end
151
+
152
+ case tui.poll_event
153
+ in { type: :key, code: "q" } then break
154
+ else nil
155
+ end
156
+ end
157
+ end
158
+
159
+ ==== Widgets included:
160
+
161
+ [Layout]
162
+ {Block}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_block/README_md.html],
163
+ {Center}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_center/README_md.html],
164
+ {Clear (Popup, Modal)}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_popup/README_md.html],
165
+ {Layout (Split, Grid)}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_layout_split/README_md.html],
166
+ {Overlay}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_overlay/README_md.html]
167
+ [Data]
168
+ {Bar Chart}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_barchart/README_md.html],
169
+ {Chart}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_chart/README_md.html],
170
+ {Gauge}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_gauge/README_md.html],
171
+ {Line Gauge}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_line_gauge/README_md.html],
172
+ {Sparkline}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_sparkline/README_md.html],
173
+ {Table}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_table/README_md.html]
174
+ [Text]
175
+ {Cell}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_cell/README_md.html],
176
+ {List}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_list/README_md.html],
177
+ {Rich Text (Line, Span)}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_rich_text/README_md.html],
178
+ {Scrollbar (Scroll)}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_scrollbar/README_md.html],
179
+ {Tabs}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_tabs/README_md.html]
180
+ [Graphics]
181
+ {Calendar}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_calendar/README_md.html],
182
+ {Canvas}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_canvas/README_md.html],
183
+ {Map (World Map)}[https://www.ratatui-ruby.dev/docs/v0.10/examples/widget_map/README_md.html]
184
+
185
+ Need something else? {Build custom widgets}[https://www.ratatui-ruby.dev/docs/v0.10/doc/concepts/custom_widgets_md.html] in Ruby!
186
+
187
+
188
+ ---
189
+
190
+ === Testing Built In
191
+
192
+ TUI testing is tedious. You need a headless terminal, event injection,
193
+ snapshot comparisons, and style assertions. RatatuiRuby bundles all of it.
194
+
195
+ require "ratatui_ruby/test_helper"
196
+
197
+ class TestColorPicker < Minitest::Test
198
+ include RatatuiRuby::TestHelper
199
+
200
+ def test_swatch_widget
201
+ with_test_terminal(10, 3) do
202
+ RatatuiRuby.draw do |frame|
203
+ frame.render_widget(Swatch.new(:red), frame.area)
204
+ end
205
+ assert_cell_style 2, 1, char: "█", bg: :red
206
+ end
207
+ end
208
+ end
209
+
210
+ ==== What's inside:
211
+
212
+ - <b>Headless terminal</b> — No real TTY needed
213
+ - <b>Snapshots</b> — Plain text and rich (ANSI colors)
214
+ - <b>Event injection</b> — Keys, mouse, paste, resize
215
+ - <b>Style assertions</b> — Color, bold, underline at any cell
216
+ - <b>Test doubles</b> — Mock frames and stub rects
217
+ - <b>UPDATE_SNAPSHOTS=1</b> — Regenerate baselines in one command
218
+
219
+
220
+ ---
221
+
222
+ ==== Inline Menu Example
223
+
224
+ require "ratatui_ruby"
225
+
226
+ # This example renders an inline menu. Arrow keys select, enter confirms.
227
+ # The menu appears in-place, preserving scrollback. When the user chooses,
228
+ # the TUI closes and the script continues with the selected value.
229
+ class RadioMenu
230
+ CHOICES = ["Production", "Staging", "Development"] # ASCII strings are universally supported.
231
+ PREFIXES = { active: "●", inactive: "○" } # Some terminals may not support Unicode.
232
+ CONTROLS = "↑/↓: Select | Enter: Choose | Ctrl+C: Cancel" # Let users know what keys you handle.
233
+ TITLES = ["Select Environment", # The default title position is top left.
234
+ { content: CONTROLS, # Multiple titles can save space.
235
+ position: :bottom, # Titles go on the top or bottom,
236
+ alignment: :right }] # aligned left, right, or center
237
+
238
+ def call # This method blocks until a choice is made.
239
+ RatatuiRuby.run(viewport: :inline, height: 5) do |tui| # RatauiRuby.run manages the terminal.
240
+ @tui = tui # The TUI instance is safe to store.
241
+ show_menu until chosen? # You can use any loop keyword you like.
242
+ end # `run` won't return until your block does,
243
+ RadioMenu::CHOICES[@choice] # so you can use it synchronously.
244
+ end
245
+ # Classes like RadioMenu are convenient for
246
+ private # CLI authors to offer "rich moments."
247
+
248
+ def show_menu = @tui.draw do |frame| # RatatuiRuby gives you low-level access.
249
+ widget = @tui.paragraph( # But the TUI facade makes it easy to use.
250
+ text: menu_items, # Text can be spans, lines, or paragraphs.
251
+ block: @tui.block(borders: :all, titles: TITLES) # Blocks give you boxes and titles, and hold
252
+ ) # one or more widgets. We only use one here,
253
+ frame.render_widget(widget, frame.area) # but "area" lets you compose sub-views.
254
+ end
255
+
256
+ def chosen? # You are responsible for handling input.
257
+ interaction = @tui.poll_event # Every frame, you receive an event object:
258
+ return choose if interaction.enter? # Key, Mouse, Resize, Paste, FocusGained,
259
+ # FocusLost, or None objects. They come with
260
+ move_by(-1) if interaction.up? # predicates, support pattern matching, and
261
+ move_by(1) if interaction.down? # can be inspected for properties directly.
262
+ quit! if interaction.ctrl_c? # Your application must handle every input,
263
+ false # even interrupts and other exit patterns.
264
+ end
265
+
266
+ def choose # Here, the loop is about to exit, and the
267
+ prepare_next_line # block will return. The inline viewport
268
+ @choice # will be torn down and the terminal will
269
+ end # be restored, but you are responsible for
270
+ # positioning the cursor.
271
+ def prepare_next_line # To ensure the next output is on a new
272
+ area = @tui.viewport_area # line, query the viewport area and move
273
+ RatatuiRuby.cursor_position = [0, area.y + area.height] # the cursor to the start of the last line.
274
+ puts # Then print a newline.
275
+ end
276
+
277
+ def quit! # All of your familiar Ruby control flow
278
+ prepare_next_line # keywords work as expected, so we can
279
+ exit 0 # use them to leave the TUI.
280
+ end
281
+
282
+ def move_by(line_count) # You are in full control of your UX, so
283
+ @choice = (@choice + line_count) % CHOICES.size # you can implement any logic you need:
284
+ end # Would you "wrap around" here, or not?
285
+ #
286
+ def menu_items = CHOICES.map.with_index do |choice, i| # Notably, RatatuiRuby has no concept of
287
+ "\#{prefix_for(i)} \#{choice}" # "menus" or "radio buttons". You are in
288
+ end # full control, but it also means you must
289
+ def prefix_for(choice_index) # implement the logic yourself. For larger
290
+ return PREFIXES[:active] if choice_index == @choice # applications, consider using Rooibos,
291
+ PREFIXES[:inactive] # an MVU framework built with RatatuiRuby.
292
+ end # Or, use the upcoming ratatui-ruby-kit,
293
+ # our object-oriented component library.
294
+ def initialize = @choice = 0 # However, those are both optional, and
295
+ end # designed for full-screen Terminal UIs.
296
+ # RatatuiRuby will always give you the most
297
+ choice = RadioMenu.new.call # control, and is enough for "rich CLI
298
+ puts "You chose \#{choice}!" # moments" like this one.
299
+
300
+ ---
301
+
302
+ === Full App Solutions
303
+
304
+ RatatuiRuby renders. For complex applications, add a framework that manages
305
+ state and composition.
306
+
307
+ ==== Rooibos[https://www.rooibos.run] (Framework)
308
+
309
+ Model-View-Update architecture. Inspired by Elm, Bubble Tea, and React +
310
+ Redux. Your UI is a pure function of state.
311
+
312
+ - Functional programming with MVU
313
+ - Commands work off the main thread
314
+ - Messages, not callbacks, drive updates
315
+
316
+ ==== {Kit}[https://sr.ht/~kerrick/ratatui_ruby/#chapter-3-the-object-path--kit] (Coming Soon)
317
+
318
+ Component-based architecture. Encapsulate state, input handling, and
319
+ rendering in reusable pieces.
320
+
321
+ - OOP with stateful components
322
+ - Separate UI state from domain logic
323
+ - Built-in focus management & click handling
324
+
325
+ Both use the same widget library and rendering engine. Pick the paradigm
326
+ that fits your brain.
327
+
328
+
329
+ ---
330
+
331
+ === Why RatatuiRuby?
332
+
333
+ Ruby deserves world-class terminal user interfaces. TUI developers deserve
334
+ a world-class language.
335
+
336
+ RatatuiRuby wraps Rust's Ratatui via native extension. The Rust library
337
+ handles rendering. Your Ruby code handles design.
338
+
339
+ >>>
340
+ "Text UIs are seeing a renaissance with many new TUI libraries popping up.
341
+ The Ratatui bindings have proven to be full featured and stable."
342
+
343
+ — {Mike Perham}[https://www.mikeperham.com/], creator of
344
+ Sidekiq[https://sidekiq.org/] and Faktory[https://contribsys.com/faktory/]
345
+
346
+ ==== Why Rust? Why Ruby?
347
+
348
+ Rust excels at low-level rendering. Ruby excels at expressing domain logic
349
+ and UI. RatatuiRuby puts each language where it performs best.
350
+
351
+ ==== Versus CharmRuby
352
+
353
+ CharmRuby[https://charm-ruby.dev/] wraps Charm's Go libraries. Both projects
354
+ give Ruby developers TUI options.
355
+
356
+ [Integration]
357
+ CharmRuby: Two runtimes, one process.
358
+ RatatuiRuby: Native extension in Rust.
359
+ [Runtime]
360
+ CharmRuby: Go + Ruby (competing).
361
+ RatatuiRuby: Ruby (Rust has no runtime).
362
+ [Memory]
363
+ CharmRuby: Two uncoordinated GCs.
364
+ RatatuiRuby: One Garbage Collector.
365
+ [Style]
366
+ CharmRuby: The Elm Architecture (TEA).
367
+ RatatuiRuby: TEA, OOP, or Imperative.
368
+
369
+
370
+ ---
371
+
372
+ === Links
373
+
374
+ [Get Started]
375
+ {Quickstart}[https://www.ratatui-ruby.dev/docs/v0.10/doc/getting_started/quickstart_md.html],
376
+ {Examples}[https://www.ratatui-ruby.dev/docs/v0.10/examples/app_cli_rich_moments/README_md.html],
377
+ {API Reference}[https://www.ratatui-ruby.dev/docs/v0.10/],
378
+ {Guides}[https://www.ratatui-ruby.dev/docs/v0.10/doc/index_md.html]
379
+ [Ecosystem]
380
+ Rooibos[https://www.rooibos.run],
381
+ {Kit}[https://sr.ht/~kerrick/ratatui_ruby/#chapter-3-the-object-path--kit] (Planned),
382
+ {Framework}[https://sr.ht/~kerrick/ratatui_ruby/#chapter-5-the-framework] (Planned),
383
+ {UI Widgets}[https://sr.ht/~kerrick/ratatui_ruby/#chapter-6-licensing] (Planned)
384
+ [Community]
385
+ {Forum}[https://forum.setdef.com/c/ratatui-ruby/6],
386
+ {Announcements}[https://forum.setdef.com/tags/c/ratatui-ruby/6/announcement],
387
+ {Discussion}[https://forum.setdef.com/tags/c/ratatui-ruby/6/discussion],
388
+ {Bug Tracker}[https://forum.setdef.com/tags/c/ratatui-ruby/6/bug]
389
+ [Contribute]
390
+ {Contributing Guide}[https://man.sr.ht/~kerrick/ratatui_ruby/contributing.md],
391
+ {Code of Conduct}[https://man.sr.ht/~kerrick/ratatui_ruby/code_of_conduct.md],
392
+ {Project History}[https://man.sr.ht/~kerrick/ratatui_ruby/history/index.md],
393
+ {Pull Requests}[https://forum.setdef.com/tags/c/ratatui-ruby/6/patch]
394
+
395
+
396
+ ---
397
+
398
+ [Website] https://www.ratatui-ruby.dev
399
+ [Source] https://github.com/setdef/RatatuiRuby
400
+ [RubyGems] https://rubygems.org/gems/ratatui_ruby
401
+ [Upstream] https://ratatui.rs
402
+ [Build Status] https://builds.sr.ht/~kerrick/ratatui_ruby
403
+
404
+ © 2026 Kerrick Long · Library: LGPL-3.0-or-later · Website: CC-BY-NC-ND-4.0 · Snippets: MIT-0
405
+ email:
406
+ - me@kerricklong.com
407
+ executables:
408
+ - ".gitkeep"
409
+ extensions: []
410
+ extra_rdoc_files: []
411
+ files:
412
+ - LICENSE
413
+ - LICENSES/AGPL-3.0-or-later.txt
414
+ - LICENSES/CC-BY-SA-4.0.txt
415
+ - LICENSES/CC0-1.0.txt
416
+ - LICENSES/LGPL-3.0-or-later.txt
417
+ - LICENSES/MIT-0.txt
418
+ - LICENSES/MIT.txt
419
+ - REUSE.toml
420
+ - exe/.gitkeep
421
+ - ext/ratatui_ruby/.cargo/config.toml
422
+ - ext/ratatui_ruby/.gitignore
423
+ - ext/ratatui_ruby/Cargo.lock
424
+ - ext/ratatui_ruby/Cargo.toml
425
+ - ext/ratatui_ruby/clippy.toml
426
+ - ext/ratatui_ruby/extconf.rb
427
+ - ext/ratatui_ruby/src/color.rs
428
+ - ext/ratatui_ruby/src/errors.rs
429
+ - ext/ratatui_ruby/src/events.rs
430
+ - ext/ratatui_ruby/src/frame.rs
431
+ - ext/ratatui_ruby/src/lib.rs
432
+ - ext/ratatui_ruby/src/lib_header.rs
433
+ - ext/ratatui_ruby/src/rendering.rs
434
+ - ext/ratatui_ruby/src/string_width.rs
435
+ - ext/ratatui_ruby/src/style.rs
436
+ - ext/ratatui_ruby/src/terminal/capabilities.rs
437
+ - ext/ratatui_ruby/src/terminal/init.rs
438
+ - ext/ratatui_ruby/src/terminal/mod.rs
439
+ - ext/ratatui_ruby/src/terminal/mutations.rs
440
+ - ext/ratatui_ruby/src/terminal/queries.rs
441
+ - ext/ratatui_ruby/src/terminal/query.rs
442
+ - ext/ratatui_ruby/src/terminal/storage.rs
443
+ - ext/ratatui_ruby/src/terminal/wrapper.rs
444
+ - ext/ratatui_ruby/src/text.rs
445
+ - ext/ratatui_ruby/src/widgets/barchart.rs
446
+ - ext/ratatui_ruby/src/widgets/block.rs
447
+ - ext/ratatui_ruby/src/widgets/calendar.rs
448
+ - ext/ratatui_ruby/src/widgets/canvas.rs
449
+ - ext/ratatui_ruby/src/widgets/center.rs
450
+ - ext/ratatui_ruby/src/widgets/chart.rs
451
+ - ext/ratatui_ruby/src/widgets/clear.rs
452
+ - ext/ratatui_ruby/src/widgets/cursor.rs
453
+ - ext/ratatui_ruby/src/widgets/gauge.rs
454
+ - ext/ratatui_ruby/src/widgets/layout.rs
455
+ - ext/ratatui_ruby/src/widgets/line_gauge.rs
456
+ - ext/ratatui_ruby/src/widgets/list.rs
457
+ - ext/ratatui_ruby/src/widgets/list_state.rs
458
+ - ext/ratatui_ruby/src/widgets/mod.rs
459
+ - ext/ratatui_ruby/src/widgets/overlay.rs
460
+ - ext/ratatui_ruby/src/widgets/paragraph.rs
461
+ - ext/ratatui_ruby/src/widgets/ratatui_logo.rs
462
+ - ext/ratatui_ruby/src/widgets/ratatui_mascot.rs
463
+ - ext/ratatui_ruby/src/widgets/scrollbar.rs
464
+ - ext/ratatui_ruby/src/widgets/scrollbar_state.rs
465
+ - ext/ratatui_ruby/src/widgets/sparkline.rs
466
+ - ext/ratatui_ruby/src/widgets/table.rs
467
+ - ext/ratatui_ruby/src/widgets/table_state.rs
468
+ - ext/ratatui_ruby/src/widgets/tabs.rs
469
+ - lib/ratatui_ruby.rb
470
+ - lib/ratatui_ruby/3.2/ratatui_ruby.bundle
471
+ - lib/ratatui_ruby/3.3/ratatui_ruby.bundle
472
+ - lib/ratatui_ruby/3.4/ratatui_ruby.bundle
473
+ - lib/ratatui_ruby/4.0/ratatui_ruby.bundle
474
+ - lib/ratatui_ruby/backend.rb
475
+ - lib/ratatui_ruby/backend/window_size.rb
476
+ - lib/ratatui_ruby/buffer.rb
477
+ - lib/ratatui_ruby/buffer/cell.rb
478
+ - lib/ratatui_ruby/cell.rb
479
+ - lib/ratatui_ruby/debug.rb
480
+ - lib/ratatui_ruby/draw.rb
481
+ - lib/ratatui_ruby/event.rb
482
+ - lib/ratatui_ruby/event/focus_gained.rb
483
+ - lib/ratatui_ruby/event/focus_lost.rb
484
+ - lib/ratatui_ruby/event/key.rb
485
+ - lib/ratatui_ruby/event/key/character.rb
486
+ - lib/ratatui_ruby/event/key/dwim.rb
487
+ - lib/ratatui_ruby/event/key/media.rb
488
+ - lib/ratatui_ruby/event/key/modifier.rb
489
+ - lib/ratatui_ruby/event/key/navigation.rb
490
+ - lib/ratatui_ruby/event/key/system.rb
491
+ - lib/ratatui_ruby/event/mouse.rb
492
+ - lib/ratatui_ruby/event/none.rb
493
+ - lib/ratatui_ruby/event/paste.rb
494
+ - lib/ratatui_ruby/event/resize.rb
495
+ - lib/ratatui_ruby/event/sync.rb
496
+ - lib/ratatui_ruby/frame.rb
497
+ - lib/ratatui_ruby/labs.rb
498
+ - lib/ratatui_ruby/labs/a11y.rb
499
+ - lib/ratatui_ruby/labs/frame_a11y_capture.rb
500
+ - lib/ratatui_ruby/layout.rb
501
+ - lib/ratatui_ruby/layout/alignment.rb
502
+ - lib/ratatui_ruby/layout/constraint.rb
503
+ - lib/ratatui_ruby/layout/layout.rb
504
+ - lib/ratatui_ruby/layout/position.rb
505
+ - lib/ratatui_ruby/layout/rect.rb
506
+ - lib/ratatui_ruby/layout/size.rb
507
+ - lib/ratatui_ruby/list_state.rb
508
+ - lib/ratatui_ruby/output_guard.rb
509
+ - lib/ratatui_ruby/scrollbar_state.rb
510
+ - lib/ratatui_ruby/style.rb
511
+ - lib/ratatui_ruby/style/color.rb
512
+ - lib/ratatui_ruby/style/style.rb
513
+ - lib/ratatui_ruby/symbols.rb
514
+ - lib/ratatui_ruby/synthetic_events.rb
515
+ - lib/ratatui_ruby/table_state.rb
516
+ - lib/ratatui_ruby/terminal.rb
517
+ - lib/ratatui_ruby/terminal/capabilities.rb
518
+ - lib/ratatui_ruby/terminal/viewport.rb
519
+ - lib/ratatui_ruby/terminal_lifecycle.rb
520
+ - lib/ratatui_ruby/terminal_lifecycle.rb.bak
521
+ - lib/ratatui_ruby/test_helper.rb
522
+ - lib/ratatui_ruby/test_helper/event_injection.rb
523
+ - lib/ratatui_ruby/test_helper/global_state.rb
524
+ - lib/ratatui_ruby/test_helper/snapshot.rb
525
+ - lib/ratatui_ruby/test_helper/snapshots/axis_labels_alignment.ansi
526
+ - lib/ratatui_ruby/test_helper/snapshots/axis_labels_alignment.txt
527
+ - lib/ratatui_ruby/test_helper/snapshots/barchart_styled_label.ansi
528
+ - lib/ratatui_ruby/test_helper/snapshots/barchart_styled_label.txt
529
+ - lib/ratatui_ruby/test_helper/snapshots/chart_rendering.ansi
530
+ - lib/ratatui_ruby/test_helper/snapshots/chart_rendering.txt
531
+ - lib/ratatui_ruby/test_helper/snapshots/half_block_marker.ansi
532
+ - lib/ratatui_ruby/test_helper/snapshots/half_block_marker.txt
533
+ - lib/ratatui_ruby/test_helper/snapshots/legend_position_bottom.ansi
534
+ - lib/ratatui_ruby/test_helper/snapshots/legend_position_bottom.txt
535
+ - lib/ratatui_ruby/test_helper/snapshots/legend_position_left.ansi
536
+ - lib/ratatui_ruby/test_helper/snapshots/legend_position_left.txt
537
+ - lib/ratatui_ruby/test_helper/snapshots/legend_position_right.ansi
538
+ - lib/ratatui_ruby/test_helper/snapshots/legend_position_right.txt
539
+ - lib/ratatui_ruby/test_helper/snapshots/legend_position_top.ansi
540
+ - lib/ratatui_ruby/test_helper/snapshots/legend_position_top.txt
541
+ - lib/ratatui_ruby/test_helper/snapshots/my_snapshot.txt
542
+ - lib/ratatui_ruby/test_helper/snapshots/styled_axis_title.ansi
543
+ - lib/ratatui_ruby/test_helper/snapshots/styled_axis_title.txt
544
+ - lib/ratatui_ruby/test_helper/snapshots/styled_dataset_name.ansi
545
+ - lib/ratatui_ruby/test_helper/snapshots/styled_dataset_name.txt
546
+ - lib/ratatui_ruby/test_helper/style_assertions.rb
547
+ - lib/ratatui_ruby/test_helper/subprocess_timeout.rb
548
+ - lib/ratatui_ruby/test_helper/terminal.rb
549
+ - lib/ratatui_ruby/test_helper/test_doubles.rb
550
+ - lib/ratatui_ruby/text.rb
551
+ - lib/ratatui_ruby/text/line.rb
552
+ - lib/ratatui_ruby/text/span.rb
553
+ - lib/ratatui_ruby/tui.rb
554
+ - lib/ratatui_ruby/tui/buffer_factories.rb
555
+ - lib/ratatui_ruby/tui/canvas_factories.rb
556
+ - lib/ratatui_ruby/tui/core.rb
557
+ - lib/ratatui_ruby/tui/layout_factories.rb
558
+ - lib/ratatui_ruby/tui/state_factories.rb
559
+ - lib/ratatui_ruby/tui/style_factories.rb
560
+ - lib/ratatui_ruby/tui/text_factories.rb
561
+ - lib/ratatui_ruby/tui/widget_factories.rb
562
+ - lib/ratatui_ruby/version.rb
563
+ - lib/ratatui_ruby/widgets.rb
564
+ - lib/ratatui_ruby/widgets/bar_chart.rb
565
+ - lib/ratatui_ruby/widgets/bar_chart/bar.rb
566
+ - lib/ratatui_ruby/widgets/bar_chart/bar_group.rb
567
+ - lib/ratatui_ruby/widgets/block.rb
568
+ - lib/ratatui_ruby/widgets/calendar.rb
569
+ - lib/ratatui_ruby/widgets/canvas.rb
570
+ - lib/ratatui_ruby/widgets/cell.rb
571
+ - lib/ratatui_ruby/widgets/center.rb
572
+ - lib/ratatui_ruby/widgets/chart.rb
573
+ - lib/ratatui_ruby/widgets/clear.rb
574
+ - lib/ratatui_ruby/widgets/coerceable_widget.rb
575
+ - lib/ratatui_ruby/widgets/cursor.rb
576
+ - lib/ratatui_ruby/widgets/gauge.rb
577
+ - lib/ratatui_ruby/widgets/line_gauge.rb
578
+ - lib/ratatui_ruby/widgets/list.rb
579
+ - lib/ratatui_ruby/widgets/list_item.rb
580
+ - lib/ratatui_ruby/widgets/overlay.rb
581
+ - lib/ratatui_ruby/widgets/paragraph.rb
582
+ - lib/ratatui_ruby/widgets/ratatui_logo.rb
583
+ - lib/ratatui_ruby/widgets/ratatui_mascot.rb
584
+ - lib/ratatui_ruby/widgets/row.rb
585
+ - lib/ratatui_ruby/widgets/scrollbar.rb
586
+ - lib/ratatui_ruby/widgets/shape/label.rb
587
+ - lib/ratatui_ruby/widgets/sparkline.rb
588
+ - lib/ratatui_ruby/widgets/table.rb
589
+ - lib/ratatui_ruby/widgets/tabs.rb
590
+ - sig/examples/app_all_events/app.rbs
591
+ - sig/examples/app_all_events/model/app_model.rbs
592
+ - sig/examples/app_all_events/model/event_entry.rbs
593
+ - sig/examples/app_all_events/model/timestamp.rbs
594
+ - sig/examples/app_all_events/view.rbs
595
+ - sig/examples/app_all_events/view/app_view.rbs
596
+ - sig/examples/app_all_events/view/controls_view.rbs
597
+ - sig/examples/app_all_events/view/counts_view.rbs
598
+ - sig/examples/app_all_events/view/live_view.rbs
599
+ - sig/examples/app_all_events/view/log_view.rbs
600
+ - sig/examples/app_cli_rich_moments/app.rbs
601
+ - sig/examples/app_color_picker/app.rbs
602
+ - sig/examples/app_external_editor/app.rbs
603
+ - sig/examples/app_login_form/app.rbs
604
+ - sig/examples/app_stateful_interaction/app.rbs
605
+ - sig/examples/verify_quickstart_dsl/app.rbs
606
+ - sig/examples/verify_quickstart_lifecycle/app.rbs
607
+ - sig/examples/verify_readme_usage/app.rbs
608
+ - sig/examples/widget_block_demo/app.rbs
609
+ - sig/examples/widget_box_demo/app.rbs
610
+ - sig/examples/widget_calendar_demo/app.rbs
611
+ - sig/examples/widget_cell_demo/app.rbs
612
+ - sig/examples/widget_chart_demo/app.rbs
613
+ - sig/examples/widget_gauge_demo/app.rbs
614
+ - sig/examples/widget_layout_split/app.rbs
615
+ - sig/examples/widget_line_gauge_demo/app.rbs
616
+ - sig/examples/widget_list_demo/app.rbs
617
+ - sig/examples/widget_map_demo/app.rbs
618
+ - sig/examples/widget_popup_demo/app.rbs
619
+ - sig/examples/widget_ratatui_logo_demo/app.rbs
620
+ - sig/examples/widget_ratatui_mascot_demo/app.rbs
621
+ - sig/examples/widget_rect/app.rbs
622
+ - sig/examples/widget_render/app.rbs
623
+ - sig/examples/widget_rich_text/app.rbs
624
+ - sig/examples/widget_scroll_text/app.rbs
625
+ - sig/examples/widget_scrollbar_demo/app.rbs
626
+ - sig/examples/widget_sparkline_demo/app.rbs
627
+ - sig/examples/widget_style_colors/app.rbs
628
+ - sig/examples/widget_table_demo/app.rbs
629
+ - sig/examples/widget_text_width/app.rbs
630
+ - sig/generated/event_key_predicates.rbs
631
+ - sig/manifest.yaml
632
+ - sig/patches/data.rbs
633
+ - sig/patches/debugger__.rbs
634
+ - sig/ratatui_ruby/backend.rbs
635
+ - sig/ratatui_ruby/backend/window_size.rbs
636
+ - sig/ratatui_ruby/buffer.rbs
637
+ - sig/ratatui_ruby/buffer/cell.rbs
638
+ - sig/ratatui_ruby/cell.rbs
639
+ - sig/ratatui_ruby/clear.rbs
640
+ - sig/ratatui_ruby/constraint.rbs
641
+ - sig/ratatui_ruby/debug.rbs
642
+ - sig/ratatui_ruby/draw.rbs
643
+ - sig/ratatui_ruby/event.rbs
644
+ - sig/ratatui_ruby/frame.rbs
645
+ - sig/ratatui_ruby/interfaces.rbs
646
+ - sig/ratatui_ruby/labs.rbs
647
+ - sig/ratatui_ruby/layout/alignment.rbs
648
+ - sig/ratatui_ruby/layout/constraint.rbs
649
+ - sig/ratatui_ruby/layout/layout.rbs
650
+ - sig/ratatui_ruby/layout/position.rbs
651
+ - sig/ratatui_ruby/layout/rect.rbs
652
+ - sig/ratatui_ruby/layout/size.rbs
653
+ - sig/ratatui_ruby/list_state.rbs
654
+ - sig/ratatui_ruby/output_guard.rbs
655
+ - sig/ratatui_ruby/ratatui_ruby.rbs
656
+ - sig/ratatui_ruby/rect.rbs
657
+ - sig/ratatui_ruby/scrollbar_state.rbs
658
+ - sig/ratatui_ruby/session.rbs
659
+ - sig/ratatui_ruby/style/color.rbs
660
+ - sig/ratatui_ruby/style/style.rbs
661
+ - sig/ratatui_ruby/symbols.rbs
662
+ - sig/ratatui_ruby/synthetic_events.rbs
663
+ - sig/ratatui_ruby/table_state.rbs
664
+ - sig/ratatui_ruby/terminal/capabilities.rbs
665
+ - sig/ratatui_ruby/terminal/viewport.rbs
666
+ - sig/ratatui_ruby/terminal_lifecycle.rbs
667
+ - sig/ratatui_ruby/test_helper.rbs
668
+ - sig/ratatui_ruby/test_helper/event_injection.rbs
669
+ - sig/ratatui_ruby/test_helper/snapshot.rbs
670
+ - sig/ratatui_ruby/test_helper/style_assertions.rbs
671
+ - sig/ratatui_ruby/test_helper/terminal.rbs
672
+ - sig/ratatui_ruby/test_helper/test_doubles.rbs
673
+ - sig/ratatui_ruby/text.rbs
674
+ - sig/ratatui_ruby/text/line.rbs
675
+ - sig/ratatui_ruby/text/span.rbs
676
+ - sig/ratatui_ruby/tui.rbs
677
+ - sig/ratatui_ruby/tui/buffer_factories.rbs
678
+ - sig/ratatui_ruby/tui/canvas_factories.rbs
679
+ - sig/ratatui_ruby/tui/core.rbs
680
+ - sig/ratatui_ruby/tui/layout_factories.rbs
681
+ - sig/ratatui_ruby/tui/state_factories.rbs
682
+ - sig/ratatui_ruby/tui/style_factories.rbs
683
+ - sig/ratatui_ruby/tui/text_factories.rbs
684
+ - sig/ratatui_ruby/tui/widget_factories.rbs
685
+ - sig/ratatui_ruby/version.rbs
686
+ - sig/ratatui_ruby/widgets.rbs
687
+ - sig/ratatui_ruby/widgets/bar_chart.rbs
688
+ - sig/ratatui_ruby/widgets/block.rbs
689
+ - sig/ratatui_ruby/widgets/calendar.rbs
690
+ - sig/ratatui_ruby/widgets/canvas.rbs
691
+ - sig/ratatui_ruby/widgets/chart.rbs
692
+ - sig/ratatui_ruby/widgets/coerceable_widget.rbs
693
+ - sig/ratatui_ruby/widgets/gauge.rbs
694
+ - sig/ratatui_ruby/widgets/line_gauge.rbs
695
+ - sig/ratatui_ruby/widgets/list.rbs
696
+ - sig/ratatui_ruby/widgets/misc.rbs
697
+ - sig/ratatui_ruby/widgets/paragraph.rbs
698
+ - sig/ratatui_ruby/widgets/row.rbs
699
+ - sig/ratatui_ruby/widgets/scrollbar.rbs
700
+ - sig/ratatui_ruby/widgets/shape/label.rbs
701
+ - sig/ratatui_ruby/widgets/sparkline.rbs
702
+ - sig/ratatui_ruby/widgets/table.rbs
703
+ - sig/ratatui_ruby/widgets/tabs.rbs
704
+ - vendor/goodcop/base.yml
705
+ homepage: https://www.ratatui-ruby.dev
706
+ licenses:
707
+ - LGPL-3.0-or-later
708
+ metadata:
709
+ allowed_push_host: https://rubygems.org
710
+ homepage_uri: https://www.ratatui-ruby.dev
711
+ bug_tracker_uri: https://forum.setdef.com/tags/c/ratatui-ruby/6/bug
712
+ changelog_uri: https://github.com/setdef/RatatuiRuby/blob/stable/CHANGELOG.md
713
+ mailing_list_uri: https://forum.setdef.com/c/ratatui-ruby/6
714
+ source_code_uri: https://github.com/setdef/RatatuiRuby
715
+ documentation_uri: https://www.ratatui-ruby.dev/docs/
716
+ wiki_uri: https://man.sr.ht/~kerrick/ratatui_ruby/
717
+ funding_uri: https://opencollective.com/ratatui
718
+ rdoc_options: []
719
+ require_paths:
720
+ - lib
721
+ required_ruby_version: !ruby/object:Gem::Requirement
722
+ requirements:
723
+ - - ">="
724
+ - !ruby/object:Gem::Version
725
+ version: '3.2'
726
+ - - "<"
727
+ - !ruby/object:Gem::Version
728
+ version: 4.1.dev
729
+ required_rubygems_version: !ruby/object:Gem::Requirement
730
+ requirements:
731
+ - - ">="
732
+ - !ruby/object:Gem::Version
733
+ version: '0'
734
+ requirements: []
735
+ rubygems_version: 3.6.9
736
+ specification_version: 4
737
+ summary: "\U0001F48E Unofficial Ruby wrapper for the Ratatui \U0001F468‍\U0001F373\U0001F400."
738
+ test_files: []