ratatui_ruby 0.7.1 → 0.7.3
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 +12 -4
- data/CHANGELOG.md +49 -0
- data/README.md +7 -7
- data/Rakefile +1 -1
- data/doc/{application_architecture.md → concepts/application_architecture.md} +30 -0
- data/doc/{application_testing.md → concepts/application_testing.md} +4 -2
- data/doc/{event_handling.md → concepts/event_handling.md} +1 -1
- data/doc/contributors/auditing/parity.md +233 -0
- data/doc/contributors/developing_examples.md +10 -10
- data/doc/contributors/upstream_requests/tab_rects.md +173 -0
- data/doc/contributors/upstream_requests/title_rects.md +132 -0
- data/doc/contributors/v1.0.0_blockers.md +54 -747
- data/doc/{quickstart.md → getting_started/quickstart.md} +26 -26
- data/doc/{why.md → getting_started/why.md} +1 -1
- data/doc/index.md +23 -9
- data/doc/{terminal_limitations.md → troubleshooting/terminal_limitations.md} +33 -0
- data/doc/troubleshooting/tui_output.md +76 -0
- data/examples/app_all_events/README.md +1 -0
- data/examples/app_all_events/app.rb +2 -0
- data/examples/app_all_events/model/app_model.rb +2 -0
- data/examples/app_all_events/model/event_color_cycle.rb +2 -0
- data/examples/app_all_events/model/event_entry.rb +2 -0
- data/examples/app_all_events/model/msg.rb +2 -0
- data/examples/app_all_events/model/timestamp.rb +2 -0
- data/examples/app_all_events/update.rb +2 -0
- data/examples/app_all_events/view/app_view.rb +2 -0
- data/examples/app_all_events/view/controls_view.rb +2 -0
- data/examples/app_all_events/view/counts_view.rb +2 -0
- data/examples/app_all_events/view/live_view.rb +2 -0
- data/examples/app_all_events/view/log_view.rb +2 -0
- data/examples/app_all_events/view.rb +2 -0
- data/examples/app_color_picker/README.md +2 -0
- data/examples/app_color_picker/app.rb +2 -0
- data/examples/app_color_picker/clipboard.rb +2 -0
- data/examples/app_color_picker/color.rb +2 -0
- data/examples/app_color_picker/controls.rb +2 -0
- data/examples/app_color_picker/copy_dialog.rb +2 -0
- data/examples/app_color_picker/export_pane.rb +2 -0
- data/examples/app_color_picker/harmony.rb +2 -0
- data/examples/app_color_picker/input.rb +2 -0
- data/examples/app_color_picker/main_container.rb +2 -0
- data/examples/app_color_picker/palette.rb +2 -0
- data/examples/app_login_form/README.md +3 -0
- data/examples/app_login_form/app.rb +2 -0
- data/examples/app_stateful_interaction/README.md +2 -0
- data/examples/app_stateful_interaction/app.rb +2 -0
- data/examples/timeout_demo.rb +2 -0
- data/examples/verify_quickstart_dsl/README.md +2 -2
- data/examples/verify_quickstart_dsl/app.rb +2 -0
- data/examples/verify_quickstart_layout/README.md +2 -2
- data/examples/verify_quickstart_layout/app.rb +2 -0
- data/examples/verify_quickstart_lifecycle/README.md +2 -2
- data/examples/verify_quickstart_lifecycle/app.rb +2 -0
- data/examples/verify_readme_usage/app.rb +2 -0
- data/examples/{widget_barchart_demo → widget_barchart}/README.md +5 -3
- data/examples/{widget_barchart_demo → widget_barchart}/app.rb +7 -5
- data/examples/{widget_block_demo → widget_block}/README.md +5 -3
- data/examples/{widget_block_demo → widget_block}/app.rb +6 -4
- data/examples/{widget_box_demo → widget_box}/README.md +7 -4
- data/examples/{widget_box_demo → widget_box}/app.rb +7 -5
- data/examples/{widget_calendar_demo → widget_calendar}/README.md +6 -3
- data/examples/{widget_calendar_demo → widget_calendar}/app.rb +6 -4
- data/examples/{widget_canvas_demo → widget_canvas}/README.md +2 -2
- data/examples/{widget_canvas_demo → widget_canvas}/app.rb +6 -4
- data/examples/{widget_cell_demo → widget_cell}/README.md +6 -3
- data/examples/{widget_cell_demo → widget_cell}/app.rb +7 -5
- data/examples/{widget_center_demo → widget_center}/README.md +2 -2
- data/examples/{widget_center_demo → widget_center}/app.rb +6 -4
- data/examples/{widget_chart_demo → widget_chart}/README.md +7 -4
- data/examples/{widget_chart_demo → widget_chart}/app.rb +7 -5
- data/examples/{widget_gauge_demo → widget_gauge}/README.md +6 -3
- data/examples/{widget_gauge_demo → widget_gauge}/app.rb +7 -5
- data/examples/widget_layout_split/README.md +5 -2
- data/examples/widget_layout_split/app.rb +3 -1
- data/examples/{widget_line_gauge_demo → widget_line_gauge}/README.md +6 -3
- data/examples/{widget_line_gauge_demo → widget_line_gauge}/app.rb +7 -5
- data/examples/{widget_list_demo → widget_list}/README.md +7 -4
- data/examples/{widget_list_demo → widget_list}/app.rb +7 -5
- data/examples/{widget_map_demo → widget_map}/README.md +7 -4
- data/examples/{widget_map_demo → widget_map}/app.rb +4 -2
- data/examples/{widget_overlay_demo → widget_overlay}/README.md +6 -3
- data/examples/{widget_overlay_demo → widget_overlay}/app.rb +5 -3
- data/examples/{widget_popup_demo → widget_popup}/README.md +7 -4
- data/examples/{widget_popup_demo → widget_popup}/app.rb +6 -4
- data/examples/{widget_ratatui_logo_demo → widget_ratatui_logo}/README.md +6 -3
- data/examples/{widget_ratatui_logo_demo → widget_ratatui_logo}/app.rb +8 -6
- data/examples/{widget_ratatui_mascot_demo → widget_ratatui_mascot}/README.md +6 -3
- data/examples/{widget_ratatui_mascot_demo → widget_ratatui_mascot}/app.rb +6 -4
- data/examples/widget_rect/README.md +5 -2
- data/examples/widget_rect/app.rb +2 -0
- data/examples/widget_render/README.md +4 -1
- data/examples/widget_render/app.rb +2 -0
- data/examples/widget_rich_text/README.md +4 -1
- data/examples/widget_rich_text/app.rb +2 -0
- data/examples/widget_scroll_text/README.md +4 -1
- data/examples/widget_scroll_text/app.rb +3 -1
- data/examples/{widget_scrollbar_demo → widget_scrollbar}/README.md +7 -4
- data/examples/{widget_scrollbar_demo → widget_scrollbar}/app.rb +6 -4
- data/examples/{widget_sparkline_demo → widget_sparkline}/README.md +6 -3
- data/examples/{widget_sparkline_demo → widget_sparkline}/app.rb +7 -5
- data/examples/widget_style_colors/README.md +4 -1
- data/examples/widget_style_colors/app.rb +2 -0
- data/examples/{widget_table_demo → widget_table}/README.md +7 -4
- data/examples/{widget_table_demo → widget_table}/app.rb +4 -2
- data/examples/{widget_tabs_demo → widget_tabs}/README.md +6 -3
- data/examples/{widget_tabs_demo → widget_tabs}/app.rb +7 -5
- data/examples/widget_text_width/README.md +5 -2
- data/examples/widget_text_width/app.rb +2 -0
- data/exe/.gitkeep +0 -0
- data/ext/ratatui_ruby/Cargo.lock +1 -1
- data/ext/ratatui_ruby/Cargo.toml +1 -1
- data/ext/ratatui_ruby/extconf.rb +2 -0
- data/ext/ratatui_ruby/src/lib.rs +2 -2
- data/ext/ratatui_ruby/src/rendering.rs +9 -0
- data/ext/ratatui_ruby/src/style.rs +22 -2
- data/ext/ratatui_ruby/src/text.rs +26 -0
- data/ext/ratatui_ruby/src/widgets/barchart.rs +8 -6
- data/ext/ratatui_ruby/src/widgets/chart.rs +31 -4
- data/ext/ratatui_ruby/src/widgets/table.rs +13 -5
- data/ext/ratatui_ruby/src/widgets/tabs.rs +49 -9
- data/lib/ratatui_ruby/buffer/cell.rb +2 -0
- data/lib/ratatui_ruby/buffer.rb +2 -0
- data/lib/ratatui_ruby/cell.rb +2 -0
- data/lib/ratatui_ruby/event/focus_gained.rb +2 -0
- data/lib/ratatui_ruby/event/focus_lost.rb +2 -0
- data/lib/ratatui_ruby/event/key/character.rb +2 -0
- data/lib/ratatui_ruby/event/key/media.rb +2 -0
- data/lib/ratatui_ruby/event/key/modifier.rb +2 -0
- data/lib/ratatui_ruby/event/key/navigation.rb +2 -0
- data/lib/ratatui_ruby/event/key/system.rb +2 -0
- data/lib/ratatui_ruby/event/key.rb +2 -0
- data/lib/ratatui_ruby/event/mouse.rb +2 -0
- data/lib/ratatui_ruby/event/none.rb +2 -0
- data/lib/ratatui_ruby/event/paste.rb +2 -0
- data/lib/ratatui_ruby/event/resize.rb +2 -0
- data/lib/ratatui_ruby/event.rb +2 -0
- data/lib/ratatui_ruby/frame.rb +2 -0
- data/lib/ratatui_ruby/layout/constraint.rb +2 -0
- data/lib/ratatui_ruby/layout/layout.rb +2 -0
- data/lib/ratatui_ruby/layout/rect.rb +2 -0
- data/lib/ratatui_ruby/layout.rb +2 -0
- data/lib/ratatui_ruby/list_state.rb +2 -0
- data/lib/ratatui_ruby/schema/bar_chart/bar.rb +2 -0
- data/lib/ratatui_ruby/schema/bar_chart/bar_group.rb +2 -0
- data/lib/ratatui_ruby/schema/bar_chart.rb +4 -2
- data/lib/ratatui_ruby/schema/block.rb +4 -2
- data/lib/ratatui_ruby/schema/calendar.rb +4 -2
- data/lib/ratatui_ruby/schema/canvas.rb +2 -0
- data/lib/ratatui_ruby/schema/center.rb +2 -0
- data/lib/ratatui_ruby/schema/chart.rb +4 -2
- data/lib/ratatui_ruby/schema/clear.rb +2 -0
- data/lib/ratatui_ruby/schema/constraint.rb +2 -0
- data/lib/ratatui_ruby/schema/cursor.rb +2 -0
- data/lib/ratatui_ruby/schema/draw.rb +2 -0
- data/lib/ratatui_ruby/schema/gauge.rb +4 -2
- data/lib/ratatui_ruby/schema/layout.rb +2 -0
- data/lib/ratatui_ruby/schema/line_gauge.rb +4 -2
- data/lib/ratatui_ruby/schema/list.rb +3 -1
- data/lib/ratatui_ruby/schema/list_item.rb +2 -0
- data/lib/ratatui_ruby/schema/overlay.rb +2 -0
- data/lib/ratatui_ruby/schema/paragraph.rb +2 -0
- data/lib/ratatui_ruby/schema/ratatui_logo.rb +4 -2
- data/lib/ratatui_ruby/schema/ratatui_mascot.rb +4 -2
- data/lib/ratatui_ruby/schema/rect.rb +2 -0
- data/lib/ratatui_ruby/schema/row.rb +2 -0
- data/lib/ratatui_ruby/schema/scrollbar.rb +4 -2
- data/lib/ratatui_ruby/schema/shape/label.rb +2 -0
- data/lib/ratatui_ruby/schema/sparkline.rb +4 -2
- data/lib/ratatui_ruby/schema/style.rb +2 -0
- data/lib/ratatui_ruby/schema/table.rb +2 -0
- data/lib/ratatui_ruby/schema/tabs.rb +4 -2
- data/lib/ratatui_ruby/schema/text.rb +2 -0
- data/lib/ratatui_ruby/scrollbar_state.rb +2 -0
- data/lib/ratatui_ruby/style/style.rb +3 -0
- data/lib/ratatui_ruby/style.rb +2 -0
- data/lib/ratatui_ruby/table_state.rb +2 -0
- data/lib/ratatui_ruby/test_helper/event_injection.rb +2 -0
- data/lib/ratatui_ruby/test_helper/snapshot.rb +62 -21
- data/lib/ratatui_ruby/test_helper/snapshots/axis_labels_alignment.ansi +24 -0
- data/lib/ratatui_ruby/test_helper/snapshots/axis_labels_alignment.txt +24 -0
- data/lib/ratatui_ruby/test_helper/snapshots/barchart_styled_label.ansi +5 -0
- data/lib/ratatui_ruby/test_helper/snapshots/barchart_styled_label.txt +5 -0
- data/lib/ratatui_ruby/test_helper/snapshots/chart_rendering.ansi +24 -0
- data/lib/ratatui_ruby/test_helper/snapshots/chart_rendering.txt +24 -0
- data/lib/ratatui_ruby/test_helper/snapshots/half_block_marker.ansi +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/half_block_marker.txt +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/legend_position_bottom.ansi +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/legend_position_bottom.txt +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/legend_position_left.ansi +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/legend_position_left.txt +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/legend_position_right.ansi +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/legend_position_right.txt +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/legend_position_top.ansi +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/legend_position_top.txt +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/my_snapshot.txt +1 -0
- data/lib/ratatui_ruby/test_helper/snapshots/styled_axis_title.ansi +10 -0
- data/lib/ratatui_ruby/test_helper/snapshots/styled_axis_title.txt +10 -0
- data/lib/ratatui_ruby/test_helper/snapshots/styled_dataset_name.ansi +10 -0
- data/lib/ratatui_ruby/test_helper/snapshots/styled_dataset_name.txt +10 -0
- data/lib/ratatui_ruby/test_helper/style_assertions.rb +2 -0
- data/lib/ratatui_ruby/test_helper/terminal.rb +5 -0
- data/lib/ratatui_ruby/test_helper/test_doubles.rb +2 -0
- data/lib/ratatui_ruby/test_helper.rb +6 -4
- data/lib/ratatui_ruby/tui/buffer_factories.rb +2 -0
- data/lib/ratatui_ruby/tui/canvas_factories.rb +2 -0
- data/lib/ratatui_ruby/tui/core.rb +2 -0
- data/lib/ratatui_ruby/tui/layout_factories.rb +2 -0
- data/lib/ratatui_ruby/tui/state_factories.rb +2 -0
- data/lib/ratatui_ruby/tui/style_factories.rb +2 -0
- data/lib/ratatui_ruby/tui/text_factories.rb +2 -0
- data/lib/ratatui_ruby/tui/widget_factories.rb +2 -0
- data/lib/ratatui_ruby/tui.rb +2 -0
- data/lib/ratatui_ruby/version.rb +3 -1
- data/lib/ratatui_ruby/widgets/bar_chart/bar.rb +2 -0
- data/lib/ratatui_ruby/widgets/bar_chart/bar_group.rb +2 -0
- data/lib/ratatui_ruby/widgets/bar_chart.rb +7 -4
- data/lib/ratatui_ruby/widgets/block.rb +46 -2
- data/lib/ratatui_ruby/widgets/calendar.rb +4 -2
- data/lib/ratatui_ruby/widgets/canvas.rb +2 -0
- data/lib/ratatui_ruby/widgets/cell.rb +2 -0
- data/lib/ratatui_ruby/widgets/center.rb +2 -0
- data/lib/ratatui_ruby/widgets/chart.rb +13 -6
- data/lib/ratatui_ruby/widgets/clear.rb +2 -0
- data/lib/ratatui_ruby/widgets/cursor.rb +2 -0
- data/lib/ratatui_ruby/widgets/gauge.rb +4 -2
- data/lib/ratatui_ruby/widgets/line_gauge.rb +4 -2
- data/lib/ratatui_ruby/widgets/list.rb +3 -1
- data/lib/ratatui_ruby/widgets/list_item.rb +2 -0
- data/lib/ratatui_ruby/widgets/overlay.rb +2 -0
- data/lib/ratatui_ruby/widgets/paragraph.rb +2 -0
- data/lib/ratatui_ruby/widgets/ratatui_logo.rb +4 -2
- data/lib/ratatui_ruby/widgets/ratatui_mascot.rb +4 -2
- data/lib/ratatui_ruby/widgets/row.rb +2 -0
- data/lib/ratatui_ruby/widgets/scrollbar.rb +4 -2
- data/lib/ratatui_ruby/widgets/shape/label.rb +2 -0
- data/lib/ratatui_ruby/widgets/sparkline.rb +7 -4
- data/lib/ratatui_ruby/widgets/table.rb +2 -0
- data/lib/ratatui_ruby/widgets/tabs.rb +12 -8
- data/lib/ratatui_ruby/widgets.rb +2 -0
- data/lib/ratatui_ruby.rb +130 -9
- data/tasks/autodoc/examples.rb +2 -0
- data/tasks/autodoc/member.rb +2 -0
- data/tasks/autodoc/name.rb +2 -0
- data/tasks/autodoc.rake +2 -0
- data/tasks/bump/cargo_lockfile.rb +2 -0
- data/tasks/bump/changelog.rb +2 -0
- data/tasks/bump/header.rb +2 -0
- data/tasks/bump/history.rb +2 -0
- data/tasks/bump/links.rb +2 -0
- data/tasks/bump/manifest.rb +2 -0
- data/tasks/bump/ruby_gem.rb +2 -0
- data/tasks/bump/sem_ver.rb +2 -0
- data/tasks/bump/unreleased_section.rb +2 -0
- data/tasks/bump.rake +2 -0
- data/tasks/doc.rake +268 -0
- data/tasks/extension.rake +2 -0
- data/tasks/lint.rake +115 -0
- data/tasks/rdoc_config.rb +18 -4
- data/tasks/sourcehut.rake +2 -0
- data/tasks/terminal_preview/app_screenshot.rb +2 -0
- data/tasks/terminal_preview/crash_report.rb +2 -0
- data/tasks/terminal_preview/example_app.rb +2 -0
- data/tasks/terminal_preview/launcher_script.rb +2 -0
- data/tasks/terminal_preview/preview_collection.rb +2 -0
- data/tasks/terminal_preview/preview_timing.rb +2 -0
- data/tasks/terminal_preview/safety_confirmation.rb +2 -0
- data/tasks/terminal_preview/saved_screenshot.rb +2 -0
- data/tasks/terminal_preview/system_appearance.rb +2 -0
- data/tasks/terminal_preview/terminal_window.rb +2 -0
- data/tasks/terminal_preview/window_id.rb +2 -0
- data/tasks/terminal_preview.rake +2 -0
- data/tasks/test.rake +2 -0
- data/tasks/website/index_page.rb +2 -0
- data/tasks/website/version.rb +12 -2
- data/tasks/website/version_menu.rb +2 -0
- data/tasks/website/versioned_documentation.rb +2 -0
- data/tasks/website/website.rb +2 -0
- data/tasks/website.rake +2 -0
- metadata +97 -75
- data/doc/contributors/architectural_overhaul/chat_conversations.md +0 -4952
- data/doc/contributors/architectural_overhaul/implementation_plan.md +0 -60
- data/doc/contributors/architectural_overhaul/task.md +0 -37
- /data/doc/{async.md → concepts/async.md} +0 -0
- /data/doc/{interactive_design.md → concepts/interactive_design.md} +0 -0
- /data/doc/images/{widget_barchart_demo.png → widget_barchart.png} +0 -0
- /data/doc/images/{widget_block_demo.png → widget_block.png} +0 -0
- /data/doc/images/{widget_box_demo.png → widget_box.png} +0 -0
- /data/doc/images/{widget_calendar_demo.png → widget_calendar.png} +0 -0
- /data/doc/images/{widget_canvas_demo.png → widget_canvas.png} +0 -0
- /data/doc/images/{widget_cell_demo.png → widget_cell.png} +0 -0
- /data/doc/images/{widget_center_demo.png → widget_center.png} +0 -0
- /data/doc/images/{widget_chart_demo.png → widget_chart.png} +0 -0
- /data/doc/images/{widget_gauge_demo.png → widget_gauge.png} +0 -0
- /data/doc/images/{widget_line_gauge_demo.png → widget_line_gauge.png} +0 -0
- /data/doc/images/{widget_list_demo.png → widget_list.png} +0 -0
- /data/doc/images/{widget_map_demo.png → widget_map.png} +0 -0
- /data/doc/images/{widget_overlay_demo.png → widget_overlay.png} +0 -0
- /data/doc/images/{widget_popup_demo.png → widget_popup.png} +0 -0
- /data/doc/images/{widget_ratatui_logo_demo.png → widget_ratatui_logo.png} +0 -0
- /data/doc/images/{widget_ratatui_mascot_demo.png → widget_ratatui_mascot.png} +0 -0
- /data/doc/images/{widget_scrollbar_demo.png → widget_scrollbar.png} +0 -0
- /data/doc/images/{widget_sparkline_demo.png → widget_sparkline.png} +0 -0
- /data/doc/images/{widget_table_demo.png → widget_table.png} +0 -0
- /data/doc/images/{widget_tabs_demo.png → widget_tabs.png} +0 -0
- /data/doc/{v0.7.0_migration.md → migration/v0_7_0.md} +0 -0
- /data/doc/{debugging.md → troubleshooting/debugging.md} +0 -0
data/tasks/lint.rake
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
#--
|
|
3
4
|
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
5
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
6
|
+
#++
|
|
5
7
|
|
|
6
8
|
require "rubocop/rake_task"
|
|
7
9
|
require "rubycritic/rake_task"
|
|
@@ -35,6 +37,95 @@ namespace :reuse do
|
|
|
35
37
|
task :lint do
|
|
36
38
|
sh "reuse lint"
|
|
37
39
|
end
|
|
40
|
+
|
|
41
|
+
desc "Add SPDX headers to files missing them (per AGENTS.md standards)"
|
|
42
|
+
task :fix do
|
|
43
|
+
copyright = "Kerrick Long <me@kerricklong.com>"
|
|
44
|
+
|
|
45
|
+
# Code files: AGPL-3.0-or-later
|
|
46
|
+
code_extensions = %w[rb rs rake gemspec rbs toml yml yaml json lock].freeze
|
|
47
|
+
code_license = "AGPL-3.0-or-later"
|
|
48
|
+
|
|
49
|
+
# Documentation files: CC-BY-SA-4.0
|
|
50
|
+
doc_extensions = %w[md txt].freeze
|
|
51
|
+
doc_license = "CC-BY-SA-4.0"
|
|
52
|
+
|
|
53
|
+
# Find files missing headers (listed after "no copyright and licensing" message)
|
|
54
|
+
puts "Checking for files missing REUSE headers..."
|
|
55
|
+
output = `reuse lint 2>&1`
|
|
56
|
+
in_missing_section = false
|
|
57
|
+
missing_files = output.lines.filter_map do |line|
|
|
58
|
+
in_missing_section = true if line.include?("no copyright and licensing")
|
|
59
|
+
in_missing_section = false if line.start_with?("# ") && !line.include?("copyright")
|
|
60
|
+
next unless in_missing_section
|
|
61
|
+
|
|
62
|
+
line.match(/^\* (.+)/)&.[](1)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
if missing_files.empty?
|
|
66
|
+
puts "All files have REUSE headers!"
|
|
67
|
+
else
|
|
68
|
+
missing_files.each do |file|
|
|
69
|
+
ext = File.extname(file).delete(".")
|
|
70
|
+
license = if code_extensions.include?(ext)
|
|
71
|
+
code_license
|
|
72
|
+
elsif doc_extensions.include?(ext)
|
|
73
|
+
doc_license
|
|
74
|
+
else
|
|
75
|
+
puts " Skipping #{file} (unknown extension: .#{ext})"
|
|
76
|
+
next
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
puts " Annotating #{file} with #{license}"
|
|
80
|
+
sh "reuse annotate --license #{license} --copyright '#{copyright}' --skip-existing '#{file}'", verbose: false
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
desc "Normalize Ruby files: frozen_string_literal at top, SPDX in #--/#++ block"
|
|
86
|
+
task :normalize_ruby do
|
|
87
|
+
ruby_extensions = %w[rb rake gemspec].freeze
|
|
88
|
+
ruby_files = Dir.glob("**/*.{#{ruby_extensions.join(',')}}")
|
|
89
|
+
.reject { |f| f.start_with?("vendor/", "tmp/", ".") }
|
|
90
|
+
|
|
91
|
+
fixed_count = 0
|
|
92
|
+
ruby_files.each do |file|
|
|
93
|
+
content = File.read(file)
|
|
94
|
+
original = content.dup
|
|
95
|
+
|
|
96
|
+
# Skip if no SPDX header
|
|
97
|
+
next unless content.match?(/# SPDX-/)
|
|
98
|
+
|
|
99
|
+
# Extract components
|
|
100
|
+
frozen = content.match?(/^# frozen_string_literal: true/)
|
|
101
|
+
spdx_match = content.match(/(# SPDX-FileCopyrightText:[^\n]+\n(?:#[^\n]*\n)*# SPDX-License-Identifier:[^\n]+\n)/m)
|
|
102
|
+
next unless spdx_match
|
|
103
|
+
|
|
104
|
+
spdx_block = spdx_match[1]
|
|
105
|
+
|
|
106
|
+
# Remove existing frozen_string_literal and SPDX block (and any #--/#+++)
|
|
107
|
+
cleaned = content
|
|
108
|
+
.sub(/^# frozen_string_literal: true\n+/, "")
|
|
109
|
+
.sub(/^#--\s*\n/, "")
|
|
110
|
+
.sub(spdx_block, "")
|
|
111
|
+
.sub(/^#\+\+\s*\n/, "")
|
|
112
|
+
.sub(/\A\n+/, "") # Remove leading blank lines
|
|
113
|
+
|
|
114
|
+
# Rebuild file in correct order: frozen, blank, #--, SPDX, #++, rest
|
|
115
|
+
new_content = ""
|
|
116
|
+
new_content += "# frozen_string_literal: true\n\n" if frozen
|
|
117
|
+
new_content += "#--\n#{spdx_block}#++\n\n"
|
|
118
|
+
new_content += cleaned.sub(/\A\n+/, "") # Ensure no double blank lines
|
|
119
|
+
|
|
120
|
+
if new_content != original
|
|
121
|
+
File.write(file, new_content)
|
|
122
|
+
puts " Normalized #{file}"
|
|
123
|
+
fixed_count += 1
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
puts fixed_count.zero? ? "All Ruby files properly normalized!" : "Fixed #{fixed_count} files."
|
|
128
|
+
end
|
|
38
129
|
end
|
|
39
130
|
task(:reuse) { Rake::Task["reuse:lint"].invoke }
|
|
40
131
|
|
|
@@ -47,7 +138,31 @@ namespace :lint do
|
|
|
47
138
|
task code: %w[rubocop rubycritic cargo:fmt cargo:clippy cargo:test]
|
|
48
139
|
task licenses: %w[reuse:lint]
|
|
49
140
|
task all: %w[docs code licenses]
|
|
141
|
+
|
|
142
|
+
namespace :fix do
|
|
143
|
+
desc "Auto-fix RuboCop offenses (most aggressive)"
|
|
144
|
+
task :rubocop do
|
|
145
|
+
sh "bundle exec rubocop --autocorrect-all"
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
desc "Auto-fix Clippy warnings (most aggressive: --fix --allow-dirty --allow-staged)"
|
|
149
|
+
task :clippy do
|
|
150
|
+
sh "cd ext/ratatui_ruby && cargo clippy --fix --allow-dirty --allow-staged"
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
desc "Add SPDX headers and normalize Ruby file structure"
|
|
154
|
+
task reuse: %w[reuse:fix reuse:normalize_ruby]
|
|
155
|
+
|
|
156
|
+
desc "Run all auto-fix tasks"
|
|
157
|
+
task all: %w[lint:fix:rubocop lint:fix:clippy lint:fix:reuse]
|
|
158
|
+
end
|
|
50
159
|
end
|
|
51
160
|
|
|
161
|
+
desc "Run all lint auto-fix tasks"
|
|
162
|
+
task("lint:fix") { Rake::Task["lint:fix:all"].invoke }
|
|
163
|
+
|
|
164
|
+
# Aliases for convenience
|
|
165
|
+
task "rubocop:autocorrect_all" => "lint:fix:rubocop"
|
|
166
|
+
|
|
52
167
|
desc "Run all lint tasks"
|
|
53
168
|
task(:lint) { Rake::Task["lint:all"].invoke }
|
data/tasks/rdoc_config.rb
CHANGED
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
#--
|
|
3
4
|
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
5
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
6
|
+
#++
|
|
5
7
|
|
|
6
8
|
module RDocConfig
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
MAX_FILE_SIZE = 100_000 # 100KB - skip large files like chat logs
|
|
10
|
+
|
|
11
|
+
RDOC_FILES = Dir.glob(%w[
|
|
12
|
+
doc/**/*.md
|
|
13
|
+
examples/**/*.md
|
|
14
|
+
*.md
|
|
15
|
+
*.rdoc
|
|
10
16
|
lib/**/*.rb
|
|
11
17
|
exe/**/*
|
|
12
|
-
].
|
|
18
|
+
]).reject { |f|
|
|
19
|
+
# Skip large files
|
|
20
|
+
if File.size(f) > MAX_FILE_SIZE
|
|
21
|
+
warn "RDoc: skipping #{f} (#{File.size(f) / 1024}KB > #{MAX_FILE_SIZE / 1024}KB limit)"
|
|
22
|
+
next true
|
|
23
|
+
end
|
|
24
|
+
# Skip verification examples (internal testing, not user-facing)
|
|
25
|
+
f.start_with?("examples/verify_")
|
|
26
|
+
}.freeze
|
|
13
27
|
|
|
14
28
|
MAIN = "README.md"
|
|
15
29
|
end
|
data/tasks/sourcehut.rake
CHANGED
data/tasks/terminal_preview.rake
CHANGED
data/tasks/test.rake
CHANGED
data/tasks/website/index_page.rb
CHANGED
data/tasks/website/version.rb
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
#--
|
|
3
4
|
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
5
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
6
|
+
#++
|
|
5
7
|
|
|
6
8
|
require "rubygems"
|
|
7
9
|
require "fileutils"
|
|
@@ -13,7 +15,14 @@ class Version
|
|
|
13
15
|
.sort_by(&:semver)
|
|
14
16
|
.reverse
|
|
15
17
|
|
|
16
|
-
|
|
18
|
+
# Keep only the latest patch for each minor version
|
|
19
|
+
# e.g., if we have v0.6.0, v0.6.1, v0.6.2, only keep v0.6.2
|
|
20
|
+
latest_per_minor = sorted_versions
|
|
21
|
+
.group_by { |v| v.semver.segments[0..1] } # group by [major, minor]
|
|
22
|
+
.values
|
|
23
|
+
.map(&:first) # take the first (highest patch) from each group
|
|
24
|
+
|
|
25
|
+
[Edge.new] + latest_per_minor
|
|
17
26
|
end
|
|
18
27
|
|
|
19
28
|
def slug
|
|
@@ -85,7 +94,8 @@ class Tagged < Version
|
|
|
85
94
|
end
|
|
86
95
|
|
|
87
96
|
def slug
|
|
88
|
-
|
|
97
|
+
segments = semver.segments
|
|
98
|
+
"v#{segments[0]}.#{segments[1]}"
|
|
89
99
|
end
|
|
90
100
|
|
|
91
101
|
def name
|
data/tasks/website/website.rb
CHANGED
data/tasks/website.rake
CHANGED
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: 0.7.
|
|
4
|
+
version: 0.7.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kerrick Long
|
|
@@ -105,22 +105,24 @@ files:
|
|
|
105
105
|
- README.md
|
|
106
106
|
- REUSE.toml
|
|
107
107
|
- Rakefile
|
|
108
|
-
- doc/application_architecture.md
|
|
109
|
-
- doc/application_testing.md
|
|
110
|
-
- doc/async.md
|
|
111
|
-
- doc/
|
|
112
|
-
- doc/
|
|
113
|
-
- doc/contributors/
|
|
108
|
+
- doc/concepts/application_architecture.md
|
|
109
|
+
- doc/concepts/application_testing.md
|
|
110
|
+
- doc/concepts/async.md
|
|
111
|
+
- doc/concepts/event_handling.md
|
|
112
|
+
- doc/concepts/interactive_design.md
|
|
113
|
+
- doc/contributors/auditing/parity.md
|
|
114
114
|
- doc/contributors/design.md
|
|
115
115
|
- doc/contributors/design/ruby_frontend.md
|
|
116
116
|
- doc/contributors/design/rust_backend.md
|
|
117
117
|
- doc/contributors/developing_examples.md
|
|
118
118
|
- doc/contributors/documentation_style.md
|
|
119
119
|
- doc/contributors/index.md
|
|
120
|
+
- doc/contributors/upstream_requests/tab_rects.md
|
|
121
|
+
- doc/contributors/upstream_requests/title_rects.md
|
|
120
122
|
- doc/contributors/v1.0.0_blockers.md
|
|
121
123
|
- doc/custom.css
|
|
122
|
-
- doc/
|
|
123
|
-
- doc/
|
|
124
|
+
- doc/getting_started/quickstart.md
|
|
125
|
+
- doc/getting_started/why.md
|
|
124
126
|
- doc/images/app_all_events.png
|
|
125
127
|
- doc/images/app_color_picker.png
|
|
126
128
|
- doc/images/app_login_form.png
|
|
@@ -129,39 +131,38 @@ files:
|
|
|
129
131
|
- doc/images/verify_quickstart_layout.png
|
|
130
132
|
- doc/images/verify_quickstart_lifecycle.png
|
|
131
133
|
- doc/images/verify_readme_usage.png
|
|
132
|
-
- doc/images/
|
|
133
|
-
- doc/images/
|
|
134
|
-
- doc/images/
|
|
135
|
-
- doc/images/
|
|
136
|
-
- doc/images/
|
|
137
|
-
- doc/images/
|
|
138
|
-
- doc/images/
|
|
139
|
-
- doc/images/
|
|
140
|
-
- doc/images/
|
|
134
|
+
- doc/images/widget_barchart.png
|
|
135
|
+
- doc/images/widget_block.png
|
|
136
|
+
- doc/images/widget_box.png
|
|
137
|
+
- doc/images/widget_calendar.png
|
|
138
|
+
- doc/images/widget_canvas.png
|
|
139
|
+
- doc/images/widget_cell.png
|
|
140
|
+
- doc/images/widget_center.png
|
|
141
|
+
- doc/images/widget_chart.png
|
|
142
|
+
- doc/images/widget_gauge.png
|
|
141
143
|
- doc/images/widget_layout_split.png
|
|
142
|
-
- doc/images/
|
|
143
|
-
- doc/images/
|
|
144
|
-
- doc/images/
|
|
145
|
-
- doc/images/
|
|
146
|
-
- doc/images/
|
|
147
|
-
- doc/images/
|
|
148
|
-
- doc/images/
|
|
144
|
+
- doc/images/widget_line_gauge.png
|
|
145
|
+
- doc/images/widget_list.png
|
|
146
|
+
- doc/images/widget_map.png
|
|
147
|
+
- doc/images/widget_overlay.png
|
|
148
|
+
- doc/images/widget_popup.png
|
|
149
|
+
- doc/images/widget_ratatui_logo.png
|
|
150
|
+
- doc/images/widget_ratatui_mascot.png
|
|
149
151
|
- doc/images/widget_rect.png
|
|
150
152
|
- doc/images/widget_render.png
|
|
151
153
|
- doc/images/widget_rich_text.png
|
|
152
154
|
- doc/images/widget_scroll_text.png
|
|
153
|
-
- doc/images/
|
|
154
|
-
- doc/images/
|
|
155
|
+
- doc/images/widget_scrollbar.png
|
|
156
|
+
- doc/images/widget_sparkline.png
|
|
155
157
|
- doc/images/widget_style_colors.png
|
|
156
|
-
- doc/images/
|
|
157
|
-
- doc/images/
|
|
158
|
+
- doc/images/widget_table.png
|
|
159
|
+
- doc/images/widget_tabs.png
|
|
158
160
|
- doc/images/widget_text_width.png
|
|
159
161
|
- doc/index.md
|
|
160
|
-
- doc/
|
|
161
|
-
- doc/
|
|
162
|
-
- doc/terminal_limitations.md
|
|
163
|
-
- doc/
|
|
164
|
-
- doc/why.md
|
|
162
|
+
- doc/migration/v0_7_0.md
|
|
163
|
+
- doc/troubleshooting/debugging.md
|
|
164
|
+
- doc/troubleshooting/terminal_limitations.md
|
|
165
|
+
- doc/troubleshooting/tui_output.md
|
|
165
166
|
- examples/app_all_events/README.md
|
|
166
167
|
- examples/app_all_events/app.rb
|
|
167
168
|
- examples/app_all_events/model/app_model.rb
|
|
@@ -200,40 +201,40 @@ files:
|
|
|
200
201
|
- examples/verify_quickstart_lifecycle/app.rb
|
|
201
202
|
- examples/verify_readme_usage/README.md
|
|
202
203
|
- examples/verify_readme_usage/app.rb
|
|
203
|
-
- examples/
|
|
204
|
-
- examples/
|
|
205
|
-
- examples/
|
|
206
|
-
- examples/
|
|
207
|
-
- examples/
|
|
208
|
-
- examples/
|
|
209
|
-
- examples/
|
|
210
|
-
- examples/
|
|
211
|
-
- examples/
|
|
212
|
-
- examples/
|
|
213
|
-
- examples/
|
|
214
|
-
- examples/
|
|
215
|
-
- examples/
|
|
216
|
-
- examples/
|
|
217
|
-
- examples/
|
|
218
|
-
- examples/
|
|
219
|
-
- examples/
|
|
220
|
-
- examples/
|
|
204
|
+
- examples/widget_barchart/README.md
|
|
205
|
+
- examples/widget_barchart/app.rb
|
|
206
|
+
- examples/widget_block/README.md
|
|
207
|
+
- examples/widget_block/app.rb
|
|
208
|
+
- examples/widget_box/README.md
|
|
209
|
+
- examples/widget_box/app.rb
|
|
210
|
+
- examples/widget_calendar/README.md
|
|
211
|
+
- examples/widget_calendar/app.rb
|
|
212
|
+
- examples/widget_canvas/README.md
|
|
213
|
+
- examples/widget_canvas/app.rb
|
|
214
|
+
- examples/widget_cell/README.md
|
|
215
|
+
- examples/widget_cell/app.rb
|
|
216
|
+
- examples/widget_center/README.md
|
|
217
|
+
- examples/widget_center/app.rb
|
|
218
|
+
- examples/widget_chart/README.md
|
|
219
|
+
- examples/widget_chart/app.rb
|
|
220
|
+
- examples/widget_gauge/README.md
|
|
221
|
+
- examples/widget_gauge/app.rb
|
|
221
222
|
- examples/widget_layout_split/README.md
|
|
222
223
|
- examples/widget_layout_split/app.rb
|
|
223
|
-
- examples/
|
|
224
|
-
- examples/
|
|
225
|
-
- examples/
|
|
226
|
-
- examples/
|
|
227
|
-
- examples/
|
|
228
|
-
- examples/
|
|
229
|
-
- examples/
|
|
230
|
-
- examples/
|
|
231
|
-
- examples/
|
|
232
|
-
- examples/
|
|
233
|
-
- examples/
|
|
234
|
-
- examples/
|
|
235
|
-
- examples/
|
|
236
|
-
- examples/
|
|
224
|
+
- examples/widget_line_gauge/README.md
|
|
225
|
+
- examples/widget_line_gauge/app.rb
|
|
226
|
+
- examples/widget_list/README.md
|
|
227
|
+
- examples/widget_list/app.rb
|
|
228
|
+
- examples/widget_map/README.md
|
|
229
|
+
- examples/widget_map/app.rb
|
|
230
|
+
- examples/widget_overlay/README.md
|
|
231
|
+
- examples/widget_overlay/app.rb
|
|
232
|
+
- examples/widget_popup/README.md
|
|
233
|
+
- examples/widget_popup/app.rb
|
|
234
|
+
- examples/widget_ratatui_logo/README.md
|
|
235
|
+
- examples/widget_ratatui_logo/app.rb
|
|
236
|
+
- examples/widget_ratatui_mascot/README.md
|
|
237
|
+
- examples/widget_ratatui_mascot/app.rb
|
|
237
238
|
- examples/widget_rect/README.md
|
|
238
239
|
- examples/widget_rect/app.rb
|
|
239
240
|
- examples/widget_render/README.md
|
|
@@ -242,16 +243,16 @@ files:
|
|
|
242
243
|
- examples/widget_rich_text/app.rb
|
|
243
244
|
- examples/widget_scroll_text/README.md
|
|
244
245
|
- examples/widget_scroll_text/app.rb
|
|
245
|
-
- examples/
|
|
246
|
-
- examples/
|
|
247
|
-
- examples/
|
|
248
|
-
- examples/
|
|
246
|
+
- examples/widget_scrollbar/README.md
|
|
247
|
+
- examples/widget_scrollbar/app.rb
|
|
248
|
+
- examples/widget_sparkline/README.md
|
|
249
|
+
- examples/widget_sparkline/app.rb
|
|
249
250
|
- examples/widget_style_colors/README.md
|
|
250
251
|
- examples/widget_style_colors/app.rb
|
|
251
|
-
- examples/
|
|
252
|
-
- examples/
|
|
253
|
-
- examples/
|
|
254
|
-
- examples/
|
|
252
|
+
- examples/widget_table/README.md
|
|
253
|
+
- examples/widget_table/app.rb
|
|
254
|
+
- examples/widget_tabs/README.md
|
|
255
|
+
- examples/widget_tabs/app.rb
|
|
255
256
|
- examples/widget_text_width/README.md
|
|
256
257
|
- examples/widget_text_width/app.rb
|
|
257
258
|
- exe/.gitkeep
|
|
@@ -353,6 +354,27 @@ files:
|
|
|
353
354
|
- lib/ratatui_ruby/test_helper.rb
|
|
354
355
|
- lib/ratatui_ruby/test_helper/event_injection.rb
|
|
355
356
|
- lib/ratatui_ruby/test_helper/snapshot.rb
|
|
357
|
+
- lib/ratatui_ruby/test_helper/snapshots/axis_labels_alignment.ansi
|
|
358
|
+
- lib/ratatui_ruby/test_helper/snapshots/axis_labels_alignment.txt
|
|
359
|
+
- lib/ratatui_ruby/test_helper/snapshots/barchart_styled_label.ansi
|
|
360
|
+
- lib/ratatui_ruby/test_helper/snapshots/barchart_styled_label.txt
|
|
361
|
+
- lib/ratatui_ruby/test_helper/snapshots/chart_rendering.ansi
|
|
362
|
+
- lib/ratatui_ruby/test_helper/snapshots/chart_rendering.txt
|
|
363
|
+
- lib/ratatui_ruby/test_helper/snapshots/half_block_marker.ansi
|
|
364
|
+
- lib/ratatui_ruby/test_helper/snapshots/half_block_marker.txt
|
|
365
|
+
- lib/ratatui_ruby/test_helper/snapshots/legend_position_bottom.ansi
|
|
366
|
+
- lib/ratatui_ruby/test_helper/snapshots/legend_position_bottom.txt
|
|
367
|
+
- lib/ratatui_ruby/test_helper/snapshots/legend_position_left.ansi
|
|
368
|
+
- lib/ratatui_ruby/test_helper/snapshots/legend_position_left.txt
|
|
369
|
+
- lib/ratatui_ruby/test_helper/snapshots/legend_position_right.ansi
|
|
370
|
+
- lib/ratatui_ruby/test_helper/snapshots/legend_position_right.txt
|
|
371
|
+
- lib/ratatui_ruby/test_helper/snapshots/legend_position_top.ansi
|
|
372
|
+
- lib/ratatui_ruby/test_helper/snapshots/legend_position_top.txt
|
|
373
|
+
- lib/ratatui_ruby/test_helper/snapshots/my_snapshot.txt
|
|
374
|
+
- lib/ratatui_ruby/test_helper/snapshots/styled_axis_title.ansi
|
|
375
|
+
- lib/ratatui_ruby/test_helper/snapshots/styled_axis_title.txt
|
|
376
|
+
- lib/ratatui_ruby/test_helper/snapshots/styled_dataset_name.ansi
|
|
377
|
+
- lib/ratatui_ruby/test_helper/snapshots/styled_dataset_name.txt
|
|
356
378
|
- lib/ratatui_ruby/test_helper/style_assertions.rb
|
|
357
379
|
- lib/ratatui_ruby/test_helper/terminal.rb
|
|
358
380
|
- lib/ratatui_ruby/test_helper/test_doubles.rb
|
|
@@ -533,7 +555,7 @@ metadata:
|
|
|
533
555
|
allowed_push_host: https://rubygems.org
|
|
534
556
|
homepage_uri: https://sr.ht/~kerrick/ratatui_ruby/
|
|
535
557
|
bug_tracker_uri: https://todo.sr.ht/~kerrick/ratatui_ruby
|
|
536
|
-
changelog_uri: https://git.sr.ht/~kerrick/ratatui_ruby/tree/
|
|
558
|
+
changelog_uri: https://git.sr.ht/~kerrick/ratatui_ruby/tree/stable/item/CHANGELOG.md
|
|
537
559
|
mailing_list_uri: https://lists.sr.ht/~kerrick/ratatui_ruby-discuss
|
|
538
560
|
source_code_uri: https://git.sr.ht/~kerrick/ratatui_ruby
|
|
539
561
|
documentation_uri: https://git.sr.ht/~kerrick/ratatui_ruby/tree/HEAD/doc/index.md
|