zonesync 0.9.0 → 0.10.0

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.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/lib/zonesync/cli.rb +9 -0
  4. data/lib/zonesync/cloudflare.rb +64 -39
  5. data/lib/zonesync/diff.rb +10 -1
  6. data/lib/zonesync/errors.rb +35 -0
  7. data/lib/zonesync/generate.rb +14 -0
  8. data/lib/zonesync/http.rb +24 -8
  9. data/lib/zonesync/logger.rb +20 -15
  10. data/lib/zonesync/manifest.rb +21 -5
  11. data/lib/zonesync/parser.rb +337 -0
  12. data/lib/zonesync/provider.rb +80 -26
  13. data/lib/zonesync/record.rb +18 -23
  14. data/lib/zonesync/route53.rb +48 -27
  15. data/lib/zonesync/sync.rb +40 -0
  16. data/lib/zonesync/validator.rb +19 -15
  17. data/lib/zonesync/version.rb +1 -1
  18. data/lib/zonesync/zonefile.rb +22 -311
  19. data/lib/zonesync.rb +27 -60
  20. data/sorbet/config +4 -0
  21. data/sorbet/rbi/annotations/.gitattributes +1 -0
  22. data/sorbet/rbi/annotations/activesupport.rbi +457 -0
  23. data/sorbet/rbi/annotations/minitest.rbi +119 -0
  24. data/sorbet/rbi/annotations/webmock.rbi +9 -0
  25. data/sorbet/rbi/gems/.gitattributes +1 -0
  26. data/sorbet/rbi/gems/activesupport@8.0.1.rbi +18474 -0
  27. data/sorbet/rbi/gems/addressable@2.8.7.rbi +1994 -0
  28. data/sorbet/rbi/gems/base64@0.2.0.rbi +507 -0
  29. data/sorbet/rbi/gems/benchmark@0.4.0.rbi +618 -0
  30. data/sorbet/rbi/gems/bigdecimal@3.1.9.rbi +9 -0
  31. data/sorbet/rbi/gems/concurrent-ruby@1.3.4.rbi +11645 -0
  32. data/sorbet/rbi/gems/connection_pool@2.4.1.rbi +9 -0
  33. data/sorbet/rbi/gems/crack@1.0.0.rbi +145 -0
  34. data/sorbet/rbi/gems/date@3.4.1.rbi +75 -0
  35. data/sorbet/rbi/gems/diff-lcs@1.5.1.rbi +1131 -0
  36. data/sorbet/rbi/gems/drb@2.2.1.rbi +1347 -0
  37. data/sorbet/rbi/gems/erubi@1.13.1.rbi +155 -0
  38. data/sorbet/rbi/gems/hashdiff@1.1.2.rbi +353 -0
  39. data/sorbet/rbi/gems/i18n@1.14.6.rbi +2275 -0
  40. data/sorbet/rbi/gems/io-console@0.8.0.rbi +9 -0
  41. data/sorbet/rbi/gems/logger@1.6.4.rbi +940 -0
  42. data/sorbet/rbi/gems/minitest@5.25.4.rbi +1547 -0
  43. data/sorbet/rbi/gems/netrc@0.11.0.rbi +159 -0
  44. data/sorbet/rbi/gems/parallel@1.26.3.rbi +291 -0
  45. data/sorbet/rbi/gems/polyglot@0.3.5.rbi +42 -0
  46. data/sorbet/rbi/gems/prism@1.3.0.rbi +40040 -0
  47. data/sorbet/rbi/gems/psych@5.2.2.rbi +1785 -0
  48. data/sorbet/rbi/gems/public_suffix@6.0.1.rbi +936 -0
  49. data/sorbet/rbi/gems/rake@13.2.1.rbi +3028 -0
  50. data/sorbet/rbi/gems/rbi@0.2.2.rbi +4527 -0
  51. data/sorbet/rbi/gems/rdoc@6.10.0.rbi +12766 -0
  52. data/sorbet/rbi/gems/reline@0.6.0.rbi +9 -0
  53. data/sorbet/rbi/gems/rexml@3.4.0.rbi +4974 -0
  54. data/sorbet/rbi/gems/rspec-core@3.13.2.rbi +10896 -0
  55. data/sorbet/rbi/gems/rspec-expectations@3.13.3.rbi +8183 -0
  56. data/sorbet/rbi/gems/rspec-mocks@3.13.2.rbi +5341 -0
  57. data/sorbet/rbi/gems/rspec-support@3.13.2.rbi +1630 -0
  58. data/sorbet/rbi/gems/rspec@3.13.0.rbi +83 -0
  59. data/sorbet/rbi/gems/securerandom@0.4.1.rbi +75 -0
  60. data/sorbet/rbi/gems/spoom@1.5.0.rbi +4932 -0
  61. data/sorbet/rbi/gems/stringio@3.1.2.rbi +9 -0
  62. data/sorbet/rbi/gems/tapioca@0.16.6.rbi +3611 -0
  63. data/sorbet/rbi/gems/thor@1.3.2.rbi +4378 -0
  64. data/sorbet/rbi/gems/treetop@1.6.12.rbi +1895 -0
  65. data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +5918 -0
  66. data/sorbet/rbi/gems/uri@1.0.2.rbi +2340 -0
  67. data/sorbet/rbi/gems/webmock@3.24.0.rbi +1780 -0
  68. data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +435 -0
  69. data/sorbet/rbi/gems/yard@0.9.37.rbi +18379 -0
  70. data/sorbet/rbi/todo.rbi +7 -0
  71. data/sorbet/tapioca/config.yml +13 -0
  72. data/sorbet/tapioca/require.rb +4 -0
  73. data/zonesync.gemspec +3 -0
  74. metadata +100 -2
