ratatui_ruby 1.0.0 → 1.1.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.
- checksums.yaml +4 -4
- data/.builds/ruby-3.2.yml +1 -1
- data/.builds/ruby-3.3.yml +1 -1
- data/.builds/ruby-3.4.yml +1 -1
- data/.builds/ruby-4.0.0.yml +1 -1
- data/AGENTS.md +3 -2
- data/CHANGELOG.md +33 -7
- data/Steepfile +1 -0
- data/doc/concepts/application_testing.md +5 -5
- data/doc/concepts/event_handling.md +1 -1
- data/doc/contributors/design/ruby_frontend.md +40 -12
- data/doc/contributors/design/rust_backend.md +13 -1
- data/doc/contributors/releasing.md +215 -0
- data/doc/contributors/todo/align/api_completeness_audit-finished.md +6 -0
- data/doc/contributors/todo/align/api_completeness_audit-unfinished.md +1 -7
- data/doc/contributors/todo/align/term.md +351 -0
- data/doc/contributors/upstream_requests/paragraph_span_rects.md +259 -0
- data/doc/getting_started/quickstart.md +1 -1
- data/doc/getting_started/why.md +3 -3
- data/doc/images/app_external_editor.gif +0 -0
- data/doc/index.md +1 -6
- data/examples/app_external_editor/README.md +62 -0
- data/examples/app_external_editor/app.rb +344 -0
- data/examples/widget_list/app.rb +2 -4
- data/examples/widget_table/app.rb +8 -2
- 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
- data/tasks/bump/bump_workflow.rb +49 -0
- data/tasks/bump/changelog.rb +57 -0
- data/tasks/bump/patch_release.rb +19 -0
- data/tasks/bump/release_branch.rb +17 -0
- data/tasks/bump/release_from_trunk.rb +49 -0
- data/tasks/bump/repository.rb +54 -0
- data/tasks/bump/ruby_gem.rb +6 -26
- data/tasks/bump/sem_ver.rb +4 -0
- data/tasks/bump/unreleased_section.rb +17 -0
- data/tasks/bump.rake +21 -11
- data/tasks/doc/documentation.rb +59 -0
- data/tasks/doc/link/file_url.rb +30 -0
- data/tasks/doc/link/relative_path.rb +61 -0
- data/tasks/doc/link/web_url.rb +55 -0
- data/tasks/doc/link.rb +52 -0
- data/tasks/doc/link_audit.rb +116 -0
- data/tasks/doc/problem.rb +40 -0
- data/tasks/doc/source_file.rb +93 -0
- data/tasks/doc.rake +18 -0
- data/tasks/rbs_predicates/predicate_catalog.rb +52 -0
- data/tasks/rbs_predicates/predicate_tests.rb +124 -0
- data/tasks/rbs_predicates/rbs_signature.rb +63 -0
- data/tasks/rbs_predicates.rake +31 -0
- data/tasks/test.rake +3 -0
- data/tasks/website/version.rb +23 -28
- metadata +38 -1
|
@@ -16,13 +16,13 @@ module RatatuiRuby
|
|
|
16
16
|
#
|
|
17
17
|
# Use it to display database records, logs, or file lists.
|
|
18
18
|
#
|
|
19
|
-
# {rdoc-image:/doc/images/
|
|
19
|
+
# {rdoc-image:/doc/images/widget_table.png}[link:/examples/widget_table/app_rb.html]
|
|
20
20
|
#
|
|
21
21
|
# === Example
|
|
22
22
|
#
|
|
23
23
|
# Run the interactive demo from the terminal:
|
|
24
24
|
#
|
|
25
|
-
# ruby examples/
|
|
25
|
+
# ruby examples/widget_table/app.rb
|
|
26
26
|
class Table < Data.define(:header, :rows, :widths, :row_highlight_style, :highlight_symbol, :highlight_spacing, :column_highlight_style, :cell_highlight_style, :selected_row, :selected_column, :offset, :block, :footer, :flex, :style, :column_spacing)
|
|
27
27
|
include CoerceableWidget
|
|
28
28
|
|
data/lib/ratatui_ruby.rb
CHANGED
|
@@ -15,7 +15,9 @@ require_relative "ratatui_ruby/buffer" # Buffer::Cell (for inspection)
|
|
|
15
15
|
require_relative "ratatui_ruby/text" # Text::Span, Text::Line, Text.width
|
|
16
16
|
require_relative "ratatui_ruby/draw" # Draw commands
|
|
17
17
|
require_relative "ratatui_ruby/symbols" # Symbols::Shade, etc.
|
|
18
|
+
require_relative "ratatui_ruby/backend" # Backend::WindowSize
|
|
18
19
|
require_relative "ratatui_ruby/terminal/viewport" # Terminal::Viewport
|
|
20
|
+
require_relative "ratatui_ruby/terminal" # Terminal class
|
|
19
21
|
|
|
20
22
|
# Event types
|
|
21
23
|
require_relative "ratatui_ruby/event"
|
|
@@ -138,8 +140,8 @@ module RatatuiRuby
|
|
|
138
140
|
# Breaking these rules raises this error.
|
|
139
141
|
#
|
|
140
142
|
# Common causes:
|
|
141
|
-
# - Calling methods in the wrong order (e.g.,
|
|
142
|
-
# - Callable return type mismatch (e.g., view returns
|
|
143
|
+
# - Calling methods in the wrong order (e.g., <tt>init_terminal</tt> twice)
|
|
144
|
+
# - Callable return type mismatch (e.g., view returns <tt>nil</tt> instead of a widget)
|
|
143
145
|
#
|
|
144
146
|
# To resolve, check the method's documented contract. Ensure
|
|
145
147
|
# state preconditions are met and return types are correct.
|
|
@@ -510,12 +512,31 @@ module RatatuiRuby
|
|
|
510
512
|
alias viewport_size get_viewport_area
|
|
511
513
|
end
|
|
512
514
|
|
|
513
|
-
|
|
514
|
-
|
|
515
|
+
##
|
|
516
|
+
# Number of frames drawn since terminal initialization.
|
|
517
|
+
#
|
|
518
|
+
# TUI applications track render cycles for animations, FPS counters, or
|
|
519
|
+
# debugging. Manually counting draws is error-prone and clutters app logic.
|
|
520
|
+
#
|
|
521
|
+
# This method queries the terminal's internal frame counter. It starts at 0
|
|
522
|
+
# when the terminal initializes and increments by 1 after each successful
|
|
523
|
+
# draw. Restoring and re-initializing resets the counter.
|
|
524
|
+
#
|
|
525
|
+
# Raises RatatuiRuby::Error::Invariant if terminal not initialized.
|
|
526
|
+
def self.frame_count
|
|
527
|
+
_frame_count
|
|
528
|
+
end
|
|
529
|
+
|
|
530
|
+
# (Native methods implemented in Rust)
|
|
531
|
+
private_class_method :_get_cell_at, :_get_terminal_size, :_frame_count
|
|
515
532
|
|
|
516
533
|
# Hide native Layout._split helper
|
|
517
534
|
Layout::Layout.singleton_class.__send__(:private, :_split)
|
|
518
535
|
|
|
536
|
+
# Raw Terminal bindings - use public wrappers (they have timeout guards)
|
|
537
|
+
Terminal.singleton_class.__send__(:private, :_available_color_count)
|
|
538
|
+
Terminal.singleton_class.__send__(:private, :_supports_keyboard_enhancement)
|
|
539
|
+
|
|
519
540
|
# --- Terminal Safety Hooks ---
|
|
520
541
|
# These ensure the terminal is restored even on unexpected exits.
|
|
521
542
|
|