ratatui_ruby 0.2.0 → 0.3.1

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 (94) hide show
  1. checksums.yaml +4 -4
  2. data/.builds/ruby-3.2.yml +2 -2
  3. data/.builds/ruby-3.3.yml +2 -2
  4. data/.builds/ruby-3.4.yml +2 -2
  5. data/.builds/{ruby-4.0.0-preview3.yml → ruby-4.0.0.yml} +8 -9
  6. data/.pre-commit-config.yaml +9 -2
  7. data/AGENTS.md +59 -4
  8. data/CHANGELOG.md +58 -1
  9. data/README.md +6 -6
  10. data/REUSE.toml +1 -6
  11. data/{docs → doc}/contributors/index.md +2 -1
  12. data/doc/custom.css +8 -0
  13. data/doc/images/examples-custom_widget.rb.png +0 -0
  14. data/doc/images/examples-popup_demo.rb.gif +0 -0
  15. data/doc/images/examples-scroll_text.rb.png +0 -0
  16. data/doc/images/examples-table_select.rb.png +0 -0
  17. data/{docs → doc}/index.md +1 -1
  18. data/{docs → doc}/quickstart.md +24 -0
  19. data/examples/custom_widget.rb +43 -0
  20. data/examples/popup_demo.rb +105 -0
  21. data/examples/scroll_text.rb +74 -0
  22. data/examples/table_select.rb +70 -0
  23. data/examples/test_popup_demo.rb +62 -0
  24. data/examples/test_scroll_text.rb +130 -0
  25. data/examples/test_table_select.rb +37 -0
  26. data/ext/ratatui_ruby/Cargo.lock +167 -50
  27. data/ext/ratatui_ruby/Cargo.toml +4 -4
  28. data/ext/ratatui_ruby/src/buffer.rs +54 -0
  29. data/ext/ratatui_ruby/src/events.rs +111 -106
  30. data/ext/ratatui_ruby/src/lib.rs +15 -6
  31. data/ext/ratatui_ruby/src/rendering.rs +15 -0
  32. data/ext/ratatui_ruby/src/style.rs +2 -1
  33. data/ext/ratatui_ruby/src/terminal.rs +24 -19
  34. data/ext/ratatui_ruby/src/widgets/calendar.rs +4 -3
  35. data/ext/ratatui_ruby/src/widgets/canvas.rs +1 -2
  36. data/ext/ratatui_ruby/src/widgets/center.rs +0 -2
  37. data/ext/ratatui_ruby/src/widgets/chart.rs +11 -4
  38. data/ext/ratatui_ruby/src/widgets/clear.rs +37 -0
  39. data/ext/ratatui_ruby/src/widgets/cursor.rs +1 -1
  40. data/ext/ratatui_ruby/src/widgets/layout.rs +2 -1
  41. data/ext/ratatui_ruby/src/widgets/list.rs +6 -4
  42. data/ext/ratatui_ruby/src/widgets/mod.rs +1 -0
  43. data/ext/ratatui_ruby/src/widgets/overlay.rs +2 -1
  44. data/ext/ratatui_ruby/src/widgets/paragraph.rs +10 -0
  45. data/ext/ratatui_ruby/src/widgets/table.rs +25 -6
  46. data/ext/ratatui_ruby/src/widgets/tabs.rs +2 -1
  47. data/lib/ratatui_ruby/dsl.rb +2 -0
  48. data/lib/ratatui_ruby/schema/clear.rb +83 -0
  49. data/lib/ratatui_ruby/schema/paragraph.rb +7 -4
  50. data/lib/ratatui_ruby/schema/rect.rb +24 -0
  51. data/lib/ratatui_ruby/schema/table.rb +8 -2
  52. data/lib/ratatui_ruby/version.rb +1 -1
  53. data/lib/ratatui_ruby.rb +3 -1
  54. data/mise.toml +1 -1
  55. data/sig/ratatui_ruby/buffer.rbs +11 -0
  56. data/sig/ratatui_ruby/schema/rect.rbs +14 -0
  57. data/tasks/bump/changelog.rb +37 -0
  58. data/tasks/bump/comparison_links.rb +41 -0
  59. data/tasks/bump/header.rb +30 -0
  60. data/tasks/bump/history.rb +30 -0
  61. data/tasks/bump/manifest.rb +8 -0
  62. data/tasks/bump/ruby_gem.rb +6 -10
  63. data/tasks/bump/sem_ver.rb +6 -0
  64. data/tasks/bump/unreleased_section.rb +38 -0
  65. data/tasks/bump.rake +5 -1
  66. data/tasks/doc.rake +5 -4
  67. data/tasks/resources/build.yml.erb +1 -14
  68. data/tasks/resources/rubies.yml +1 -1
  69. data/tasks/sourcehut.rake +11 -2
  70. data/tasks/website/version.rb +1 -0
  71. data/tasks/website/version_menu.rb +68 -0
  72. data/tasks/website/versioned_documentation.rb +2 -1
  73. data/tasks/website/website.rb +4 -1
  74. data/tasks/website.rake +3 -3
  75. metadata +76 -26
  76. data/CODE_OF_CONDUCT.md +0 -30
  77. data/CONTRIBUTING.md +0 -40
  78. /data/{docs → doc}/application_testing.md +0 -0
  79. /data/{docs → doc}/contributors/design/ruby_frontend.md +0 -0
  80. /data/{docs → doc}/contributors/design/rust_backend.md +0 -0
  81. /data/{docs → doc}/contributors/design.md +0 -0
  82. /data/{docs → doc}/images/examples-analytics.rb.png +0 -0
  83. /data/{docs → doc}/images/examples-box_demo.rb.png +0 -0
  84. /data/{docs → doc}/images/examples-calendar_demo.rb.png +0 -0
  85. /data/{docs → doc}/images/examples-chart_demo.rb.png +0 -0
  86. /data/{docs → doc}/images/examples-dashboard.rb.png +0 -0
  87. /data/{docs → doc}/images/examples-list_styles.rb.png +0 -0
  88. /data/{docs → doc}/images/examples-login_form.rb.png +0 -0
  89. /data/{docs → doc}/images/examples-map_demo.rb.png +0 -0
  90. /data/{docs → doc}/images/examples-mouse_events.rb.png +0 -0
  91. /data/{docs → doc}/images/examples-quickstart_lifecycle.rb.png +0 -0
  92. /data/{docs → doc}/images/examples-scrollbar_demo.rb.png +0 -0
  93. /data/{docs → doc}/images/examples-stock_ticker.rb.png +0 -0
  94. /data/{docs → doc}/images/examples-system_monitor.rb.png +0 -0
