Module: Canon::Xml::NamespaceHelper
- Defined in:
- lib/canon/xml/namespace_helper.rb
Overview
Helper module for formatting namespace information in diff output
Class Method Summary collapse
-
.attribute_mismatch_message(node1, node2) ⇒ String
Generate a mismatch message for attribute differences.
-
.element_mismatch_message(node1, node2) ⇒ String
Generate a mismatch message for element differences.
-
.format_namespace(namespace_uri) ⇒ String
Format a namespace URI for display in diff output.
-
.mismatch_type(node1, node2) ⇒ Symbol
Determine the type of mismatch between two nodes.
Class Method Details
.attribute_mismatch_message(node1, node2) ⇒ String
Generate a mismatch message for attribute differences
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/canon/xml/namespace_helper.rb', line 79 def self.(node1, node2) type = mismatch_type(node1, node2) case type when :name ns = format_namespace(node1.namespace_uri) "mismatched attribute name: '#{node1.name}' vs '#{node2.name}' (#{ns})" when :namespace "mismatched attribute namespace: '#{node1.name}' " \ "(#{format_namespace(node1.namespace_uri)} vs " \ "#{format_namespace(node2.namespace_uri)})" when :both "mismatched attribute name and namespace: " \ "'#{node1.name}' (#{format_namespace(node1.namespace_uri)}) vs " \ "'#{node2.name}' (#{format_namespace(node2.namespace_uri)})" else "attributes differ" end end |
.element_mismatch_message(node1, node2) ⇒ String
Generate a mismatch message for element differences
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/canon/xml/namespace_helper.rb', line 54 def self.(node1, node2) type = mismatch_type(node1, node2) case type when :name ns = format_namespace(node1.namespace_uri) "mismatched element name: '#{node1.name}' vs '#{node2.name}' (#{ns})" when :namespace "mismatched element namespace: '#{node1.name}' " \ "(#{format_namespace(node1.namespace_uri)} vs " \ "#{format_namespace(node2.namespace_uri)})" when :both "mismatched element name and namespace: " \ "'#{node1.name}' (#{format_namespace(node1.namespace_uri)}) vs " \ "'#{node2.name}' (#{format_namespace(node2.namespace_uri)})" else "elements differ" end end |
.format_namespace(namespace_uri) ⇒ String
Format a namespace URI for display in diff output
18 19 20 21 22 23 24 |
# File 'lib/canon/xml/namespace_helper.rb', line 18 def self.format_namespace(namespace_uri) if namespace_uri.nil? || namespace_uri.empty? "ns:[{blank}]" else "ns:[#{namespace_uri}]" end end |
.mismatch_type(node1, node2) ⇒ Symbol
Determine the type of mismatch between two nodes
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/canon/xml/namespace_helper.rb', line 31 def self.mismatch_type(node1, node2) return :none unless node1 && node2 name_differs = node1.name != node2.name namespace_differs = normalize_namespace(node1.namespace_uri) != normalize_namespace(node2.namespace_uri) if name_differs && namespace_differs :both elsif name_differs :name elsif namespace_differs :namespace else :none end end |