ratatui_ruby 1.0.1 → 1.1.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.
- checksums.yaml +4 -4
- data/ext/ratatui_ruby/Cargo.lock +1 -1
- data/ext/ratatui_ruby/Cargo.toml +1 -1
- data/ext/ratatui_ruby/src/events.rs +171 -203
- data/ext/ratatui_ruby/src/lib.rs +36 -0
- data/ext/ratatui_ruby/src/lib_header.rs +11 -0
- data/ext/ratatui_ruby/src/terminal/capabilities.rs +46 -0
- data/ext/ratatui_ruby/src/terminal/init.rs +92 -0
- data/ext/ratatui_ruby/src/terminal/mod.rs +12 -3
- data/ext/ratatui_ruby/src/terminal/queries.rs +15 -0
- data/ext/ratatui_ruby/src/terminal/query.rs +64 -2
- data/lib/ratatui_ruby/backend/window_size.rb +50 -0
- data/lib/ratatui_ruby/backend.rb +59 -0
- data/lib/ratatui_ruby/event/key/navigation.rb +10 -1
- data/lib/ratatui_ruby/event/key.rb +84 -0
- data/lib/ratatui_ruby/event/mouse.rb +95 -3
- data/lib/ratatui_ruby/event/resize.rb +45 -3
- data/lib/ratatui_ruby/layout/alignment.rb +91 -0
- data/lib/ratatui_ruby/layout/layout.rb +1 -2
- data/lib/ratatui_ruby/layout/size.rb +10 -3
- data/lib/ratatui_ruby/layout.rb +4 -0
- data/lib/ratatui_ruby/terminal/capabilities.rb +316 -0
- data/lib/ratatui_ruby/terminal/viewport.rb +1 -1
- data/lib/ratatui_ruby/terminal.rb +66 -0
- data/lib/ratatui_ruby/test_helper/global_state.rb +111 -0
- data/lib/ratatui_ruby/test_helper.rb +3 -0
- data/lib/ratatui_ruby/version.rb +1 -1
- data/lib/ratatui_ruby/widgets/table.rb +2 -2
- data/lib/ratatui_ruby.rb +25 -4
- data/sig/examples/app_external_editor/app.rbs +12 -0
- data/sig/generated/event_key_predicates.rbs +1348 -0
- data/sig/ratatui_ruby/backend/window_size.rbs +17 -0
- data/sig/ratatui_ruby/backend.rbs +12 -0
- data/sig/ratatui_ruby/event.rbs +7 -0
- data/sig/ratatui_ruby/layout/alignment.rbs +26 -0
- data/sig/ratatui_ruby/ratatui_ruby.rbs +2 -0
- data/sig/ratatui_ruby/terminal/capabilities.rbs +38 -0
- data/sig/ratatui_ruby/terminal/viewport.rbs +15 -1
- metadata +15 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
#--
|
|
4
|
+
# SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
|
|
5
|
+
# SPDX-License-Identifier: LGPL-3.0-or-later
|
|
6
|
+
#++
|
|
7
|
+
|
|
8
|
+
module RatatuiRuby
|
|
9
|
+
module Backend
|
|
10
|
+
class WindowSize < Data
|
|
11
|
+
attr_reader columns_rows: Layout::Size
|
|
12
|
+
attr_reader pixels: Layout::Size
|
|
13
|
+
|
|
14
|
+
def self.new: (columns_rows: Layout::Size, pixels: Layout::Size) -> instance
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
data/sig/ratatui_ruby/event.rbs
CHANGED
|
@@ -111,6 +111,11 @@ module RatatuiRuby
|
|
|
111
111
|
def drag?: () -> bool
|
|
112
112
|
def scroll_up?: () -> bool
|
|
113
113
|
def scroll_down?: () -> bool
|
|
114
|
+
def left?: () -> bool
|
|
115
|
+
def right?: () -> bool
|
|
116
|
+
def middle?: () -> bool
|
|
117
|
+
def to_sym: () -> Symbol
|
|
118
|
+
def ==: (top other) -> bool
|
|
114
119
|
def deconstruct_keys: (Array[Symbol]?) -> { type: :mouse, kind: String, x: Integer, y: Integer, button: String, modifiers: Array[String] }
|
|
115
120
|
end
|
|
116
121
|
|
|
@@ -119,6 +124,8 @@ module RatatuiRuby
|
|
|
119
124
|
attr_reader height: Integer
|
|
120
125
|
|
|
121
126
|
def initialize: (width: Integer, height: Integer) -> void
|
|
127
|
+
def to_sym: () -> Symbol
|
|
128
|
+
def ==: (top other) -> bool
|
|
122
129
|
def deconstruct_keys: (Array[Symbol]?) -> { type: :resize, width: Integer, height: Integer }
|
|
123
130
|
end
|
|
124
131
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
#--
|
|
4
|
+
# SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
|
|
5
|
+
# SPDX-License-Identifier: LGPL-3.0-or-later
|
|
6
|
+
#++
|
|
7
|
+
|
|
8
|
+
module RatatuiRuby
|
|
9
|
+
module Layout
|
|
10
|
+
module HorizontalAlignment
|
|
11
|
+
LEFT: :left
|
|
12
|
+
CENTER: :center
|
|
13
|
+
RIGHT: :right
|
|
14
|
+
ALL: Array[:left | :center | :right]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
module VerticalAlignment
|
|
18
|
+
TOP: :top
|
|
19
|
+
CENTER: :center
|
|
20
|
+
BOTTOM: :bottom
|
|
21
|
+
ALL: Array[:top | :center | :bottom]
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
Alignment: singleton(HorizontalAlignment)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -102,6 +102,8 @@ module RatatuiRuby
|
|
|
102
102
|
def self._get_terminal_size: () -> Hash[String, Integer]
|
|
103
103
|
def self._get_viewport_type: () -> String
|
|
104
104
|
def self.insert_before: (Integer height, ?widget? widget) ?{ () -> widget } -> void
|
|
105
|
+
def self._frame_count: () -> Integer
|
|
106
|
+
def self.frame_count: () -> Integer
|
|
105
107
|
|
|
106
108
|
# Color conversion (internal, Rust FFI)
|
|
107
109
|
def self._color_from_u32: (Integer) -> String
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
#--
|
|
4
|
+
# SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
|
|
5
|
+
# SPDX-License-Identifier: LGPL-3.0-or-later
|
|
6
|
+
#++
|
|
7
|
+
|
|
8
|
+
module RatatuiRuby
|
|
9
|
+
class Terminal
|
|
10
|
+
# Environment-based terminal capability detection.
|
|
11
|
+
# Provides class methods for detecting terminal capabilities.
|
|
12
|
+
module Capabilities
|
|
13
|
+
def tty?: () -> bool
|
|
14
|
+
def dumb?: () -> bool
|
|
15
|
+
def no_color?: () -> bool
|
|
16
|
+
def force_color?: () -> bool
|
|
17
|
+
def interactive?: () -> bool
|
|
18
|
+
def available_color_count: () -> Integer
|
|
19
|
+
def color_support: () -> (:none | :basic | :ansi256 | :truecolor)
|
|
20
|
+
def supports_keyboard_enhancement?: () -> bool
|
|
21
|
+
def force_color_output: (bool enable) -> void
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
# FFI methods (defined in Rust, exposed on Terminal singleton)
|
|
26
|
+
def _available_color_count: () -> Integer
|
|
27
|
+
def _supports_keyboard_enhancement: () -> bool
|
|
28
|
+
def _force_color_output: (bool enable) -> void
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
extend Capabilities
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
# FFI singleton method for Backend.window_size
|
|
36
|
+
def self._terminal_window_size: () -> [Integer, Integer, Integer, Integer]?
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -2,7 +2,21 @@
|
|
|
2
2
|
# SPDX-License-Identifier: LGPL-3.0-or-later
|
|
3
3
|
|
|
4
4
|
module RatatuiRuby
|
|
5
|
-
|
|
5
|
+
class Terminal
|
|
6
|
+
@viewport: Terminal::Viewport
|
|
7
|
+
@terminal_id: Integer
|
|
8
|
+
|
|
9
|
+
attr_reader terminal_id: Integer
|
|
10
|
+
|
|
11
|
+
def initialize: (?viewport: (Terminal::Viewport | :fullscreen | :inline)?, ?height: Integer?) -> void
|
|
12
|
+
def size: () -> Layout::Rect
|
|
13
|
+
|
|
14
|
+
# Private native methods (defined in Rust)
|
|
15
|
+
def self._init_test_terminal_instance: (Integer width, Integer height, String viewport_type, Integer? viewport_height) -> Integer
|
|
16
|
+
def self._get_terminal_size_instance: (Integer terminal_id) -> Layout::Rect
|
|
17
|
+
|
|
18
|
+
private def resolve_viewport: ((Terminal::Viewport | :fullscreen | :inline)? viewport, Integer? height) -> Terminal::Viewport
|
|
19
|
+
|
|
6
20
|
class Viewport < Data
|
|
7
21
|
attr_reader type: Symbol
|
|
8
22
|
attr_reader height: Integer?
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ratatui_ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kerrick Long
|
|
@@ -424,9 +424,11 @@ files:
|
|
|
424
424
|
- ext/ratatui_ruby/src/events.rs
|
|
425
425
|
- ext/ratatui_ruby/src/frame.rs
|
|
426
426
|
- ext/ratatui_ruby/src/lib.rs
|
|
427
|
+
- ext/ratatui_ruby/src/lib_header.rs
|
|
427
428
|
- ext/ratatui_ruby/src/rendering.rs
|
|
428
429
|
- ext/ratatui_ruby/src/string_width.rs
|
|
429
430
|
- ext/ratatui_ruby/src/style.rs
|
|
431
|
+
- ext/ratatui_ruby/src/terminal/capabilities.rs
|
|
430
432
|
- ext/ratatui_ruby/src/terminal/init.rs
|
|
431
433
|
- ext/ratatui_ruby/src/terminal/mod.rs
|
|
432
434
|
- ext/ratatui_ruby/src/terminal/mutations.rs
|
|
@@ -460,6 +462,8 @@ files:
|
|
|
460
462
|
- ext/ratatui_ruby/src/widgets/table_state.rs
|
|
461
463
|
- ext/ratatui_ruby/src/widgets/tabs.rs
|
|
462
464
|
- lib/ratatui_ruby.rb
|
|
465
|
+
- lib/ratatui_ruby/backend.rb
|
|
466
|
+
- lib/ratatui_ruby/backend/window_size.rb
|
|
463
467
|
- lib/ratatui_ruby/buffer.rb
|
|
464
468
|
- lib/ratatui_ruby/buffer/cell.rb
|
|
465
469
|
- lib/ratatui_ruby/cell.rb
|
|
@@ -484,6 +488,7 @@ files:
|
|
|
484
488
|
- lib/ratatui_ruby/labs/a11y.rb
|
|
485
489
|
- lib/ratatui_ruby/labs/frame_a11y_capture.rb
|
|
486
490
|
- lib/ratatui_ruby/layout.rb
|
|
491
|
+
- lib/ratatui_ruby/layout/alignment.rb
|
|
487
492
|
- lib/ratatui_ruby/layout/constraint.rb
|
|
488
493
|
- lib/ratatui_ruby/layout/layout.rb
|
|
489
494
|
- lib/ratatui_ruby/layout/position.rb
|
|
@@ -498,11 +503,14 @@ files:
|
|
|
498
503
|
- lib/ratatui_ruby/symbols.rb
|
|
499
504
|
- lib/ratatui_ruby/synthetic_events.rb
|
|
500
505
|
- lib/ratatui_ruby/table_state.rb
|
|
506
|
+
- lib/ratatui_ruby/terminal.rb
|
|
507
|
+
- lib/ratatui_ruby/terminal/capabilities.rb
|
|
501
508
|
- lib/ratatui_ruby/terminal/viewport.rb
|
|
502
509
|
- lib/ratatui_ruby/terminal_lifecycle.rb
|
|
503
510
|
- lib/ratatui_ruby/terminal_lifecycle.rb.bak
|
|
504
511
|
- lib/ratatui_ruby/test_helper.rb
|
|
505
512
|
- lib/ratatui_ruby/test_helper/event_injection.rb
|
|
513
|
+
- lib/ratatui_ruby/test_helper/global_state.rb
|
|
506
514
|
- lib/ratatui_ruby/test_helper/snapshot.rb
|
|
507
515
|
- lib/ratatui_ruby/test_helper/snapshots/axis_labels_alignment.ansi
|
|
508
516
|
- lib/ratatui_ruby/test_helper/snapshots/axis_labels_alignment.txt
|
|
@@ -580,6 +588,7 @@ files:
|
|
|
580
588
|
- sig/examples/app_all_events/view/log_view.rbs
|
|
581
589
|
- sig/examples/app_cli_rich_moments/app.rbs
|
|
582
590
|
- sig/examples/app_color_picker/app.rbs
|
|
591
|
+
- sig/examples/app_external_editor/app.rbs
|
|
583
592
|
- sig/examples/app_login_form/app.rbs
|
|
584
593
|
- sig/examples/app_stateful_interaction/app.rbs
|
|
585
594
|
- sig/examples/verify_quickstart_dsl/app.rbs
|
|
@@ -607,9 +616,12 @@ files:
|
|
|
607
616
|
- sig/examples/widget_style_colors/app.rbs
|
|
608
617
|
- sig/examples/widget_table_demo/app.rbs
|
|
609
618
|
- sig/examples/widget_text_width/app.rbs
|
|
619
|
+
- sig/generated/event_key_predicates.rbs
|
|
610
620
|
- sig/manifest.yaml
|
|
611
621
|
- sig/patches/data.rbs
|
|
612
622
|
- sig/patches/debugger__.rbs
|
|
623
|
+
- sig/ratatui_ruby/backend.rbs
|
|
624
|
+
- sig/ratatui_ruby/backend/window_size.rbs
|
|
613
625
|
- sig/ratatui_ruby/buffer.rbs
|
|
614
626
|
- sig/ratatui_ruby/buffer/cell.rbs
|
|
615
627
|
- sig/ratatui_ruby/cell.rbs
|
|
@@ -621,6 +633,7 @@ files:
|
|
|
621
633
|
- sig/ratatui_ruby/frame.rbs
|
|
622
634
|
- sig/ratatui_ruby/interfaces.rbs
|
|
623
635
|
- sig/ratatui_ruby/labs.rbs
|
|
636
|
+
- sig/ratatui_ruby/layout/alignment.rbs
|
|
624
637
|
- sig/ratatui_ruby/layout/constraint.rbs
|
|
625
638
|
- sig/ratatui_ruby/layout/layout.rbs
|
|
626
639
|
- sig/ratatui_ruby/layout/position.rbs
|
|
@@ -637,6 +650,7 @@ files:
|
|
|
637
650
|
- sig/ratatui_ruby/symbols.rbs
|
|
638
651
|
- sig/ratatui_ruby/synthetic_events.rbs
|
|
639
652
|
- sig/ratatui_ruby/table_state.rbs
|
|
653
|
+
- sig/ratatui_ruby/terminal/capabilities.rbs
|
|
640
654
|
- sig/ratatui_ruby/terminal/viewport.rbs
|
|
641
655
|
- sig/ratatui_ruby/terminal_lifecycle.rbs
|
|
642
656
|
- sig/ratatui_ruby/test_helper.rbs
|