Class: Uniword::Review::InteractiveReview
- Inherits:
-
Object
- Object
- Uniword::Review::InteractiveReview
- Defined in:
- lib/uniword/review/interactive_review.rb
Overview
Text-based user interface for interactively reviewing changes.
Shows comments and revisions one-by-one, prompting the user to accept, reject, skip, or quit. Merges both comments and revisions into a single review queue sorted by position (date).
Instance Method Summary collapse
-
#initialize(manager, output: $stdout, input: $stdin) ⇒ InteractiveReview
constructor
Initialize an interactive review session.
-
#run ⇒ Hash
Run the interactive review session.
-
#summary ⇒ Hash
Get the review session summary.
Constructor Details
#initialize(manager, output: $stdout, input: $stdin) ⇒ InteractiveReview
Initialize an interactive review session.
25 26 27 28 29 30 31 32 |
# File 'lib/uniword/review/interactive_review.rb', line 25 def initialize(manager, output: $stdout, input: $stdin) @manager = manager @output = output @input = input @accepted = 0 @rejected = 0 @skipped = 0 end |
Instance Method Details
#run ⇒ Hash
Run the interactive review session.
Displays each comment and revision in order, prompting the user for action. Returns a summary hash when done.
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/uniword/review/interactive_review.rb', line 40 def run queue = @manager.review_queue if queue.empty? @output.puts "No comments or tracked changes to review." return summary end @output.puts "Reviewing #{queue.size} item(s)..." @output.puts "Keys: [a]ccept [r]eject [s]kip [q]uit" @output.puts separator queue.each_with_index do |entry, idx| display_item(entry, idx, queue.size) case prompt_user when :accept handle_accept(entry) when :reject handle_reject(entry) when :skip @skipped += 1 @output.puts " Skipped." when :quit @output.puts "Stopping review." break end @output.puts separator end display_summary summary end |
#summary ⇒ Hash
Get the review session summary.
78 79 80 81 82 83 84 |
# File 'lib/uniword/review/interactive_review.rb', line 78 def summary { accepted: @accepted, rejected: @rejected, skipped: @skipped, } end |