moxml 0.1.11 → 0.1.13

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 22ee4b9d877466a93b1253a05f5b64f65cb637335f8e5a02b02c357fd87b505d
4
- data.tar.gz: 90c377d7eac0bd5bb9e15393b00c3cfa9e8b5b4eeb80f56d6f52ccb7e11b5774
3
+ metadata.gz: a3d9ee4016fae355b5533b22d992f4a127e788b1a39cef001458c3085133f42d
4
+ data.tar.gz: 79c85ee71c8def65d684cf1243d44871a9120260ec505d48341ef0b96eaa31e0
5
5
  SHA512:
6
- metadata.gz: 73b2b180410acadc4be69bd87948f5966cdd8c8c2480bf61cb66f212e7cd893a6ab31e536f8922dde8814a6e04e57b794206d504b8a479e68288b714b2396ddb
7
- data.tar.gz: ec4a72fc0c930dc2abfef2719dea6cce1ff37efb00e0255f46828f624aaab4007c9f523d39f86680a01f49a8a3a1c4f184319dd6fc6381562bd151167f22f780
6
+ metadata.gz: fda8c13b2491e63200ed771dd85cd29fa15a7bc297583fe8c33b8d9ad8b93b05b4dca29d253d798397c37d3b72304d0588d5f11c95de6e16aba74ea26472cdbb
7
+ data.tar.gz: d1853370b28eee67a4df08cd4b4bdbc83816866282f731eeca15870da119ff1e643898db823d49ee5e98ae1bcfc34370672b29e38abc5ccab542088bb239e3d9
@@ -61,23 +61,23 @@ module Moxml
61
61
  )
62
62
  end
63
63
 
64
- def create_element(name)
64
+ def create_element(name, owner_doc: nil)
65
65
  validate_element_name(name)
66
- create_native_element(name)
66
+ create_native_element(name, owner_doc)
67
67
  end
68
68
 
69
- def create_text(content)
69
+ def create_text(content, owner_doc: nil)
70
70
  # Ox freezes the content, so we need to dup it
71
- create_native_text(normalize_xml_value(content).dup)
71
+ create_native_text(normalize_xml_value(content).dup, owner_doc)
72
72
  end
73
73
 
74
- def create_cdata(content)
75
- create_native_cdata(normalize_xml_value(content))
74
+ def create_cdata(content, owner_doc: nil)
75
+ create_native_cdata(normalize_xml_value(content), owner_doc)
76
76
  end
77
77
 
78
- def create_comment(content)
78
+ def create_comment(content, owner_doc: nil)
79
79
  validate_comment_content(content)
80
- create_native_comment(normalize_xml_value(content))
80
+ create_native_comment(normalize_xml_value(content), owner_doc)
81
81
  end
82
82
 
83
83
  def create_doctype(name, external_id, system_id)
@@ -146,7 +146,7 @@ module Moxml
146
146
 
147
147
  protected
148
148
 
149
- def create_native_element(_name)
149
+ def create_native_element(_name, _owner_doc = nil)
150
150
  raise Moxml::NotImplementedError.new(
151
151
  "create_native_element not implemented",
152
152
  feature: "create_native_element",
@@ -154,7 +154,7 @@ module Moxml
154
154
  )
155
155
  end
156
156
 
157
- def create_native_text(_content)
157
+ def create_native_text(_content, _owner_doc = nil)
158
158
  raise Moxml::NotImplementedError.new(
159
159
  "create_native_text not implemented",
160
160
  feature: "create_native_text",
@@ -162,7 +162,7 @@ module Moxml
162
162
  )
163
163
  end
164
164
 
165
- def create_native_cdata(_content)
165
+ def create_native_cdata(_content, _owner_doc = nil)
166
166
  raise Moxml::NotImplementedError.new(
167
167
  "create_native_cdata not implemented",
168
168
  feature: "create_native_cdata",
@@ -170,7 +170,7 @@ module Moxml
170
170
  )
171
171
  end
172
172
 
173
- def create_native_comment(_content)
173
+ def create_native_comment(_content, _owner_doc = nil)
174
174
  raise Moxml::NotImplementedError.new(
175
175
  "create_native_comment not implemented",
176
176
  feature: "create_native_comment",
@@ -217,6 +217,14 @@ module Moxml
217
217
  adapter: name,
218
218
  )
219
219
  end
