Class: Canon::Diff::XmlSerializationFormatter
- Inherits:
-
Object
- Object
- Canon::Diff::XmlSerializationFormatter
- Defined in:
- lib/canon/diff/xml_serialization_formatter.rb
Overview
Detects and classifies XML serialization-level formatting differences.
Serialization formatting differences are ALWAYS non-normative (formatting-only) regardless of match options, because they are purely syntactic variations.
Constant Summary collapse
- NI =
Canon::Comparison::NodeInspector
Class Method Summary collapse
- .blank?(value) ⇒ Boolean
- .empty_text_content_serialization_diff?(diff_node) ⇒ Boolean
- .extract_text_content(node) ⇒ Object
- .serialization_formatting?(diff_node) ⇒ Boolean
- .text_node?(node) ⇒ Boolean
Class Method Details
.blank?(value) ⇒ Boolean
42 43 44 |
# File 'lib/canon/diff/xml_serialization_formatter.rb', line 42 def self.blank?(value) value.nil? || value.to_s.strip.empty? end |
.empty_text_content_serialization_diff?(diff_node) ⇒ Boolean
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/canon/diff/xml_serialization_formatter.rb', line 18 def self.empty_text_content_serialization_diff?(diff_node) return false unless diff_node.dimension == :text_content node1 = diff_node.node1 node2 = diff_node.node2 return false if node1.nil? && node2.nil? if node1.nil? || node2.nil? non_nil = node1 || node2 return false unless text_node?(non_nil) text = extract_text_content(non_nil) return blank?(text) end return false unless text_node?(node1) && text_node?(node2) text1 = extract_text_content(node1) text2 = extract_text_content(node2) blank?(text1) && blank?(text2) end |
.extract_text_content(node) ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/canon/diff/xml_serialization_formatter.rb', line 53 def self.extract_text_content(node) return nil if node.nil? NI.text_content(node) rescue StandardError nil end |
.serialization_formatting?(diff_node) ⇒ Boolean
12 13 14 15 16 |
# File 'lib/canon/diff/xml_serialization_formatter.rb', line 12 def self.serialization_formatting?(diff_node) return false unless diff_node.dimension == :text_content empty_text_content_serialization_diff?(diff_node) end |
.text_node?(node) ⇒ Boolean
46 47 48 49 50 51 |
# File 'lib/canon/diff/xml_serialization_formatter.rb', line 46 def self.text_node?(node) return false if node.nil? return true if node.is_a?(String) NI.text_node?(node) end |