Module: OmnifocusMcp::Tools::Presenters::BatchReport
- Defined in:
- lib/omnifocus_mcp/tools/presenters/batch_report.rb
Overview
Shared formatting for batch add/remove tool replies.
Class Method Summary collapse
- .add_detail(result, original) ⇒ Object
-
.all_failed?(results) ⇒ Boolean
True when every per-item result failed (and at least one item was processed).
- .format_failure(error_message, results: [], items: [], &detail) ⇒ Object
- .format_success(past_tense:, failure_verb:, results:, items:, &detail) ⇒ Object
- .remove_detail(result, original) ⇒ Object
Class Method Details
.add_detail(result, original) ⇒ Object
32 33 34 35 36 37 38 39 40 |
# File 'lib/omnifocus_mcp/tools/presenters/batch_report.rb', line 32 def add_detail(result, original) item_type = original.type item_name = original.name if result.ok? %(- ✅ #{item_type}: "#{item_name}") else %(- ❌ #{item_type}: "#{item_name}" - Error: #{result.error || "Unknown error"}) end end |
.all_failed?(results) ⇒ Boolean
True when every per-item result failed (and at least one item was processed).
21 |
# File 'lib/omnifocus_mcp/tools/presenters/batch_report.rb', line 21 def all_failed?(results) = results.any? && results.all?(&:error?) |
.format_failure(error_message, results: [], items: [], &detail) ⇒ Object
23 24 25 26 27 28 29 30 |
# File 'lib/omnifocus_mcp/tools/presenters/batch_report.rb', line 23 def format_failure(, results: [], items: [], &detail) if results.any? lines = results.each_with_index.map { |r, i| yield(r, items[i]) } "Failed to process batch operation.\n\n#{lines.join("\n")}" else "Failed to process batch operation.\n\nNo items processed. #{ || ""}" end end |
.format_success(past_tense:, failure_verb:, results:, items:, &detail) ⇒ Object
9 10 11 12 13 14 15 16 17 18 |
# File 'lib/omnifocus_mcp/tools/presenters/batch_report.rb', line 9 def format_success(past_tense:, failure_verb:, results:, items:, &detail) success_count = results.count(&:ok?) failure_count = results.count(&:error?) = "✅ Successfully #{past_tense} #{success_count} items." += " ⚠️ Failed to #{failure_verb} #{failure_count} items." if failure_count.positive? lines = results.each_with_index.map { |r, i| yield(r, items[i]) } "#{}\n\n#{lines.join("\n")}" end |
.remove_detail(result, original) ⇒ Object
42 43 44 45 46 47 48 49 50 |
# File 'lib/omnifocus_mcp/tools/presenters/batch_report.rb', line 42 def remove_detail(result, original) item_type = original.item_type if result.ok? %(- ✅ #{item_type}: "#{result.ok.name}") else identifier = original.id || original.name "- ❌ #{item_type}: #{identifier} - Error: #{result.error}" end end |