@@ -0,0 +1,4974 @@
1
+ # typed: false
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `rexml` gem.
5
+ # Please instead update this file by running `bin/tapioca gem rexml`.
6
+
7
+
8
+ # This class needs:
9
+ # * Documentation
10
+ # * Work! Not all types of attlists are intelligently parsed, so we just
11
+ # spew back out what we get in. This works, but it would be better if
12
+ # we formatted the output ourselves.
13
+ #
14
+ # AttlistDecls provide *just* enough support to allow namespace
15
+ # declarations. If you need some sort of generalized support, or have an
16
+ # interesting idea about how to map the hideous, terrible design of DTD
17
+ # AttlistDecls onto an intuitive Ruby interface, let me know. I'm desperate
18
+ # for anything to make DTDs more palateable.
19
+ #
20
+ # source://rexml//lib/rexml/attlistdecl.rb#18
21
+ class REXML::AttlistDecl < ::REXML::Child
22
+ include ::Enumerable
23
+
24
+ # Create an AttlistDecl, pulling the information from a Source. Notice
25
+ # that this isn't very convenient; to create an AttlistDecl, you basically
26
+ # have to format it yourself, and then have the initializer parse it.
27
+ # Sorry, but for the foreseeable future, DTD support in REXML is pretty
28
+ # weak on convenience. Have I mentioned how much I hate DTDs?
29
+ #
30
+ # @return [AttlistDecl] a new instance of AttlistDecl
31
+ #
32
+ # source://rexml//lib/rexml/attlistdecl.rb#29
33
+ def initialize(source); end
34
+
35
+ # Access the attlist attribute/value pairs.
36
+ # value = attlist_decl[ attribute_name ]
37
+ #
38
+ # source://rexml//lib/rexml/attlistdecl.rb#38
39
+ def [](key); end
40
+
41
+ # Iterate over the key/value pairs:
42
+ # attlist_decl.each { |attribute_name, attribute_value| ... }
43
+ #
44
+ # source://rexml//lib/rexml/attlistdecl.rb#50
45
+ def each(&block); end
46
+
47
+ # What is this? Got me.
48
+ #
49
+ # source://rexml//lib/rexml/attlistdecl.rb#22
50
+ def element_name; end
51
+
52
+ # Whether an attlist declaration includes the given attribute definition
53
+ # if attlist_decl.include? "xmlns:foobar"
54
+ #
55
+ # @return [Boolean]
56
+ #
57
+ # source://rexml//lib/rexml/attlistdecl.rb#44
58
+ def include?(key); end
59
+
60
+ # source://rexml//lib/rexml/attlistdecl.rb#59
61
+ def node_type; end
62
+
63
+ # Write out exactly what we got in.
64
+ #
65
+ # source://rexml//lib/rexml/attlistdecl.rb#55
66
+ def write(out, indent = T.unsafe(nil)); end
67
+ end
68
+
69
+ # Defines an Element Attribute; IE, a attribute=value pair, as in:
70
+ # <element attribute="value"/>. Attributes can be in their own
71
+ # namespaces. General users of REXML will not interact with the
72
+ # Attribute class much.
73
+ #
74
+ # source://rexml//lib/rexml/attribute.rb#10
75
+ class REXML::Attribute
76
+ include ::REXML::Node
77
+ include ::REXML::XMLTokens
78
+ include ::REXML::Namespace
79
+
80
+ # Constructor.
81
+ # FIXME: The parser doesn't catch illegal characters in attributes
82
+ #
83
+ # first::
84
+ # Either: an Attribute, which this new attribute will become a
85
+ # clone of; or a String, which is the name of this attribute
86
+ # second::
87
+ # If +first+ is an Attribute, then this may be an Element, or nil.
88
+ # If nil, then the Element parent of this attribute is the parent
89
+ # of the +first+ Attribute. If the first argument is a String,
90
+ # then this must also be a String, and is the content of the attribute.
91
+ # If this is the content, it must be fully normalized (contain no
92
+ # illegal characters).
93
+ # parent::
94
+ # Ignored unless +first+ is a String; otherwise, may be the Element
95
+ # parent of this attribute, or nil.
96
+ #
97
+ #
98
+ # Attribute.new( attribute_to_clone )
99
+ # Attribute.new( attribute_to_clone, parent_element )
100
+ # Attribute.new( "attr", "attr_value" )
101
+ # Attribute.new( "attr", "attr_value", parent_element )
102
+ #
103
+ # @return [Attribute] a new instance of Attribute
104
+ #
105
+ # source://rexml//lib/rexml/attribute.rb#42
106
+ def initialize(first, second = T.unsafe(nil), parent = T.unsafe(nil)); end
107
+
108
+ # Returns true if other is an Attribute and has the same name and value,
109
+ # false otherwise.
110
+ #
111
+ # source://rexml//lib/rexml/attribute.rb#106
112
+ def ==(other); end
113
+
114
+ # Returns a copy of this attribute
115
+ #
116
+ # source://rexml//lib/rexml/attribute.rb#164
117
+ def clone; end
118
+
119
+ # source://rexml//lib/rexml/attribute.rb#132
120
+ def doctype; end
121
+
122
+ # The element to which this attribute belongs
123
+ #
124
+ # source://rexml//lib/rexml/attribute.rb#15
125
+ def element; end
126
+
127
+ # Sets the element of which this object is an attribute. Normally, this
128
+ # is not directly called.
129
+ #
130
+ # Returns this attribute
131
+ #
132
+ # source://rexml//lib/rexml/attribute.rb#172
133
+ def element=(element); end
134
+
135
+ # Creates (and returns) a hash from both the name and value
136
+ #
137
+ # source://rexml//lib/rexml/attribute.rb#111
138
+ def hash; end
139
+
140
+ # source://rexml//lib/rexml/attribute.rb#198
141
+ def inspect; end
142
+
143
+ # Returns the namespace URL, if defined, or nil otherwise
144
+ #
145
+ # e = Element.new("el")
146
+ # e.add_namespace("ns", "http://url")
147
+ # e.add_attribute("ns:a", "b")
148
+ # e.add_attribute("nsx:a", "c")
149
+ # e.attribute("ns:a").namespace # => "http://url"
150
+ # e.attribute("nsx:a").namespace # => nil
151
+ #
152
+ # This method always returns "" for no namespace attribute. Because
153
+ # the default namespace doesn't apply to attribute names.
154
+ #
155
+ # From https://www.w3.org/TR/xml-names/#uniqAttrs
156
+ #
157
+ # > the default namespace does not apply to attribute names
158
+ #
159
+ # e = REXML::Element.new("el")
160
+ # e.add_namespace("", "http://example.com/")
161
+ # e.namespace # => "http://example.com/"
162
+ # e.add_attribute("a", "b")
163
+ # e.attribute("a").namespace # => ""
164
+ #
165
+ # source://rexml//lib/rexml/attribute.rb#95
166
+ def namespace(arg = T.unsafe(nil)); end
167
+
168
+ # source://rexml//lib/rexml/attribute.rb#194
169
+ def node_type; end
170
+
171
+ # The normalized value of this attribute. That is, the attribute with
172
+ # entities intact.
173
+ #
174
+ # source://rexml//lib/rexml/attribute.rb#158
175
+ def normalized=(new_normalized); end
176
+
177
+ # Returns the namespace of the attribute.
178
+ #
179
+ # e = Element.new( "elns:myelement" )
180
+ # e.add_attribute( "nsa:a", "aval" )
181
+ # e.add_attribute( "b", "bval" )
182
+ # e.attributes.get_attribute( "a" ).prefix # -> "nsa"
183
+ # e.attributes.get_attribute( "b" ).prefix # -> ""
184
+ # a = Attribute.new( "x", "y" )
185
+ # a.prefix # -> ""
186
+ #
187
+ # source://rexml//lib/rexml/attribute.rb#70
188
+ def prefix; end
189
+
190
+ # Removes this Attribute from the tree, and returns true if successful
191
+ #
192
+ # This method is usually not called directly.
193
+ #
194
+ # source://rexml//lib/rexml/attribute.rb#185
195
+ def remove; end
196
+
197
+ # Returns the attribute value, with entities replaced
198
+ #
199
+ # source://rexml//lib/rexml/attribute.rb#140
200
+ def to_s; end
201
+
202
+ # Returns this attribute out as XML source, expanding the name
203
+ #
204
+ # a = Attribute.new( "x", "y" )
205
+ # a.to_string # -> "x='y'"
206
+ # b = Attribute.new( "ns:x", "y" )
207
+ # b.to_string # -> "ns:x='y'"
208
+ #
209
+ # source://rexml//lib/rexml/attribute.rb#121
210
+ def to_string; end
211
+
212
+ # Returns the UNNORMALIZED value of this attribute. That is, entities
213
+ # have been expanded to their values
214
+ #
215
+ # source://rexml//lib/rexml/attribute.rb#149
216
+ def value; end
217
+
218
+ # Writes this attribute (EG, puts 'key="value"' to the output)
219
+ #
220
+ # source://rexml//lib/rexml/attribute.rb#190
221
+ def write(output, indent = T.unsafe(nil)); end
222
+
223
+ # source://rexml//lib/rexml/attribute.rb#204
224
+ def xpath; end
225
+ end
226
+
227
+ # A class that defines the set of Attributes of an Element and provides
228
+ # operations for accessing elements in that set.
229
+ #
230
+ # source://rexml//lib/rexml/element.rb#2137
231
+ class REXML::Attributes < ::Hash
232
+ # :call-seq:
233
+ # new(element)
234
+ #
235
+ # Creates and returns a new \REXML::Attributes object.
236
+ # The element given by argument +element+ is stored,
237
+ # but its own attributes are not modified:
238
+ #
239
+ # ele = REXML::Element.new('foo')
240
+ # attrs = REXML::Attributes.new(ele)
241
+ # attrs.object_id == ele.attributes.object_id # => false
242
+ #
243
+ # Other instance methods in class \REXML::Attributes may refer to:
244
+ #
245
+ # - +element.document+.
246
+ # - +element.prefix+.
247
+ # - +element.expanded_name+.
248
+ #
249
+ # @return [Attributes] a new instance of Attributes
250
+ #
251
+ # source://rexml//lib/rexml/element.rb#2156
252
+ def initialize(element); end
253
+
254
+ # :call-seq:
255
+ # add(attribute) -> attribute
256
+ #
257
+ # Adds attribute +attribute+, replacing the previous
258
+ # attribute of the same name if it exists;
259
+ # returns +attribute+:
260
+ #
261
+ # xml_string = <<-EOT
262
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
263
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
264
+ # </root>
265
+ # EOT
266
+ # d = REXML::Document.new(xml_string)
267
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
268
+ # attrs = ele.attributes
269
+ # attrs # => {"att"=>{"foo"=>foo:att='1', "bar"=>bar:att='2', ""=>att='&lt;'}}
270
+ # attrs.add(REXML::Attribute.new('foo:att', '2')) # => foo:att='2'
271
+ # attrs.add(REXML::Attribute.new('baz', '3')) # => baz='3'
272
+ # attrs.include?('baz') # => true
273
+ #
274
+ # source://rexml//lib/rexml/element.rb#2522
275
+ def <<(attribute); end
276
+
277
+ # :call-seq:
278
+ # [name] -> attribute_value or nil
279
+ #
280
+ # Returns the value for the attribute given by +name+,
281
+ # if it exists; otherwise +nil+.
282
+ # The value returned is the unnormalized attribute value,
283
+ # with entities expanded:
284
+ #
285
+ # xml_string = <<-EOT
286
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
287
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
288
+ # </root>
289
+ # EOT
290
+ # d = REXML::Document.new(xml_string)
291
+ # ele = d.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
292
+ # ele.attributes['att'] # => "<"
293
+ # ele.attributes['bar:att'] # => "2"
294
+ # ele.attributes['nosuch'] # => nil
295
+ #
296
+ # Related: get_attribute (returns an \Attribute object).
297
+ #
298
+ # source://rexml//lib/rexml/element.rb#2181
299
+ def [](name); end
300
+
301
+ # :call-seq:
302
+ # [name] = value -> value
303
+ #
304
+ # When +value+ is non-+nil+,
305
+ # assigns that to the attribute for the given +name+,
306
+ # overwriting the previous value if it exists:
307
+ #
308
+ # xml_string = <<-EOT
309
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
310
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
311
+ # </root>
312
+ # EOT
313
+ # d = REXML::Document.new(xml_string)
314
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
315
+ # attrs = ele.attributes
316
+ # attrs['foo:att'] = '2' # => "2"
317
+ # attrs['baz:att'] = '3' # => "3"
318
+ #
319
+ # When +value+ is +nil+, deletes the attribute if it exists:
320
+ #
321
+ # attrs['baz:att'] = nil
322
+ # attrs.include?('baz:att') # => false
323
+ #
324
+ # source://rexml//lib/rexml/element.rb#2365
325
+ def []=(name, value); end
326
+
327
+ # :call-seq:
328
+ # add(attribute) -> attribute
329
+ #
330
+ # Adds attribute +attribute+, replacing the previous
331
+ # attribute of the same name if it exists;
332
+ # returns +attribute+:
333
+ #
334
+ # xml_string = <<-EOT
335
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
336
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
337
+ # </root>
338
+ # EOT
339
+ # d = REXML::Document.new(xml_string)
340
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
341
+ # attrs = ele.attributes
342
+ # attrs # => {"att"=>{"foo"=>foo:att='1', "bar"=>bar:att='2', ""=>att='&lt;'}}
343
+ # attrs.add(REXML::Attribute.new('foo:att', '2')) # => foo:att='2'
344
+ # attrs.add(REXML::Attribute.new('baz', '3')) # => baz='3'
345
+ # attrs.include?('baz') # => true
346
+ #
347
+ # source://rexml//lib/rexml/element.rb#2522
348
+ def add(attribute); end
349
+
350
+ # :call-seq:
351
+ # delete(name) -> element
352
+ # delete(attribute) -> element
353
+ #
354
+ # Removes a specified attribute if it exists;
355
+ # returns the attributes' element.
356
+ #
357
+ # When string argument +name+ is given,
358
+ # removes the attribute of that name if it exists:
359
+ #
360
+ # xml_string = <<-EOT
361
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
362
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
363
+ # </root>
364
+ # EOT
365
+ # d = REXML::Document.new(xml_string)
366
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
367
+ # attrs = ele.attributes
368
+ # attrs.delete('foo:att') # => <ele bar:att='2' att='&lt;'/>
369
+ # attrs.delete('foo:att') # => <ele bar:att='2' att='&lt;'/>
370
+ #
371
+ # When attribute argument +attribute+ is given,
372
+ # removes that attribute if it exists:
373
+ #
374
+ # attr = REXML::Attribute.new('bar:att', '2')
375
+ # attrs.delete(attr) # => <ele att='&lt;'/> # => <ele att='&lt;'/>
376
+ # attrs.delete(attr) # => <ele att='&lt;'/> # => <ele/>
377
+ #
378
+ # source://rexml//lib/rexml/element.rb#2475
379
+ def delete(attribute); end
380
+
381
+ # :call-seq:
382
+ # delete_all(name) -> array_of_removed_attributes
383
+ #
384
+ # Removes all attributes matching the given +name+;
385
+ # returns an array of the removed attributes:
386
+ #
387
+ # xml_string = <<-EOT
388
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
389
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
390
+ # </root>
391
+ # EOT
392
+ # d = REXML::Document.new(xml_string)
393
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
394
+ # attrs = ele.attributes
395
+ # attrs.delete_all('att') # => [att='&lt;']
396
+ #
397
+ # source://rexml//lib/rexml/element.rb#2544
398
+ def delete_all(name); end
399
+
400
+ # :call-seq:
401
+ # each {|expanded_name, value| ... }
402
+ #
403
+ # Calls the given block with each expanded-name/value pair:
404
+ #
405
+ # xml_string = <<-EOT
406
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
407
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
408
+ # </root>
409
+ # EOT
410
+ # d = REXML::Document.new(xml_string)
411
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
412
+ # ele.attributes.each do |expanded_name, value|
413
+ # p [expanded_name, value]
414
+ # end
415
+ #
416
+ # Output:
417
+ #
418
+ # ["foo:att", "1"]
419
+ # ["bar:att", "2"]
420
+ # ["att", "<"]
421
+ #
422
+ # source://rexml//lib/rexml/element.rb#2283
423
+ def each; end
424
+
425
+ # :call-seq:
426
+ # each_attribute {|attr| ... }
427
+ #
428
+ # Calls the given block with each \REXML::Attribute object:
429
+ #
430
+ # xml_string = <<-EOT
431
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
432
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
433
+ # </root>
434
+ # EOT
435
+ # d = REXML::Document.new(xml_string)
436
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
437
+ # ele.attributes.each_attribute do |attr|
438
+ # p [attr.class, attr]
439
+ # end
440
+ #
441
+ # Output:
442
+ #
443
+ # [REXML::Attribute, foo:att='1']
444
+ # [REXML::Attribute, bar:att='2']
445
+ # [REXML::Attribute, att='&lt;']
446
+ #
447
+ # source://rexml//lib/rexml/element.rb#2250
448
+ def each_attribute; end
449
+
450
+ # :call-seq:
451
+ # get_attribute(name) -> attribute_object or nil
452
+ #
453
+ # Returns the \REXML::Attribute object for the given +name+:
454
+ #
455
+ # xml_string = <<-EOT
456
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
457
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
458
+ # </root>
459
+ # EOT
460
+ # d = REXML::Document.new(xml_string)
461
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
462
+ # attrs = ele.attributes
463
+ # attrs.get_attribute('foo:att') # => foo:att='1'
464
+ # attrs.get_attribute('foo:att').class # => REXML::Attribute
465
+ # attrs.get_attribute('bar:att') # => bar:att='2'
466
+ # attrs.get_attribute('att') # => att='&lt;'
467
+ # attrs.get_attribute('nosuch') # => nil
468
+ #
469
+ # source://rexml//lib/rexml/element.rb#2309
470
+ def get_attribute(name); end
471
+
472
+ # :call-seq:
473
+ # get_attribute_ns(namespace, name)
474
+ #
475
+ # Returns the \REXML::Attribute object among the attributes
476
+ # that matches the given +namespace+ and +name+:
477
+ #
478
+ # xml_string = <<-EOT
479
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
480
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
481
+ # </root>
482
+ # EOT
483
+ # d = REXML::Document.new(xml_string)
484
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
485
+ # attrs = ele.attributes
486
+ # attrs.get_attribute_ns('http://foo', 'att') # => foo:att='1'
487
+ # attrs.get_attribute_ns('http://foo', 'nosuch') # => nil
488
+ #
489
+ # source://rexml//lib/rexml/element.rb#2570
490
+ def get_attribute_ns(namespace, name); end
491
+
492
+ # :call-seq:
493
+ # length
494
+ #
495
+ # Returns the count of attributes:
496
+ #
497
+ # xml_string = <<-EOT
498
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
499
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
500
+ # </root>
501
+ # EOT
502
+ # d = REXML::Document.new(xml_string)
503
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
504
+ # ele.attributes.length # => 3
505
+ #
506
+ # source://rexml//lib/rexml/element.rb#2221
507
+ def length; end
508
+
509
+ # :call-seq:
510
+ # namespaces
511
+ #
512
+ # Returns a hash of name/value pairs for the namespaces:
513
+ #
514
+ # xml_string = '<a xmlns="foo" xmlns:x="bar" xmlns:y="twee" z="glorp"/>'
515
+ # d = REXML::Document.new(xml_string)
516
+ # d.root.attributes.namespaces # => {"xmlns"=>"foo", "x"=>"bar", "y"=>"twee"}
517
+ #
518
+ # source://rexml//lib/rexml/element.rb#2431
519
+ def namespaces; end
520
+
521
+ # :call-seq:
522
+ # prefixes -> array_of_prefix_strings
523
+ #
524
+ # Returns an array of prefix strings in the attributes.
525
+ # The array does not include the default
526
+ # namespace declaration, if one exists.
527
+ #
528
+ # xml_string = '<a xmlns="foo" xmlns:x="bar" xmlns:y="twee" z="glorp"/>'
529
+ # d = REXML::Document.new(xml_string)
530
+ # d.root.attributes.prefixes # => ["x", "y"]
531
+ #
532
+ # source://rexml//lib/rexml/element.rb#2406
533
+ def prefixes; end
534
+
535
+ # :call-seq:
536
+ # length
537
+ #
538
+ # Returns the count of attributes:
539
+ #
540
+ # xml_string = <<-EOT
541
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
542
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
543
+ # </root>
544
+ # EOT
545
+ # d = REXML::Document.new(xml_string)
546
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
547
+ # ele.attributes.length # => 3
548
+ #
549
+ # source://rexml//lib/rexml/element.rb#2221
550
+ def size; end
551
+
552
+ # :call-seq:
553
+ # to_a -> array_of_attribute_objects
554
+ #
555
+ # Returns an array of \REXML::Attribute objects representing
556
+ # the attributes:
557
+ #
558
+ # xml_string = <<-EOT
559
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
560
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
561
+ # </root>
562
+ # EOT
563
+ # d = REXML::Document.new(xml_string)
564
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
565
+ # attrs = ele.attributes.to_a # => [foo:att='1', bar:att='2', att='&lt;']
566
+ # attrs.first.class # => REXML::Attribute
567
+ #
568
+ # source://rexml//lib/rexml/element.rb#2203
569
+ def to_a; end
570
+ end
571
+
572
+ # source://rexml//lib/rexml/cdata.rb#5
573
+ class REXML::CData < ::REXML::Text
574
+ # Constructor. CData is data between <![CDATA[ ... ]]>
575
+ #
576
+ # _Examples_
577
+ # CData.new( source )
578
+ # CData.new( "Here is some CDATA" )
579
+ # CData.new( "Some unprocessed data", respect_whitespace_TF, parent_element )
580
+ #
581
+ # @return [CData] a new instance of CData
582
+ #
583
+ # source://rexml//lib/rexml/cdata.rb#16
584
+ def initialize(first, whitespace = T.unsafe(nil), parent = T.unsafe(nil)); end
585
+
586
+ # Make a copy of this object
587
+ #
588
+ # _Examples_
589
+ # c = CData.new( "Some text" )
590
+ # d = c.clone
591
+ # d.to_s # -> "Some text"
592
+ #
593
+ # source://rexml//lib/rexml/cdata.rb#26
594
+ def clone; end
595
+
596
+ # Returns the content of this CData object
597
+ #
598
+ # _Examples_
599
+ # c = CData.new( "Some text" )
600
+ # c.to_s # -> "Some text"
601
+ #
602
+ # source://rexml//lib/rexml/cdata.rb#35
603
+ def to_s; end
604
+
605
+ # source://rexml//lib/rexml/cdata.rb#39
606
+ def value; end
607
+
608
+ # == DEPRECATED
609
+ # See the rexml/formatters package
610
+ #
611
+ # Generates XML output of this object
612
+ #
613
+ # output::
614
+ # Where to write the string. Defaults to $stdout
615
+ # indent::
616
+ # The amount to indent this node by
617
+ # transitive::
618
+ # Ignored
619
+ # ie_hack::
620
+ # Ignored
621
+ #
622
+ # _Examples_
623
+ # c = CData.new( " Some text " )
624
+ # c.write( $stdout ) #-> <![CDATA[ Some text ]]>
625
+ #
626
+ # source://rexml//lib/rexml/cdata.rb#60
627
+ def write(output = T.unsafe(nil), indent = T.unsafe(nil), transitive = T.unsafe(nil), ie_hack = T.unsafe(nil)); end
628
+ end
629
+
630
+ # A Child object is something contained by a parent, and this class
631
+ # contains methods to support that. Most user code will not use this
632
+ # class directly.
633
+ #
634
+ # source://rexml//lib/rexml/child.rb#9
635
+ class REXML::Child
636
+ include ::REXML::Node
637
+
638
+ # Constructor. Any inheritors of this class should call super to make
639
+ # sure this method is called.
640
+ # parent::
641
+ # if supplied, the parent of this child will be set to the
642
+ # supplied value, and self will be added to the parent
643
+ #
644
+ # @return [Child] a new instance of Child
645
+ #
646
+ # source://rexml//lib/rexml/child.rb#18
647
+ def initialize(parent = T.unsafe(nil)); end
648
+
649
+ # This doesn't yet handle encodings
650
+ #
651
+ # source://rexml//lib/rexml/child.rb#91
652
+ def bytes; end
653
+
654
+ # Returns:: the document this child belongs to, or nil if this child
655
+ # belongs to no document
656
+ #
657
+ # source://rexml//lib/rexml/child.rb#85
658
+ def document; end
659
+
660
+ # source://rexml//lib/rexml/node.rb#11
661
+ def next_sibling; end
662
+
663
+ # Sets the next sibling of this child. This can be used to insert a child
664
+ # after some other child.
665
+ # a = Element.new("a")
666
+ # b = a.add_element("b")
667
+ # c = Element.new("c")
668
+ # b.next_sibling = c
669
+ # # => <a><b/><c/></a>
670
+ #
671
+ # source://rexml//lib/rexml/child.rb#68
672
+ def next_sibling=(other); end
673
+
674
+ # The Parent of this object
675
+ #
676
+ # source://rexml//lib/rexml/child.rb#11
677
+ def parent; end
678
+
679
+ # Sets the parent of this child to the supplied argument.
680
+ #
681
+ # other::
682
+ # Must be a Parent object. If this object is the same object as the
683
+ # existing parent of this child, no action is taken. Otherwise, this
684
+ # child is removed from the current parent (if one exists), and is added
685
+ # to the new parent.
686
+ # Returns:: The parent added
687
+ #
688
+ # source://rexml//lib/rexml/child.rb#52
689
+ def parent=(other); end
690
+
691
+ # source://rexml//lib/rexml/node.rb#17
692
+ def previous_sibling; end
693
+
694
+ # Sets the previous sibling of this child. This can be used to insert a
695
+ # child before some other child.
696
+ # a = Element.new("a")
697
+ # b = a.add_element("b")
698
+ # c = Element.new("c")
699
+ # b.previous_sibling = c
700
+ # # => <a><b/><c/></a>
701
+ #
702
+ # source://rexml//lib/rexml/child.rb#79
703
+ def previous_sibling=(other); end
704
+
705
+ # Removes this child from the parent.
706
+ #
707
+ # Returns:: self
708
+ #
709
+ # source://rexml//lib/rexml/child.rb#37
710
+ def remove; end
711
+
712
+ # Replaces this object with another object. Basically, calls
713
+ # Parent.replace_child
714
+ #
715
+ # Returns:: self
716
+ #
717
+ # source://rexml//lib/rexml/child.rb#29
718
+ def replace_with(child); end
719
+ end
720
+
721
+ # Represents an XML comment; that is, text between \<!-- ... -->
722
+ #
723
+ # source://rexml//lib/rexml/comment.rb#7
724
+ class REXML::Comment < ::REXML::Child
725
+ include ::Comparable
726
+
727
+ # Constructor. The first argument can be one of three types:
728
+ # argument. If Comment, the argument is duplicated. If
729
+ # Source, the argument is scanned for a comment.
730
+ # should be nil, not supplied, or a Parent to be set as the parent
731
+ # of this object
732
+ #
733
+ # @param first If String, the contents of this comment are set to the
734
+ # @param second If the first argument is a Source, this argument
735
+ # @return [Comment] a new instance of Comment
736
+ #
737
+ # source://rexml//lib/rexml/comment.rb#24
738
+ def initialize(first, second = T.unsafe(nil)); end
739
+
740
+ # Compares this Comment to another; the contents of the comment are used
741
+ # in the comparison.
742
+ #
743
+ # source://rexml//lib/rexml/comment.rb#63
744
+ def <=>(other); end
745
+
746
+ # Compares this Comment to another; the contents of the comment are used
747
+ # in the comparison.
748
+ #
749
+ # source://rexml//lib/rexml/comment.rb#70
750
+ def ==(other); end
751
+
752
+ # source://rexml//lib/rexml/comment.rb#33
753
+ def clone; end
754
+
755
+ # source://rexml//lib/rexml/comment.rb#75
756
+ def node_type; end
757
+
758
+ # The content text
759
+ #
760
+ # source://rexml//lib/rexml/comment.rb#14
761
+ def string; end
762
+
763
+ # The content text
764
+ #
765
+ # source://rexml//lib/rexml/comment.rb#14
766
+ def string=(_arg0); end
767
+
768
+ # The content text
769
+ #
770
+ # source://rexml//lib/rexml/comment.rb#14
771
+ def to_s; end
772
+
773
+ # == DEPRECATED
774
+ # See REXML::Formatters
775
+ #
776
+ # output::
777
+ # Where to write the string
778
+ # indent::
779
+ # An integer. If -1, no indenting will be used; otherwise, the
780
+ # indentation will be this number of spaces, and children will be
781
+ # indented an additional amount.
782
+ # transitive::
783
+ # Ignored by this class. The contents of comments are never modified.
784
+ # ie_hack::
785
+ # Needed for conformity to the child API, but not used by this class.
786
+ #
787
+ # source://rexml//lib/rexml/comment.rb#50
788
+ def write(output, indent = T.unsafe(nil), transitive = T.unsafe(nil), ie_hack = T.unsafe(nil)); end
789
+ end
790
+
791
+ # source://rexml//lib/rexml/xpath_parser.rb#11
792
+ module REXML::DClonable; end
793
+
794
+ # This is an abstract class. You never use this directly; it serves as a
795
+ # parent class for the specific declarations.
796
+ #
797
+ # source://rexml//lib/rexml/doctype.rb#242
798
+ class REXML::Declaration < ::REXML::Child
799
+ # @return [Declaration] a new instance of Declaration
800
+ #
801
+ # source://rexml//lib/rexml/doctype.rb#243
802
+ def initialize(src); end
803
+
804
+ # source://rexml//lib/rexml/doctype.rb#248
805
+ def to_s; end
806
+
807
+ # == DEPRECATED
808
+ # See REXML::Formatters
809
+ #
810
+ # source://rexml//lib/rexml/doctype.rb#255
811
+ def write(output, indent); end
812
+ end
813
+
814
+ # Represents an XML DOCTYPE declaration; that is, the contents of <!DOCTYPE
815
+ # ... >. DOCTYPES can be used to declare the DTD of a document, as well as
816
+ # being used to declare entities used in the document.
817
+ #
818
+ # source://rexml//lib/rexml/doctype.rb#51
819
+ class REXML::DocType < ::REXML::Parent
820
+ include ::REXML::XMLTokens
821
+
822
+ # Constructor
823
+ #
824
+ # dt = DocType.new( 'foo', '-//I/Hate/External/IDs' )
825
+ # # <!DOCTYPE foo '-//I/Hate/External/IDs'>
826
+ # dt = DocType.new( doctype_to_clone )
827
+ # # Incomplete. Shallow clone of doctype
828
+ #
829
+ # +Note+ that the constructor:
830
+ #
831
+ # Doctype.new( Source.new( "<!DOCTYPE foo 'bar'>" ) )
832
+ #
833
+ # is _deprecated_. Do not use it. It will probably disappear.
834
+ #
835
+ # @return [DocType] a new instance of DocType
836
+ #
837
+ # source://rexml//lib/rexml/doctype.rb#80
838
+ def initialize(first, parent = T.unsafe(nil)); end
839
+
840
+ # source://rexml//lib/rexml/doctype.rb#185
841
+ def add(child); end
842
+
843
+ # source://rexml//lib/rexml/doctype.rb#125
844
+ def attribute_of(element, attribute); end
845
+
846
+ # source://rexml//lib/rexml/doctype.rb#115
847
+ def attributes_of(element); end
848
+
849
+ # source://rexml//lib/rexml/doctype.rb#135
850
+ def clone; end
851
+
852
+ # source://rexml//lib/rexml/doctype.rb#173
853
+ def context; end
854
+
855
+ # name is the name of the doctype
856
+ # external_id is the referenced DTD, if given
857
+ #
858
+ # source://rexml//lib/rexml/doctype.rb#66
859
+ def entities; end
860
+
861
+ # source://rexml//lib/rexml/doctype.rb#181
862
+ def entity(name); end
863
+
864
+ # name is the name of the doctype
865
+ # external_id is the referenced DTD, if given
866
+ #
867
+ # source://rexml//lib/rexml/doctype.rb#66
868
+ def external_id; end
869
+
870
+ # name is the name of the doctype
871
+ # external_id is the referenced DTD, if given
872
+ #
873
+ # source://rexml//lib/rexml/doctype.rb#66
874
+ def name; end
875
+
876
+ # name is the name of the doctype
877
+ # external_id is the referenced DTD, if given
878
+ #
879
+ # source://rexml//lib/rexml/doctype.rb#66
880
+ def namespaces; end
881
+
882
+ # source://rexml//lib/rexml/doctype.rb#111
883
+ def node_type; end
884
+
885
+ # Retrieves a named notation. Only notations declared in the internal
886
+ # DTD subset can be retrieved.
887
+ #
888
+ # Method contributed by Henrik Martensson
889
+ #
890
+ # source://rexml//lib/rexml/doctype.rb#229
891
+ def notation(name); end
892
+
893
+ # This method returns a list of notations that have been declared in the
894
+ # _internal_ DTD subset. Notations in the external DTD subset are not
895
+ # listed.
896
+ #
897
+ # Method contributed by Henrik Martensson
898
+ #
899
+ # source://rexml//lib/rexml/doctype.rb#221
900
+ def notations; end
901
+
902
+ # This method retrieves the public identifier identifying the document's
903
+ # DTD.
904
+ #
905
+ # Method contributed by Henrik Martensson
906
+ #
907
+ # source://rexml//lib/rexml/doctype.rb#195
908
+ def public; end
909
+
910
+ # This method retrieves the system identifier identifying the document's DTD
911
+ #
912
+ # Method contributed by Henrik Martensson
913
+ #
914
+ # source://rexml//lib/rexml/doctype.rb#207
915
+ def system; end
916
+
917
+ # output::
918
+ # Where to write the string
919
+ # indent::
920
+ # An integer. If -1, no indentation will be used; otherwise, the
921
+ # indentation will be this number of spaces, and children will be
922
+ # indented an additional amount.
923
+ # transitive::
924
+ # Ignored
925
+ # ie_hack::
926
+ # Ignored
927
+ #
928
+ # source://rexml//lib/rexml/doctype.rb#149
929
+ def write(output, indent = T.unsafe(nil), transitive = T.unsafe(nil), ie_hack = T.unsafe(nil)); end
930
+ end
931
+
932
+ # Represents an XML document.
933
+ #
934
+ # A document may have:
935
+ #
936
+ # - A single child that may be accessed via method #root.
937
+ # - An XML declaration.
938
+ # - A document type.
939
+ # - Processing instructions.
940
+ #
941
+ # == In a Hurry?
942
+ #
943
+ # If you're somewhat familiar with XML
944
+ # and have a particular task in mind,
945
+ # you may want to see the
946
+ # {tasks pages}[../doc/rexml/tasks/tocs/master_toc_rdoc.html],
947
+ # and in particular, the
948
+ # {tasks page for documents}[../doc/rexml/tasks/tocs/document_toc_rdoc.html].
949
+ #
950
+ # source://rexml//lib/rexml/document.rb#35
951
+ class REXML::Document < ::REXML::Element
952
+ # :call-seq:
953
+ # new(string = nil, context = {}) -> new_document
954
+ # new(io_stream = nil, context = {}) -> new_document
955
+ # new(document = nil, context = {}) -> new_document
956
+ #
957
+ # Returns a new \REXML::Document object.
958
+ #
959
+ # When no arguments are given,
960
+ # returns an empty document:
961
+ #
962
+ # d = REXML::Document.new
963
+ # d.to_s # => ""
964
+ #
965
+ # When argument +string+ is given, it must be a string
966
+ # containing a valid XML document:
967
+ #
968
+ # xml_string = '<root><foo>Foo</foo><bar>Bar</bar></root>'
969
+ # d = REXML::Document.new(xml_string)
970
+ # d.to_s # => "<root><foo>Foo</foo><bar>Bar</bar></root>"
971
+ #
972
+ # When argument +io_stream+ is given, it must be an \IO object
973
+ # that is opened for reading, and when read must return a valid XML document:
974
+ #
975
+ # File.write('t.xml', xml_string)
976
+ # d = File.open('t.xml', 'r') do |io|
977
+ # REXML::Document.new(io)
978
+ # end
979
+ # d.to_s # => "<root><foo>Foo</foo><bar>Bar</bar></root>"
980
+ #
981
+ # When argument +document+ is given, it must be an existing
982
+ # document object, whose context and attributes (but not children)
983
+ # are cloned into the new document:
984
+ #
985
+ # d = REXML::Document.new(xml_string)
986
+ # d.children # => [<root> ... </>]
987
+ # d.context = {raw: :all, compress_whitespace: :all}
988
+ # d.add_attributes({'bar' => 0, 'baz' => 1})
989
+ # d1 = REXML::Document.new(d)
990
+ # d1.children # => []
991
+ # d1.context # => {:raw=>:all, :compress_whitespace=>:all}
992
+ # d1.attributes # => {"bar"=>bar='0', "baz"=>baz='1'}
993
+ #
994
+ # When argument +context+ is given, it must be a hash
995
+ # containing context entries for the document;
996
+ # see {Element Context}[../doc/rexml/context_rdoc.html]:
997
+ #
998
+ # context = {raw: :all, compress_whitespace: :all}
999
+ # d = REXML::Document.new(xml_string, context)
1000
+ # d.context # => {:raw=>:all, :compress_whitespace=>:all}
1001
+ #
1002
+ # @return [Document] a new instance of Document
1003
+ #
1004
+ # source://rexml//lib/rexml/document.rb#92
1005
+ def initialize(source = T.unsafe(nil), context = T.unsafe(nil)); end
1006
+
1007
+ # :call-seq:
1008
+ # add(xml_decl) -> self
1009
+ # add(doc_type) -> self
1010
+ # add(object) -> self
1011
+ #
1012
+ # Adds an object to the document; returns +self+.
1013
+ #
1014
+ # When argument +xml_decl+ is given,
1015
+ # it must be an REXML::XMLDecl object,
1016
+ # which becomes the XML declaration for the document,
1017
+ # replacing the previous XML declaration if any:
1018
+ #
1019
+ # d = REXML::Document.new
1020
+ # d.xml_decl.to_s # => ""
1021
+ # d.add(REXML::XMLDecl.new('2.0'))
1022
+ # d.xml_decl.to_s # => "<?xml version='2.0'?>"
1023
+ #
1024
+ # When argument +doc_type+ is given,
1025
+ # it must be an REXML::DocType object,
1026
+ # which becomes the document type for the document,
1027
+ # replacing the previous document type, if any:
1028
+ #
1029
+ # d = REXML::Document.new
1030
+ # d.doctype.to_s # => ""
1031
+ # d.add(REXML::DocType.new('foo'))
1032
+ # d.doctype.to_s # => "<!DOCTYPE foo>"
1033
+ #
1034
+ # When argument +object+ (not an REXML::XMLDecl or REXML::DocType object)
1035
+ # is given it is added as the last child:
1036
+ #
1037
+ # d = REXML::Document.new
1038
+ # d.add(REXML::Element.new('foo'))
1039
+ # d.to_s # => "<foo/>"
1040
+ #
1041
+ # source://rexml//lib/rexml/document.rb#172
1042
+ def <<(child); end
1043
+
1044
+ # :call-seq:
1045
+ # add(xml_decl) -> self
1046
+ # add(doc_type) -> self
1047
+ # add(object) -> self
1048
+ #
1049
+ # Adds an object to the document; returns +self+.
1050
+ #
1051
+ # When argument +xml_decl+ is given,
1052
+ # it must be an REXML::XMLDecl object,
1053
+ # which becomes the XML declaration for the document,
1054
+ # replacing the previous XML declaration if any:
1055
+ #
1056
+ # d = REXML::Document.new
1057
+ # d.xml_decl.to_s # => ""
1058
+ # d.add(REXML::XMLDecl.new('2.0'))
1059
+ # d.xml_decl.to_s # => "<?xml version='2.0'?>"
1060
+ #
1061
+ # When argument +doc_type+ is given,
1062
+ # it must be an REXML::DocType object,
1063
+ # which becomes the document type for the document,
1064
+ # replacing the previous document type, if any:
1065
+ #
1066
+ # d = REXML::Document.new
1067
+ # d.doctype.to_s # => ""
1068
+ # d.add(REXML::DocType.new('foo'))
1069
+ # d.doctype.to_s # => "<!DOCTYPE foo>"
1070
+ #
1071
+ # When argument +object+ (not an REXML::XMLDecl or REXML::DocType object)
1072
+ # is given it is added as the last child:
1073
+ #
1074
+ # d = REXML::Document.new
1075
+ # d.add(REXML::Element.new('foo'))
1076
+ # d.to_s # => "<foo/>"
1077
+ #
1078
+ # source://rexml//lib/rexml/document.rb#172
1079
+ def add(child); end
1080
+
1081
+ # :call-seq:
1082
+ # add_element(name_or_element = nil, attributes = nil) -> new_element
1083
+ #
1084
+ # Adds an element to the document by calling REXML::Element.add_element:
1085
+ #
1086
+ # REXML::Element.add_element(name_or_element, attributes)
1087
+ #
1088
+ # source://rexml//lib/rexml/document.rb#211
1089
+ def add_element(arg = T.unsafe(nil), arg2 = T.unsafe(nil)); end
1090
+
1091
+ # :call-seq:
1092
+ # clone -> new_document
1093
+ #
1094
+ # Returns the new document resulting from executing
1095
+ # <tt>Document.new(self)</tt>. See Document.new.
1096
+ #
1097
+ # source://rexml//lib/rexml/document.rb#122
1098
+ def clone; end
1099
+
1100
+ # :call-seq:
1101
+ # doctype -> doc_type or nil
1102
+ #
1103
+ # Returns the DocType object for the document, if it exists, otherwise +nil+:
1104
+ #
1105
+ # d = REXML::Document.new('<!DOCTYPE document SYSTEM "subjects.dtd">')
1106
+ # d.doctype.class # => REXML::DocType
1107
+ # d = REXML::Document.new('')
1108
+ # d.doctype.class # => nil
1109
+ #
1110
+ # source://rexml//lib/rexml/document.rb#243
1111
+ def doctype; end
1112
+
1113
+ # source://rexml//lib/rexml/document.rb#446
1114
+ def document; end
1115
+
1116
+ # :call-seq:
1117
+ # encoding -> encoding_string
1118
+ #
1119
+ # Returns the XMLDecl encoding of the document,
1120
+ #
1121
+ # d = REXML::Document.new('<?xml version="1.0" encoding="UTF-16"?>')
1122
+ # d.encoding # => "UTF-16"
1123
+ # d = REXML::Document.new('')
1124
+ # d.encoding # => "UTF-8"
1125
+ #
1126
+ # source://rexml//lib/rexml/document.rb#292
1127
+ def encoding; end
1128
+
1129
+ # Returns the value of attribute entity_expansion_count.
1130
+ #
1131
+ # source://rexml//lib/rexml/document.rb#435
1132
+ def entity_expansion_count; end
1133
+
1134
+ # Sets the attribute entity_expansion_limit
1135
+ #
1136
+ # @param value the value to set the attribute entity_expansion_limit to.
1137
+ #
1138
+ # source://rexml//lib/rexml/document.rb#436
1139
+ def entity_expansion_limit=(_arg0); end
1140
+
1141
+ # Returns the value of attribute entity_expansion_text_limit.
1142
+ #
1143
+ # source://rexml//lib/rexml/document.rb#437
1144
+ def entity_expansion_text_limit; end
1145
+
1146
+ # Sets the attribute entity_expansion_text_limit
1147
+ #
1148
+ # @param value the value to set the attribute entity_expansion_text_limit to.
1149
+ #
1150
+ # source://rexml//lib/rexml/document.rb#437
1151
+ def entity_expansion_text_limit=(_arg0); end
1152
+
1153
+ # :call-seq:
1154
+ # expanded_name -> empty_string
1155
+ #
1156
+ # Returns an empty string.
1157
+ #
1158
+ # source://rexml//lib/rexml/document.rb#131
1159
+ def expanded_name; end
1160
+
1161
+ # :call-seq:
1162
+ # expanded_name -> empty_string
1163
+ #
1164
+ # Returns an empty string.
1165
+ # d = doc_type
1166
+ # d ? d.name : "UNDEFINED"
1167
+ #
1168
+ # source://rexml//lib/rexml/document.rb#131
1169
+ def name; end
1170
+
1171
+ # :call-seq:
1172
+ # node_type -> :document
1173
+ #
1174
+ # Returns the symbol +:document+.
1175
+ #
1176
+ # source://rexml//lib/rexml/document.rb#112
1177
+ def node_type; end
1178
+
1179
+ # source://rexml//lib/rexml/document.rb#439
1180
+ def record_entity_expansion; end
1181
+
1182
+ # :call-seq:
1183
+ # root -> root_element or nil
1184
+ #
1185
+ # Returns the root element of the document, if it exists, otherwise +nil+:
1186
+ #
1187
+ # d = REXML::Document.new('<root></root>')
1188
+ # d.root # => <root/>
1189
+ # d = REXML::Document.new('')
1190
+ # d.root # => nil
1191
+ #
1192
+ # source://rexml//lib/rexml/document.rb#227
1193
+ def root; end
1194
+
1195
+ # :call-seq:
1196
+ # stand_alone?
1197
+ #
1198
+ # Returns the XMLDecl standalone value of the document as a string,
1199
+ # if it has been set, otherwise the default standalone value:
1200
+ #
1201
+ # d = REXML::Document.new('<?xml standalone="yes"?>')
1202
+ # d.stand_alone? # => "yes"
1203
+ # d = REXML::Document.new('')
1204
+ # d.stand_alone? # => nil
1205
+ #
1206
+ # @return [Boolean]
1207
+ #
1208
+ # source://rexml//lib/rexml/document.rb#307
1209
+ def stand_alone?; end
1210
+
1211
+ # :call-seq:
1212
+ # version -> version_string
1213
+ #
1214
+ # Returns the XMLDecl version of this document as a string,
1215
+ # if it has been set, otherwise the default version:
1216
+ #
1217
+ # d = REXML::Document.new('<?xml version="2.0" encoding="UTF-8"?>')
1218
+ # d.version # => "2.0"
1219
+ # d = REXML::Document.new('')
1220
+ # d.version # => "1.0"
1221
+ #
1222
+ # source://rexml//lib/rexml/document.rb#277
1223
+ def version; end
1224
+
1225
+ # :call-seq:
1226
+ # doc.write(output=$stdout, indent=-1, transtive=false, ie_hack=false, encoding=nil)
1227
+ # doc.write(options={:output => $stdout, :indent => -1, :transtive => false, :ie_hack => false, :encoding => nil})
1228
+ #
1229
+ # Write the XML tree out, optionally with indent. This writes out the
1230
+ # entire XML document, including XML declarations, doctype declarations,
1231
+ # and processing instructions (if any are given).
1232
+ #
1233
+ # A controversial point is whether Document should always write the XML
1234
+ # declaration (<?xml version='1.0'?>) whether or not one is given by the
1235
+ # user (or source document). REXML does not write one if one was not
1236
+ # specified, because it adds unnecessary bandwidth to applications such
1237
+ # as XML-RPC.
1238
+ #
1239
+ # Accept Nth argument style and options Hash style as argument.
1240
+ # The recommended style is options Hash style for one or more
1241
+ # arguments case.
1242
+ #
1243
+ # _Examples_
1244
+ # Document.new("<a><b/></a>").write
1245
+ #
1246
+ # output = ""
1247
+ # Document.new("<a><b/></a>").write(output)
1248
+ #
1249
+ # output = ""
1250
+ # Document.new("<a><b/></a>").write(:output => output, :indent => 2)
1251
+ #
1252
+ # See also the classes in the rexml/formatters package for the proper way
1253
+ # to change the default formatting of XML output.
1254
+ #
1255
+ # _Examples_
1256
+ #
1257
+ # output = ""
1258
+ # tr = Transitive.new
1259
+ # tr.write(Document.new("<a><b/></a>"), output)
1260
+ #
1261
+ # output::
1262
+ # output an object which supports '<< string'; this is where the
1263
+ # document will be written.
1264
+ # indent::
1265
+ # An integer. If -1, no indenting will be used; otherwise, the
1266
+ # indentation will be twice this number of spaces, and children will be
1267
+ # indented an additional amount. For a value of 3, every item will be
1268
+ # indented 3 more levels, or 6 more spaces (2 * 3). Defaults to -1
1269
+ # transitive::
1270
+ # If transitive is true and indent is >= 0, then the output will be
1271
+ # pretty-printed in such a way that the added whitespace does not affect
1272
+ # the absolute *value* of the document -- that is, it leaves the value
1273
+ # and number of Text nodes in the document unchanged.
1274
+ # ie_hack::
1275
+ # This hack inserts a space before the /> on empty tags to address
1276
+ # a limitation of Internet Explorer. Defaults to false
1277
+ # Encoding name as String. Change output encoding to specified encoding
1278
+ # instead of encoding in XML declaration.
1279
+ # Defaults to nil. It means encoding in XML declaration is used.
1280
+ #
1281
+ # source://rexml//lib/rexml/document.rb#367
1282
+ def write(*arguments); end
1283
+
1284
+ # :call-seq:
1285
+ # xml_decl -> xml_decl
1286
+ #
1287
+ # Returns the XMLDecl object for the document, if it exists,
1288
+ # otherwise the default XMLDecl object:
1289
+ #
1290
+ # d = REXML::Document.new('<?xml version="1.0" encoding="UTF-8"?>')
1291
+ # d.xml_decl.class # => REXML::XMLDecl
1292
+ # d.xml_decl.to_s # => "<?xml version='1.0' encoding='UTF-8'?>"
1293
+ # d = REXML::Document.new('')
1294
+ # d.xml_decl.class # => REXML::XMLDecl
1295
+ # d.xml_decl.to_s # => ""
1296
+ #
1297
+ # source://rexml//lib/rexml/document.rb#260
1298
+ def xml_decl; end
1299
+
1300
+ private
1301
+
1302
+ # source://rexml//lib/rexml/document.rb#451
1303
+ def build(source); end
1304
+
1305
+ class << self
1306
+ # Get the entity expansion limit. By default the limit is set to 10000.
1307
+ #
1308
+ # Deprecated. Use REXML::Security.entity_expansion_limit= instead.
1309
+ #
1310
+ # source://rexml//lib/rexml/document.rb#417
1311
+ def entity_expansion_limit; end
1312
+
1313
+ # Set the entity expansion limit. By default the limit is set to 10000.
1314
+ #
1315
+ # Deprecated. Use REXML::Security.entity_expansion_limit= instead.
1316
+ #
1317
+ # source://rexml//lib/rexml/document.rb#410
1318
+ def entity_expansion_limit=(val); end
1319
+
1320
+ # Get the entity expansion limit. By default the limit is set to 10240.
1321
+ #
1322
+ # Deprecated. Use REXML::Security.entity_expansion_text_limit instead.
1323
+ #
1324
+ # source://rexml//lib/rexml/document.rb#431
1325
+ def entity_expansion_text_limit; end
1326
+
1327
+ # Set the entity expansion limit. By default the limit is set to 10240.
1328
+ #
1329
+ # Deprecated. Use REXML::Security.entity_expansion_text_limit= instead.
1330
+ #
1331
+ # source://rexml//lib/rexml/document.rb#424
1332
+ def entity_expansion_text_limit=(val); end
1333
+
1334
+ # source://rexml//lib/rexml/document.rb#403
1335
+ def parse_stream(source, listener); end
1336
+ end
1337
+ end
1338
+
1339
+ # An \REXML::Element object represents an XML element.
1340
+ #
1341
+ # An element:
1342
+ #
1343
+ # - Has a name (string).
1344
+ # - May have a parent (another element).
1345
+ # - Has zero or more children
1346
+ # (other elements, text, CDATA, processing instructions, and comments).
1347
+ # - Has zero or more siblings
1348
+ # (other elements, text, CDATA, processing instructions, and comments).
1349
+ # - Has zero or more named attributes.
1350
+ #
1351
+ # == In a Hurry?
1352
+ #
1353
+ # If you're somewhat familiar with XML
1354
+ # and have a particular task in mind,
1355
+ # you may want to see the
1356
+ # {tasks pages}[../doc/rexml/tasks/tocs/master_toc_rdoc.html],
1357
+ # and in particular, the
1358
+ # {tasks page for elements}[../doc/rexml/tasks/tocs/element_toc_rdoc.html].
1359
+ #
1360
+ # === Name
1361
+ #
1362
+ # An element has a name, which is initially set when the element is created:
1363
+ #
1364
+ # e = REXML::Element.new('foo')
1365
+ # e.name # => "foo"
1366
+ #
1367
+ # The name may be changed:
1368
+ #
1369
+ # e.name = 'bar'
1370
+ # e.name # => "bar"
1371
+ #
1372
+ #
1373
+ # === \Parent
1374
+ #
1375
+ # An element may have a parent.
1376
+ #
1377
+ # Its parent may be assigned explicitly when the element is created:
1378
+ #
1379
+ # e0 = REXML::Element.new('foo')
1380
+ # e1 = REXML::Element.new('bar', e0)
1381
+ # e1.parent # => <foo> ... </>
1382
+ #
1383
+ # Note: the representation of an element always shows the element's name.
1384
+ # If the element has children, the representation indicates that
1385
+ # by including an ellipsis (<tt>...</tt>).
1386
+ #
1387
+ # The parent may be assigned explicitly at any time:
1388
+ #
1389
+ # e2 = REXML::Element.new('baz')
1390
+ # e1.parent = e2
1391
+ # e1.parent # => <baz/>
1392
+ #
1393
+ # When an element is added as a child, its parent is set automatically:
1394
+ #
1395
+ # e1.add_element(e0)
1396
+ # e0.parent # => <bar> ... </>
1397
+ #
1398
+ # For an element that has no parent, method +parent+ returns +nil+.
1399
+ #
1400
+ # === Children
1401
+ #
1402
+ # An element has zero or more children.
1403
+ # The children are an ordered collection
1404
+ # of all objects whose parent is the element itself.
1405
+ #
1406
+ # The children may include any combination of elements, text, comments,
1407
+ # processing instructions, and CDATA.
1408
+ # (This example keeps things clean by controlling whitespace
1409
+ # via a +context+ setting.)
1410
+ #
1411
+ # xml_string = <<-EOT
1412
+ # <root>
1413
+ # <ele_0/>
1414
+ # text 0
1415
+ # <!--comment 0-->
1416
+ # <?target_0 pi_0?>
1417
+ # <![CDATA[cdata 0]]>
1418
+ # <ele_1/>
1419
+ # text 1
1420
+ # <!--comment 1-->
1421
+ # <?target_0 pi_1?>
1422
+ # <![CDATA[cdata 1]]>
1423
+ # </root>
1424
+ # EOT
1425
+ # context = {ignore_whitespace_nodes: :all, compress_whitespace: :all}
1426
+ # d = REXML::Document.new(xml_string, context)
1427
+ # root = d.root
1428
+ # root.children.size # => 10
1429
+ # root.each {|child| p "#{child.class}: #{child}" }
1430
+ #
1431
+ # Output:
1432
+ #
1433
+ # "REXML::Element: <ele_0/>"
1434
+ # "REXML::Text: \n text 0\n "
1435
+ # "REXML::Comment: comment 0"
1436
+ # "REXML::Instruction: <?target_0 pi_0?>"
1437
+ # "REXML::CData: cdata 0"
1438
+ # "REXML::Element: <ele_1/>"
1439
+ # "REXML::Text: \n text 1\n "
1440
+ # "REXML::Comment: comment 1"
1441
+ # "REXML::Instruction: <?target_0 pi_1?>"
1442
+ # "REXML::CData: cdata 1"
1443
+ #
1444
+ # A child may be added using inherited methods
1445
+ # Parent#insert_before or Parent#insert_after:
1446
+ #
1447
+ # xml_string = '<root><a/><c/><d/></root>'
1448
+ # d = REXML::Document.new(xml_string)
1449
+ # root = d.root
1450
+ # c = d.root[1] # => <c/>
1451
+ # root.insert_before(c, REXML::Element.new('b'))
1452
+ # root.to_a # => [<a/>, <b/>, <c/>, <d/>]
1453
+ #
1454
+ # A child may be replaced using Parent#replace_child:
1455
+ #
1456
+ # root.replace_child(c, REXML::Element.new('x'))
1457
+ # root.to_a # => [<a/>, <b/>, <x/>, <d/>]
1458
+ #
1459
+ # A child may be removed using Parent#delete:
1460
+ #
1461
+ # x = root[2] # => <x/>
1462
+ # root.delete(x)
1463
+ # root.to_a # => [<a/>, <b/>, <d/>]
1464
+ #
1465
+ # === Siblings
1466
+ #
1467
+ # An element has zero or more siblings,
1468
+ # which are the other children of the element's parent.
1469
+ #
1470
+ # In the example above, element +ele_1+ is between a CDATA sibling
1471
+ # and a text sibling:
1472
+ #
1473
+ # ele_1 = root[5] # => <ele_1/>
1474
+ # ele_1.previous_sibling # => "cdata 0"
1475
+ # ele_1.next_sibling # => "\n text 1\n "
1476
+ #
1477
+ # === \Attributes
1478
+ #
1479
+ # An element has zero or more named attributes.
1480
+ #
1481
+ # A new element has no attributes:
1482
+ #
1483
+ # e = REXML::Element.new('foo')
1484
+ # e.attributes # => {}
1485
+ #
1486
+ # Attributes may be added:
1487
+ #
1488
+ # e.add_attribute('bar', 'baz')
1489
+ # e.add_attribute('bat', 'bam')
1490
+ # e.attributes.size # => 2
1491
+ # e['bar'] # => "baz"
1492
+ # e['bat'] # => "bam"
1493
+ #
1494
+ # An existing attribute may be modified:
1495
+ #
1496
+ # e.add_attribute('bar', 'bad')
1497
+ # e.attributes.size # => 2
1498
+ # e['bar'] # => "bad"
1499
+ #
1500
+ # An existing attribute may be deleted:
1501
+ #
1502
+ # e.delete_attribute('bar')
1503
+ # e.attributes.size # => 1
1504
+ # e['bar'] # => nil
1505
+ #
1506
+ # == What's Here
1507
+ #
1508
+ # To begin with, what's elsewhere?
1509
+ #
1510
+ # \Class \REXML::Element inherits from its ancestor classes:
1511
+ #
1512
+ # - REXML::Child
1513
+ # - REXML::Parent
1514
+ #
1515
+ # \REXML::Element itself and its ancestors also include modules:
1516
+ #
1517
+ # - {Enumerable}[https://docs.ruby-lang.org/en/master/Enumerable.html]
1518
+ # - REXML::Namespace
1519
+ # - REXML::Node
1520
+ # - REXML::XMLTokens
1521
+ #
1522
+ # === Methods for Creating an \Element
1523
+ #
1524
+ # ::new:: Returns a new empty element.
1525
+ # #clone:: Returns a clone of another element.
1526
+ #
1527
+ # === Methods for Attributes
1528
+ #
1529
+ # {[attribute_name]}[#method-i-5B-5D]:: Returns an attribute value.
1530
+ # #add_attribute:: Adds a new attribute.
1531
+ # #add_attributes:: Adds multiple new attributes.
1532
+ # #attribute:: Returns the attribute value for a given name and optional namespace.
1533
+ # #delete_attribute:: Removes an attribute.
1534
+ #
1535
+ # === Methods for Children
1536
+ #
1537
+ # {[index]}[#method-i-5B-5D]:: Returns the child at the given offset.
1538
+ # #add_element:: Adds an element as the last child.
1539
+ # #delete_element:: Deletes a child element.
1540
+ # #each_element:: Calls the given block with each child element.
1541
+ # #each_element_with_attribute:: Calls the given block with each child element
1542
+ # that meets given criteria,
1543
+ # which can include the attribute name.
1544
+ # #each_element_with_text:: Calls the given block with each child element
1545
+ # that meets given criteria,
1546
+ # which can include text.
1547
+ # #get_elements:: Returns an array of element children that match a given xpath.
1548
+ #
1549
+ # === Methods for \Text Children
1550
+ #
1551
+ # #add_text:: Adds a text node to the element.
1552
+ # #get_text:: Returns a text node that meets specified criteria.
1553
+ # #text:: Returns the text string from the first node that meets specified criteria.
1554
+ # #texts:: Returns an array of the text children of the element.
1555
+ # #text=:: Adds, removes, or replaces the first text child of the element
1556
+ #
1557
+ # === Methods for Other Children
1558
+ #
1559
+ # #cdatas:: Returns an array of the cdata children of the element.
1560
+ # #comments:: Returns an array of the comment children of the element.
1561
+ # #instructions:: Returns an array of the instruction children of the element.
1562
+ #
1563
+ # === Methods for Namespaces
1564
+ #
1565
+ # #add_namespace:: Adds a namespace to the element.
1566
+ # #delete_namespace:: Removes a namespace from the element.
1567
+ # #namespace:: Returns the string namespace URI for the element.
1568
+ # #namespaces:: Returns a hash of all defined namespaces in the element.
1569
+ # #prefixes:: Returns an array of the string prefixes (names)
1570
+ # of all defined namespaces in the element
1571
+ #
1572
+ # === Methods for Querying
1573
+ #
1574
+ # #document:: Returns the document, if any, that the element belongs to.
1575
+ # #root:: Returns the most distant element (not document) ancestor of the element.
1576
+ # #root_node:: Returns the most distant ancestor of the element.
1577
+ # #xpath:: Returns the string xpath to the element
1578
+ # relative to the most distant parent
1579
+ # #has_attributes?:: Returns whether the element has attributes.
1580
+ # #has_elements?:: Returns whether the element has elements.
1581
+ # #has_text?:: Returns whether the element has text.
1582
+ # #next_element:: Returns the next sibling that is an element.
1583
+ # #previous_element:: Returns the previous sibling that is an element.
1584
+ # #raw:: Returns whether raw mode is set for the element.
1585
+ # #whitespace:: Returns whether whitespace is respected for the element.
1586
+ # #ignore_whitespace_nodes:: Returns whether whitespace nodes
1587
+ # are to be ignored for the element.
1588
+ # #node_type:: Returns symbol <tt>:element</tt>.
1589
+ #
1590
+ # === One More Method
1591
+ #
1592
+ # #inspect:: Returns a string representation of the element.
1593
+ #
1594
+ # === Accessors
1595
+ #
1596
+ # #elements:: Returns the REXML::Elements object for the element.
1597
+ # #attributes:: Returns the REXML::Attributes object for the element.
1598
+ # #context:: Returns or sets the context hash for the element.
1599
+ #
1600
+ # source://rexml//lib/rexml/element.rb#271
1601
+ class REXML::Element < ::REXML::Parent
1602
+ include ::REXML::XMLTokens
1603
+ include ::REXML::Namespace
1604
+
1605
+ # :call-seq:
1606
+ # Element.new(name = 'UNDEFINED', parent = nil, context = nil) -> new_element
1607
+ # Element.new(element, parent = nil, context = nil) -> new_element
1608
+ #
1609
+ # Returns a new \REXML::Element object.
1610
+ #
1611
+ # When no arguments are given,
1612
+ # returns an element with name <tt>'UNDEFINED'</tt>:
1613
+ #
1614
+ # e = REXML::Element.new # => <UNDEFINED/>
1615
+ # e.class # => REXML::Element
1616
+ # e.name # => "UNDEFINED"
1617
+ #
1618
+ # When only argument +name+ is given,
1619
+ # returns an element of the given name:
1620
+ #
1621
+ # REXML::Element.new('foo') # => <foo/>
1622
+ #
1623
+ # When only argument +element+ is given, it must be an \REXML::Element object;
1624
+ # returns a shallow copy of the given element:
1625
+ #
1626
+ # e0 = REXML::Element.new('foo')
1627
+ # e1 = REXML::Element.new(e0) # => <foo/>
1628
+ #
1629
+ # When argument +parent+ is also given, it must be an REXML::Parent object:
1630
+ #
1631
+ # e = REXML::Element.new('foo', REXML::Parent.new)
1632
+ # e.parent # => #<REXML::Parent @parent=nil, @children=[<foo/>]>
1633
+ #
1634
+ # When argument +context+ is also given, it must be a hash
1635
+ # representing the context for the element;
1636
+ # see {Element Context}[../doc/rexml/context_rdoc.html]:
1637
+ #
1638
+ # e = REXML::Element.new('foo', nil, {raw: :all})
1639
+ # e.context # => {:raw=>:all}
1640
+ #
1641
+ # @return [Element] a new instance of Element
1642
+ #
1643
+ # source://rexml//lib/rexml/element.rb#319
1644
+ def initialize(arg = T.unsafe(nil), parent = T.unsafe(nil), context = T.unsafe(nil)); end
1645
+
1646
+ # :call-seq:
1647
+ # [index] -> object
1648
+ # [attr_name] -> attr_value
1649
+ # [attr_sym] -> attr_value
1650
+ #
1651
+ # With integer argument +index+ given,
1652
+ # returns the child at offset +index+, or +nil+ if none:
1653
+ #
1654
+ # d = REXML::Document.new '><root><a/>text<b/>more<c/></root>'
1655
+ # root = d.root
1656
+ # (0..root.size).each do |index|
1657
+ # node = root[index]
1658
+ # p "#{index}: #{node} (#{node.class})"
1659
+ # end
1660
+ #
1661
+ # Output:
1662
+ #
1663
+ # "0: <a/> (REXML::Element)"
1664
+ # "1: text (REXML::Text)"
1665
+ # "2: <b/> (REXML::Element)"
1666
+ # "3: more (REXML::Text)"
1667
+ # "4: <c/> (REXML::Element)"
1668
+ # "5: (NilClass)"
1669
+ #
1670
+ # With string argument +attr_name+ given,
1671
+ # returns the string value for the given attribute name if it exists,
1672
+ # otherwise +nil+:
1673
+ #
1674
+ # d = REXML::Document.new('<root attr="value"></root>')
1675
+ # root = d.root
1676
+ # root['attr'] # => "value"
1677
+ # root['nosuch'] # => nil
1678
+ #
1679
+ # With symbol argument +attr_sym+ given,
1680
+ # returns <tt>[attr_sym.to_s]</tt>:
1681
+ #
1682
+ # root[:attr] # => "value"
1683
+ # root[:nosuch] # => nil
1684
+ #
1685
+ # source://rexml//lib/rexml/element.rb#1246
1686
+ def [](name_or_index); end
1687
+
1688
+ # :call-seq:
1689
+ # add_attribute(name, value) -> value
1690
+ # add_attribute(attribute) -> attribute
1691
+ #
1692
+ # Adds an attribute to this element, overwriting any existing attribute
1693
+ # by the same name.
1694
+ #
1695
+ # With string argument +name+ and object +value+ are given,
1696
+ # adds the attribute created with that name and value:
1697
+ #
1698
+ # e = REXML::Element.new
1699
+ # e.add_attribute('attr', 'value') # => "value"
1700
+ # e['attr'] # => "value"
1701
+ # e.add_attribute('attr', 'VALUE') # => "VALUE"
1702
+ # e['attr'] # => "VALUE"
1703
+ #
1704
+ # With only attribute object +attribute+ given,
1705
+ # adds the given attribute:
1706
+ #
1707
+ # a = REXML::Attribute.new('attr', 'value')
1708
+ # e.add_attribute(a) # => attr='value'
1709
+ # e['attr'] # => "value"
1710
+ # a = REXML::Attribute.new('attr', 'VALUE')
1711
+ # e.add_attribute(a) # => attr='VALUE'
1712
+ # e['attr'] # => "VALUE"
1713
+ #
1714
+ # source://rexml//lib/rexml/element.rb#1345
1715
+ def add_attribute(key, value = T.unsafe(nil)); end
1716
+
1717
+ # :call-seq:
1718
+ # add_attributes(hash) -> hash
1719
+ # add_attributes(array)
1720
+ #
1721
+ # Adds zero or more attributes to the element;
1722
+ # returns the argument.
1723
+ #
1724
+ # If hash argument +hash+ is given,
1725
+ # each key must be a string;
1726
+ # adds each attribute created with the key/value pair:
1727
+ #
1728
+ # e = REXML::Element.new
1729
+ # h = {'foo' => 'bar', 'baz' => 'bat'}
1730
+ # e.add_attributes(h)
1731
+ #
1732
+ # If argument +array+ is given,
1733
+ # each array member must be a 2-element array <tt>[name, value];
1734
+ # each name must be a string:
1735
+ #
1736
+ # e = REXML::Element.new
1737
+ # a = [['foo' => 'bar'], ['baz' => 'bat']]
1738
+ # e.add_attributes(a)
1739
+ #
1740
+ # source://rexml//lib/rexml/element.rb#1376
1741
+ def add_attributes(hash); end
1742
+
1743
+ # :call-seq:
1744
+ # add_element(name, attributes = nil) -> new_element
1745
+ # add_element(element, attributes = nil) -> element
1746
+ #
1747
+ # Adds a child element, optionally setting attributes
1748
+ # on the added element; returns the added element.
1749
+ #
1750
+ # With string argument +name+, creates a new element with that name
1751
+ # and adds the new element as a child:
1752
+ #
1753
+ # e0 = REXML::Element.new('foo')
1754
+ # e0.add_element('bar')
1755
+ # e0[0] # => <bar/>
1756
+ #
1757
+ #
1758
+ # With argument +name+ and hash argument +attributes+,
1759
+ # sets attributes on the new element:
1760
+ #
1761
+ # e0.add_element('baz', {'bat' => '0', 'bam' => '1'})
1762
+ # e0[1] # => <baz bat='0' bam='1'/>
1763
+ #
1764
+ # With element argument +element+, adds that element as a child:
1765
+ #
1766
+ # e0 = REXML::Element.new('foo')
1767
+ # e1 = REXML::Element.new('bar')
1768
+ # e0.add_element(e1)
1769
+ # e0[0] # => <bar/>
1770
+ #
1771
+ # With argument +element+ and hash argument +attributes+,
1772
+ # sets attributes on the added element:
1773
+ #
1774
+ # e0.add_element(e1, {'bat' => '0', 'bam' => '1'})
1775
+ # e0[1] # => <bar bat='0' bam='1'/>
1776
+ #
1777
+ # source://rexml//lib/rexml/element.rb#732
1778
+ def add_element(element, attrs = T.unsafe(nil)); end
1779
+
1780
+ # :call-seq:
1781
+ # add_namespace(prefix, uri = nil) -> self
1782
+ #
1783
+ # Adds a namespace to the element; returns +self+.
1784
+ #
1785
+ # With the single argument +prefix+,
1786
+ # adds a namespace using the given +prefix+ and the namespace URI:
1787
+ #
1788
+ # e = REXML::Element.new('foo')
1789
+ # e.add_namespace('bar')
1790
+ # e.namespaces # => {"xmlns"=>"bar"}
1791
+ #
1792
+ # With both arguments +prefix+ and +uri+ given,
1793
+ # adds a namespace using both arguments:
1794
+ #
1795
+ # e.add_namespace('baz', 'bat')
1796
+ # e.namespaces # => {"xmlns"=>"bar", "baz"=>"bat"}
1797
+ #
1798
+ # source://rexml//lib/rexml/element.rb#655
1799
+ def add_namespace(prefix, uri = T.unsafe(nil)); end
1800
+
1801
+ # :call-seq:
1802
+ # add_text(string) -> nil
1803
+ # add_text(text_node) -> self
1804
+ #
1805
+ # Adds text to the element.
1806
+ #
1807
+ # When string argument +string+ is given, returns +nil+.
1808
+ #
1809
+ # If the element has no child text node,
1810
+ # creates a \REXML::Text object using the string,
1811
+ # honoring the current settings for whitespace and raw,
1812
+ # then adds that node to the element:
1813
+ #
1814
+ # d = REXML::Document.new('<a><b/></a>')
1815
+ # a = d.root
1816
+ # a.add_text('foo')
1817
+ # a.to_a # => [<b/>, "foo"]
1818
+ #
1819
+ # If the element has child text nodes,
1820
+ # appends the string to the _last_ text node:
1821
+ #
1822
+ # d = REXML::Document.new('<a>foo<b/>bar</a>')
1823
+ # a = d.root
1824
+ # a.add_text('baz')
1825
+ # a.to_a # => ["foo", <b/>, "barbaz"]
1826
+ # a.add_text('baz')
1827
+ # a.to_a # => ["foo", <b/>, "barbazbaz"]
1828
+ #
1829
+ # When text node argument +text_node+ is given,
1830
+ # appends the node as the last text node in the element;
1831
+ # returns +self+:
1832
+ #
1833
+ # d = REXML::Document.new('<a>foo<b/>bar</a>')
1834
+ # a = d.root
1835
+ # a.add_text(REXML::Text.new('baz'))
1836
+ # a.to_a # => ["foo", <b/>, "bar", "baz"]
1837
+ # a.add_text(REXML::Text.new('baz'))
1838
+ # a.to_a # => ["foo", <b/>, "bar", "baz", "baz"]
1839
+ #
1840
+ # source://rexml//lib/rexml/element.rb#1147
1841
+ def add_text(text); end
1842
+
1843
+ # :call-seq:
1844
+ # attribute(name, namespace = nil)
1845
+ #
1846
+ # Returns the string value for the given attribute name.
1847
+ #
1848
+ # With only argument +name+ given,
1849
+ # returns the value of the named attribute if it exists, otherwise +nil+:
1850
+ #
1851
+ # xml_string = <<-EOT
1852
+ # <root xmlns="ns0">
1853
+ # <a xmlns="ns1" attr="value"></a>
1854
+ # <b xmlns="ns2" attr="value"></b>
1855
+ # <c attr="value"/>
1856
+ # </root>
1857
+ # EOT
1858
+ # d = REXML::Document.new(xml_string)
1859
+ # root = d.root
1860
+ # a = root[1] # => <a xmlns='ns1' attr='value'/>
1861
+ # a.attribute('attr') # => attr='value'
1862
+ # a.attribute('nope') # => nil
1863
+ #
1864
+ # With arguments +name+ and +namespace+ given,
1865
+ # returns the value of the named attribute if it exists, otherwise +nil+:
1866
+ #
1867
+ # xml_string = "<root xmlns:a='a' a:x='a:x' x='x'/>"
1868
+ # document = REXML::Document.new(xml_string)
1869
+ # document.root.attribute("x") # => x='x'
1870
+ # document.root.attribute("x", "a") # => a:x='a:x'
1871
+ #
1872
+ # source://rexml//lib/rexml/element.rb#1287
1873
+ def attribute(name, namespace = T.unsafe(nil)); end
1874
+
1875
+ # Mechanisms for accessing attributes and child elements of this
1876
+ # element.
1877
+ #
1878
+ # source://rexml//lib/rexml/element.rb#278
1879
+ def attributes; end
1880
+
1881
+ # :call-seq:
1882
+ # cdatas -> array_of_cdata_children
1883
+ #
1884
+ # Returns a frozen array of the REXML::CData children of the element:
1885
+ #
1886
+ # xml_string = <<-EOT
1887
+ # <root>
1888
+ # <![CDATA[foo]]>
1889
+ # <![CDATA[bar]]>
1890
+ # </root>
1891
+ # EOT
1892
+ # d = REXML::Document.new(xml_string)
1893
+ # cds = d.root.cdatas # => ["foo", "bar"]
1894
+ # cds.frozen? # => true
1895
+ # cds.map {|cd| cd.class } # => [REXML::CData, REXML::CData]
1896
+ #
1897
+ # source://rexml//lib/rexml/element.rb#1420
1898
+ def cdatas; end
1899
+
1900
+ # :call-seq:
1901
+ # clone -> new_element
1902
+ #
1903
+ # Returns a shallow copy of the element, containing the name and attributes,
1904
+ # but not the parent or children:
1905
+ #
1906
+ # e = REXML::Element.new('foo')
1907
+ # e.add_attributes({'bar' => 0, 'baz' => 1})
1908
+ # e.clone # => <foo bar='0' baz='1'/>
1909
+ #
1910
+ # source://rexml//lib/rexml/element.rb#383
1911
+ def clone; end
1912
+
1913
+ # :call-seq:
1914
+ # comments -> array_of_comment_children
1915
+ #
1916
+ # Returns a frozen array of the REXML::Comment children of the element:
1917
+ #
1918
+ # xml_string = <<-EOT
1919
+ # <root>
1920
+ # <!--foo-->
1921
+ # <!--bar-->
1922
+ # </root>
1923
+ # EOT
1924
+ # d = REXML::Document.new(xml_string)
1925
+ # cs = d.root.comments
1926
+ # cs.frozen? # => true
1927
+ # cs.map {|c| c.class } # => [REXML::Comment, REXML::Comment]
1928
+ # cs.map {|c| c.to_s } # => ["foo", "bar"]
1929
+ #
1930
+ # source://rexml//lib/rexml/element.rb#1441
1931
+ def comments; end
1932
+
1933
+ # The context holds information about the processing environment, such as
1934
+ # whitespace handling.
1935
+ #
1936
+ # source://rexml//lib/rexml/element.rb#281
1937
+ def context; end
1938
+
1939
+ # The context holds information about the processing environment, such as
1940
+ # whitespace handling.
1941
+ #
1942
+ # source://rexml//lib/rexml/element.rb#281
1943
+ def context=(_arg0); end
1944
+
1945
+ # :call-seq:
1946
+ # delete_attribute(name) -> removed_attribute or nil
1947
+ #
1948
+ # Removes a named attribute if it exists;
1949
+ # returns the removed attribute if found, otherwise +nil+:
1950
+ #
1951
+ # e = REXML::Element.new('foo')
1952
+ # e.add_attribute('bar', 'baz')
1953
+ # e.delete_attribute('bar') # => <bar/>
1954
+ # e.delete_attribute('bar') # => nil
1955
+ #
1956
+ # source://rexml//lib/rexml/element.rb#1395
1957
+ def delete_attribute(key); end
1958
+
1959
+ # :call-seq:
1960
+ # delete_element(index) -> removed_element or nil
1961
+ # delete_element(element) -> removed_element or nil
1962
+ # delete_element(xpath) -> removed_element or nil
1963
+ #
1964
+ # Deletes a child element.
1965
+ #
1966
+ # When 1-based integer argument +index+ is given,
1967
+ # removes and returns the child element at that offset if it exists;
1968
+ # indexing does not include text nodes;
1969
+ # returns +nil+ if the element does not exist:
1970
+ #
1971
+ # d = REXML::Document.new '<a><b/>text<c/></a>'
1972
+ # a = d.root # => <a> ... </>
1973
+ # a.delete_element(1) # => <b/>
1974
+ # a.delete_element(1) # => <c/>
1975
+ # a.delete_element(1) # => nil
1976
+ #
1977
+ # When element argument +element+ is given,
1978
+ # removes and returns that child element if it exists,
1979
+ # otherwise returns +nil+:
1980
+ #
1981
+ # d = REXML::Document.new '<a><b/>text<c/></a>'
1982
+ # a = d.root # => <a> ... </>
1983
+ # c = a[2] # => <c/>
1984
+ # a.delete_element(c) # => <c/>
1985
+ # a.delete_element(c) # => nil
1986
+ #
1987
+ # When xpath argument +xpath+ is given,
1988
+ # removes and returns the element at xpath if it exists,
1989
+ # otherwise returns +nil+:
1990
+ #
1991
+ # d = REXML::Document.new '<a><b/>text<c/></a>'
1992
+ # a = d.root # => <a> ... </>
1993
+ # a.delete_element('//c') # => <c/>
1994
+ # a.delete_element('//c') # => nil
1995
+ #
1996
+ # source://rexml//lib/rexml/element.rb#778
1997
+ def delete_element(element); end
1998
+
1999
+ # :call-seq:
2000
+ # delete_namespace(namespace = 'xmlns') -> self
2001
+ #
2002
+ # Removes a namespace from the element.
2003
+ #
2004
+ # With no argument, removes the default namespace:
2005
+ #
2006
+ # d = REXML::Document.new "<a xmlns:foo='bar' xmlns='twiddle'/>"
2007
+ # d.to_s # => "<a xmlns:foo='bar' xmlns='twiddle'/>"
2008
+ # d.root.delete_namespace # => <a xmlns:foo='bar'/>
2009
+ # d.to_s # => "<a xmlns:foo='bar'/>"
2010
+ #
2011
+ # With argument +namespace+, removes the specified namespace:
2012
+ #
2013
+ # d.root.delete_namespace('foo')
2014
+ # d.to_s # => "<a/>"
2015
+ #
2016
+ # Does nothing if no such namespace is found:
2017
+ #
2018
+ # d.root.delete_namespace('nosuch')
2019
+ # d.to_s # => "<a/>"
2020
+ #
2021
+ # source://rexml//lib/rexml/element.rb#687
2022
+ def delete_namespace(namespace = T.unsafe(nil)); end
2023
+
2024
+ # :call-seq:
2025
+ # document -> document or nil
2026
+ #
2027
+ # If the element is part of a document, returns that document:
2028
+ #
2029
+ # d = REXML::Document.new('<a><b><c/></b></a>')
2030
+ # top_element = d.first
2031
+ # child = top_element.first
2032
+ # top_element.document == d # => true
2033
+ # child.document == d # => true
2034
+ #
2035
+ # If the element is not part of a document, returns +nil+:
2036
+ #
2037
+ # REXML::Element.new.document # => nil
2038
+ #
2039
+ # For a document, returns +self+:
2040
+ #
2041
+ # d.document == d # => true
2042
+ #
2043
+ # Related: #root, #root_node.
2044
+ #
2045
+ # source://rexml//lib/rexml/element.rb#475
2046
+ def document; end
2047
+
2048
+ # :call-seq:
2049
+ # each_element {|e| ... }
2050
+ #
2051
+ # Calls the given block with each child element:
2052
+ #
2053
+ # d = REXML::Document.new '<a><b>b</b><c>b</c><d>d</d><e/></a>'
2054
+ # a = d.root
2055
+ # a.each_element {|e| p e }
2056
+ #
2057
+ # Output:
2058
+ #
2059
+ # <b> ... </>
2060
+ # <c> ... </>
2061
+ # <d> ... </>
2062
+ # <e/>
2063
+ #
2064
+ # source://rexml//lib/rexml/element.rb#930
2065
+ def each_element(xpath = T.unsafe(nil), &block); end
2066
+
2067
+ # :call-seq:
2068
+ # each_element_with_attribute(attr_name, value = nil, max = 0, xpath = nil) {|e| ... }
2069
+ #
2070
+ # Calls the given block with each child element that meets given criteria.
2071
+ #
2072
+ # When only string argument +attr_name+ is given,
2073
+ # calls the block with each child element that has that attribute:
2074
+ #
2075
+ # d = REXML::Document.new '<a><b id="1"/><c id="2"/><d id="1"/><e/></a>'
2076
+ # a = d.root
2077
+ # a.each_element_with_attribute('id') {|e| p e }
2078
+ #
2079
+ # Output:
2080
+ #
2081
+ # <b id='1'/>
2082
+ # <c id='2'/>
2083
+ # <d id='1'/>
2084
+ #
2085
+ # With argument +attr_name+ and string argument +value+ given,
2086
+ # calls the block with each child element that has that attribute
2087
+ # with that value:
2088
+ #
2089
+ # a.each_element_with_attribute('id', '1') {|e| p e }
2090
+ #
2091
+ # Output:
2092
+ #
2093
+ # <b id='1'/>
2094
+ # <d id='1'/>
2095
+ #
2096
+ # With arguments +attr_name+, +value+, and integer argument +max+ given,
2097
+ # calls the block with at most +max+ child elements:
2098
+ #
2099
+ # a.each_element_with_attribute('id', '1', 1) {|e| p e }
2100
+ #
2101
+ # Output:
2102
+ #
2103
+ # <b id='1'/>
2104
+ #
2105
+ # With all arguments given, including +xpath+,
2106
+ # calls the block with only those child elements
2107
+ # that meet the first three criteria,
2108
+ # and also match the given +xpath+:
2109
+ #
2110
+ # a.each_element_with_attribute('id', '1', 2, '//d') {|e| p e }
2111
+ #
2112
+ # Output:
2113
+ #
2114
+ # <d id='1'/>
2115
+ #
2116
+ # source://rexml//lib/rexml/element.rb#847
2117
+ def each_element_with_attribute(key, value = T.unsafe(nil), max = T.unsafe(nil), name = T.unsafe(nil), &block); end
2118
+
2119
+ # :call-seq:
2120
+ # each_element_with_text(text = nil, max = 0, xpath = nil) {|e| ... }
2121
+ #
2122
+ # Calls the given block with each child element that meets given criteria.
2123
+ #
2124
+ # With no arguments, calls the block with each child element that has text:
2125
+ #
2126
+ # d = REXML::Document.new '<a><b>b</b><c>b</c><d>d</d><e/></a>'
2127
+ # a = d.root
2128
+ # a.each_element_with_text {|e| p e }
2129
+ #
2130
+ # Output:
2131
+ #
2132
+ # <b> ... </>
2133
+ # <c> ... </>
2134
+ # <d> ... </>
2135
+ #
2136
+ # With the single string argument +text+,
2137
+ # calls the block with each element that has exactly that text:
2138
+ #
2139
+ # a.each_element_with_text('b') {|e| p e }
2140
+ #
2141
+ # Output:
2142
+ #
2143
+ # <b> ... </>
2144
+ # <c> ... </>
2145
+ #
2146
+ # With argument +text+ and integer argument +max+,
2147
+ # calls the block with at most +max+ elements:
2148
+ #
2149
+ # a.each_element_with_text('b', 1) {|e| p e }
2150
+ #
2151
+ # Output:
2152
+ #
2153
+ # <b> ... </>
2154
+ #
2155
+ # With all arguments given, including +xpath+,
2156
+ # calls the block with only those child elements
2157
+ # that meet the first two criteria,
2158
+ # and also match the given +xpath+:
2159
+ #
2160
+ # a.each_element_with_text('b', 2, '//c') {|e| p e }
2161
+ #
2162
+ # Output:
2163
+ #
2164
+ # <c> ... </>
2165
+ #
2166
+ # source://rexml//lib/rexml/element.rb#904
2167
+ def each_element_with_text(text = T.unsafe(nil), max = T.unsafe(nil), name = T.unsafe(nil), &block); end
2168
+
2169
+ # Mechanisms for accessing attributes and child elements of this
2170
+ # element.
2171
+ #
2172
+ # source://rexml//lib/rexml/element.rb#278
2173
+ def elements; end
2174
+
2175
+ # :call-seq:
2176
+ # get_elements(xpath)
2177
+ #
2178
+ # Returns an array of the elements that match the given +xpath+:
2179
+ #
2180
+ # xml_string = <<-EOT
2181
+ # <root>
2182
+ # <a level='1'>
2183
+ # <a level='2'/>
2184
+ # </a>
2185
+ # </root>
2186
+ # EOT
2187
+ # d = REXML::Document.new(xml_string)
2188
+ # d.root.get_elements('//a') # => [<a level='1'> ... </>, <a level='2'/>]
2189
+ #
2190
+ # source://rexml//lib/rexml/element.rb#949
2191
+ def get_elements(xpath); end
2192
+
2193
+ # :call-seq:
2194
+ # get_text(xpath = nil) -> text_node or nil
2195
+ #
2196
+ # Returns the first text node child in a specified element, if it exists,
2197
+ # +nil+ otherwise.
2198
+ #
2199
+ # With no argument, returns the first text node from +self+:
2200
+ #
2201
+ # d = REXML::Document.new "<p>some text <b>this is bold!</b> more text</p>"
2202
+ # d.root.get_text.class # => REXML::Text
2203
+ # d.root.get_text # => "some text "
2204
+ #
2205
+ # With argument +xpath+, returns the first text node from the element
2206
+ # that matches +xpath+:
2207
+ #
2208
+ # d.root.get_text(1) # => "this is bold!"
2209
+ #
2210
+ # source://rexml//lib/rexml/element.rb#1053
2211
+ def get_text(path = T.unsafe(nil)); end
2212
+
2213
+ # :call-seq:
2214
+ # has_attributes? -> true or false
2215
+ #
2216
+ # Returns +true+ if the element has attributes, +false+ otherwise:
2217
+ #
2218
+ # d = REXML::Document.new('<root><a attr="val"/><b/></root>')
2219
+ # a, b = *d.root
2220
+ # a.has_attributes? # => true
2221
+ # b.has_attributes? # => false
2222
+ #
2223
+ # @return [Boolean]
2224
+ #
2225
+ # source://rexml//lib/rexml/element.rb#1315
2226
+ def has_attributes?; end
2227
+
2228
+ # :call-seq:
2229
+ # has_elements?
2230
+ #
2231
+ # Returns +true+ if the element has one or more element children,
2232
+ # +false+ otherwise:
2233
+ #
2234
+ # d = REXML::Document.new '<a><b/>text<c/></a>'
2235
+ # a = d.root # => <a> ... </>
2236
+ # a.has_elements? # => true
2237
+ # b = a[0] # => <b/>
2238
+ # b.has_elements? # => false
2239
+ #
2240
+ # @return [Boolean]
2241
+ #
2242
+ # source://rexml//lib/rexml/element.rb#794
2243
+ def has_elements?; end
2244
+
2245
+ # :call-seq:
2246
+ # has_text? -> true or false
2247
+ #
2248
+ # Returns +true+ if the element has one or more text noded,
2249
+ # +false+ otherwise:
2250
+ #
2251
+ # d = REXML::Document.new '<a><b/>text<c/></a>'
2252
+ # a = d.root
2253
+ # a.has_text? # => true
2254
+ # b = a[0]
2255
+ # b.has_text? # => false
2256
+ #
2257
+ # @return [Boolean]
2258
+ #
2259
+ # source://rexml//lib/rexml/element.rb#1002
2260
+ def has_text?; end
2261
+
2262
+ # :call-seq:
2263
+ # ignore_whitespace_nodes
2264
+ #
2265
+ # Returns +true+ if whitespace nodes are ignored for the element.
2266
+ #
2267
+ # See {Element Context}[../doc/rexml/context_rdoc.html].
2268
+ #
2269
+ # source://rexml//lib/rexml/element.rb#513
2270
+ def ignore_whitespace_nodes; end
2271
+
2272
+ # :call-seq:
2273
+ # inspect -> string
2274
+ #
2275
+ # Returns a string representation of the element.
2276
+ #
2277
+ # For an element with no attributes and no children, shows the element name:
2278
+ #
2279
+ # REXML::Element.new.inspect # => "<UNDEFINED/>"
2280
+ #
2281
+ # Shows attributes, if any:
2282
+ #
2283
+ # e = REXML::Element.new('foo')
2284
+ # e.add_attributes({'bar' => 0, 'baz' => 1})
2285
+ # e.inspect # => "<foo bar='0' baz='1'/>"
2286
+ #
2287
+ # Shows an ellipsis (<tt>...</tt>), if there are child elements:
2288
+ #
2289
+ # e.add_element(REXML::Element.new('bar'))
2290
+ # e.add_element(REXML::Element.new('baz'))
2291
+ # e.inspect # => "<foo bar='0' baz='1'> ... </>"
2292
+ #
2293
+ # source://rexml//lib/rexml/element.rb#358
2294
+ def inspect; end
2295
+
2296
+ # :call-seq:
2297
+ # instructions -> array_of_instruction_children
2298
+ #
2299
+ # Returns a frozen array of the REXML::Instruction children of the element:
2300
+ #
2301
+ # xml_string = <<-EOT
2302
+ # <root>
2303
+ # <?target0 foo?>
2304
+ # <?target1 bar?>
2305
+ # </root>
2306
+ # EOT
2307
+ # d = REXML::Document.new(xml_string)
2308
+ # is = d.root.instructions
2309
+ # is.frozen? # => true
2310
+ # is.map {|i| i.class } # => [REXML::Instruction, REXML::Instruction]
2311
+ # is.map {|i| i.to_s } # => ["<?target0 foo?>", "<?target1 bar?>"]
2312
+ #
2313
+ # source://rexml//lib/rexml/element.rb#1462
2314
+ def instructions; end
2315
+
2316
+ # :call-seq:
2317
+ # namespace(prefix = nil) -> string_uri or nil
2318
+ #
2319
+ # Returns the string namespace URI for the element,
2320
+ # possibly deriving from one of its ancestors.
2321
+ #
2322
+ # xml_string = <<-EOT
2323
+ # <root>
2324
+ # <a xmlns='1' xmlns:y='2'>
2325
+ # <b/>
2326
+ # <c xmlns:z='3'/>
2327
+ # </a>
2328
+ # </root>
2329
+ # EOT
2330
+ # d = REXML::Document.new(xml_string)
2331
+ # b = d.elements['//b']
2332
+ # b.namespace # => "1"
2333
+ # b.namespace('y') # => "2"
2334
+ # b.namespace('nosuch') # => nil
2335
+ #
2336
+ # source://rexml//lib/rexml/element.rb#618
2337
+ def namespace(prefix = T.unsafe(nil)); end
2338
+
2339
+ # :call-seq:
2340
+ # namespaces -> array_of_namespace_names
2341
+ #
2342
+ # Returns a hash of all defined namespaces
2343
+ # in the element and its ancestors:
2344
+ #
2345
+ # xml_string = <<-EOT
2346
+ # <root>
2347
+ # <a xmlns:x='1' xmlns:y='2'>
2348
+ # <b/>
2349
+ # <c xmlns:z='3'/>
2350
+ # </a>
2351
+ # </root>
2352
+ # EOT
2353
+ # d = REXML::Document.new(xml_string)
2354
+ # d.elements['//a'].namespaces # => {"x"=>"1", "y"=>"2"}
2355
+ # d.elements['//b'].namespaces # => {"x"=>"1", "y"=>"2"}
2356
+ # d.elements['//c'].namespaces # => {"x"=>"1", "y"=>"2", "z"=>"3"}
2357
+ #
2358
+ # source://rexml//lib/rexml/element.rb#591
2359
+ def namespaces; end
2360
+
2361
+ # :call-seq:
2362
+ # next_element
2363
+ #
2364
+ # Returns the next sibling that is an element if it exists,
2365
+ # +niL+ otherwise:
2366
+ #
2367
+ # d = REXML::Document.new '<a><b/>text<c/></a>'
2368
+ # d.root.elements['b'].next_element #-> <c/>
2369
+ # d.root.elements['c'].next_element #-> nil
2370
+ #
2371
+ # source://rexml//lib/rexml/element.rb#963
2372
+ def next_element; end
2373
+
2374
+ # :call-seq:
2375
+ # node_type -> :element
2376
+ #
2377
+ # Returns symbol <tt>:element</tt>:
2378
+ #
2379
+ # d = REXML::Document.new('<a/>')
2380
+ # a = d.root # => <a/>
2381
+ # a.node_type # => :element
2382
+ #
2383
+ # source://rexml//lib/rexml/element.rb#1168
2384
+ def node_type; end
2385
+
2386
+ # :call-seq:
2387
+ # prefixes -> array_of_namespace_prefixes
2388
+ #
2389
+ # Returns an array of the string prefixes (names) of all defined namespaces
2390
+ # in the element and its ancestors:
2391
+ #
2392
+ # xml_string = <<-EOT
2393
+ # <root>
2394
+ # <a xmlns:x='1' xmlns:y='2'>
2395
+ # <b/>
2396
+ # <c xmlns:z='3'/>
2397
+ # </a>
2398
+ # </root>
2399
+ # EOT
2400
+ # d = REXML::Document.new(xml_string, {compress_whitespace: :all})
2401
+ # d.elements['//a'].prefixes # => ["x", "y"]
2402
+ # d.elements['//b'].prefixes # => ["x", "y"]
2403
+ # d.elements['//c'].prefixes # => ["x", "y", "z"]
2404
+ #
2405
+ # source://rexml//lib/rexml/element.rb#565
2406
+ def prefixes; end
2407
+
2408
+ # :call-seq:
2409
+ # previous_element
2410
+ #
2411
+ # Returns the previous sibling that is an element if it exists,
2412
+ # +niL+ otherwise:
2413
+ #
2414
+ # d = REXML::Document.new '<a><b/>text<c/></a>'
2415
+ # d.root.elements['c'].previous_element #-> <b/>
2416
+ # d.root.elements['b'].previous_element #-> nil
2417
+ #
2418
+ # source://rexml//lib/rexml/element.rb#979
2419
+ def previous_element; end
2420
+
2421
+ # :call-seq:
2422
+ # raw
2423
+ #
2424
+ # Returns +true+ if raw mode is set for the element.
2425
+ #
2426
+ # See {Element Context}[../doc/rexml/context_rdoc.html].
2427
+ #
2428
+ # The evaluation is tested against +expanded_name+, and so is namespace
2429
+ # sensitive.
2430
+ #
2431
+ # source://rexml//lib/rexml/element.rb#533
2432
+ def raw; end
2433
+
2434
+ # :call-seq:
2435
+ # root -> element
2436
+ #
2437
+ # Returns the most distant _element_ (not document) ancestor of the element:
2438
+ #
2439
+ # d = REXML::Document.new('<a><b><c/></b></a>')
2440
+ # top_element = d.first
2441
+ # child = top_element.first
2442
+ # top_element.root == top_element # => true
2443
+ # child.root == top_element # => true
2444
+ #
2445
+ # For a document, returns the topmost element:
2446
+ #
2447
+ # d.root == top_element # => true
2448
+ #
2449
+ # Related: #root_node, #document.
2450
+ #
2451
+ # source://rexml//lib/rexml/element.rb#443
2452
+ def root; end
2453
+
2454
+ # :call-seq:
2455
+ # root_node -> document or element
2456
+ #
2457
+ # Returns the most distant ancestor of +self+.
2458
+ #
2459
+ # When the element is part of a document,
2460
+ # returns the root node of the document.
2461
+ # Note that the root node is different from the document element;
2462
+ # in this example +a+ is document element and the root node is its parent:
2463
+ #
2464
+ # d = REXML::Document.new('<a><b><c/></b></a>')
2465
+ # top_element = d.first # => <a> ... </>
2466
+ # child = top_element.first # => <b> ... </>
2467
+ # d.root_node == d # => true
2468
+ # top_element.root_node == d # => true
2469
+ # child.root_node == d # => true
2470
+ #
2471
+ # When the element is not part of a document, but does have ancestor elements,
2472
+ # returns the most distant ancestor element:
2473
+ #
2474
+ # e0 = REXML::Element.new('foo')
2475
+ # e1 = REXML::Element.new('bar')
2476
+ # e1.parent = e0
2477
+ # e2 = REXML::Element.new('baz')
2478
+ # e2.parent = e1
2479
+ # e2.root_node == e0 # => true
2480
+ #
2481
+ # When the element has no ancestor elements,
2482
+ # returns +self+:
2483
+ #
2484
+ # e = REXML::Element.new('foo')
2485
+ # e.root_node == e # => true
2486
+ #
2487
+ # Related: #root, #document.
2488
+ #
2489
+ # source://rexml//lib/rexml/element.rb#422
2490
+ def root_node; end
2491
+
2492
+ # :call-seq:
2493
+ # text(xpath = nil) -> text_string or nil
2494
+ #
2495
+ # Returns the text string from the first text node child
2496
+ # in a specified element, if it exists, +nil+ otherwise.
2497
+ #
2498
+ # With no argument, returns the text from the first text node in +self+:
2499
+ #
2500
+ # d = REXML::Document.new "<p>some text <b>this is bold!</b> more text</p>"
2501
+ # d.root.text.class # => String
2502
+ # d.root.text # => "some text "
2503
+ #
2504
+ # With argument +xpath+, returns text from the first text node
2505
+ # in the element that matches +xpath+:
2506
+ #
2507
+ # d.root.text(1) # => "this is bold!"
2508
+ #
2509
+ # Note that an element may have multiple text nodes,
2510
+ # possibly separated by other non-text children, as above.
2511
+ # Even so, the returned value is the string text from the first such node.
2512
+ #
2513
+ # Note also that the text note is retrieved by method get_text,
2514
+ # and so is always normalized text.
2515
+ #
2516
+ # source://rexml//lib/rexml/element.rb#1030
2517
+ def text(path = T.unsafe(nil)); end
2518
+
2519
+ # :call-seq:
2520
+ # text = string -> string
2521
+ # text = nil -> nil
2522
+ #
2523
+ # Adds, replaces, or removes the first text node child in the element.
2524
+ #
2525
+ # With string argument +string+,
2526
+ # creates a new \REXML::Text node containing that string,
2527
+ # honoring the current settings for whitespace and row,
2528
+ # then places the node as the first text child in the element;
2529
+ # returns +string+.
2530
+ #
2531
+ # If the element has no text child, the text node is added:
2532
+ #
2533
+ # d = REXML::Document.new '<a><b/></a>'
2534
+ # d.root.text = 'foo' #-> '<a><b/>foo</a>'
2535
+ #
2536
+ # If the element has a text child, it is replaced:
2537
+ #
2538
+ # d.root.text = 'bar' #-> '<a><b/>bar</a>'
2539
+ #
2540
+ # With argument +nil+, removes the first text child:
2541
+ #
2542
+ # d.root.text = nil #-> '<a><b/><c/></a>'
2543
+ #
2544
+ # source://rexml//lib/rexml/element.rb#1089
2545
+ def text=(text); end
2546
+
2547
+ # :call-seq:
2548
+ # texts -> array_of_text_children
2549
+ #
2550
+ # Returns a frozen array of the REXML::Text children of the element:
2551
+ #
2552
+ # xml_string = '<root><a/>text<b/>more<c/></root>'
2553
+ # d = REXML::Document.new(xml_string)
2554
+ # ts = d.root.texts
2555
+ # ts.frozen? # => true
2556
+ # ts.map {|t| t.class } # => [REXML::Text, REXML::Text]
2557
+ # ts.map {|t| t.to_s } # => ["text", "more"]
2558
+ #
2559
+ # source://rexml//lib/rexml/element.rb#1478
2560
+ def texts; end
2561
+
2562
+ # :call-seq:
2563
+ # whitespace
2564
+ #
2565
+ # Returns +true+ if whitespace is respected for this element,
2566
+ # +false+ otherwise.
2567
+ #
2568
+ # See {Element Context}[../doc/rexml/context_rdoc.html].
2569
+ #
2570
+ # The evaluation is tested against the element's +expanded_name+,
2571
+ # and so is namespace-sensitive.
2572
+ #
2573
+ # source://rexml//lib/rexml/element.rb#490
2574
+ def whitespace; end
2575
+
2576
+ # == DEPRECATED
2577
+ # See REXML::Formatters
2578
+ #
2579
+ # Writes out this element, and recursively, all children.
2580
+ # output::
2581
+ # output an object which supports '<< string'; this is where the
2582
+ # document will be written.
2583
+ # indent::
2584
+ # An integer. If -1, no indenting will be used; otherwise, the
2585
+ # indentation will be this number of spaces, and children will be
2586
+ # indented an additional amount. Defaults to -1
2587
+ # transitive::
2588
+ # If transitive is true and indent is >= 0, then the output will be
2589
+ # pretty-printed in such a way that the added whitespace does not affect
2590
+ # the parse tree of the document
2591
+ # ie_hack::
2592
+ # This hack inserts a space before the /> on empty tags to address
2593
+ # a limitation of Internet Explorer. Defaults to false
2594
+ #
2595
+ # out = ''
2596
+ # doc.write( out ) #-> doc is written to the string 'out'
2597
+ # doc.write( $stdout ) #-> doc written to the console
2598
+ #
2599
+ # source://rexml//lib/rexml/element.rb#1504
2600
+ def write(output = T.unsafe(nil), indent = T.unsafe(nil), transitive = T.unsafe(nil), ie_hack = T.unsafe(nil)); end
2601
+
2602
+ # :call-seq:
2603
+ # xpath -> string_xpath
2604
+ #
2605
+ # Returns the string xpath to the element
2606
+ # relative to the most distant parent:
2607
+ #
2608
+ # d = REXML::Document.new('<a><b><c/></b></a>')
2609
+ # a = d.root # => <a> ... </>
2610
+ # b = a[0] # => <b> ... </>
2611
+ # c = b[0] # => <c/>
2612
+ # d.xpath # => ""
2613
+ # a.xpath # => "/a"
2614
+ # b.xpath # => "/a/b"
2615
+ # c.xpath # => "/a/b/c"
2616
+ #
2617
+ # If there is no parent, returns the expanded name of the element:
2618
+ #
2619
+ # e = REXML::Element.new('foo')
2620
+ # e.xpath # => "foo"
2621
+ #
2622
+ # source://rexml//lib/rexml/element.rb#1192
2623
+ def xpath; end
2624
+
2625
+ private
2626
+
2627
+ # source://rexml//lib/rexml/element.rb#1521
2628
+ def __to_xpath_helper(node); end
2629
+
2630
+ # A private helper method
2631
+ #
2632
+ # source://rexml//lib/rexml/element.rb#1536
2633
+ def each_with_something(test, max = T.unsafe(nil), name = T.unsafe(nil)); end
2634
+ end
2635
+
2636
+ # source://rexml//lib/rexml/doctype.rb#261
2637
+ class REXML::ElementDecl < ::REXML::Declaration
2638
+ # @return [ElementDecl] a new instance of ElementDecl
2639
+ #
2640
+ # source://rexml//lib/rexml/doctype.rb#262
2641
+ def initialize(src); end
2642
+ end
2643
+
2644
+ # A class which provides filtering of children for Elements, and
2645
+ # XPath search support. You are expected to only encounter this class as
2646
+ # the <tt>element.elements</tt> object. Therefore, you are
2647
+ # _not_ expected to instantiate this yourself.
2648
+ #
2649
+ # xml_string = <<-EOT
2650
+ # <?xml version="1.0" encoding="UTF-8"?>
2651
+ # <bookstore>
2652
+ # <book category="cooking">
2653
+ # <title lang="en">Everyday Italian</title>
2654
+ # <author>Giada De Laurentiis</author>
2655
+ # <year>2005</year>
2656
+ # <price>30.00</price>
2657
+ # </book>
2658
+ # <book category="children">
2659
+ # <title lang="en">Harry Potter</title>
2660
+ # <author>J K. Rowling</author>
2661
+ # <year>2005</year>
2662
+ # <price>29.99</price>
2663
+ # </book>
2664
+ # <book category="web">
2665
+ # <title lang="en">XQuery Kick Start</title>
2666
+ # <author>James McGovern</author>
2667
+ # <author>Per Bothner</author>
2668
+ # <author>Kurt Cagle</author>
2669
+ # <author>James Linn</author>
2670
+ # <author>Vaidyanathan Nagarajan</author>
2671
+ # <year>2003</year>
2672
+ # <price>49.99</price>
2673
+ # </book>
2674
+ # <book category="web" cover="paperback">
2675
+ # <title lang="en">Learning XML</title>
2676
+ # <author>Erik T. Ray</author>
2677
+ # <year>2003</year>
2678
+ # <price>39.95</price>
2679
+ # </book>
2680
+ # </bookstore>
2681
+ # EOT
2682
+ # d = REXML::Document.new(xml_string)
2683
+ # elements = d.root.elements
2684
+ # elements # => #<REXML::Elements @element=<bookstore> ... </>>
2685
+ #
2686
+ # source://rexml//lib/rexml/element.rb#1591
2687
+ class REXML::Elements
2688
+ include ::Enumerable
2689
+
2690
+ # :call-seq:
2691
+ # new(parent) -> new_elements_object
2692
+ #
2693
+ # Returns a new \Elements object with the given +parent+.
2694
+ # Does _not_ assign <tt>parent.elements = self</tt>:
2695
+ #
2696
+ # d = REXML::Document.new(xml_string)
2697
+ # eles = REXML::Elements.new(d.root)
2698
+ # eles # => #<REXML::Elements @element=<bookstore> ... </>>
2699
+ # eles == d.root.elements # => false
2700
+ #
2701
+ # @return [Elements] a new instance of Elements
2702
+ #
2703
+ # source://rexml//lib/rexml/element.rb#1604
2704
+ def initialize(parent); end
2705
+
2706
+ # :call-seq:
2707
+ # add -> new_element
2708
+ # add(name) -> new_element
2709
+ # add(element) -> element
2710
+ #
2711
+ # Adds an element; returns the element added.
2712
+ #
2713
+ # With no argument, creates and adds a new element.
2714
+ # The new element has:
2715
+ #
2716
+ # - No name.
2717
+ # - \Parent from the \Elements object.
2718
+ # - Context from the that parent.
2719
+ #
2720
+ # Example:
2721
+ #
2722
+ # d = REXML::Document.new(xml_string)
2723
+ # elements = d.root.elements
2724
+ # parent = elements.parent # => <bookstore> ... </>
2725
+ # parent.context = {raw: :all}
2726
+ # elements.size # => 4
2727
+ # new_element = elements.add # => </>
2728
+ # elements.size # => 5
2729
+ # new_element.name # => nil
2730
+ # new_element.parent # => <bookstore> ... </>
2731
+ # new_element.context # => {:raw=>:all}
2732
+ #
2733
+ # With string argument +name+, creates and adds a new element.
2734
+ # The new element has:
2735
+ #
2736
+ # - Name +name+.
2737
+ # - \Parent from the \Elements object.
2738
+ # - Context from the that parent.
2739
+ #
2740
+ # Example:
2741
+ #
2742
+ # d = REXML::Document.new(xml_string)
2743
+ # elements = d.root.elements
2744
+ # parent = elements.parent # => <bookstore> ... </>
2745
+ # parent.context = {raw: :all}
2746
+ # elements.size # => 4
2747
+ # new_element = elements.add('foo') # => <foo/>
2748
+ # elements.size # => 5
2749
+ # new_element.name # => "foo"
2750
+ # new_element.parent # => <bookstore> ... </>
2751
+ # new_element.context # => {:raw=>:all}
2752
+ #
2753
+ # With argument +element+,
2754
+ # creates and adds a clone of the given +element+.
2755
+ # The new element has name, parent, and context from the given +element+.
2756
+ #
2757
+ # d = REXML::Document.new(xml_string)
2758
+ # elements = d.root.elements
2759
+ # elements.size # => 4
2760
+ # e0 = REXML::Element.new('foo')
2761
+ # e1 = REXML::Element.new('bar', e0, {raw: :all})
2762
+ # element = elements.add(e1) # => <bar/>
2763
+ # elements.size # => 5
2764
+ # element.name # => "bar"
2765
+ # element.parent # => <bookstore> ... </>
2766
+ # element.context # => {:raw=>:all}
2767
+ #
2768
+ # source://rexml//lib/rexml/element.rb#1921
2769
+ def <<(element = T.unsafe(nil)); end
2770
+
2771
+ # :call-seq:
2772
+ # elements[index] -> element or nil
2773
+ # elements[xpath] -> element or nil
2774
+ # elements[n, name] -> element or nil
2775
+ #
2776
+ # Returns the first \Element object selected by the arguments,
2777
+ # if any found, or +nil+ if none found.
2778
+ #
2779
+ # Notes:
2780
+ # - The +index+ is 1-based, not 0-based, so that:
2781
+ # - The first element has index <tt>1</tt>
2782
+ # - The _nth_ element has index +n+.
2783
+ # - The selection ignores non-\Element nodes.
2784
+ #
2785
+ # When the single argument +index+ is given,
2786
+ # returns the element given by the index, if any; otherwise, +nil+:
2787
+ #
2788
+ # d = REXML::Document.new(xml_string)
2789
+ # eles = d.root.elements
2790
+ # eles # => #<REXML::Elements @element=<bookstore> ... </>>
2791
+ # eles[1] # => <book category='cooking'> ... </>
2792
+ # eles.size # => 4
2793
+ # eles[4] # => <book category='web' cover='paperback'> ... </>
2794
+ # eles[5] # => nil
2795
+ #
2796
+ # The node at this index is not an \Element, and so is not returned:
2797
+ #
2798
+ # eles = d.root.first.first # => <title lang='en'> ... </>
2799
+ # eles.to_a # => ["Everyday Italian"]
2800
+ # eles[1] # => nil
2801
+ #
2802
+ # When the single argument +xpath+ is given,
2803
+ # returns the first element found via that +xpath+, if any; otherwise, +nil+:
2804
+ #
2805
+ # eles = d.root.elements # => #<REXML::Elements @element=<bookstore> ... </>>
2806
+ # eles['/bookstore'] # => <bookstore> ... </>
2807
+ # eles['//book'] # => <book category='cooking'> ... </>
2808
+ # eles['//book [@category="children"]'] # => <book category='children'> ... </>
2809
+ # eles['/nosuch'] # => nil
2810
+ # eles['//nosuch'] # => nil
2811
+ # eles['//book [@category="nosuch"]'] # => nil
2812
+ # eles['.'] # => <bookstore> ... </>
2813
+ # eles['..'].class # => REXML::Document
2814
+ #
2815
+ # With arguments +n+ and +name+ given,
2816
+ # returns the _nth_ found element that has the given +name+,
2817
+ # or +nil+ if there is no such _nth_ element:
2818
+ #
2819
+ # eles = d.root.elements # => #<REXML::Elements @element=<bookstore> ... </>>
2820
+ # eles[1, 'book'] # => <book category='cooking'> ... </>
2821
+ # eles[4, 'book'] # => <book category='web' cover='paperback'> ... </>
2822
+ # eles[5, 'book'] # => nil
2823
+ #
2824
+ # source://rexml//lib/rexml/element.rb#1676
2825
+ def [](index, name = T.unsafe(nil)); end
2826
+
2827
+ # :call-seq:
2828
+ # elements[] = index, replacement_element -> replacement_element or nil
2829
+ #
2830
+ # Replaces or adds an element.
2831
+ #
2832
+ # When <tt>eles[index]</tt> exists, replaces it with +replacement_element+
2833
+ # and returns +replacement_element+:
2834
+ #
2835
+ # d = REXML::Document.new(xml_string)
2836
+ # eles = d.root.elements # => #<REXML::Elements @element=<bookstore> ... </>>
2837
+ # eles[1] # => <book category='cooking'> ... </>
2838
+ # eles[1] = REXML::Element.new('foo')
2839
+ # eles[1] # => <foo/>
2840
+ #
2841
+ # Does nothing (or raises an exception)
2842
+ # if +replacement_element+ is not an \Element:
2843
+ # eles[2] # => <book category='web' cover='paperback'> ... </>
2844
+ # eles[2] = REXML::Text.new('bar')
2845
+ # eles[2] # => <book category='web' cover='paperback'> ... </>
2846
+ #
2847
+ # When <tt>eles[index]</tt> does not exist,
2848
+ # adds +replacement_element+ to the element and returns
2849
+ #
2850
+ # d = REXML::Document.new(xml_string)
2851
+ # eles = d.root.elements # => #<REXML::Elements @element=<bookstore> ... </>>
2852
+ # eles.size # => 4
2853
+ # eles[50] = REXML::Element.new('foo') # => <foo/>
2854
+ # eles.size # => 5
2855
+ # eles[5] # => <foo/>
2856
+ #
2857
+ # Does nothing (or raises an exception)
2858
+ # if +replacement_element+ is not an \Element:
2859
+ #
2860
+ # eles[50] = REXML::Text.new('bar') # => "bar"
2861
+ # eles.size # => 5
2862
+ #
2863
+ # source://rexml//lib/rexml/element.rb#1731
2864
+ def []=(index, element); end
2865
+
2866
+ # :call-seq:
2867
+ # add -> new_element
2868
+ # add(name) -> new_element
2869
+ # add(element) -> element
2870
+ #
2871
+ # Adds an element; returns the element added.
2872
+ #
2873
+ # With no argument, creates and adds a new element.
2874
+ # The new element has:
2875
+ #
2876
+ # - No name.
2877
+ # - \Parent from the \Elements object.
2878
+ # - Context from the that parent.
2879
+ #
2880
+ # Example:
2881
+ #
2882
+ # d = REXML::Document.new(xml_string)
2883
+ # elements = d.root.elements
2884
+ # parent = elements.parent # => <bookstore> ... </>
2885
+ # parent.context = {raw: :all}
2886
+ # elements.size # => 4
2887
+ # new_element = elements.add # => </>
2888
+ # elements.size # => 5
2889
+ # new_element.name # => nil
2890
+ # new_element.parent # => <bookstore> ... </>
2891
+ # new_element.context # => {:raw=>:all}
2892
+ #
2893
+ # With string argument +name+, creates and adds a new element.
2894
+ # The new element has:
2895
+ #
2896
+ # - Name +name+.
2897
+ # - \Parent from the \Elements object.
2898
+ # - Context from the that parent.
2899
+ #
2900
+ # Example:
2901
+ #
2902
+ # d = REXML::Document.new(xml_string)
2903
+ # elements = d.root.elements
2904
+ # parent = elements.parent # => <bookstore> ... </>
2905
+ # parent.context = {raw: :all}
2906
+ # elements.size # => 4
2907
+ # new_element = elements.add('foo') # => <foo/>
2908
+ # elements.size # => 5
2909
+ # new_element.name # => "foo"
2910
+ # new_element.parent # => <bookstore> ... </>
2911
+ # new_element.context # => {:raw=>:all}
2912
+ #
2913
+ # With argument +element+,
2914
+ # creates and adds a clone of the given +element+.
2915
+ # The new element has name, parent, and context from the given +element+.
2916
+ #
2917
+ # d = REXML::Document.new(xml_string)
2918
+ # elements = d.root.elements
2919
+ # elements.size # => 4
2920
+ # e0 = REXML::Element.new('foo')
2921
+ # e1 = REXML::Element.new('bar', e0, {raw: :all})
2922
+ # element = elements.add(e1) # => <bar/>
2923
+ # elements.size # => 5
2924
+ # element.name # => "bar"
2925
+ # element.parent # => <bookstore> ... </>
2926
+ # element.context # => {:raw=>:all}
2927
+ #
2928
+ # source://rexml//lib/rexml/element.rb#1921
2929
+ def add(element = T.unsafe(nil)); end
2930
+
2931
+ # :call-seq:
2932
+ # collect(xpath = nil) {|element| ... } -> array
2933
+ #
2934
+ # Iterates over the elements; returns the array of block return values.
2935
+ #
2936
+ # With no argument, iterates over all elements:
2937
+ #
2938
+ # d = REXML::Document.new(xml_string)
2939
+ # elements = d.root.elements
2940
+ # elements.collect {|element| element.size } # => [9, 9, 17, 9]
2941
+ #
2942
+ # With argument +xpath+, iterates over elements that match
2943
+ # the given +xpath+:
2944
+ #
2945
+ # xpath = '//book [@category="web"]'
2946
+ # elements.collect(xpath) {|element| element.size } # => [17, 9]
2947
+ #
2948
+ # source://rexml//lib/rexml/element.rb#1984
2949
+ def collect(xpath = T.unsafe(nil)); end
2950
+
2951
+ # :call-seq:
2952
+ # delete(index) -> removed_element or nil
2953
+ # delete(element) -> removed_element or nil
2954
+ # delete(xpath) -> removed_element or nil
2955
+ #
2956
+ # Removes an element; returns the removed element, or +nil+ if none removed.
2957
+ #
2958
+ # With integer argument +index+ given,
2959
+ # removes the child element at that offset:
2960
+ #
2961
+ # d = REXML::Document.new(xml_string)
2962
+ # elements = d.root.elements
2963
+ # elements.size # => 4
2964
+ # elements[2] # => <book category='children'> ... </>
2965
+ # elements.delete(2) # => <book category='children'> ... </>
2966
+ # elements.size # => 3
2967
+ # elements[2] # => <book category='web'> ... </>
2968
+ # elements.delete(50) # => nil
2969
+ #
2970
+ # With element argument +element+ given,
2971
+ # removes that child element:
2972
+ #
2973
+ # d = REXML::Document.new(xml_string)
2974
+ # elements = d.root.elements
2975
+ # ele_1, ele_2, ele_3, ele_4 = *elements
2976
+ # elements.size # => 4
2977
+ # elements[2] # => <book category='children'> ... </>
2978
+ # elements.delete(ele_2) # => <book category='children'> ... </>
2979
+ # elements.size # => 3
2980
+ # elements[2] # => <book category='web'> ... </>
2981
+ # elements.delete(ele_2) # => nil
2982
+ #
2983
+ # With string argument +xpath+ given,
2984
+ # removes the first element found via that xpath:
2985
+ #
2986
+ # d = REXML::Document.new(xml_string)
2987
+ # elements = d.root.elements
2988
+ # elements.delete('//book') # => <book category='cooking'> ... </>
2989
+ # elements.delete('//book [@category="children"]') # => <book category='children'> ... </>
2990
+ # elements.delete('//nosuch') # => nil
2991
+ #
2992
+ # source://rexml//lib/rexml/element.rb#1821
2993
+ def delete(element); end
2994
+
2995
+ # :call-seq:
2996
+ # delete_all(xpath)
2997
+ #
2998
+ # Removes all elements found via the given +xpath+;
2999
+ # returns the array of removed elements, if any, else +nil+.
3000
+ #
3001
+ # d = REXML::Document.new(xml_string)
3002
+ # elements = d.root.elements
3003
+ # elements.size # => 4
3004
+ # deleted_elements = elements.delete_all('//book [@category="web"]')
3005
+ # deleted_elements.size # => 2
3006
+ # elements.size # => 2
3007
+ # deleted_elements = elements.delete_all('//book')
3008
+ # deleted_elements.size # => 2
3009
+ # elements.size # => 0
3010
+ # elements.delete_all('//book') # => []
3011
+ #
3012
+ # source://rexml//lib/rexml/element.rb#1847
3013
+ def delete_all(xpath); end
3014
+
3015
+ # :call-seq:
3016
+ # each(xpath = nil) {|element| ... } -> self
3017
+ #
3018
+ # Iterates over the elements.
3019
+ #
3020
+ # With no argument, calls the block with each element:
3021
+ #
3022
+ # d = REXML::Document.new(xml_string)
3023
+ # elements = d.root.elements
3024
+ # elements.each {|element| p element }
3025
+ #
3026
+ # Output:
3027
+ #
3028
+ # <book category='cooking'> ... </>
3029
+ # <book category='children'> ... </>
3030
+ # <book category='web'> ... </>
3031
+ # <book category='web' cover='paperback'> ... </>
3032
+ #
3033
+ # With argument +xpath+, calls the block with each element
3034
+ # that matches the given +xpath+:
3035
+ #
3036
+ # elements.each('//book [@category="web"]') {|element| p element }
3037
+ #
3038
+ # Output:
3039
+ #
3040
+ # <book category='web'> ... </>
3041
+ # <book category='web' cover='paperback'> ... </>
3042
+ #
3043
+ # source://rexml//lib/rexml/element.rb#1963
3044
+ def each(xpath = T.unsafe(nil)); end
3045
+
3046
+ # :call-seq:
3047
+ # empty? -> true or false
3048
+ #
3049
+ # Returns +true+ if there are no children, +false+ otherwise.
3050
+ #
3051
+ # d = REXML::Document.new('')
3052
+ # d.elements.empty? # => true
3053
+ # d = REXML::Document.new(xml_string)
3054
+ # d.elements.empty? # => false
3055
+ #
3056
+ # @return [Boolean]
3057
+ #
3058
+ # source://rexml//lib/rexml/element.rb#1751
3059
+ def empty?; end
3060
+
3061
+ # :call-seq:
3062
+ # index(element)
3063
+ #
3064
+ # Returns the 1-based index of the given +element+, if found;
3065
+ # otherwise, returns -1:
3066
+ #
3067
+ # d = REXML::Document.new(xml_string)
3068
+ # elements = d.root.elements
3069
+ # ele_1, ele_2, ele_3, ele_4 = *elements
3070
+ # elements.index(ele_4) # => 4
3071
+ # elements.delete(ele_3)
3072
+ # elements.index(ele_4) # => 3
3073
+ # elements.index(ele_3) # => -1
3074
+ #
3075
+ # source://rexml//lib/rexml/element.rb#1769
3076
+ def index(element); end
3077
+
3078
+ # :call-seq:
3079
+ # inject(xpath = nil, initial = nil) -> object
3080
+ #
3081
+ # Calls the block with elements; returns the last block return value.
3082
+ #
3083
+ # With no argument, iterates over the elements, calling the block
3084
+ # <tt>elements.size - 1</tt> times.
3085
+ #
3086
+ # - The first call passes the first and second elements.
3087
+ # - The second call passes the first block return value and the third element.
3088
+ # - The third call passes the second block return value and the fourth element.
3089
+ # - And so on.
3090
+ #
3091
+ # In this example, the block returns the passed element,
3092
+ # which is then the object argument to the next call:
3093
+ #
3094
+ # d = REXML::Document.new(xml_string)
3095
+ # elements = d.root.elements
3096
+ # elements.inject do |object, element|
3097
+ # p [elements.index(object), elements.index(element)]
3098
+ # element
3099
+ # end
3100
+ #
3101
+ # Output:
3102
+ #
3103
+ # [1, 2]
3104
+ # [2, 3]
3105
+ # [3, 4]
3106
+ #
3107
+ # With the single argument +xpath+, calls the block only with
3108
+ # elements matching that xpath:
3109
+ #
3110
+ # elements.inject('//book [@category="web"]') do |object, element|
3111
+ # p [elements.index(object), elements.index(element)]
3112
+ # element
3113
+ # end
3114
+ #
3115
+ # Output:
3116
+ #
3117
+ # [3, 4]
3118
+ #
3119
+ # With argument +xpath+ given as +nil+
3120
+ # and argument +initial+ also given,
3121
+ # calls the block once for each element.
3122
+ #
3123
+ # - The first call passes the +initial+ and the first element.
3124
+ # - The second call passes the first block return value and the second element.
3125
+ # - The third call passes the second block return value and the third element.
3126
+ # - And so on.
3127
+ #
3128
+ # In this example, the first object index is <tt>-1</tt>
3129
+ #
3130
+ # elements.inject(nil, 'Initial') do |object, element|
3131
+ # p [elements.index(object), elements.index(element)]
3132
+ # element
3133
+ # end
3134
+ #
3135
+ # Output:
3136
+ #
3137
+ # [-1, 1]
3138
+ # [1, 2]
3139
+ # [2, 3]
3140
+ # [3, 4]
3141
+ #
3142
+ # In this form the passed object can be used as an accumulator:
3143
+ #
3144
+ # elements.inject(nil, 0) do |total, element|
3145
+ # total += element.size
3146
+ # end # => 44
3147
+ #
3148
+ # With both arguments +xpath+ and +initial+ are given,
3149
+ # calls the block only with elements matching that xpath:
3150
+ #
3151
+ # elements.inject('//book [@category="web"]', 0) do |total, element|
3152
+ # total += element.size
3153
+ # end # => 26
3154
+ #
3155
+ # source://rexml//lib/rexml/element.rb#2069
3156
+ def inject(xpath = T.unsafe(nil), initial = T.unsafe(nil)); end
3157
+
3158
+ # :call-seq:
3159
+ # parent
3160
+ #
3161
+ # Returns the parent element cited in creating the \Elements object.
3162
+ # This element is also the default starting point for searching
3163
+ # in the \Elements object.
3164
+ #
3165
+ # d = REXML::Document.new(xml_string)
3166
+ # elements = REXML::Elements.new(d.root)
3167
+ # elements.parent == d.root # => true
3168
+ #
3169
+ # source://rexml//lib/rexml/element.rb#1619
3170
+ def parent; end
3171
+
3172
+ # :call-seq:
3173
+ # size -> integer
3174
+ #
3175
+ # Returns the count of \Element children:
3176
+ #
3177
+ # d = REXML::Document.new '<a>sean<b/>elliott<b/>russell<b/></a>'
3178
+ # d.root.elements.size # => 3 # Three elements.
3179
+ # d.root.size # => 6 # Three elements plus three text nodes..
3180
+ #
3181
+ # source://rexml//lib/rexml/element.rb#2093
3182
+ def size; end
3183
+
3184
+ # :call-seq:
3185
+ # to_a(xpath = nil) -> array_of_elements
3186
+ #
3187
+ # Returns an array of element children (not including non-element children).
3188
+ #
3189
+ # With no argument, returns an array of all element children:
3190
+ #
3191
+ # d = REXML::Document.new '<a>sean<b/>elliott<c/></a>'
3192
+ # elements = d.root.elements
3193
+ # elements.to_a # => [<b/>, <c/>] # Omits non-element children.
3194
+ # children = d.root.children
3195
+ # children # => ["sean", <b/>, "elliott", <c/>] # Includes non-element children.
3196
+ #
3197
+ # With argument +xpath+, returns an array of element children
3198
+ # that match the xpath:
3199
+ #
3200
+ # elements.to_a('//c') # => [<c/>]
3201
+ #
3202
+ # source://rexml//lib/rexml/element.rb#2117
3203
+ def to_a(xpath = T.unsafe(nil)); end
3204
+
3205
+ private
3206
+
3207
+ # Private helper class. Removes quotes from quoted strings
3208
+ #
3209
+ # source://rexml//lib/rexml/element.rb#2125
3210
+ def literalize(name); end
3211
+ end
3212
+
3213
+ # source://rexml//lib/rexml/encoding.rb#4
3214
+ module REXML::Encoding
3215
+ # source://rexml//lib/rexml/encoding.rb#29
3216
+ def decode(string); end
3217
+
3218
+ # source://rexml//lib/rexml/encoding.rb#25
3219
+ def encode(string); end
3220
+
3221
+ # ID ---> Encoding name
3222
+ #
3223
+ # source://rexml//lib/rexml/encoding.rb#6
3224
+ def encoding; end
3225
+
3226
+ # source://rexml//lib/rexml/encoding.rb#7
3227
+ def encoding=(encoding); end
3228
+
3229
+ private
3230
+
3231
+ # source://rexml//lib/rexml/encoding.rb#34
3232
+ def find_encoding(name); end
3233
+ end
3234
+
3235
+ # source://rexml//lib/rexml/entity.rb#7
3236
+ class REXML::Entity < ::REXML::Child
3237
+ include ::REXML::XMLTokens
3238
+
3239
+ # Create a new entity. Simple entities can be constructed by passing a
3240
+ # name, value to the constructor; this creates a generic, plain entity
3241
+ # reference. For anything more complicated, you have to pass a Source to
3242
+ # the constructor with the entity definition, or use the accessor methods.
3243
+ # +WARNING+: There is no validation of entity state except when the entity
3244
+ # is read from a stream. If you start poking around with the accessors,
3245
+ # you can easily create a non-conformant Entity.
3246
+ #
3247
+ # e = Entity.new( 'amp', '&' )
3248
+ #
3249
+ # @return [Entity] a new instance of Entity
3250
+ #
3251
+ # source://rexml//lib/rexml/entity.rb#34
3252
+ def initialize(stream, value = T.unsafe(nil), parent = T.unsafe(nil), reference = T.unsafe(nil)); end
3253
+
3254
+ # Returns the value of attribute external.
3255
+ #
3256
+ # source://rexml//lib/rexml/entity.rb#23
3257
+ def external; end
3258
+
3259
+ # Returns the value of attribute name.
3260
+ #
3261
+ # source://rexml//lib/rexml/entity.rb#23
3262
+ def name; end
3263
+
3264
+ # Returns the value of attribute ndata.
3265
+ #
3266
+ # source://rexml//lib/rexml/entity.rb#23
3267
+ def ndata; end
3268
+
3269
+ # Returns the value of this entity unprocessed -- raw. This is the
3270
+ # normalized value; that is, with all %ent; and &ent; entities intact
3271
+ #
3272
+ # source://rexml//lib/rexml/entity.rb#86
3273
+ def normalized; end
3274
+
3275
+ # Returns the value of attribute pubid.
3276
+ #
3277
+ # source://rexml//lib/rexml/entity.rb#23
3278
+ def pubid; end
3279
+
3280
+ # Returns the value of attribute ref.
3281
+ #
3282
+ # source://rexml//lib/rexml/entity.rb#23
3283
+ def ref; end
3284
+
3285
+ # Returns this entity as a string. See write().
3286
+ #
3287
+ # source://rexml//lib/rexml/entity.rb#120
3288
+ def to_s; end
3289
+
3290
+ # Evaluates to the unnormalized value of this entity; that is, replacing
3291
+ # &ent; entities.
3292
+ #
3293
+ # source://rexml//lib/rexml/entity.rb#73
3294
+ def unnormalized; end
3295
+
3296
+ # Returns the value of attribute value.
3297
+ #
3298
+ # source://rexml//lib/rexml/entity.rb#23
3299
+ def value; end
3300
+
3301
+ # Write out a fully formed, correct entity definition (assuming the Entity
3302
+ # object itself is valid.)
3303
+ #
3304
+ # out::
3305
+ # An object implementing <TT>&lt;&lt;</TT> to which the entity will be
3306
+ # output
3307
+ # indent::
3308
+ # *DEPRECATED* and ignored
3309
+ #
3310
+ # source://rexml//lib/rexml/entity.rb#98
3311
+ def write(out, indent = T.unsafe(nil)); end
3312
+
3313
+ class << self
3314
+ # Evaluates whether the given string matches an entity definition,
3315
+ # returning true if so, and false otherwise.
3316
+ #
3317
+ # @return [Boolean]
3318
+ #
3319
+ # source://rexml//lib/rexml/entity.rb#67
3320
+ def matches?(string); end
3321
+ end
3322
+ end
3323
+
3324
+ # source://rexml//lib/rexml/doctype.rb#267
3325
+ class REXML::ExternalEntity < ::REXML::Child
3326
+ # @return [ExternalEntity] a new instance of ExternalEntity
3327
+ #
3328
+ # source://rexml//lib/rexml/doctype.rb#268
3329
+ def initialize(src); end
3330
+
3331
+ # source://rexml//lib/rexml/doctype.rb#272
3332
+ def to_s; end
3333
+
3334
+ # source://rexml//lib/rexml/doctype.rb#275
3335
+ def write(output, indent); end
3336
+ end
3337
+
3338
+ # source://rexml//lib/rexml/formatters/default.rb#5
3339
+ class REXML::Formatters::Default
3340
+ # Prints out the XML document with no formatting -- except if ie_hack is
3341
+ # set.
3342
+ #
3343
+ # ie_hack::
3344
+ # If set to true, then inserts whitespace before the close of an empty
3345
+ # tag, so that IE's bad XML parser doesn't choke.
3346
+ #
3347
+ # @return [Default] a new instance of Default
3348
+ #
3349
+ # source://rexml//lib/rexml/formatters/default.rb#12
3350
+ def initialize(ie_hack = T.unsafe(nil)); end
3351
+
3352
+ # Writes the node to some output.
3353
+ #
3354
+ # node::
3355
+ # The node to write
3356
+ # output::
3357
+ # A class implementing <TT>&lt;&lt;</TT>. Pass in an Output object to
3358
+ # change the output encoding.
3359
+ #
3360
+ # source://rexml//lib/rexml/formatters/default.rb#23
3361
+ def write(node, output); end
3362
+
3363
+ protected
3364
+
3365
+ # source://rexml//lib/rexml/formatters/default.rb#98
3366
+ def write_cdata(node, output); end
3367
+
3368
+ # source://rexml//lib/rexml/formatters/default.rb#92
3369
+ def write_comment(node, output); end
3370
+
3371
+ # source://rexml//lib/rexml/formatters/default.rb#61
3372
+ def write_document(node, output); end
3373
+
3374
+ # source://rexml//lib/rexml/formatters/default.rb#65
3375
+ def write_element(node, output); end
3376
+
3377
+ # source://rexml//lib/rexml/formatters/default.rb#104
3378
+ def write_instruction(node, output); end
3379
+
3380
+ # source://rexml//lib/rexml/formatters/default.rb#88
3381
+ def write_text(node, output); end
3382
+ end
3383
+
3384
+ # Pretty-prints an XML document. This destroys whitespace in text nodes
3385
+ # and will insert carriage returns and indentations.
3386
+ #
3387
+ # TODO: Add an option to print attributes on new lines
3388
+ #
3389
+ # source://rexml//lib/rexml/formatters/pretty.rb#10
3390
+ class REXML::Formatters::Pretty < ::REXML::Formatters::Default
3391
+ # Create a new pretty printer.
3392
+ #
3393
+ # output::
3394
+ # An object implementing '<<(String)', to which the output will be written.
3395
+ # indentation::
3396
+ # An integer greater than 0. The indentation of each level will be
3397
+ # this number of spaces. If this is < 1, the behavior of this object
3398
+ # is undefined. Defaults to 2.
3399
+ # ie_hack::
3400
+ # If true, the printer will insert whitespace before closing empty
3401
+ # tags, thereby allowing Internet Explorer's XML parser to
3402
+ # function. Defaults to false.
3403
+ #
3404
+ # @return [Pretty] a new instance of Pretty
3405
+ #
3406
+ # source://rexml//lib/rexml/formatters/pretty.rb#30
3407
+ def initialize(indentation = T.unsafe(nil), ie_hack = T.unsafe(nil)); end
3408
+
3409
+ # If compact is set to true, then the formatter will attempt to use as
3410
+ # little space as possible
3411
+ #
3412
+ # source://rexml//lib/rexml/formatters/pretty.rb#14
3413
+ def compact; end
3414
+
3415
+ # If compact is set to true, then the formatter will attempt to use as
3416
+ # little space as possible
3417
+ #
3418
+ # source://rexml//lib/rexml/formatters/pretty.rb#14
3419
+ def compact=(_arg0); end
3420
+
3421
+ # The width of a page. Used for formatting text
3422
+ #
3423
+ # source://rexml//lib/rexml/formatters/pretty.rb#16
3424
+ def width; end
3425
+
3426
+ # The width of a page. Used for formatting text
3427
+ #
3428
+ # source://rexml//lib/rexml/formatters/pretty.rb#16
3429
+ def width=(_arg0); end
3430
+
3431
+ protected
3432
+
3433
+ # source://rexml//lib/rexml/formatters/pretty.rb#102
3434
+ def write_cdata(node, output); end
3435
+
3436
+ # source://rexml//lib/rexml/formatters/pretty.rb#97
3437
+ def write_comment(node, output); end
3438
+
3439
+ # source://rexml//lib/rexml/formatters/pretty.rb#107
3440
+ def write_document(node, output); end
3441
+
3442
+ # source://rexml//lib/rexml/formatters/pretty.rb#39
3443
+ def write_element(node, output); end
3444
+
3445
+ # source://rexml//lib/rexml/formatters/pretty.rb#88
3446
+ def write_text(node, output); end
3447
+
3448
+ private
3449
+
3450
+ # source://rexml//lib/rexml/formatters/pretty.rb#124
3451
+ def indent_text(string, level = T.unsafe(nil), style = T.unsafe(nil), indentfirstline = T.unsafe(nil)); end
3452
+
3453
+ # source://rexml//lib/rexml/formatters/pretty.rb#129
3454
+ def wrap(string, width); end
3455
+ end
3456
+
3457
+ # A Source that wraps an IO. See the Source class for method
3458
+ # documentation
3459
+ #
3460
+ # source://rexml//lib/rexml/source.rb#201
3461
+ class REXML::IOSource < ::REXML::Source
3462
+ # block_size has been deprecated
3463
+ #
3464
+ # @return [IOSource] a new instance of IOSource
3465
+ #
3466
+ # source://rexml//lib/rexml/source.rb#205
3467
+ def initialize(arg, block_size = T.unsafe(nil), encoding = T.unsafe(nil)); end
3468
+
3469
+ # @return the current line in the source
3470
+ #
3471
+ # source://rexml//lib/rexml/source.rb#310
3472
+ def current_line; end
3473
+
3474
+ # @return [Boolean]
3475
+ #
3476
+ # source://rexml//lib/rexml/source.rb#305
3477
+ def empty?; end
3478
+
3479
+ # source://rexml//lib/rexml/source.rb#265
3480
+ def ensure_buffer; end
3481
+
3482
+ # source://rexml//lib/rexml/source.rb#269
3483
+ def match(pattern, cons = T.unsafe(nil)); end
3484
+
3485
+ # @return [Boolean]
3486
+ #
3487
+ # source://rexml//lib/rexml/source.rb#288
3488
+ def match?(pattern, cons = T.unsafe(nil)); end
3489
+
3490
+ # source://rexml//lib/rexml/source.rb#226
3491
+ def read(term = T.unsafe(nil), min_bytes = T.unsafe(nil)); end
3492
+
3493
+ # source://rexml//lib/rexml/source.rb#247
3494
+ def read_until(term); end
3495
+
3496
+ private
3497
+
3498
+ # source://rexml//lib/rexml/source.rb#357
3499
+ def encoding_updated; end
3500
+
3501
+ # source://rexml//lib/rexml/source.rb#332
3502
+ def readline(term = T.unsafe(nil)); end
3503
+ end
3504
+
3505
+ # Represents an XML Instruction; IE, <? ... ?>
3506
+ # TODO: Add parent arg (3rd arg) to constructor
3507
+ #
3508
+ # source://rexml//lib/rexml/instruction.rb#9
3509
+ class REXML::Instruction < ::REXML::Child
3510
+ # Constructs a new Instruction
3511
+ # the target of this instruction is set to this. If an Instruction,
3512
+ # then the Instruction is shallowly cloned (target and content are
3513
+ # copied).
3514
+ # be a Parent if the target argument is a Source. Otherwise, this
3515
+ # String is set as the content of this instruction.
3516
+ #
3517
+ # @param target can be one of a number of things. If String, then
3518
+ # @param content Must be either a String, or a Parent. Can only
3519
+ # @return [Instruction] a new instance of Instruction
3520
+ #
3521
+ # source://rexml//lib/rexml/instruction.rb#25
3522
+ def initialize(target, content = T.unsafe(nil)); end
3523
+
3524
+ # of the other matches the target and content of this object.
3525
+ #
3526
+ # @return true if other is an Instruction, and the content and target
3527
+ #
3528
+ # source://rexml//lib/rexml/instruction.rb#65
3529
+ def ==(other); end
3530
+
3531
+ # source://rexml//lib/rexml/instruction.rb#44
3532
+ def clone; end
3533
+
3534
+ # target is the "name" of the Instruction; IE, the "tag" in <?tag ...?>
3535
+ # content is everything else.
3536
+ #
3537
+ # source://rexml//lib/rexml/instruction.rb#15
3538
+ def content; end
3539
+
3540
+ # target is the "name" of the Instruction; IE, the "tag" in <?tag ...?>
3541
+ # content is everything else.
3542
+ #
3543
+ # source://rexml//lib/rexml/instruction.rb#15
3544
+ def content=(_arg0); end
3545
+
3546
+ # source://rexml//lib/rexml/instruction.rb#75
3547
+ def inspect; end
3548
+
3549
+ # source://rexml//lib/rexml/instruction.rb#71
3550
+ def node_type; end
3551
+
3552
+ # target is the "name" of the Instruction; IE, the "tag" in <?tag ...?>
3553
+ # content is everything else.
3554
+ #
3555
+ # source://rexml//lib/rexml/instruction.rb#15
3556
+ def target; end
3557
+
3558
+ # target is the "name" of the Instruction; IE, the "tag" in <?tag ...?>
3559
+ # content is everything else.
3560
+ #
3561
+ # source://rexml//lib/rexml/instruction.rb#15
3562
+ def target=(_arg0); end
3563
+
3564
+ # == DEPRECATED
3565
+ # See the rexml/formatters package
3566
+ #
3567
+ # source://rexml//lib/rexml/instruction.rb#51
3568
+ def write(writer, indent = T.unsafe(nil), transitive = T.unsafe(nil), ie_hack = T.unsafe(nil)); end
3569
+ end
3570
+
3571
+ # source://rexml//lib/rexml/light/node.rb#5
3572
+ module REXML::Light; end
3573
+
3574
+ # Represents a tagged XML element. Elements are characterized by
3575
+ # having children, attributes, and names, and can themselves be
3576
+ # children.
3577
+ #
3578
+ # source://rexml//lib/rexml/light/node.rb#9
3579
+ class REXML::Light::Node
3580
+ # Create a new element.
3581
+ #
3582
+ # @return [Node] a new instance of Node
3583
+ #
3584
+ # source://rexml//lib/rexml/light/node.rb#13
3585
+ def initialize(node = T.unsafe(nil)); end
3586
+
3587
+ # Append a child to this element, optionally under a provided namespace.
3588
+ # The namespace argument is ignored if the element argument is an Element
3589
+ # object. Otherwise, the element argument is a string, the namespace (if
3590
+ # provided) is the namespace the element is created in.
3591
+ #
3592
+ # source://rexml//lib/rexml/light/node.rb#114
3593
+ def <<(element); end
3594
+
3595
+ # source://rexml//lib/rexml/light/node.rb#90
3596
+ def =~(path); end
3597
+
3598
+ # source://rexml//lib/rexml/light/node.rb#78
3599
+ def [](reference, ns = T.unsafe(nil)); end
3600
+
3601
+ # Doesn't handle namespaces yet
3602
+ #
3603
+ # source://rexml//lib/rexml/light/node.rb#95
3604
+ def []=(reference, ns, value = T.unsafe(nil)); end
3605
+
3606
+ # source://rexml//lib/rexml/light/node.rb#143
3607
+ def children; end
3608
+
3609
+ # source://rexml//lib/rexml/light/node.rb#36
3610
+ def each; end
3611
+
3612
+ # @return [Boolean]
3613
+ #
3614
+ # source://rexml//lib/rexml/light/node.rb#139
3615
+ def has_name?(name, namespace = T.unsafe(nil)); end
3616
+
3617
+ # source://rexml//lib/rexml/light/node.rb#54
3618
+ def local_name; end
3619
+
3620
+ # source://rexml//lib/rexml/light/node.rb#59
3621
+ def local_name=(name_str); end
3622
+
3623
+ # source://rexml//lib/rexml/light/node.rb#40
3624
+ def name; end
3625
+
3626
+ # source://rexml//lib/rexml/light/node.rb#44
3627
+ def name=(name_str, ns = T.unsafe(nil)); end
3628
+
3629
+ # source://rexml//lib/rexml/light/node.rb#67
3630
+ def namespace(prefix = T.unsafe(nil)); end
3631
+
3632
+ # source://rexml//lib/rexml/light/node.rb#71
3633
+ def namespace=(namespace); end
3634
+
3635
+ # source://rexml//lib/rexml/light/node.rb#125
3636
+ def node_type; end
3637
+
3638
+ # source://rexml//lib/rexml/light/node.rb#147
3639
+ def parent; end
3640
+
3641
+ # source://rexml//lib/rexml/light/node.rb#50
3642
+ def parent=(node); end
3643
+
3644
+ # source://rexml//lib/rexml/light/node.rb#63
3645
+ def prefix(namespace = T.unsafe(nil)); end
3646
+
3647
+ # source://rexml//lib/rexml/light/node.rb#134
3648
+ def root; end
3649
+
3650
+ # source://rexml//lib/rexml/light/node.rb#28
3651
+ def size; end
3652
+
3653
+ # source://rexml//lib/rexml/light/node.rb#129
3654
+ def text=(foo); end
3655
+
3656
+ # source://rexml//lib/rexml/light/node.rb#151
3657
+ def to_s; end
3658
+
3659
+ private
3660
+
3661
+ # source://rexml//lib/rexml/light/node.rb#164
3662
+ def namespace_of(node, prefix = T.unsafe(nil)); end
3663
+
3664
+ # source://rexml//lib/rexml/light/node.rb#157
3665
+ def namesplit; end
3666
+
3667
+ # source://rexml//lib/rexml/light/node.rb#176
3668
+ def prefix_of(node, namespace = T.unsafe(nil)); end
3669
+ end
3670
+
3671
+ # source://rexml//lib/rexml/light/node.rb#10
3672
+ REXML::Light::Node::NAMESPLIT = T.let(T.unsafe(nil), Regexp)
3673
+
3674
+ # source://rexml//lib/rexml/light/node.rb#11
3675
+ REXML::Light::Node::PARENTS = T.let(T.unsafe(nil), Array)
3676
+
3677
+ # Adds named attributes to an object.
3678
+ #
3679
+ # source://rexml//lib/rexml/namespace.rb#7
3680
+ module REXML::Namespace
3681
+ include ::REXML::XMLTokens
3682
+
3683
+ # The name of the object, valid if set
3684
+ #
3685
+ # source://rexml//lib/rexml/namespace.rb#9
3686
+ def expanded_name; end
3687
+
3688
+ # Fully expand the name, even if the prefix wasn't specified in the
3689
+ # source file.
3690
+ #
3691
+ # source://rexml//lib/rexml/namespace.rb#57
3692
+ def fully_expanded_name; end
3693
+
3694
+ # Compares names optionally WITH namespaces
3695
+ #
3696
+ # @return [Boolean]
3697
+ #
3698
+ # source://rexml//lib/rexml/namespace.rb#43
3699
+ def has_name?(other, ns = T.unsafe(nil)); end
3700
+
3701
+ # The name of the object, valid if set
3702
+ #
3703
+ # source://rexml//lib/rexml/namespace.rb#9
3704
+ def name; end
3705
+
3706
+ # Sets the name and the expanded name
3707
+ #
3708
+ # source://rexml//lib/rexml/namespace.rb#17
3709
+ def name=(name); end
3710
+
3711
+ # The expanded name of the object, valid if name is set
3712
+ #
3713
+ # source://rexml//lib/rexml/namespace.rb#11
3714
+ def prefix; end
3715
+
3716
+ # The expanded name of the object, valid if name is set
3717
+ #
3718
+ # source://rexml//lib/rexml/namespace.rb#11
3719
+ def prefix=(_arg0); end
3720
+ end
3721
+
3722
+ # source://rexml//lib/rexml/namespace.rb#13
3723
+ REXML::Namespace::NAME_WITHOUT_NAMESPACE = T.let(T.unsafe(nil), Regexp)
3724
+
3725
+ # source://rexml//lib/rexml/doctype.rb#280
3726
+ class REXML::NotationDecl < ::REXML::Child
3727
+ # @return [NotationDecl] a new instance of NotationDecl
3728
+ #
3729
+ # source://rexml//lib/rexml/doctype.rb#282
3730
+ def initialize(name, middle, pub, sys); end
3731
+
3732
+ # This method retrieves the name of the notation.
3733
+ #
3734
+ # Method contributed by Henrik Martensson
3735
+ #
3736
+ # source://rexml//lib/rexml/doctype.rb#307
3737
+ def name; end
3738
+
3739
+ # Returns the value of attribute public.
3740
+ #
3741
+ # source://rexml//lib/rexml/doctype.rb#281
3742
+ def public; end
3743
+
3744
+ # Sets the attribute public
3745
+ #
3746
+ # @param value the value to set the attribute public to.
3747
+ #
3748
+ # source://rexml//lib/rexml/doctype.rb#281
3749
+ def public=(_arg0); end
3750
+
3751
+ # Returns the value of attribute system.
3752
+ #
3753
+ # source://rexml//lib/rexml/doctype.rb#281
3754
+ def system; end
3755
+
3756
+ # Sets the attribute system
3757
+ #
3758
+ # @param value the value to set the attribute system to.
3759
+ #
3760
+ # source://rexml//lib/rexml/doctype.rb#281
3761
+ def system=(_arg0); end
3762
+
3763
+ # source://rexml//lib/rexml/doctype.rb#290
3764
+ def to_s; end
3765
+
3766
+ # source://rexml//lib/rexml/doctype.rb#300
3767
+ def write(output, indent = T.unsafe(nil)); end
3768
+ end
3769
+
3770
+ # source://rexml//lib/rexml/output.rb#5
3771
+ class REXML::Output
3772
+ include ::REXML::Encoding
3773
+
3774
+ # @return [Output] a new instance of Output
3775
+ #
3776
+ # source://rexml//lib/rexml/output.rb#10
3777
+ def initialize(real_IO, encd = T.unsafe(nil)); end
3778
+
3779
+ # source://rexml//lib/rexml/output.rb#22
3780
+ def <<(content); end
3781
+
3782
+ # Returns the value of attribute encoding.
3783
+ #
3784
+ # source://rexml//lib/rexml/output.rb#8
3785
+ def encoding; end
3786
+
3787
+ # source://rexml//lib/rexml/output.rb#26
3788
+ def to_s; end
3789
+ end
3790
+
3791
+ # A parent has children, and has methods for accessing them. The Parent
3792
+ # class is never encountered except as the superclass for some other
3793
+ # object.
3794
+ #
3795
+ # source://rexml//lib/rexml/parent.rb#8
3796
+ class REXML::Parent < ::REXML::Child
3797
+ include ::Enumerable
3798
+
3799
+ # Constructor
3800
+ #
3801
+ # @param parent if supplied, will be set as the parent of this object
3802
+ # @return [Parent] a new instance of Parent
3803
+ #
3804
+ # source://rexml//lib/rexml/parent.rb#13
3805
+ def initialize(parent = T.unsafe(nil)); end
3806
+
3807
+ # source://rexml//lib/rexml/parent.rb#18
3808
+ def <<(object); end
3809
+
3810
+ # Fetches a child at a given index
3811
+ #
3812
+ # @param index the Integer index of the child to fetch
3813
+ #
3814
+ # source://rexml//lib/rexml/parent.rb#57
3815
+ def [](index); end
3816
+
3817
+ # Set an index entry. See Array.[]=
3818
+ #
3819
+ # @param index the index of the element to set
3820
+ # @param opt either the object to set, or an Integer length
3821
+ # @param child if opt is an Integer, this is the child to set
3822
+ # @return the parent (self)
3823
+ #
3824
+ # source://rexml//lib/rexml/parent.rb#70
3825
+ def []=(*args); end
3826
+
3827
+ # source://rexml//lib/rexml/parent.rb#18
3828
+ def add(object); end
3829
+
3830
+ # source://rexml//lib/rexml/parent.rb#115
3831
+ def children; end
3832
+
3833
+ # Deeply clones this object. This creates a complete duplicate of this
3834
+ # Parent, including all descendants.
3835
+ #
3836
+ # source://rexml//lib/rexml/parent.rb#148
3837
+ def deep_clone; end
3838
+
3839
+ # source://rexml//lib/rexml/parent.rb#32
3840
+ def delete(object); end
3841
+
3842
+ # source://rexml//lib/rexml/parent.rb#47
3843
+ def delete_at(index); end
3844
+
3845
+ # source://rexml//lib/rexml/parent.rb#43
3846
+ def delete_if(&block); end
3847
+
3848
+ # source://rexml//lib/rexml/parent.rb#39
3849
+ def each(&block); end
3850
+
3851
+ # source://rexml//lib/rexml/parent.rb#39
3852
+ def each_child(&block); end
3853
+
3854
+ # source://rexml//lib/rexml/parent.rb#51
3855
+ def each_index(&block); end
3856
+
3857
+ # Fetches the index of a given child
3858
+ # of this parent.
3859
+ #
3860
+ # @param child the child to get the index of
3861
+ # @return the index of the child, or nil if the object is not a child
3862
+ #
3863
+ # source://rexml//lib/rexml/parent.rb#123
3864
+ def index(child); end
3865
+
3866
+ # Inserts an child after another child
3867
+ # child2 will be inserted after child1 in the child list of the parent.
3868
+ # If an xpath, child2 will be inserted after the first child to match
3869
+ # the xpath.
3870
+ #
3871
+ # @param child1 this is either an xpath or an Element. If an Element,
3872
+ # @param child2 the child to insert
3873
+ # @return the parent (self)
3874
+ #
3875
+ # source://rexml//lib/rexml/parent.rb#102
3876
+ def insert_after(child1, child2); end
3877
+
3878
+ # Inserts an child before another child
3879
+ # child2 will be inserted before child1 in the child list of the parent.
3880
+ # If an xpath, child2 will be inserted before the first child to match
3881
+ # the xpath.
3882
+ #
3883
+ # @param child1 this is either an xpath or an Element. If an Element,
3884
+ # @param child2 the child to insert
3885
+ # @return the parent (self)
3886
+ #
3887
+ # source://rexml//lib/rexml/parent.rb#82
3888
+ def insert_before(child1, child2); end
3889
+
3890
+ # @return the number of children of this parent
3891
+ #
3892
+ # source://rexml//lib/rexml/parent.rb#130
3893
+ def length; end
3894
+
3895
+ # @return [Boolean]
3896
+ #
3897
+ # source://rexml//lib/rexml/parent.rb#162
3898
+ def parent?; end
3899
+
3900
+ # source://rexml//lib/rexml/parent.rb#18
3901
+ def push(object); end
3902
+
3903
+ # Replaces one child with another, making sure the nodelist is correct
3904
+ # Child)
3905
+ #
3906
+ # @param to_replace the child to replace (must be a Child)
3907
+ # @param replacement the child to insert into the nodelist (must be a
3908
+ #
3909
+ # source://rexml//lib/rexml/parent.rb#140
3910
+ def replace_child(to_replace, replacement); end
3911
+
3912
+ # @return the number of children of this parent
3913
+ #
3914
+ # source://rexml//lib/rexml/parent.rb#130
3915
+ def size; end
3916
+
3917
+ # source://rexml//lib/rexml/parent.rb#115
3918
+ def to_a; end
3919
+
3920
+ # source://rexml//lib/rexml/parent.rb#27
3921
+ def unshift(object); end
3922
+ end
3923
+
3924
+ # source://rexml//lib/rexml/parseexception.rb#3
3925
+ class REXML::ParseException < ::RuntimeError
3926
+ # @return [ParseException] a new instance of ParseException
3927
+ #
3928
+ # source://rexml//lib/rexml/parseexception.rb#6
3929
+ def initialize(message, source = T.unsafe(nil), parser = T.unsafe(nil), exception = T.unsafe(nil)); end
3930
+
3931
+ # source://rexml//lib/rexml/parseexception.rb#49
3932
+ def context; end
3933
+
3934
+ # Returns the value of attribute continued_exception.
3935
+ #
3936
+ # source://rexml//lib/rexml/parseexception.rb#4
3937
+ def continued_exception; end
3938
+
3939
+ # Sets the attribute continued_exception
3940
+ #
3941
+ # @param value the value to set the attribute continued_exception to.
3942
+ #
3943
+ # source://rexml//lib/rexml/parseexception.rb#4
3944
+ def continued_exception=(_arg0); end
3945
+
3946
+ # source://rexml//lib/rexml/parseexception.rb#44
3947
+ def line; end
3948
+
3949
+ # Returns the value of attribute parser.
3950
+ #
3951
+ # source://rexml//lib/rexml/parseexception.rb#4
3952
+ def parser; end
3953
+
3954
+ # Sets the attribute parser
3955
+ #
3956
+ # @param value the value to set the attribute parser to.
3957
+ #
3958
+ # source://rexml//lib/rexml/parseexception.rb#4
3959
+ def parser=(_arg0); end
3960
+
3961
+ # source://rexml//lib/rexml/parseexception.rb#39
3962
+ def position; end
3963
+
3964
+ # Returns the value of attribute source.
3965
+ #
3966
+ # source://rexml//lib/rexml/parseexception.rb#4
3967
+ def source; end
3968
+
3969
+ # Sets the attribute source
3970
+ #
3971
+ # @param value the value to set the attribute source to.
3972
+ #
3973
+ # source://rexml//lib/rexml/parseexception.rb#4
3974
+ def source=(_arg0); end
3975
+
3976
+ # source://rexml//lib/rexml/parseexception.rb#13
3977
+ def to_s; end
3978
+ end
3979
+
3980
+ # = Using the Pull Parser
3981
+ # <em>This API is experimental, and subject to change.</em>
3982
+ # parser = PullParser.new( "<a>text<b att='val'/>txet</a>" )
3983
+ # while parser.has_next?
3984
+ # res = parser.next
3985
+ # puts res[1]['att'] if res.start_tag? and res[0] == 'b'
3986
+ # end
3987
+ # See the PullEvent class for information on the content of the results.
3988
+ # The data is identical to the arguments passed for the various events to
3989
+ # the StreamListener API.
3990
+ #
3991
+ # Notice that:
3992
+ # parser = PullParser.new( "<a>BAD DOCUMENT" )
3993
+ # while parser.has_next?
3994
+ # res = parser.next
3995
+ # raise res[1] if res.error?
3996
+ # end
3997
+ #
3998
+ # Nat Price gave me some good ideas for the API.
3999
+ #
4000
+ # source://rexml//lib/rexml/parsers/baseparser.rb#57
4001
+ class REXML::Parsers::BaseParser
4002
+ # @return [BaseParser] a new instance of BaseParser
4003
+ #
4004
+ # source://rexml//lib/rexml/parsers/baseparser.rb#163
4005
+ def initialize(source); end
4006
+
4007
+ # source://rexml//lib/rexml/parsers/baseparser.rb#173
4008
+ def add_listener(listener); end
4009
+
4010
+ # Returns true if there are no more events
4011
+ #
4012
+ # @return [Boolean]
4013
+ #
4014
+ # source://rexml//lib/rexml/parsers/baseparser.rb#208
4015
+ def empty?; end
4016
+
4017
+ # source://rexml//lib/rexml/parsers/baseparser.rb#540
4018
+ def entity(reference, entities); end
4019
+
4020
+ # Returns the value of attribute entity_expansion_count.
4021
+ #
4022
+ # source://rexml//lib/rexml/parsers/baseparser.rb#178
4023
+ def entity_expansion_count; end
4024
+
4025
+ # Sets the attribute entity_expansion_limit
4026
+ #
4027
+ # @param value the value to set the attribute entity_expansion_limit to.
4028
+ #
4029
+ # source://rexml//lib/rexml/parsers/baseparser.rb#179
4030
+ def entity_expansion_limit=(_arg0); end
4031
+
4032
+ # Sets the attribute entity_expansion_text_limit
4033
+ #
4034
+ # @param value the value to set the attribute entity_expansion_text_limit to.
4035
+ #
4036
+ # source://rexml//lib/rexml/parsers/baseparser.rb#180
4037
+ def entity_expansion_text_limit=(_arg0); end
4038
+
4039
+ # Returns true if there are more events. Synonymous with !empty?
4040
+ #
4041
+ # @return [Boolean]
4042
+ #
4043
+ # source://rexml//lib/rexml/parsers/baseparser.rb#213
4044
+ def has_next?; end
4045
+
4046
+ # Escapes all possible entities
4047
+ #
4048
+ # source://rexml//lib/rexml/parsers/baseparser.rb#551
4049
+ def normalize(input, entities = T.unsafe(nil), entity_filter = T.unsafe(nil)); end
4050
+
4051
+ # Peek at the +depth+ event in the stack. The first element on the stack
4052
+ # is at depth 0. If +depth+ is -1, will parse to the end of the input
4053
+ # stream and return the last event, which is always :end_document.
4054
+ # Be aware that this causes the stream to be parsed up to the +depth+
4055
+ # event, so you can effectively pre-parse the entire document (pull the
4056
+ # entire thing into memory) using this method.
4057
+ #
4058
+ # source://rexml//lib/rexml/parsers/baseparser.rb#229
4059
+ def peek(depth = T.unsafe(nil)); end
4060
+
4061
+ # source://rexml//lib/rexml/parsers/baseparser.rb#198
4062
+ def position; end
4063
+
4064
+ # Returns the next event. This is a +PullEvent+ object.
4065
+ #
4066
+ # source://rexml//lib/rexml/parsers/baseparser.rb#244
4067
+ def pull; end
4068
+
4069
+ # source://rexml//lib/rexml/parsers/baseparser.rb#187
4070
+ def reset; end
4071
+
4072
+ # Returns the value of attribute source.
4073
+ #
4074
+ # source://rexml//lib/rexml/parsers/baseparser.rb#177
4075
+ def source; end
4076
+
4077
+ # source://rexml//lib/rexml/parsers/baseparser.rb#182
4078
+ def stream=(source); end
4079
+
4080
+ # Unescapes all possible entities
4081
+ #
4082
+ # source://rexml//lib/rexml/parsers/baseparser.rb#567
4083
+ def unnormalize(string, entities = T.unsafe(nil), filter = T.unsafe(nil)); end
4084
+
4085
+ # Push an event back on the head of the stream. This method
4086
+ # has (theoretically) infinite depth.
4087
+ #
4088
+ # source://rexml//lib/rexml/parsers/baseparser.rb#219
4089
+ def unshift(token); end
4090
+
4091
+ private
4092
+
4093
+ # source://rexml//lib/rexml/parsers/baseparser.rb#616
4094
+ def add_namespace(prefix, uri); end
4095
+
4096
+ # @return [Boolean]
4097
+ #
4098
+ # source://rexml//lib/rexml/parsers/baseparser.rb#649
4099
+ def need_source_encoding_update?(xml_declaration_encoding); end
4100
+
4101
+ # source://rexml//lib/rexml/parsers/baseparser.rb#769
4102
+ def parse_attributes(prefixes); end
4103
+
4104
+ # source://rexml//lib/rexml/parsers/baseparser.rb#668
4105
+ def parse_id(base_error_message, accept_external_id:, accept_public_id:); end
4106
+
4107
+ # source://rexml//lib/rexml/parsers/baseparser.rb#696
4108
+ def parse_id_invalid_details(accept_external_id:, accept_public_id:); end
4109
+
4110
+ # source://rexml//lib/rexml/parsers/baseparser.rb#655
4111
+ def parse_name(base_error_message); end
4112
+
4113
+ # source://rexml//lib/rexml/parsers/baseparser.rb#631
4114
+ def pop_namespaces_restore; end
4115
+
4116
+ # source://rexml//lib/rexml/parsers/baseparser.rb#734
4117
+ def process_instruction; end
4118
+
4119
+ # source://rexml//lib/rexml/parsers/baseparser.rb#254
4120
+ def pull_event; end
4121
+
4122
+ # source://rexml//lib/rexml/parsers/baseparser.rb#625
4123
+ def push_namespaces_restore; end
4124
+
4125
+ # source://rexml//lib/rexml/parsers/baseparser.rb#642
4126
+ def record_entity_expansion(delta = T.unsafe(nil)); end
4127
+ end
4128
+
4129
+ # source://rexml//lib/rexml/parsers/baseparser.rb#130
4130
+ REXML::Parsers::BaseParser::EXTERNAL_ID_PUBLIC = T.let(T.unsafe(nil), Regexp)
4131
+
4132
+ # source://rexml//lib/rexml/parsers/baseparser.rb#131
4133
+ REXML::Parsers::BaseParser::EXTERNAL_ID_SYSTEM = T.let(T.unsafe(nil), Regexp)
4134
+
4135
+ # source://rexml//lib/rexml/parsers/baseparser.rb#132
4136
+ REXML::Parsers::BaseParser::PUBLIC_ID = T.let(T.unsafe(nil), Regexp)
4137
+
4138
+ # source://rexml//lib/rexml/parsers/baseparser.rb#143
4139
+ module REXML::Parsers::BaseParser::Private; end
4140
+
4141
+ # source://rexml//lib/rexml/parsers/baseparser.rb#147
4142
+ REXML::Parsers::BaseParser::Private::ATTLISTDECL_END = T.let(T.unsafe(nil), Regexp)
4143
+
4144
+ # source://rexml//lib/rexml/parsers/baseparser.rb#152
4145
+ REXML::Parsers::BaseParser::Private::CARRIAGE_RETURN_NEWLINE_PATTERN = T.let(T.unsafe(nil), Regexp)
4146
+
4147
+ # source://rexml//lib/rexml/parsers/baseparser.rb#153
4148
+ REXML::Parsers::BaseParser::Private::CHARACTER_REFERENCES = T.let(T.unsafe(nil), Regexp)
4149
+
4150
+ # source://rexml//lib/rexml/parsers/baseparser.rb#146
4151
+ REXML::Parsers::BaseParser::Private::CLOSE_PATTERN = T.let(T.unsafe(nil), Regexp)
4152
+
4153
+ # source://rexml//lib/rexml/parsers/baseparser.rb#154
4154
+ REXML::Parsers::BaseParser::Private::DEFAULT_ENTITIES_PATTERNS = T.let(T.unsafe(nil), Hash)
4155
+
4156
+ # source://rexml//lib/rexml/parsers/baseparser.rb#151
4157
+ REXML::Parsers::BaseParser::Private::ENTITYDECL_PATTERN = T.let(T.unsafe(nil), Regexp)
4158
+
4159
+ # source://rexml//lib/rexml/parsers/baseparser.rb#149
4160
+ REXML::Parsers::BaseParser::Private::GEDECL_PATTERN = T.let(T.unsafe(nil), String)
4161
+
4162
+ # source://rexml//lib/rexml/parsers/baseparser.rb#148
4163
+ REXML::Parsers::BaseParser::Private::NAME_PATTERN = T.let(T.unsafe(nil), Regexp)
4164
+
4165
+ # source://rexml//lib/rexml/parsers/baseparser.rb#150
4166
+ REXML::Parsers::BaseParser::Private::PEDECL_PATTERN = T.let(T.unsafe(nil), String)
4167
+
4168
+ # source://rexml//lib/rexml/parsers/baseparser.rb#144
4169
+ REXML::Parsers::BaseParser::Private::PEREFERENCE_PATTERN = T.let(T.unsafe(nil), Regexp)
4170
+
4171
+ # source://rexml//lib/rexml/parsers/baseparser.rb#145
4172
+ REXML::Parsers::BaseParser::Private::TAG_PATTERN = T.let(T.unsafe(nil), Regexp)
4173
+
4174
+ # source://rexml//lib/rexml/parsers/baseparser.rb#159
4175
+ REXML::Parsers::BaseParser::Private::XML_PREFIXED_NAMESPACE = T.let(T.unsafe(nil), String)
4176
+
4177
+ # source://rexml//lib/rexml/parsers/baseparser.rb#66
4178
+ REXML::Parsers::BaseParser::QNAME = T.let(T.unsafe(nil), Regexp)
4179
+
4180
+ # source://rexml//lib/rexml/parsers/baseparser.rb#65
4181
+ REXML::Parsers::BaseParser::QNAME_STR = T.let(T.unsafe(nil), String)
4182
+
4183
+ # source://rexml//lib/rexml/parsers/streamparser.rb#6
4184
+ class REXML::Parsers::StreamParser
4185
+ # @return [StreamParser] a new instance of StreamParser
4186
+ #
4187
+ # source://rexml//lib/rexml/parsers/streamparser.rb#7
4188
+ def initialize(source, listener); end
4189
+
4190
+ # source://rexml//lib/rexml/parsers/streamparser.rb#13
4191
+ def add_listener(listener); end
4192
+
4193
+ # source://rexml//lib/rexml/parsers/streamparser.rb#17
4194
+ def entity_expansion_count; end
4195
+
4196
+ # source://rexml//lib/rexml/parsers/streamparser.rb#21
4197
+ def entity_expansion_limit=(limit); end
4198
+
4199
+ # source://rexml//lib/rexml/parsers/streamparser.rb#25
4200
+ def entity_expansion_text_limit=(limit); end
4201
+
4202
+ # source://rexml//lib/rexml/parsers/streamparser.rb#29
4203
+ def parse; end
4204
+ end
4205
+
4206
+ # source://rexml//lib/rexml/parsers/treeparser.rb#7
4207
+ class REXML::Parsers::TreeParser
4208
+ # @return [TreeParser] a new instance of TreeParser
4209
+ #
4210
+ # source://rexml//lib/rexml/parsers/treeparser.rb#8
4211
+ def initialize(source, build_context = T.unsafe(nil)); end
4212
+
4213
+ # source://rexml//lib/rexml/parsers/treeparser.rb#13
4214
+ def add_listener(listener); end
4215
+
4216
+ # source://rexml//lib/rexml/parsers/treeparser.rb#17
4217
+ def parse; end
4218
+ end
4219
+
4220
+ # You don't want to use this class. Really. Use XPath, which is a wrapper
4221
+ # for this class. Believe me. You don't want to poke around in here.
4222
+ # There is strange, dark magic at work in this code. Beware. Go back! Go
4223
+ # back while you still can!
4224
+ #
4225
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#12
4226
+ class REXML::Parsers::XPathParser
4227
+ include ::REXML::XMLTokens
4228
+
4229
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#42
4230
+ def abbreviate(path_or_parsed); end
4231
+
4232
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#132
4233
+ def expand(path_or_parsed); end
4234
+
4235
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#16
4236
+ def namespaces=(namespaces); end
4237
+
4238
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#21
4239
+ def parse(path); end
4240
+
4241
+ # For backward compatibility
4242
+ #
4243
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#174
4244
+ def preciate_to_string(parsed, &block); end
4245
+
4246
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#36
4247
+ def predicate(path); end
4248
+
4249
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#174
4250
+ def predicate_to_path(parsed, &block); end
4251
+
4252
+ private
4253
+
4254
+ # | AdditiveExpr ('+' | '-') MultiplicativeExpr
4255
+ # | MultiplicativeExpr
4256
+ #
4257
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#505
4258
+ def AdditiveExpr(path, parsed); end
4259
+
4260
+ # | AndExpr S 'and' S EqualityExpr
4261
+ # | EqualityExpr
4262
+ #
4263
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#438
4264
+ def AndExpr(path, parsed); end
4265
+
4266
+ # | EqualityExpr ('=' | '!=') RelationalExpr
4267
+ # | RelationalExpr
4268
+ #
4269
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#457
4270
+ def EqualityExpr(path, parsed); end
4271
+
4272
+ # | FilterExpr Predicate
4273
+ # | PrimaryExpr
4274
+ #
4275
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#608
4276
+ def FilterExpr(path, parsed); end
4277
+
4278
+ # | FUNCTION_NAME '(' ( expr ( ',' expr )* )? ')'
4279
+ #
4280
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#663
4281
+ def FunctionCall(rest, parsed); end
4282
+
4283
+ # LocationPath
4284
+ # | RelativeLocationPath
4285
+ # | '/' RelativeLocationPath?
4286
+ # | '//' RelativeLocationPath
4287
+ #
4288
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#243
4289
+ def LocationPath(path, parsed); end
4290
+
4291
+ # | MultiplicativeExpr ('*' | S ('div' | 'mod') S) UnaryExpr
4292
+ # | UnaryExpr
4293
+ #
4294
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#528
4295
+ def MultiplicativeExpr(path, parsed); end
4296
+
4297
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#343
4298
+ def NodeTest(path, parsed); end
4299
+
4300
+ # | OrExpr S 'or' S AndExpr
4301
+ # | AndExpr
4302
+ #
4303
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#419
4304
+ def OrExpr(path, parsed); end
4305
+
4306
+ # | LocationPath
4307
+ # | FilterExpr ('/' | '//') RelativeLocationPath
4308
+ #
4309
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#590
4310
+ def PathExpr(path, parsed); end
4311
+
4312
+ # Filters the supplied nodeset on the predicate(s)
4313
+ #
4314
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#395
4315
+ def Predicate(path, parsed); end
4316
+
4317
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#626
4318
+ def PrimaryExpr(path, parsed); end
4319
+
4320
+ # | RelationalExpr ('<' | '>' | '<=' | '>=') AdditiveExpr
4321
+ # | AdditiveExpr
4322
+ #
4323
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#480
4324
+ def RelationalExpr(path, parsed); end
4325
+
4326
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#267
4327
+ def RelativeLocationPath(path, parsed); end
4328
+
4329
+ # | '-' UnaryExpr
4330
+ # | UnionExpr
4331
+ #
4332
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#553
4333
+ def UnaryExpr(path, parsed); end
4334
+
4335
+ # | UnionExpr '|' PathExpr
4336
+ # | PathExpr
4337
+ #
4338
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#571
4339
+ def UnionExpr(path, parsed); end
4340
+
4341
+ # get_group( '[foo]bar' ) -> ['bar', '[foo]']
4342
+ #
4343
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#676
4344
+ def get_group(string); end
4345
+
4346
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#694
4347
+ def parse_args(string); end
4348
+
4349
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#224
4350
+ def quote_literal(literal); end
4351
+ end
4352
+
4353
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#339
4354
+ REXML::Parsers::XPathParser::LOCAL_NAME_WILDCARD = T.let(T.unsafe(nil), Regexp)
4355
+
4356
+ # Returns a 1-1 map of the nodeset
4357
+ # The contents of the resulting array are either:
4358
+ # true/false, if a positive match
4359
+ # String, if a name match
4360
+ # NodeTest
4361
+ # | ('*' | NCNAME ':' '*' | QNAME) NameTest
4362
+ # | '*' ':' NCNAME NameTest since XPath 2.0
4363
+ # | NODE_TYPE '(' ')' NodeType
4364
+ # | PI '(' LITERAL ')' PI
4365
+ # | '[' expr ']' Predicate
4366
+ #
4367
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#338
4368
+ REXML::Parsers::XPathParser::PREFIX_WILDCARD = T.let(T.unsafe(nil), Regexp)
4369
+
4370
+ # source://rexml//lib/rexml/doctype.rb#10
4371
+ class REXML::ReferenceWriter
4372
+ # @return [ReferenceWriter] a new instance of ReferenceWriter
4373
+ #
4374
+ # source://rexml//lib/rexml/doctype.rb#11
4375
+ def initialize(id_type, public_id_literal, system_literal, context = T.unsafe(nil)); end
4376
+
4377
+ # source://rexml//lib/rexml/doctype.rb#25
4378
+ def write(output); end
4379
+ end
4380
+
4381
+ # A Source can be searched for patterns, and wraps buffers and other
4382
+ # objects and provides consumption of text
4383
+ #
4384
+ # source://rexml//lib/rexml/source.rb#61
4385
+ class REXML::Source
4386
+ include ::REXML::Encoding
4387
+
4388
+ # Constructor
4389
+ # value, overriding all encoding detection
4390
+ #
4391
+ # @param arg must be a String, and should be a valid XML document
4392
+ # @param encoding if non-null, sets the encoding of the source to this
4393
+ # @return [Source] a new instance of Source
4394
+ #
4395
+ # source://rexml//lib/rexml/source.rb#81
4396
+ def initialize(arg, encoding = T.unsafe(nil)); end
4397
+
4398
+ # The current buffer (what we're going to read next)
4399
+ #
4400
+ # source://rexml//lib/rexml/source.rb#94
4401
+ def buffer; end
4402
+
4403
+ # source://rexml//lib/rexml/source.rb#104
4404
+ def buffer_encoding=(encoding); end
4405
+
4406
+ # @return the current line in the source
4407
+ #
4408
+ # source://rexml//lib/rexml/source.rb#161
4409
+ def current_line; end
4410
+
4411
+ # source://rexml//lib/rexml/source.rb#98
4412
+ def drop_parsed_content; end
4413
+
4414
+ # @return [Boolean] true if the Source is exhausted
4415
+ #
4416
+ # source://rexml//lib/rexml/source.rb#156
4417
+ def empty?; end
4418
+
4419
+ # Returns the value of attribute encoding.
4420
+ #
4421
+ # source://rexml//lib/rexml/source.rb#65
4422
+ def encoding; end
4423
+
4424
+ # Inherited from Encoding
4425
+ # Overridden to support optimized en/decoding
4426
+ #
4427
+ # source://rexml//lib/rexml/source.rb#110
4428
+ def encoding=(enc); end
4429
+
4430
+ # source://rexml//lib/rexml/source.rb#128
4431
+ def ensure_buffer; end
4432
+
4433
+ # The line number of the last consumed text
4434
+ #
4435
+ # source://rexml//lib/rexml/source.rb#64
4436
+ def line; end
4437
+
4438
+ # source://rexml//lib/rexml/source.rb#131
4439
+ def match(pattern, cons = T.unsafe(nil)); end
4440
+
4441
+ # @return [Boolean]
4442
+ #
4443
+ # source://rexml//lib/rexml/source.rb#139
4444
+ def match?(pattern, cons = T.unsafe(nil)); end
4445
+
4446
+ # source://rexml//lib/rexml/source.rb#147
4447
+ def position; end
4448
+
4449
+ # source://rexml//lib/rexml/source.rb#151
4450
+ def position=(pos); end
4451
+
4452
+ # source://rexml//lib/rexml/source.rb#115
4453
+ def read(term = T.unsafe(nil)); end
4454
+
4455
+ # source://rexml//lib/rexml/source.rb#118
4456
+ def read_until(term); end
4457
+
4458
+ private
4459
+
4460
+ # source://rexml//lib/rexml/source.rb#170
4461
+ def detect_encoding; end
4462
+
4463
+ # source://rexml//lib/rexml/source.rb#188
4464
+ def encoding_updated; end
4465
+ end
4466
+
4467
+ # source://rexml//lib/rexml/source.rb#67
4468
+ module REXML::Source::Private; end
4469
+
4470
+ # source://rexml//lib/rexml/source.rb#69
4471
+ REXML::Source::Private::PRE_DEFINED_TERM_PATTERNS = T.let(T.unsafe(nil), Hash)
4472
+
4473
+ # source://rexml//lib/rexml/source.rb#68
4474
+ REXML::Source::Private::SCANNER_RESET_SIZE = T.let(T.unsafe(nil), Integer)
4475
+
4476
+ # Represents text nodes in an XML document
4477
+ #
4478
+ # source://rexml//lib/rexml/text.rb#11
4479
+ class REXML::Text < ::REXML::Child
4480
+ include ::Comparable
4481
+
4482
+ # Constructor
4483
+ # +arg+ if a String, the content is set to the String. If a Text,
4484
+ # the object is shallowly cloned.
4485
+ #
4486
+ # +respect_whitespace+ (boolean, false) if true, whitespace is
4487
+ # respected
4488
+ #
4489
+ # +parent+ (nil) if this is a Parent object, the parent
4490
+ # will be set to this.
4491
+ #
4492
+ # +raw+ (nil) This argument can be given three values.
4493
+ # If true, then the value of used to construct this object is expected to
4494
+ # contain no unescaped XML markup, and REXML will not change the text. If
4495
+ # this value is false, the string may contain any characters, and REXML will
4496
+ # escape any and all defined entities whose values are contained in the
4497
+ # text. If this value is nil (the default), then the raw value of the
4498
+ # parent will be used as the raw value for this node. If there is no raw
4499
+ # value for the parent, and no value is supplied, the default is false.
4500
+ # Use this field if you have entities defined for some text, and you don't
4501
+ # want REXML to escape that text in output.
4502
+ # Text.new( "<&", false, nil, false ) #-> "&lt;&amp;"
4503
+ # Text.new( "&lt;&amp;", false, nil, false ) #-> "&amp;lt;&amp;amp;"
4504
+ # Text.new( "<&", false, nil, true ) #-> Parse exception
4505
+ # Text.new( "&lt;&amp;", false, nil, true ) #-> "&lt;&amp;"
4506
+ # # Assume that the entity "s" is defined to be "sean"
4507
+ # # and that the entity "r" is defined to be "russell"
4508
+ # Text.new( "sean russell" ) #-> "&s; &r;"
4509
+ # Text.new( "sean russell", false, nil, true ) #-> "sean russell"
4510
+ #
4511
+ # +entity_filter+ (nil) This can be an array of entities to match in the
4512
+ # supplied text. This argument is only useful if +raw+ is set to false.
4513
+ # Text.new( "sean russell", false, nil, false, ["s"] ) #-> "&s; russell"
4514
+ # Text.new( "sean russell", false, nil, true, ["s"] ) #-> "sean russell"
4515
+ # In the last example, the +entity_filter+ argument is ignored.
4516
+ #
4517
+ # +illegal+ INTERNAL USE ONLY
4518
+ #
4519
+ # @return [Text] a new instance of Text
4520
+ #
4521
+ # source://rexml//lib/rexml/text.rb#79
4522
+ def initialize(arg, respect_whitespace = T.unsafe(nil), parent = T.unsafe(nil), raw = T.unsafe(nil), entity_filter = T.unsafe(nil), illegal = T.unsafe(nil)); end
4523
+
4524
+ # Appends text to this text node. The text is appended in the +raw+ mode
4525
+ # of this text node.
4526
+ #
4527
+ # +returns+ the text itself to enable method chain like
4528
+ # 'text << "XXX" << "YYY"'.
4529
+ #
4530
+ # source://rexml//lib/rexml/text.rb#189
4531
+ def <<(to_append); end
4532
+
4533
+ # +other+ a String or a Text
4534
+ # +returns+ the result of (to_s <=> arg.to_s)
4535
+ #
4536
+ # source://rexml//lib/rexml/text.rb#198
4537
+ def <=>(other); end
4538
+
4539
+ # source://rexml//lib/rexml/text.rb#179
4540
+ def clone; end
4541
+
4542
+ # source://rexml//lib/rexml/text.rb#202
4543
+ def doctype; end
4544
+
4545
+ # @return [Boolean]
4546
+ #
4547
+ # source://rexml//lib/rexml/text.rb#174
4548
+ def empty?; end
4549
+
4550
+ # source://rexml//lib/rexml/text.rb#274
4551
+ def indent_text(string, level = T.unsafe(nil), style = T.unsafe(nil), indentfirstline = T.unsafe(nil)); end
4552
+
4553
+ # source://rexml//lib/rexml/text.rb#228
4554
+ def inspect; end
4555
+
4556
+ # source://rexml//lib/rexml/text.rb#170
4557
+ def node_type; end
4558
+
4559
+ # source://rexml//lib/rexml/text.rb#110
4560
+ def parent=(parent); end
4561
+
4562
+ # If +raw+ is true, then REXML leaves the value alone
4563
+ #
4564
+ # source://rexml//lib/rexml/text.rb#21
4565
+ def raw; end
4566
+
4567
+ # If +raw+ is true, then REXML leaves the value alone
4568
+ #
4569
+ # source://rexml//lib/rexml/text.rb#21
4570
+ def raw=(_arg0); end
4571
+
4572
+ # Returns the string value of this text node. This string is always
4573
+ # escaped, meaning that it is a valid XML text node string, and all
4574
+ # entities that can be escaped, have been inserted. This method respects
4575
+ # the entity filter set in the constructor.
4576
+ #
4577
+ # # Assume that the entity "s" is defined to be "sean", and that the
4578
+ # # entity "r" is defined to be "russell"
4579
+ # t = Text.new( "< & sean russell", false, nil, false, ['s'] )
4580
+ # t.to_s #-> "&lt; &amp; &s; russell"
4581
+ # t = Text.new( "< & &s; russell", false, nil, false )
4582
+ # t.to_s #-> "&lt; &amp; &s; russell"
4583
+ # u = Text.new( "sean russell", false, nil, true )
4584
+ # u.to_s #-> "sean russell"
4585
+ #
4586
+ # source://rexml//lib/rexml/text.rb#223
4587
+ def to_s; end
4588
+
4589
+ # Returns the string value of this text. This is the text without
4590
+ # entities, as it might be used programmatically, or printed to the
4591
+ # console. This ignores the 'raw' attribute setting, and any
4592
+ # entity_filter.
4593
+ #
4594
+ # # Assume that the entity "s" is defined to be "sean", and that the
4595
+ # # entity "r" is defined to be "russell"
4596
+ # t = Text.new( "< & sean russell", false, nil, false, ['s'] )
4597
+ # t.value #-> "< & sean russell"
4598
+ # t = Text.new( "< & &s; russell", false, nil, false )
4599
+ # t.value #-> "< & sean russell"
4600
+ # u = Text.new( "sean russell", false, nil, true )
4601
+ # u.value #-> "sean russell"
4602
+ #
4603
+ # source://rexml//lib/rexml/text.rb#245
4604
+ def value; end
4605
+
4606
+ # Sets the contents of this text node. This expects the text to be
4607
+ # unnormalized. It returns self.
4608
+ #
4609
+ # e = Element.new( "a" )
4610
+ # e.add_text( "foo" ) # <a>foo</a>
4611
+ # e[0].value = "bar" # <a>bar</a>
4612
+ # e[0].value = "<a>" # <a>&lt;a&gt;</a>
4613
+ #
4614
+ # source://rexml//lib/rexml/text.rb#257
4615
+ def value=(val); end
4616
+
4617
+ # source://rexml//lib/rexml/text.rb#263
4618
+ def wrap(string, width, addnewline = T.unsafe(nil)); end
4619
+
4620
+ # == DEPRECATED
4621
+ # See REXML::Formatters
4622
+ #
4623
+ # source://rexml//lib/rexml/text.rb#289
4624
+ def write(writer, indent = T.unsafe(nil), transitive = T.unsafe(nil), ie_hack = T.unsafe(nil)); end
4625
+
4626
+ # Writes out text, substituting special characters beforehand.
4627
+ # +out+ A String, IO, or any other object supporting <<( String )
4628
+ # +input+ the text to substitute and the write out
4629
+ #
4630
+ # z=utf8.unpack("U*")
4631
+ # ascOut=""
4632
+ # z.each{|r|
4633
+ # if r < 0x100
4634
+ # ascOut.concat(r.chr)
4635
+ # else
4636
+ # ascOut.concat(sprintf("&#x%x;", r))
4637
+ # end
4638
+ # }
4639
+ # puts ascOut
4640
+ #
4641
+ # source://rexml//lib/rexml/text.rb#321
4642
+ def write_with_substitution(out, input); end
4643
+
4644
+ # FIXME
4645
+ # This probably won't work properly
4646
+ #
4647
+ # source://rexml//lib/rexml/text.rb#301
4648
+ def xpath; end
4649
+
4650
+ private
4651
+
4652
+ # source://rexml//lib/rexml/text.rb#334
4653
+ def clear_cache; end
4654
+
4655
+ class << self
4656
+ # check for illegal characters
4657
+ #
4658
+ # source://rexml//lib/rexml/text.rb#116
4659
+ def check(string, pattern, doctype); end
4660
+
4661
+ # source://rexml//lib/rexml/text.rb#404
4662
+ def expand(ref, doctype, filter); end
4663
+
4664
+ # Escapes all possible entities
4665
+ #
4666
+ # source://rexml//lib/rexml/text.rb#366
4667
+ def normalize(input, doctype = T.unsafe(nil), entity_filter = T.unsafe(nil)); end
4668
+
4669
+ # Reads text, substituting entities
4670
+ #
4671
+ # source://rexml//lib/rexml/text.rb#340
4672
+ def read_with_substitution(input, illegal = T.unsafe(nil)); end
4673
+
4674
+ # Unescapes all possible entities
4675
+ #
4676
+ # source://rexml//lib/rexml/text.rb#390
4677
+ def unnormalize(string, doctype = T.unsafe(nil), filter = T.unsafe(nil), illegal = T.unsafe(nil), entity_expansion_text_limit: T.unsafe(nil)); end
4678
+ end
4679
+ end
4680
+
4681
+ # source://rexml//lib/rexml/undefinednamespaceexception.rb#4
4682
+ class REXML::UndefinedNamespaceException < ::REXML::ParseException
4683
+ # @return [UndefinedNamespaceException] a new instance of UndefinedNamespaceException
4684
+ #
4685
+ # source://rexml//lib/rexml/undefinednamespaceexception.rb#5
4686
+ def initialize(prefix, source, parser); end
4687
+ end
4688
+
4689
+ # source://rexml//lib/rexml/validation/validationexception.rb#4
4690
+ class REXML::Validation::ValidationException < ::RuntimeError
4691
+ # @return [ValidationException] a new instance of ValidationException
4692
+ #
4693
+ # source://rexml//lib/rexml/validation/validationexception.rb#5
4694
+ def initialize(msg); end
4695
+ end
4696
+
4697
+ # NEEDS DOCUMENTATION
4698
+ #
4699
+ # source://rexml//lib/rexml/xmldecl.rb#8
4700
+ class REXML::XMLDecl < ::REXML::Child
4701
+ include ::REXML::Encoding
4702
+
4703
+ # @return [XMLDecl] a new instance of XMLDecl
4704
+ #
4705
+ # source://rexml//lib/rexml/xmldecl.rb#20
4706
+ def initialize(version = T.unsafe(nil), encoding = T.unsafe(nil), standalone = T.unsafe(nil)); end
4707
+
4708
+ # source://rexml//lib/rexml/xmldecl.rb#56
4709
+ def ==(other); end
4710
+
4711
+ # source://rexml//lib/rexml/xmldecl.rb#39
4712
+ def clone; end
4713
+
4714
+ # source://rexml//lib/rexml/xmldecl.rb#102
4715
+ def dowrite; end
4716
+
4717
+ # source://rexml//lib/rexml/xmldecl.rb#76
4718
+ def encoding=(enc); end
4719
+
4720
+ # source://rexml//lib/rexml/xmldecl.rb#106
4721
+ def inspect; end
4722
+
4723
+ # source://rexml//lib/rexml/xmldecl.rb#69
4724
+ def node_type; end
4725
+
4726
+ # source://rexml//lib/rexml/xmldecl.rb#98
4727
+ def nowrite; end
4728
+
4729
+ # source://rexml//lib/rexml/encoding.rb#7
4730
+ def old_enc=(encoding); end
4731
+
4732
+ # Returns the value of attribute standalone.
4733
+ #
4734
+ # source://rexml//lib/rexml/xmldecl.rb#17
4735
+ def stand_alone?; end
4736
+
4737
+ # Returns the value of attribute standalone.
4738
+ #
4739
+ # source://rexml//lib/rexml/xmldecl.rb#17
4740
+ def standalone; end
4741
+
4742
+ # Sets the attribute standalone
4743
+ #
4744
+ # @param value the value to set the attribute standalone to.
4745
+ #
4746
+ # source://rexml//lib/rexml/xmldecl.rb#17
4747
+ def standalone=(_arg0); end
4748
+
4749
+ # Returns the value of attribute version.
4750
+ #
4751
+ # source://rexml//lib/rexml/xmldecl.rb#17
4752
+ def version; end
4753
+
4754
+ # Sets the attribute version
4755
+ #
4756
+ # @param value the value to set the attribute version to.
4757
+ #
4758
+ # source://rexml//lib/rexml/xmldecl.rb#17
4759
+ def version=(_arg0); end
4760
+
4761
+ # indent::
4762
+ # Ignored. There must be no whitespace before an XML declaration
4763
+ # transitive::
4764
+ # Ignored
4765
+ # ie_hack::
4766
+ # Ignored
4767
+ #
4768
+ # source://rexml//lib/rexml/xmldecl.rb#49
4769
+ def write(writer, indent = T.unsafe(nil), transitive = T.unsafe(nil), ie_hack = T.unsafe(nil)); end
4770
+
4771
+ # Returns the value of attribute writeencoding.
4772
+ #
4773
+ # source://rexml//lib/rexml/xmldecl.rb#18
4774
+ def writeencoding; end
4775
+
4776
+ # Returns the value of attribute writethis.
4777
+ #
4778
+ # source://rexml//lib/rexml/xmldecl.rb#18
4779
+ def writethis; end
4780
+
4781
+ # source://rexml//lib/rexml/xmldecl.rb#63
4782
+ def xmldecl(version, encoding, standalone); end
4783
+
4784
+ private
4785
+
4786
+ # source://rexml//lib/rexml/xmldecl.rb#111
4787
+ def content(enc); end
4788
+
4789
+ class << self
4790
+ # Only use this if you do not want the XML declaration to be written;
4791
+ # this object is ignored by the XML writer. Otherwise, instantiate your
4792
+ # own XMLDecl and add it to the document.
4793
+ #
4794
+ # Note that XML 1.1 documents *must* include an XML declaration
4795
+ #
4796
+ # source://rexml//lib/rexml/xmldecl.rb#92
4797
+ def default; end
4798
+ end
4799
+ end
4800
+
4801
+ # @private
4802
+ #
4803
+ # source://rexml//lib/rexml/xpath_parser.rb#963
4804
+ class REXML::XPathNode
4805
+ # @return [XPathNode] a new instance of XPathNode
4806
+ #
4807
+ # source://rexml//lib/rexml/xpath_parser.rb#965
4808
+ def initialize(node, context = T.unsafe(nil)); end
4809
+
4810
+ # Returns the value of attribute context.
4811
+ #
4812
+ # source://rexml//lib/rexml/xpath_parser.rb#964
4813
+ def context; end
4814
+
4815
+ # source://rexml//lib/rexml/xpath_parser.rb#974
4816
+ def position; end
4817
+
4818
+ # Returns the value of attribute raw_node.
4819
+ #
4820
+ # source://rexml//lib/rexml/xpath_parser.rb#964
4821
+ def raw_node; end
4822
+ end
4823
+
4824
+ # You don't want to use this class. Really. Use XPath, which is a wrapper
4825
+ # for this class. Believe me. You don't want to poke around in here.
4826
+ # There is strange, dark magic at work in this code. Beware. Go back! Go
4827
+ # back while you still can!
4828
+ #
4829
+ # source://rexml//lib/rexml/xpath_parser.rb#54
4830
+ class REXML::XPathParser
4831
+ include ::REXML::XMLTokens
4832
+
4833
+ # @return [XPathParser] a new instance of XPathParser
4834
+ #
4835
+ # source://rexml//lib/rexml/xpath_parser.rb#60
4836
+ def initialize(strict: T.unsafe(nil)); end
4837
+
4838
+ # source://rexml//lib/rexml/xpath_parser.rb#94
4839
+ def []=(variable_name, value); end
4840
+
4841
+ # Performs a depth-first (document order) XPath search, and returns the
4842
+ # first match. This is the fastest, lightest way to return a single result.
4843
+ #
4844
+ # FIXME: This method is incomplete!
4845
+ #
4846
+ # source://rexml//lib/rexml/xpath_parser.rb#103
4847
+ def first(path_stack, node); end
4848
+
4849
+ # source://rexml//lib/rexml/xpath_parser.rb#84
4850
+ def get_first(path, nodeset); end
4851
+
4852
+ # source://rexml//lib/rexml/xpath_parser.rb#139
4853
+ def match(path_stack, nodeset); end
4854
+
4855
+ # source://rexml//lib/rexml/xpath_parser.rb#69
4856
+ def namespaces=(namespaces = T.unsafe(nil)); end
4857
+
4858
+ # source://rexml//lib/rexml/xpath_parser.rb#79
4859
+ def parse(path, nodeset); end
4860
+
4861
+ # source://rexml//lib/rexml/xpath_parser.rb#89
4862
+ def predicate(path, nodeset); end
4863
+
4864
+ # source://rexml//lib/rexml/xpath_parser.rb#74
4865
+ def variables=(vars = T.unsafe(nil)); end
4866
+
4867
+ private
4868
+
4869
+ # source://rexml//lib/rexml/xpath_parser.rb#779
4870
+ def child(nodeset); end
4871
+
4872
+ # source://rexml//lib/rexml/xpath_parser.rb#920
4873
+ def compare(a, operator, b); end
4874
+
4875
+ # source://rexml//lib/rexml/xpath_parser.rb#682
4876
+ def descendant(nodeset, include_self); end
4877
+
4878
+ # source://rexml//lib/rexml/xpath_parser.rb#693
4879
+ def descendant_recursive(raw_node, new_nodeset, new_nodes, include_self); end
4880
+
4881
+ # source://rexml//lib/rexml/xpath_parser.rb#942
4882
+ def each_unnode(nodeset); end
4883
+
4884
+ # source://rexml//lib/rexml/xpath_parser.rb#641
4885
+ def enter(tag, *args); end
4886
+
4887
+ # source://rexml//lib/rexml/xpath_parser.rb#819
4888
+ def equality_relational_compare(set1, op, set2); end
4889
+
4890
+ # source://rexml//lib/rexml/xpath_parser.rb#591
4891
+ def evaluate_predicate(expression, nodesets); end
4892
+
4893
+ # Expr takes a stack of path elements and a set of nodes (either a Parent
4894
+ # or an Array and returns an Array of matching nodes
4895
+ #
4896
+ # source://rexml//lib/rexml/xpath_parser.rb#175
4897
+ def expr(path_stack, nodeset, context = T.unsafe(nil)); end
4898
+
4899
+ # source://rexml//lib/rexml/xpath_parser.rb#582
4900
+ def filter_nodeset(nodeset); end
4901
+
4902
+ # source://rexml//lib/rexml/xpath_parser.rb#749
4903
+ def following(node); end
4904
+
4905
+ # source://rexml//lib/rexml/xpath_parser.rb#760
4906
+ def following_node_of(node); end
4907
+
4908
+ # Returns a String namespace for a node, given a prefix
4909
+ # The rules are:
4910
+ #
4911
+ # 1. Use the supplied namespace mapping first.
4912
+ # 2. If no mapping was supplied, use the context node to look up the namespace
4913
+ #
4914
+ # source://rexml//lib/rexml/xpath_parser.rb#163
4915
+ def get_namespace(node, prefix); end
4916
+
4917
+ # source://rexml//lib/rexml/xpath_parser.rb#646
4918
+ def leave(tag, *args); end
4919
+
4920
+ # source://rexml//lib/rexml/xpath_parser.rb#767
4921
+ def next_sibling_node(node); end
4922
+
4923
+ # source://rexml//lib/rexml/xpath_parser.rb#477
4924
+ def node_test(path_stack, nodesets, any_type: T.unsafe(nil)); end
4925
+
4926
+ # source://rexml//lib/rexml/xpath_parser.rb#806
4927
+ def norm(b); end
4928
+
4929
+ # source://rexml//lib/rexml/xpath_parser.rb#894
4930
+ def normalize_compare_values(a, operator, b); end
4931
+
4932
+ # Builds a nodeset of all of the preceding nodes of the supplied node,
4933
+ # in reverse document order
4934
+ # preceding:: includes every element in the document that precedes this node,
4935
+ # except for ancestors
4936
+ #
4937
+ # source://rexml//lib/rexml/xpath_parser.rb#712
4938
+ def preceding(node); end
4939
+
4940
+ # source://rexml//lib/rexml/xpath_parser.rb#734
4941
+ def preceding_node_of(node); end
4942
+
4943
+ # Reorders an array of nodes so that they are in document order
4944
+ # It tries to do this efficiently.
4945
+ #
4946
+ # FIXME: I need to get rid of this, but the issue is that most of the XPath
4947
+ # interpreter functions as a filter, which means that we lose context going
4948
+ # in and out of function calls. If I knew what the index of the nodes was,
4949
+ # I wouldn't have to do this. Maybe add a document IDX for each node?
4950
+ # Problems with mutable documents. Or, rewrite everything.
4951
+ #
4952
+ # source://rexml//lib/rexml/xpath_parser.rb#659
4953
+ def sort(array_of_nodes, order); end
4954
+
4955
+ # source://rexml//lib/rexml/xpath_parser.rb#441
4956
+ def step(path_stack, any_type: T.unsafe(nil), order: T.unsafe(nil)); end
4957
+
4958
+ # @return [Boolean]
4959
+ #
4960
+ # source://rexml//lib/rexml/xpath_parser.rb#154
4961
+ def strict?; end
4962
+
4963
+ # source://rexml//lib/rexml/xpath_parser.rb#634
4964
+ def trace(*args); end
4965
+
4966
+ # source://rexml//lib/rexml/xpath_parser.rb#954
4967
+ def unnode(nodeset); end
4968
+
4969
+ # source://rexml//lib/rexml/xpath_parser.rb#881
4970
+ def value_type(value); end
4971
+ end
4972
+
4973
+ # source://rexml//lib/rexml/xpath_parser.rb#58
4974
+ REXML::XPathParser::DEBUG = T.let(T.unsafe(nil), FalseClass)