Class: Lutaml::Xsd::ConflictReport
- Inherits:
-
Model::Serializable
- Object
- Model::Serializable
- Lutaml::Xsd::ConflictReport
- Defined in:
- lib/lutaml/xsd/conflict_report.rb
Overview
Comprehensive conflict report with serialization to_hash, to_json, to_yaml provided by Lutaml::Model
Instance Attribute Summary collapse
-
#package_sources ⇒ Object
Runtime-only reference to PackageSource objects.
Class Method Summary collapse
-
.from_conflicts(namespace_conflicts:, type_conflicts:, schema_conflicts:, package_sources:) ⇒ ConflictReport
Create from detection results.
Instance Method Summary collapse
- #all_conflicts ⇒ Object
- #has_conflicts? ⇒ Boolean
-
#to_s ⇒ String
Human-readable text format.
- #total_conflicts ⇒ Object
Instance Attribute Details
#package_sources ⇒ Object
Runtime-only reference to PackageSource objects
43 44 45 |
# File 'lib/lutaml/xsd/conflict_report.rb', line 43 def package_sources @package_sources end |
Class Method Details
.from_conflicts(namespace_conflicts:, type_conflicts:, schema_conflicts:, package_sources:) ⇒ ConflictReport
Create from detection results
51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/lutaml/xsd/conflict_report.rb', line 51 def self.from_conflicts(namespace_conflicts:, type_conflicts:, schema_conflicts:, package_sources:) report = new( namespace_conflicts: namespace_conflicts, type_conflicts: type_conflicts, schema_conflicts: schema_conflicts, package_info: package_sources.map do |ps| PackageInfo.from_source(ps) end, ) report.package_sources = package_sources report end |
Instance Method Details
#all_conflicts ⇒ Object
73 74 75 |
# File 'lib/lutaml/xsd/conflict_report.rb', line 73 def all_conflicts namespace_conflicts + type_conflicts + schema_conflicts end |
#has_conflicts? ⇒ Boolean
65 66 67 |
# File 'lib/lutaml/xsd/conflict_report.rb', line 65 def has_conflicts? total_conflicts.positive? end |
#to_s ⇒ String
Human-readable text format
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/lutaml/xsd/conflict_report.rb', line 79 def to_s return "✓ No conflicts detected" unless has_conflicts? lines = [] lines << "❌ Package Merge Conflicts Detected" lines << ("=" * 80) lines << "" lines << "Total conflicts: #{total_conflicts}" lines << " - Namespace conflicts: #{namespace_conflicts.size}" lines << " - Type conflicts: #{type_conflicts.size}" lines << " - Schema conflicts: #{schema_conflicts.size}" lines << "" if namespace_conflicts.any? lines << "Namespace URI Conflicts:" lines << ("-" * 80) namespace_conflicts.each_with_index do |conflict, idx| lines << "#{idx + 1}. #{conflict.detailed_description}" lines << "" end end if type_conflicts.any? lines << "Type Name Conflicts:" lines << ("-" * 80) type_conflicts.each_with_index do |conflict, idx| lines << "#{idx + 1}. #{conflict.detailed_description}" lines << "" end end if schema_conflicts.any? lines << "Schema File Conflicts:" lines << ("-" * 80) schema_conflicts.each_with_index do |conflict, idx| lines << "#{idx + 1}. #{conflict.detailed_description}" lines << "" end end lines << format_resolution_strategies lines << "" lines << format_resolution_guidance lines.join("\n") end |
#total_conflicts ⇒ Object
69 70 71 |
# File 'lib/lutaml/xsd/conflict_report.rb', line 69 def total_conflicts namespace_conflicts.size + type_conflicts.size + schema_conflicts.size end |