220
+
221
+ def in_scope_namespaces(_element)
222
+ raise Moxml::NotImplementedError.new(
223
+ "in_scope_namespaces not implemented",
224
+ feature: "in_scope_namespaces",
225
+ adapter: name,
226
+ )
227
+ end
220
228
  end
221
229
  end
222
230
  end
@@ -126,21 +126,21 @@ module Moxml
126
126
  ::LibXML::XML::Document.new
127
127
  end
128
128
 
129
- def create_native_element(name)
129
+ def create_native_element(name, _owner_doc = nil)
130
130
  ::LibXML::XML::Node.new(name.to_s)
131
131
  end
132
132
 
133
- def create_native_text(content)
133
+ def create_native_text(content, _owner_doc = nil)
134
134
  native = ::LibXML::XML::Node.new_text(content.to_s)
135
135
  CustomizedLibxml::Text.new(native)
136
136
  end
137
137
 
138
- def create_native_cdata(content)
138
+ def create_native_cdata(content, _owner_doc = nil)
139
139
  native = ::LibXML::XML::Node.new_cdata(content.to_s)
140
140
  CustomizedLibxml::Cdata.new(native)
141
141
  end
142
142
 
143
- def create_native_comment(content)
143
+ def create_native_comment(content, _owner_doc = nil)
144
144
  native = ::LibXML::XML::Node.new_comment(content.to_s)
145
145
  CustomizedLibxml::Comment.new(native)
146
146
  end
@@ -70,20 +70,20 @@ module Moxml
70
70
  )
71
71
  end
72
72
 
73
- def create_native_element(name)
74
- ::Nokogiri::XML::Element.new(name, create_document)
73
+ def create_native_element(name, owner_doc = nil)
74
+ ::Nokogiri::XML::Element.new(name, owner_doc || create_document)
75
75
  end
76
76
 
77
- def create_native_text(content)
78
- ::Nokogiri::XML::Text.new(content, create_document)
77
+ def create_native_text(content, owner_doc = nil)
78
+ ::Nokogiri::XML::Text.new(content, owner_doc || create_document)
79
79
  end
80
80
 
81
- def create_native_cdata(content)
82
- ::Nokogiri::XML::CDATA.new(create_document, content)
81
+ def create_native_cdata(content, owner_doc = nil)
82
+ ::Nokogiri::XML::CDATA.new(owner_doc || create_document, content)
83
83
  end
84
84
 
85
- def create_native_comment(content)
86
- ::Nokogiri::XML::Comment.new(create_document, content)
85
+ def create_native_comment(content, owner_doc = nil)
86
+ ::Nokogiri::XML::Comment.new(owner_doc || create_document, content)
87
87
  end
88
88
 
89
89
  def create_native_doctype(name, external_id, system_id)
@@ -288,7 +288,9 @@ module Moxml
288
288
  end
289
289
 
290
290
  def inner_text(node)
291
- text_children = node.children - node.element_children
291
+ text_children = node.children.reject do |c|
292
+ c.element? || c.comment?
293
+ end
292
294
  text_children.map(&:content).join
293
295
  end
294
296
 
@@ -332,6 +334,10 @@ module Moxml
332
334
  node.namespace_definitions
333
335
  end
334
336
 
337
+ def in_scope_namespaces(element)
338
+ element.namespace_scopes
339
+ end
340
+
335
341
  # Doctype accessor methods
336
342
  def doctype_name(native)
337
343
  native.name
@@ -64,19 +64,19 @@ module Moxml
64
64
  ::Oga::XML::Document.new
65
65
  end
66
66
 
67
- def create_native_element(name)
67
+ def create_native_element(name, _owner_doc = nil)
68
68
  ::Oga::XML::Element.new(name: name)
69
69
  end
70
70
 
71
- def create_native_text(content)
71
+ def create_native_text(content, _owner_doc = nil)
72
72
  ::Oga::XML::Text.new(text: encode_entity_markers(content))
73
73
  end
74
74
 
75
- def create_native_cdata(content)
75
+ def create_native_cdata(content, _owner_doc = nil)
76
76
  ::Oga::XML::Cdata.new(text: content)
77
77
  end
78
78
 
79
- def create_native_comment(content)
79
+ def create_native_comment(content, _owner_doc = nil)
80
80
  ::Oga::XML::Comment.new(text: content)
81
81
  end
82
82
 
@@ -67,21 +67,21 @@ module Moxml
67
67
  ::Ox::Document.new(**attrs)
68
68
  end
69
69
 
