Class: Canon::DiffFormatter::ByObjectFormatter
- Inherits:
-
Object
- Object
- Canon::DiffFormatter::ByObjectFormatter
- Defined in:
- lib/canon/diff_formatter/by_object_formatter.rb
Overview
Handles the by_object rendering pipeline for tree-based semantic diffs.
Delegates to format-specific ByObject formatters (XML, JSON, YAML) which produce visual tree output with box-drawing characters.
Instance Method Summary collapse
-
#format(differences, format) ⇒ String
Format a tree-based object diff.
-
#initialize(use_color:, visualization_map:, show_diffs:) ⇒ ByObjectFormatter
constructor
A new instance of ByObjectFormatter.
Constructor Details
#initialize(use_color:, visualization_map:, show_diffs:) ⇒ ByObjectFormatter
Returns a new instance of ByObjectFormatter.
12 13 14 15 16 |
# File 'lib/canon/diff_formatter/by_object_formatter.rb', line 12 def initialize(use_color:, visualization_map:, show_diffs:) @use_color = use_color @visualization_map = visualization_map @show_diffs = show_diffs end |
Instance Method Details
#format(differences, format) ⇒ String
Format a tree-based object diff.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/canon/diff_formatter/by_object_formatter.rb', line 23 def format(differences, format) output = [] output << colorize("Visual Diff:", :cyan, :bold) diffs_array = if differences.is_a?(Canon::Comparison::ComparisonResult) differences.differences else differences end formatter = ByObject::BaseFormatter.for_format( format, use_color: @use_color, visualization_map: @visualization_map, show_diffs: @show_diffs, ) output << formatter.format(diffs_array, format) output.join("\n") end |