Class: Markdown::Merge::MergeResult
- Inherits:
-
Ast::Merge::MergeResultBase
- Object
- Ast::Merge::MergeResultBase
- Markdown::Merge::MergeResult
- Defined in:
- lib/markdown/merge/merge_result.rb
Overview
Represents the result of a Markdown merge operation.
Inherits from Ast::Merge::MergeResultBase to provide consistent result handling across all merge gems. Contains the merged content along with metadata about conflicts, frozen sections, and changes made.
Instance Attribute Summary collapse
-
#problems ⇒ DocumentProblems
readonly
Problems found during merge.
Instance Method Summary collapse
- #apply_unresolved_resolutions!(resolutions) ⇒ Object
-
#conflicts? ⇒ Boolean
Check if there are unresolved conflicts.
-
#content ⇒ String?
Get the merged content as a string.
-
#content? ⇒ Boolean
Check if content has been set (not nil).
-
#content_string ⇒ String?
Get content as a string (alias for content in this class).
-
#frozen_count ⇒ Integer
Get count of frozen blocks preserved.
-
#has_frozen_blocks? ⇒ Boolean
Check if any frozen blocks were preserved.
-
#initialize(content:, raw_content: nil, conflicts: [], frozen_blocks: [], stats: {}, problems: nil, **options) ⇒ MergeResult
constructor
Initialize a new MergeResult.
-
#inspect ⇒ String
String representation for debugging.
-
#merge_time_ms ⇒ Float?
Get merge duration in milliseconds.
-
#nodes_added ⇒ Integer
Get count of nodes added during merge.
-
#nodes_modified ⇒ Integer
Get count of nodes modified during merge.
-
#nodes_removed ⇒ Integer
Get count of nodes removed during merge.
-
#success? ⇒ Boolean
Check if merge was successful (no unresolved conflicts).
-
#to_s ⇒ String
Convert to string (returns merged content).
- #to_unresolved_review_state(selections: {}, metadata: {}) ⇒ Object
Constructor Details
#initialize(content:, raw_content: nil, conflicts: [], frozen_blocks: [], stats: {}, problems: nil, **options) ⇒ MergeResult
Initialize a new MergeResult
47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/markdown/merge/merge_result.rb', line 47 def initialize(content:, raw_content: nil, conflicts: [], frozen_blocks: [], stats: {}, problems: nil, **) super( conflicts: conflicts, frozen_blocks: frozen_blocks, stats: default_stats.merge(stats), ** ) @content_raw = content @raw_content = raw_content || content @problems = problems || DocumentProblems.new end |
Instance Attribute Details
#problems ⇒ DocumentProblems (readonly)
Returns Problems found during merge.
37 38 39 |
# File 'lib/markdown/merge/merge_result.rb', line 37 def problems @problems end |
Instance Method Details
#apply_unresolved_resolutions!(resolutions) ⇒ Object
163 164 165 166 167 168 169 170 |
# File 'lib/markdown/merge/merge_result.rb', line 163 def apply_unresolved_resolutions!(resolutions) normalized = normalize_unresolved_resolutions(resolutions) handled_case_ids = apply_grouped_delegated_resolutions!(normalized) remaining = normalized.reject { |case_id, _| handled_case_ids.include?(case_id) } apply_output_range_resolutions_descending!(remaining) fallback = remaining.reject { |case_id, _| handled_case_ids.include?(case_id) } super(fallback) end |
#conflicts? ⇒ Boolean
Check if there are unresolved conflicts
92 93 94 |
# File 'lib/markdown/merge/merge_result.rb', line 92 def conflicts? !conflicts.empty? end |
#content ⇒ String?
Get the merged content as a string. Overrides base class to return string content directly.
63 64 65 |
# File 'lib/markdown/merge/merge_result.rb', line 63 def content @content_raw end |
#content? ⇒ Boolean
Check if content has been set (not nil). Overrides base class for string-based content.
71 72 73 |
# File 'lib/markdown/merge/merge_result.rb', line 71 def content? !@content_raw.nil? end |
#content_string ⇒ String?
Get content as a string (alias for content in this class).
78 79 80 |
# File 'lib/markdown/merge/merge_result.rb', line 78 def content_string @content_raw end |
#frozen_count ⇒ Integer
Get count of frozen blocks preserved
134 135 136 |
# File 'lib/markdown/merge/merge_result.rb', line 134 def frozen_count frozen_blocks.size end |
#has_frozen_blocks? ⇒ Boolean
Check if any frozen blocks were preserved
99 100 101 |
# File 'lib/markdown/merge/merge_result.rb', line 99 def has_frozen_blocks? !frozen_blocks.empty? end |
#inspect ⇒ String
String representation for debugging
141 142 143 144 145 |
# File 'lib/markdown/merge/merge_result.rb', line 141 def inspect status = success? ? 'success' : 'failed' "#<#{self.class.name} #{status} conflicts=#{conflicts.size} frozen=#{frozen_blocks.size} " \ "added=#{nodes_added} removed=#{nodes_removed} modified=#{nodes_modified}>" end |
#merge_time_ms ⇒ Float?
Get merge duration in milliseconds
127 128 129 |
# File 'lib/markdown/merge/merge_result.rb', line 127 def merge_time_ms stats[:merge_time_ms] end |
#nodes_added ⇒ Integer
Get count of nodes added during merge
106 107 108 |
# File 'lib/markdown/merge/merge_result.rb', line 106 def nodes_added stats[:nodes_added] || 0 end |
#nodes_modified ⇒ Integer
Get count of nodes modified during merge
120 121 122 |
# File 'lib/markdown/merge/merge_result.rb', line 120 def nodes_modified stats[:nodes_modified] || 0 end |
#nodes_removed ⇒ Integer
Get count of nodes removed during merge
113 114 115 |
# File 'lib/markdown/merge/merge_result.rb', line 113 def nodes_removed stats[:nodes_removed] || 0 end |
#success? ⇒ Boolean
Check if merge was successful (no unresolved conflicts)
85 86 87 |
# File 'lib/markdown/merge/merge_result.rb', line 85 def success? conflicts.empty? && content? end |
#to_s ⇒ String
Convert to string (returns merged content)
150 151 152 |
# File 'lib/markdown/merge/merge_result.rb', line 150 def to_s content || '' end |
#to_unresolved_review_state(selections: {}, metadata: {}) ⇒ Object
154 155 156 157 158 159 160 161 |
# File 'lib/markdown/merge/merge_result.rb', line 154 def to_unresolved_review_state(selections: {}, metadata: {}) normalized_selections = normalize_unresolved_resolutions(selections) Ast::Merge::UnresolvedReviewState.new( cases: serializable_unresolved_cases, selections: delegated_applied_selections.merge(normalized_selections), metadata: (, normalized_selections) ) end |