canon 0.3.38 → 0.3.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/canon/version.rb +1 -1
- data/lib/canon/xml/digest_gate.rb +1 -1
- data/lib/canon/xml/tree_builder.rb +1 -1
- data/lib/canon/xml_parsing.rb +27 -0
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6b65514ddc21b35416e7856a21f17f084cde6f6176a0f84dd8ee03a3ec7c8604
|
|
4
|
+
data.tar.gz: e6390a45d84dc78708aa3f043f053c41bba8b68c30170b11a58282581365c09d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 338db190efc246cb7a23f06b4a6f3dc620e969e3029cc2384f52bf8b082f6903dd21883b29316bcff676bb36f446e1fcad8cab434d8590f40b57a32a6d56baca
|
|
7
|
+
data.tar.gz: 602303bc515970ac9085e1a5184d8684604b80c5047d65cc3bf6bb6aa2854fdce1bd9eb3a61b4ee8e0f0c74f3f347d63d62133c9e8df93b51d146eca67807da9
|
data/lib/canon/version.rb
CHANGED
|
@@ -78,7 +78,7 @@ module Canon
|
|
|
78
78
|
return nil unless root
|
|
79
79
|
|
|
80
80
|
skeleton = doc.children.filter_map do |child|
|
|
81
|
-
next if
|
|
81
|
+
next if Canon::XmlParsing.same_engine_node?(child, root)
|
|
82
82
|
|
|
83
83
|
case child
|
|
84
84
|
when Moxml::Comment, Moxml::ProcessingInstruction then child.to_s
|
|
@@ -149,7 +149,7 @@ module Canon
|
|
|
149
149
|
def add_document_children(root, children, document_element,
|
|
150
150
|
skip_types = [])
|
|
151
151
|
children.each do |child|
|
|
152
|
-
next if
|
|
152
|
+
next if Canon::XmlParsing.same_engine_node?(child, document_element)
|
|
153
153
|
next if skip_types.any? { |type| child.is_a?(type) }
|
|
154
154
|
|
|
155
155
|
node = yield child
|
data/lib/canon/xml_parsing.rb
CHANGED
|
@@ -63,6 +63,33 @@ module Canon
|
|
|
63
63
|
end
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
+
# Same underlying engine node? Wrapper identity first (correct
|
|
67
|
+
# everywhere wrappers are unified). Fallback: moxml 0.5.36-0.5.39
|
|
68
|
+
# wrap Document#root and Document#children entries in DIFFERENT
|
|
69
|
+
# wrapper classes for one node (NativeNode vs the FFI Element —
|
|
70
|
+
# moxml#216), so identity fails exactly where consumers exclude
|
|
71
|
+
# the document element from children; the shared C pointer
|
|
72
|
+
# address is the stable identity. Inert once wrappers unify.
|
|
73
|
+
def same_engine_node?(left, right)
|
|
74
|
+
return true if left.equal?(right)
|
|
75
|
+
return false unless defined?(::Moxml::Node) &&
|
|
76
|
+
left.is_a?(::Moxml::Node) && right.is_a?(::Moxml::Node)
|
|
77
|
+
|
|
78
|
+
address_left = moxml_node_address(left)
|
|
79
|
+
address_right = moxml_node_address(right)
|
|
80
|
+
!address_left.nil? && address_left == address_right
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def moxml_node_address(wrapper)
|
|
84
|
+
native = wrapper.native
|
|
85
|
+
case native
|
|
86
|
+
when ::Leptris::XML::NativeNode then native.address
|
|
87
|
+
when ::Leptris::XML::Node then native.c_ptr.address
|
|
88
|
+
end
|
|
89
|
+
rescue StandardError
|
|
90
|
+
nil
|
|
91
|
+
end
|
|
92
|
+
|
|
66
93
|
# --- Type checks (any recognized engine node) ---
|
|
67
94
|
|
|
68
95
|
def document?(obj)
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: canon
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.39
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-09-
|
|
11
|
+
date: 2026-09-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: diff-lcs
|
|
@@ -44,14 +44,14 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 0.5.
|
|
47
|
+
version: 0.5.41
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 0.5.
|
|
54
|
+
version: 0.5.41
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: nokogiri
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|