70
- def create_native_element(name)
70
+ def create_native_element(name, _owner_doc = nil)
71
71
  element = ::Ox::Element.new(name)
72
72
  element.instance_variable_set(:@attributes, {})
73
73
  element
74
74
  end
75
75
 
76
- def create_native_text(content)
76
+ def create_native_text(content, _owner_doc = nil)
77
77
  content
78
78
  end
79
79
 
80
- def create_native_cdata(content)
80
+ def create_native_cdata(content, _owner_doc = nil)
81
81
  ::Ox::CData.new(content)
82
82
  end
83
83
 
84
- def create_native_comment(content)
84
+ def create_native_comment(content, _owner_doc = nil)
85
85
  ::Ox::Comment.new(content)
86
86
  end
87
87
 
@@ -69,19 +69,19 @@ module Moxml
69
69
  ::REXML::Document.new
70
70
  end
71
71
 
72
- def create_native_element(name)
72
+ def create_native_element(name, _owner_doc = nil)
73
73
  ::REXML::Element.new(name.to_s)
74
74
  end
75
75
 
76
- def create_native_text(content)
76
+ def create_native_text(content, _owner_doc = nil)
77
77
  ::REXML::Text.new(content.to_s, true, nil)
78
78
  end
79
79
 
80
- def create_native_cdata(content)
80
+ def create_native_cdata(content, _owner_doc = nil)
81
81
  ::REXML::CData.new(content.to_s)
82
82
  end
83
83
 
84
- def create_native_comment(content)
84
+ def create_native_comment(content, _owner_doc = nil)
85
85
  ::REXML::Comment.new(content.to_s)
86
86
  end
87
87
 
@@ -34,19 +34,19 @@ module Moxml
34
34
  end
35
35
 
36
36
  def create_element(name)
37
- Element.new(adapter.create_element(name), context)
37
+ Element.new(adapter.create_element(name, owner_doc: @native), context)
38
38
  end
39
39
 
40
40
  def create_text(content)
41
- Text.new(adapter.create_text(content), context)
41
+ Text.new(adapter.create_text(content, owner_doc: @native), context)
42
42
  end
43
43
 
44
44
  def create_cdata(content)
45
- Cdata.new(adapter.create_cdata(content), context)
45
+ Cdata.new(adapter.create_cdata(content, owner_doc: @native), context)
46
46
  end
47
47
 
48
48
  def create_comment(content)
49
- Comment.new(adapter.create_comment(content), context)
49
+ Comment.new(adapter.create_comment(content, owner_doc: @native), context)
50
50
  end
51
51
 
52
52
  def create_doctype(name, external_id, system_id)
data/lib/moxml/element.rb CHANGED
@@ -117,6 +117,14 @@ module Moxml
117
117
  end
118
118
  alias namespace_definitions namespaces
119
119
 
120
+ # Returns all namespaces in scope for this element,
121
+ # including those inherited from ancestor elements.
122
+ def in_scope_namespaces
123
+ adapter.in_scope_namespaces(@native).map do |ns|
124
+ Namespace.new(ns, context)
125
+ end
126
+ end
127
+
120
128
  # Returns the namespace URI of this element (alias for namespace_uri)
121
129
  def namespace_name
122
130
  namespace_uri
data/lib/moxml/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Moxml
4
- VERSION = "0.1.11"
4
+ VERSION = "0.1.13"
5
5
  end
@@ -129,6 +129,20 @@ RSpec.shared_examples "Moxml::Element" do
129
129
  expect(outer_p.inner_text).to eq("")
130
130
  expect(inner_p.text).to include("Some text inside paragraph")
131
131
  end
132
+
133
+ it "excludes comment content from inner_text" do
134
+ element.add_child(doc.create_comment("comment text"))
135
+ element.add_child("actual text")
136
+ expect(element.inner_text).to eq("actual text")
137
+ end
138
+
139
+ it "excludes comments mixed with text and elements from inner_text" do
140
+ element.add_child("before ")
141
+ element.add_child(doc.create_comment("a comment"))
142
+ element.add_child(doc.create_element("child"))
143
+ element.add_child("after")
144
+ expect(element.inner_text).to eq("before after")
145
+ end
132
146
  end
133
147
  end
134
148
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moxml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.11
4
+ version: 0.1.13
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-04-16 00:00:00.000000000 Z
11
+ date: 2026-04-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  Moxml is a unified XML manipulation library that provides a common API