@@ -86,28 +86,29 @@ dependencies = [
86
86
 
87
87
  [[package]]
88
88
  name = "compact_str"
89
- version = "0.7.1"
89
+ version = "0.8.1"
90
90
  source = "registry+https://github.com/rust-lang/crates.io-index"
91
- checksum = "f86b9c4c00838774a6d902ef931eff7470720c51d90c2e32cfe15dc304737b3f"
91
+ checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32"
92
92
  dependencies = [
93
93
  "castaway",
94
94
  "cfg-if",
95
95
  "itoa",
96
+ "rustversion",
96
97
  "ryu",
97
98
  "static_assertions",
98
99
  ]
99
100
 
100
101
  [[package]]
101
102
  name = "crossterm"
102
- version = "0.27.0"
103
+ version = "0.28.1"
103
104
  source = "registry+https://github.com/rust-lang/crates.io-index"
104
- checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df"
105
+ checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6"
105
106
  dependencies = [
106
107
  "bitflags",
107
108
  "crossterm_winapi",
108
- "libc",
109
109
  "mio",
110
110
  "parking_lot",
111
+ "rustix",
111
112
  "signal-hook",
112
113
  "signal-hook-mio",
113
114
  "winapi",
@@ -122,6 +123,41 @@ dependencies = [
122
123
  "winapi",
123
124
  ]
124
125
 
126
+ [[package]]
127
+ name = "darling"
128
+ version = "0.20.11"
129
+ source = "registry+https://github.com/rust-lang/crates.io-index"
130
+ checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee"
131
+ dependencies = [
132
+ "darling_core",
133
+ "darling_macro",
134
+ ]
135
+
136
+ [[package]]
137
+ name = "darling_core"
138
+ version = "0.20.11"
139
+ source = "registry+https://github.com/rust-lang/crates.io-index"
140
+ checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e"
141
+ dependencies = [
142
+ "fnv",
143
+ "ident_case",
144
+ "proc-macro2",
145
+ "quote",
146
+ "strsim",
147
+ "syn",
148
+ ]
149
+
150
+ [[package]]
151
+ name = "darling_macro"
152
+ version = "0.20.11"
153
+ source = "registry+https://github.com/rust-lang/crates.io-index"
154
+ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
155
+ dependencies = [
156
+ "darling_core",
157
+ "quote",
158
+ "syn",
159
+ ]
160
+
125
161
  [[package]]
126
162
  name = "deranged"
127
163
  version = "0.5.5"
@@ -143,6 +179,22 @@ version = "1.0.2"
143
179
  source = "registry+https://github.com/rust-lang/crates.io-index"
144
180
  checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
145
181
 
182
+ [[package]]
183
+ name = "errno"
184
+ version = "0.3.14"
185
+ source = "registry+https://github.com/rust-lang/crates.io-index"
186
+ checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
187
+ dependencies = [
188
+ "libc",
189
+ "windows-sys 0.61.2",
190
+ ]
191
+
192
+ [[package]]
193
+ name = "fnv"
194
+ version = "1.0.7"
195
+ source = "registry+https://github.com/rust-lang/crates.io-index"
196
+ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
197
+
146
198
  [[package]]
147
199
  name = "foldhash"
148
200
  version = "0.1.5"
@@ -172,6 +224,34 @@ version = "0.5.0"
172
224
  source = "registry+https://github.com/rust-lang/crates.io-index"
173
225
  checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
174
226
 
227
+ [[package]]
228
+ name = "ident_case"
229
+ version = "1.0.1"
230
+ source = "registry+https://github.com/rust-lang/crates.io-index"
231
+ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
232
+
233
+ [[package]]
234
+ name = "indoc"
235
+ version = "2.0.7"
236
+ source = "registry+https://github.com/rust-lang/crates.io-index"
237
+ checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
238
+ dependencies = [
239
+ "rustversion",
240
+ ]
241
+
242
+ [[package]]
243
+ name = "instability"
244
+ version = "0.3.10"
245
+ source = "registry+https://github.com/rust-lang/crates.io-index"
246
+ checksum = "6778b0196eefee7df739db78758e5cf9b37412268bfa5650bfeed028aed20d9c"
247
+ dependencies = [
248
+ "darling",
249
+ "indoc",
250
+ "proc-macro2",
251
+ "quote",
252
+ "syn",
253
+ ]
254
+
175
255
  [[package]]
176
256
  name = "itertools"
177
257
  version = "0.12.1"
@@ -224,6 +304,12 @@ dependencies = [
224
304
  "windows-link",
225
305
  ]
226
306
 
307
+ [[package]]
308
+ name = "linux-raw-sys"
309
+ version = "0.4.15"
310
+ source = "registry+https://github.com/rust-lang/crates.io-index"
311
+ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
312
+
227
313
  [[package]]
228
314
  name = "lock_api"
229
315
  version = "0.4.14"
@@ -250,9 +336,9 @@ dependencies = [
250
336
 
251
337
  [[package]]
252
338
  name = "magnus"
253
- version = "0.6.4"
339
+ version = "0.8.2"
254
340
  source = "registry+https://github.com/rust-lang/crates.io-index"
255
- checksum = "b1597ef40aa8c36be098249e82c9a20cf7199278ac1c1a1a995eeead6a184479"
341
+ checksum = "3b36a5b126bbe97eb0d02d07acfeb327036c6319fd816139a49824a83b7f9012"
256
342
  dependencies = [
257
343
  "magnus-macros",
258
344
  "rb-sys",
@@ -262,9 +348,9 @@ dependencies = [
262
348
 
263
349
  [[package]]
264
350
  name = "magnus-macros"
265
- version = "0.6.0"
351
+ version = "0.8.0"
266
352
  source = "registry+https://github.com/rust-lang/crates.io-index"
267
- checksum = "5968c820e2960565f647819f5928a42d6e874551cab9d88d75e3e0660d7f71e3"
353
+ checksum = "47607461fd8e1513cb4f2076c197d8092d921a1ea75bd08af97398f593751892"
268
354
  dependencies = [
269
355
  "proc-macro2",
270
356
  "quote",
@@ -285,14 +371,14 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
285
371
 
286
372
  [[package]]
287
373
  name = "mio"
288
- version = "0.8.11"
374
+ version = "1.1.1"
289
375
  source = "registry+https://github.com/rust-lang/crates.io-index"
290
- checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
376
+ checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc"
291
377
  dependencies = [
292
378
  "libc",
293
379
  "log",
294
380
  "wasi",
295
- "windows-sys",
381
+ "windows-sys 0.61.2",
296
382
  ]
297
383
 
298
384
  [[package]]
@@ -375,30 +461,30 @@ dependencies = [
375
461
 
376
462
  [[package]]
377
463
  name = "ratatui"
378
- version = "0.26.3"
464
+ version = "0.29.0"
379
465
  source = "registry+https://github.com/rust-lang/crates.io-index"
380
- checksum = "f44c9e68fd46eda15c646fbb85e1040b657a58cdc8c98db1d97a55930d991eef"
466
+ checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b"
381
467
  dependencies = [
382
468
  "bitflags",
383
469
  "cassowary",
384
470
  "compact_str",
385
471
  "crossterm",
386
- "itertools 0.12.1",
472
+ "indoc",
473
+ "instability",
474
+ "itertools 0.13.0",
387
475
  "lru",
388
476
  "paste",
389
- "stability",
390
477
  "strum",
391
478
  "time",
392
479
  "unicode-segmentation",
393
480
  "unicode-truncate",
394
- "unicode-width",
481
+ "unicode-width 0.2.0",
395
482
  ]
396
483
 
397
484
  [[package]]
398
485
  name = "ratatui_ruby"
399
- version = "0.2.0"
486
+ version = "0.3.1"
400
487
  dependencies = [
401
- "crossterm",
402
488
  "lazy_static",
403
489
  "magnus",
404
490
  "ratatui",
@@ -431,9 +517,9 @@ dependencies = [
431
517
 
432
518
  [[package]]
433
519
  name = "rb-sys-env"
434
- version = "0.1.2"
520
+ version = "0.2.2"
435
521
  source = "registry+https://github.com/rust-lang/crates.io-index"
436
- checksum = "a35802679f07360454b418a5d1735c89716bde01d35b1560fc953c1415a0b3bb"
522
+ checksum = "08f8d2924cf136a1315e2b4c7460a39f62ef11ee5d522df9b2750fab55b868b6"
437
523
 
438
524
  [[package]]
439
525
  name = "redox_syscall"
@@ -479,6 +565,19 @@ version = "1.1.0"
479
565
  source = "registry+https://github.com/rust-lang/crates.io-index"
480
566
  checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
481
567
 
568
+ [[package]]
569
+ name = "rustix"
570
+ version = "0.38.44"
571
+ source = "registry+https://github.com/rust-lang/crates.io-index"
572
+ checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
573
+ dependencies = [
574
+ "bitflags",
575
+ "errno",
576
+ "libc",
577
+ "linux-raw-sys",
578
+ "windows-sys 0.59.0",
579
+ ]
580
+
482
581
  [[package]]
483
582
  name = "rustversion"
484
583
  version = "1.0.22"
@@ -580,22 +679,18 @@ version = "1.15.1"
580
679
  source = "registry+https://github.com/rust-lang/crates.io-index"
581
680
  checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
582
681
 
583
- [[package]]
584
- name = "stability"
585
- version = "0.2.1"
586
- source = "registry+https://github.com/rust-lang/crates.io-index"
587
- checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac"
588
- dependencies = [
589
- "quote",
590
- "syn",
591
- ]
592
-
593
682
  [[package]]
594
683
  name = "static_assertions"
595
684
  version = "1.1.0"
596
685
  source = "registry+https://github.com/rust-lang/crates.io-index"
597
686
  checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
598
687
 
688
+ [[package]]
689
+ name = "strsim"
690
+ version = "0.11.1"
691
+ source = "registry+https://github.com/rust-lang/crates.io-index"
692
+ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
693
+
599
694
  [[package]]
600
695
  name = "strum"
601
696
  version = "0.26.3"
@@ -681,7 +776,7 @@ checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf"
681
776
  dependencies = [
682
777
  "itertools 0.13.0",
683
778
  "unicode-segmentation",
684
- "unicode-width",
779
+ "unicode-width 0.1.14",
685
780
  ]
686
781
 
687
782
  [[package]]
@@ -690,6 +785,12 @@ version = "0.1.14"
690
785
  source = "registry+https://github.com/rust-lang/crates.io-index"
691
786
  checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
692
787
 
788
+ [[package]]
789
+ name = "unicode-width"
790
+ version = "0.2.0"
791
+ source = "registry+https://github.com/rust-lang/crates.io-index"
792
+ checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd"
793
+
693
794
  [[package]]
694
795
  name = "wasi"
695
796
  version = "0.11.1+wasi-snapshot-preview1"
@@ -726,22 +827,32 @@ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
726
827
 
727
828
  [[package]]
728
829
  name = "windows-sys"
729
- version = "0.48.0"
830
+ version = "0.59.0"
730
831
  source = "registry+https://github.com/rust-lang/crates.io-index"
731
- checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
832
+ checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
732
833
  dependencies = [
733
834
  "windows-targets",
734
835
  ]
735
836
 
837
+ [[package]]
838
+ name = "windows-sys"
839
+ version = "0.61.2"
840
+ source = "registry+https://github.com/rust-lang/crates.io-index"
841
+ checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
842
+ dependencies = [
843
+ "windows-link",
844
+ ]
845
+
736
846
  [[package]]
737
847
  name = "windows-targets"
738
- version = "0.48.5"
848
+ version = "0.52.6"
739
849
  source = "registry+https://github.com/rust-lang/crates.io-index"
740
- checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
850
+ checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
741
851
  dependencies = [
742
852
  "windows_aarch64_gnullvm",
743
853
  "windows_aarch64_msvc",
744
854
  "windows_i686_gnu",
855
+ "windows_i686_gnullvm",
745
856
  "windows_i686_msvc",
746
857
  "windows_x86_64_gnu",
747
858
  "windows_x86_64_gnullvm",
@@ -750,42 +861,48 @@ dependencies = [
750
861
 
751
862
  [[package]]
752
863
  name = "windows_aarch64_gnullvm"
753
- version = "0.48.5"
864
+ version = "0.52.6"
754
865
  source = "registry+https://github.com/rust-lang/crates.io-index"
755
- checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
866
+ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
756
867
 
757
868
  [[package]]
758
869
  name = "windows_aarch64_msvc"
759
- version = "0.48.5"
870
+ version = "0.52.6"
760
871
  source = "registry+https://github.com/rust-lang/crates.io-index"
761
- checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
872
+ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
762
873
 
763
874
  [[package]]
764
875
  name = "windows_i686_gnu"
765
- version = "0.48.5"
876
+ version = "0.52.6"
877
+ source = "registry+https://github.com/rust-lang/crates.io-index"
878
+ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
879
+
880
+ [[package]]
881
+ name = "windows_i686_gnullvm"
882
+ version = "0.52.6"
766
883
  source = "registry+https://github.com/rust-lang/crates.io-index"
767
- checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
884
+ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
768
885
 
769
886
  [[package]]
770
887
  name = "windows_i686_msvc"
771
- version = "0.48.5"
888
+ version = "0.52.6"
772
889
  source = "registry+https://github.com/rust-lang/crates.io-index"
773
- checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
890
+ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
774
891
 
775
892
  [[package]]
776
893
  name = "windows_x86_64_gnu"
777
- version = "0.48.5"
894
+ version = "0.52.6"
778
895
  source = "registry+https://github.com/rust-lang/crates.io-index"
779
- checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
896
+ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
780
897
 
781
898
  [[package]]
782
899
  name = "windows_x86_64_gnullvm"
783
- version = "0.48.5"
900
+ version = "0.52.6"
784
901
  source = "registry+https://github.com/rust-lang/crates.io-index"
785
- checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
902
+ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
786
903
 
787
904
  [[package]]
788
905
  name = "windows_x86_64_msvc"
789
- version = "0.48.5"
906
+ version = "0.52.6"
790
907
  source = "registry+https://github.com/rust-lang/crates.io-index"
791
- checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
908
+ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
@@ -3,15 +3,15 @@
3
3
 
4
4
  [package]
5
5
  name = "ratatui_ruby"
6
- version = "0.2.0"
6
+ version = "0.3.1"
7
7
  edition = "2021"
8
8
 
9
9
  [lib]
10
10
  crate-type = ["cdylib"]
11
11
 
12
12
  [dependencies]
13
- magnus = "0.6"
14
- ratatui = { version = "0.26", features = ["widget-calendar"] }
15
- crossterm = "0.27"
13
+ magnus = "0.8.2"
14
+ ratatui = { version = "0.29", features = ["widget-calendar"] }
15
+
16
16
  lazy_static = "1.4"
17
17
  time = { version = "0.3", features = ["macros"] }
@@ -0,0 +1,54 @@
1
+ // SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
2
+ // SPDX-License-Identifier: AGPL-3.0-or-later
3
+
4
+ use crate::style::parse_style;
5
+ use magnus::prelude::*;
6
+ use magnus::{Error, Ruby, Value};
7
+ use ratatui::buffer::Buffer;
8
+ use std::ffi::CStr;
9
+
10
+ pub struct BufferWrapper {
11
+ ptr: *mut Buffer,
12
+ }
13
+
14
+ unsafe impl Send for BufferWrapper {}
15
+
16
+ impl BufferWrapper {
17
+ pub fn new(buffer: &mut Buffer) -> Self {
18
+ Self { ptr: buffer }
19
+ }
20
+
21
+ pub fn set_string(&self, x: u16, y: u16, string: String, style_val: Value) -> Result<(), Error> {
22
+ let style = parse_style(style_val)?;
23
+ let buffer = unsafe { &mut *self.ptr };
24
+ buffer.set_string(x, y, string, style);
25
+ Ok(())
26
+ }
27
+
28
+ pub fn area(&self) -> Value {
29
+ let ruby = Ruby::get().unwrap();
30
+ let module = ruby.define_module("RatatuiRuby").unwrap();
31
+ let class = module.const_get::<_, magnus::RClass>("Rect").unwrap();
32
+ let buffer = unsafe { &*self.ptr };
33
+ let area = buffer.area;
34
+ class.funcall("new", (area.x, area.y, area.width, area.height)).unwrap()
35
+ }
36
+ }
37
+
38
+ unsafe impl magnus::TypedData for BufferWrapper {
39
+ fn class(ruby: &Ruby) -> magnus::RClass {
40
+ ruby.define_module("RatatuiRuby")
41
+ .and_then(|m| m.const_get("Buffer"))
42
+ .unwrap()
43
+ }
44
+
45
+ fn data_type() -> &'static magnus::DataType {
46
+ static DATA_TYPE: magnus::DataType = magnus::DataType::builder::<BufferWrapper>(unsafe {
47
+ CStr::from_bytes_with_nul_unchecked(b"RatatuiRuby::Buffer\0")
48
+ })
49
+ .build();
50
+ &DATA_TYPE
51
+ }
52
+ }
53
+
54
+ impl magnus::DataTypeFunctions for BufferWrapper {}