jmeter_perf 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (275) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +19 -0
  4. data/.standard.yml +4 -0
  5. data/CHANGELOG.md +18 -0
  6. data/DSL.md +235 -0
  7. data/README.md +24 -0
  8. data/Rakefile +12 -0
  9. data/example/Gemfile +39 -0
  10. data/example/Gemfile.lock +232 -0
  11. data/example/README.md +3 -0
  12. data/example/Rakefile +6 -0
  13. data/example/app/controllers/application_controller.rb +2 -0
  14. data/example/app/controllers/test_controller.rb +15 -0
  15. data/example/bin/bundle +109 -0
  16. data/example/bin/docker-entrypoint +8 -0
  17. data/example/bin/rails +4 -0
  18. data/example/bin/rake +4 -0
  19. data/example/bin/setup +33 -0
  20. data/example/config/application.rb +44 -0
  21. data/example/config/boot.rb +3 -0
  22. data/example/config/credentials.yml.enc +1 -0
  23. data/example/config/database.yml +25 -0
  24. data/example/config/environment.rb +5 -0
  25. data/example/config/environments/development.rb +64 -0
  26. data/example/config/environments/production.rb +82 -0
  27. data/example/config/environments/test.rb +61 -0
  28. data/example/config/initializers/cors.rb +16 -0
  29. data/example/config/initializers/filter_parameter_logging.rb +8 -0
  30. data/example/config/initializers/inflections.rb +16 -0
  31. data/example/config/locales/en.yml +31 -0
  32. data/example/config/puma.rb +35 -0
  33. data/example/config/routes.rb +5 -0
  34. data/example/config.ru +7 -0
  35. data/example/fast.log +49 -0
  36. data/example/jmeter.log +28 -0
  37. data/example/lib/tasks/test.rake +40 -0
  38. data/example/log/.keep +0 -0
  39. data/example/public/robots.txt +1 -0
  40. data/example/random.log +49 -0
  41. data/example/slow.log +49 -0
  42. data/example/vendor/.keep +0 -0
  43. data/lib/Rakefile +4 -0
  44. data/lib/jmeter_perf/dsl/access_log_sampler.rb +38 -0
  45. data/lib/jmeter_perf/dsl/aggregate_graph.rb +61 -0
  46. data/lib/jmeter_perf/dsl/aggregate_report.rb +61 -0
  47. data/lib/jmeter_perf/dsl/ajp13_sampler.rb +47 -0
  48. data/lib/jmeter_perf/dsl/assertion_results.rb +61 -0
  49. data/lib/jmeter_perf/dsl/bean_shell_assertion.rb +34 -0
  50. data/lib/jmeter_perf/dsl/bean_shell_listener.rb +34 -0
  51. data/lib/jmeter_perf/dsl/bean_shell_postprocessor.rb +34 -0
  52. data/lib/jmeter_perf/dsl/bean_shell_preprocessor.rb +34 -0
  53. data/lib/jmeter_perf/dsl/bean_shell_sampler.rb +34 -0
  54. data/lib/jmeter_perf/dsl/bean_shell_timer.rb +34 -0
  55. data/lib/jmeter_perf/dsl/bsf_assertion.rb +34 -0
  56. data/lib/jmeter_perf/dsl/bsf_listener.rb +34 -0
  57. data/lib/jmeter_perf/dsl/bsf_postprocessor.rb +34 -0
  58. data/lib/jmeter_perf/dsl/bsf_preprocessor.rb +34 -0
  59. data/lib/jmeter_perf/dsl/bsf_sampler.rb +34 -0
  60. data/lib/jmeter_perf/dsl/bsf_timer.rb +34 -0
  61. data/lib/jmeter_perf/dsl/compare_assertion.rb +33 -0
  62. data/lib/jmeter_perf/dsl/comparison_assertion_visualizer.rb +61 -0
  63. data/lib/jmeter_perf/dsl/constant_throughput_timer.rb +32 -0
  64. data/lib/jmeter_perf/dsl/constant_timer.rb +31 -0
  65. data/lib/jmeter_perf/dsl/counter.rb +37 -0
  66. data/lib/jmeter_perf/dsl/css_jquery_extractor.rb +37 -0
  67. data/lib/jmeter_perf/dsl/csv_data_set_config.rb +39 -0
  68. data/lib/jmeter_perf/dsl/debug_postprocessor.rb +34 -0
  69. data/lib/jmeter_perf/dsl/debug_sampler.rb +33 -0
  70. data/lib/jmeter_perf/dsl/distribution_graphalpha.rb +61 -0
  71. data/lib/jmeter_perf/dsl/duration_assertion.rb +31 -0
  72. data/lib/jmeter_perf/dsl/for_each_controller.rb +33 -0
  73. data/lib/jmeter_perf/dsl/ftp_request.rb +40 -0
  74. data/lib/jmeter_perf/dsl/ftp_request_defaults.rb +38 -0
  75. data/lib/jmeter_perf/dsl/gaussian_random_timer.rb +32 -0
  76. data/lib/jmeter_perf/dsl/generate_summary_results.rb +29 -0
  77. data/lib/jmeter_perf/dsl/graph_results.rb +61 -0
  78. data/lib/jmeter_perf/dsl/html_assertion.rb +36 -0
  79. data/lib/jmeter_perf/dsl/html_link_parser.rb +29 -0
  80. data/lib/jmeter_perf/dsl/html_parameter_mask.rb +38 -0
  81. data/lib/jmeter_perf/dsl/http_authorization_manager.rb +39 -0
  82. data/lib/jmeter_perf/dsl/http_cache_manager.rb +32 -0
  83. data/lib/jmeter_perf/dsl/http_cookie_manager.rb +34 -0
  84. data/lib/jmeter_perf/dsl/http_header_manager.rb +36 -0
  85. data/lib/jmeter_perf/dsl/http_request.rb +47 -0
  86. data/lib/jmeter_perf/dsl/http_request_defaults.rb +53 -0
  87. data/lib/jmeter_perf/dsl/http_url_rewriting_modifier.rb +36 -0
  88. data/lib/jmeter_perf/dsl/if_controller.rb +33 -0
  89. data/lib/jmeter_perf/dsl/include_controller.rb +31 -0
  90. data/lib/jmeter_perf/dsl/j_unit_request.rb +43 -0
  91. data/lib/jmeter_perf/dsl/java_request.rb +75 -0
  92. data/lib/jmeter_perf/dsl/java_request_defaults.rb +75 -0
  93. data/lib/jmeter_perf/dsl/jdbc_connection_configuration.rb +43 -0
  94. data/lib/jmeter_perf/dsl/jdbc_postprocessor.rb +39 -0
  95. data/lib/jmeter_perf/dsl/jdbc_preprocessor.rb +39 -0
  96. data/lib/jmeter_perf/dsl/jdbc_request.rb +39 -0
  97. data/lib/jmeter_perf/dsl/jms_pointto_point.rb +47 -0
  98. data/lib/jmeter_perf/dsl/jms_publisher.rb +49 -0
  99. data/lib/jmeter_perf/dsl/jms_subscriber.rb +41 -0
  100. data/lib/jmeter_perf/dsl/json_path_postprocessor.rb +33 -0
  101. data/lib/jmeter_perf/dsl/jsr223_assertion.rb +35 -0
  102. data/lib/jmeter_perf/dsl/jsr223_listener.rb +35 -0
  103. data/lib/jmeter_perf/dsl/jsr223_postprocessor.rb +35 -0
  104. data/lib/jmeter_perf/dsl/jsr223_preprocessor.rb +35 -0
  105. data/lib/jmeter_perf/dsl/jsr223_sampler.rb +35 -0
  106. data/lib/jmeter_perf/dsl/jsr223_timer.rb +35 -0
  107. data/lib/jmeter_perf/dsl/keystore_configuration.rb +34 -0
  108. data/lib/jmeter_perf/dsl/ldap_extended_request.rb +48 -0
  109. data/lib/jmeter_perf/dsl/ldap_extended_request_defaults.rb +48 -0
  110. data/lib/jmeter_perf/dsl/ldap_request.rb +41 -0
  111. data/lib/jmeter_perf/dsl/ldap_request_defaults.rb +45 -0
  112. data/lib/jmeter_perf/dsl/login_config_element.rb +32 -0
  113. data/lib/jmeter_perf/dsl/loop_controller.rb +32 -0
  114. data/lib/jmeter_perf/dsl/mail_reader_sampler.rb +43 -0
  115. data/lib/jmeter_perf/dsl/mailer_visualizer.rb +70 -0
  116. data/lib/jmeter_perf/dsl/md5_hex_assertion.rb +31 -0
  117. data/lib/jmeter_perf/dsl/module_controller.rb +31 -0
  118. data/lib/jmeter_perf/dsl/monitor_results.rb +61 -0
  119. data/lib/jmeter_perf/dsl/once_only_controller.rb +29 -0
  120. data/lib/jmeter_perf/dsl/os_process_sampler.rb +40 -0
  121. data/lib/jmeter_perf/dsl/poisson_random_timer.rb +32 -0
  122. data/lib/jmeter_perf/dsl/random_controller.rb +31 -0
  123. data/lib/jmeter_perf/dsl/random_order_controller.rb +29 -0
  124. data/lib/jmeter_perf/dsl/random_variable.rb +36 -0
  125. data/lib/jmeter_perf/dsl/recording_controller.rb +29 -0
  126. data/lib/jmeter_perf/dsl/reg_ex_user_parameters.rb +33 -0
  127. data/lib/jmeter_perf/dsl/regular_expression_extractor.rb +38 -0
  128. data/lib/jmeter_perf/dsl/response_assertion.rb +37 -0
  129. data/lib/jmeter_perf/dsl/response_time_graph.rb +61 -0
  130. data/lib/jmeter_perf/dsl/result_status_action_handler.rb +31 -0
  131. data/lib/jmeter_perf/dsl/runtime_controller.rb +31 -0
  132. data/lib/jmeter_perf/dsl/save_responses_to_a_file.rb +35 -0
  133. data/lib/jmeter_perf/dsl/simple_config_element.rb +29 -0
  134. data/lib/jmeter_perf/dsl/simple_controller.rb +29 -0
  135. data/lib/jmeter_perf/dsl/simple_data_writer.rb +61 -0
  136. data/lib/jmeter_perf/dsl/smime_assertion.rb +41 -0
  137. data/lib/jmeter_perf/dsl/smtp_sampler.rb +57 -0
  138. data/lib/jmeter_perf/dsl/soap_xml_rpc_request.rb +39 -0
  139. data/lib/jmeter_perf/dsl/spline_visualizer.rb +61 -0
  140. data/lib/jmeter_perf/dsl/summary_report.rb +61 -0
  141. data/lib/jmeter_perf/dsl/switch_controller.rb +31 -0
  142. data/lib/jmeter_perf/dsl/synchronizing_timer.rb +32 -0
  143. data/lib/jmeter_perf/dsl/tcp_sampler.rb +39 -0
  144. data/lib/jmeter_perf/dsl/tcp_sampler_config.rb +37 -0
  145. data/lib/jmeter_perf/dsl/test_action.rb +33 -0
  146. data/lib/jmeter_perf/dsl/test_fragment.rb +29 -0
  147. data/lib/jmeter_perf/dsl/test_plan.rb +37 -0
  148. data/lib/jmeter_perf/dsl/thread_group.rb +43 -0
  149. data/lib/jmeter_perf/dsl/throughput_controller.rb +38 -0
  150. data/lib/jmeter_perf/dsl/transaction_controller.rb +32 -0
  151. data/lib/jmeter_perf/dsl/uniform_random_timer.rb +32 -0
  152. data/lib/jmeter_perf/dsl/user_defined_variables.rb +39 -0
  153. data/lib/jmeter_perf/dsl/user_parameters.rb +36 -0
  154. data/lib/jmeter_perf/dsl/view_results_in_table.rb +61 -0
  155. data/lib/jmeter_perf/dsl/view_results_tree.rb +61 -0
  156. data/lib/jmeter_perf/dsl/while_controller.rb +31 -0
  157. data/lib/jmeter_perf/dsl/x_path_assertion.rb +37 -0
  158. data/lib/jmeter_perf/dsl/x_path_extractor.rb +37 -0
  159. data/lib/jmeter_perf/dsl/xml_assertion.rb +29 -0
  160. data/lib/jmeter_perf/dsl/xml_schema_assertion.rb +31 -0
  161. data/lib/jmeter_perf/extend/assertions/response_assertion.rb +38 -0
  162. data/lib/jmeter_perf/extend/config_elements/header_manager.rb +13 -0
  163. data/lib/jmeter_perf/extend/config_elements/http_cache_manager.rb +12 -0
  164. data/lib/jmeter_perf/extend/config_elements/http_cookie_manager.rb +39 -0
  165. data/lib/jmeter_perf/extend/config_elements/http_request_defaults.rb +55 -0
  166. data/lib/jmeter_perf/extend/config_elements/user_defined_variables.rb +13 -0
  167. data/lib/jmeter_perf/extend/config_elements/user_parameters.rb +31 -0
  168. data/lib/jmeter_perf/extend/controllers/foreach_controller.rb +31 -0
  169. data/lib/jmeter_perf/extend/controllers/loop_controller.rb +11 -0
  170. data/lib/jmeter_perf/extend/controllers/module_controller.rb +26 -0
  171. data/lib/jmeter_perf/extend/controllers/throughput_controller.rb +15 -0
  172. data/lib/jmeter_perf/extend/controllers/transaction_controller.rb +14 -0
  173. data/lib/jmeter_perf/extend/misc/exists.rb +13 -0
  174. data/lib/jmeter_perf/extend/misc/rsync.rb +24 -0
  175. data/lib/jmeter_perf/extend/misc/uuid.rb +12 -0
  176. data/lib/jmeter_perf/extend/misc/with_helpers.rb +27 -0
  177. data/lib/jmeter_perf/extend/plugins/jmeter_plugins.rb +124 -0
  178. data/lib/jmeter_perf/extend/processors/extract.rb +27 -0
  179. data/lib/jmeter_perf/extend/processors/regular_expression_extractor.rb +27 -0
  180. data/lib/jmeter_perf/extend/samplers/http_request.rb +66 -0
  181. data/lib/jmeter_perf/extend/samplers/jms_pointtopoint.rb +23 -0
  182. data/lib/jmeter_perf/extend/samplers/soapxmlrpc_request.rb +10 -0
  183. data/lib/jmeter_perf/extend/threads/thread_group.rb +19 -0
  184. data/lib/jmeter_perf/extend/timers/constant_throughput_timer.rb +11 -0
  185. data/lib/jmeter_perf/extend/timers/random_timer.rb +14 -0
  186. data/lib/jmeter_perf/helpers/dsl_generator.rb +157 -0
  187. data/lib/jmeter_perf/helpers/fallback_content_proxy.rb +96 -0
  188. data/lib/jmeter_perf/helpers/helper.rb +63 -0
  189. data/lib/jmeter_perf/helpers/parser.rb +143 -0
  190. data/lib/jmeter_perf/helpers/running_statistics.rb +62 -0
  191. data/lib/jmeter_perf/helpers/string.rb +60 -0
  192. data/lib/jmeter_perf/helpers/user-agents.rb +42 -0
  193. data/lib/jmeter_perf/plugins/active_threads_over_time.rb +59 -0
  194. data/lib/jmeter_perf/plugins/composite_graph.rb +77 -0
  195. data/lib/jmeter_perf/plugins/console_status_logger.rb +19 -0
  196. data/lib/jmeter_perf/plugins/dummy_sampler.rb +30 -0
  197. data/lib/jmeter_perf/plugins/jmx_collector.rb +74 -0
  198. data/lib/jmeter_perf/plugins/json_path_assertion.rb +23 -0
  199. data/lib/jmeter_perf/plugins/json_path_extractor.rb +22 -0
  200. data/lib/jmeter_perf/plugins/latencies_over_time.rb +53 -0
  201. data/lib/jmeter_perf/plugins/loadosophia_uploader.rb +66 -0
  202. data/lib/jmeter_perf/plugins/perfmon_collector.rb +87 -0
  203. data/lib/jmeter_perf/plugins/redis_data_set.rb +43 -0
  204. data/lib/jmeter_perf/plugins/response_codes_per_second.rb +53 -0
  205. data/lib/jmeter_perf/plugins/response_times_distribution.rb +53 -0
  206. data/lib/jmeter_perf/plugins/response_times_over_time.rb +53 -0
  207. data/lib/jmeter_perf/plugins/response_times_percentiles.rb +54 -0
  208. data/lib/jmeter_perf/plugins/stepping_thread_group.rb +34 -0
  209. data/lib/jmeter_perf/plugins/transactions_per_second.rb +53 -0
  210. data/lib/jmeter_perf/plugins/ultimate_thread_group.rb +28 -0
  211. data/lib/jmeter_perf/plugins/variable_throughput_timer.rb +35 -0
  212. data/lib/jmeter_perf/report/comparator.rb +258 -0
  213. data/lib/jmeter_perf/report/summary.rb +268 -0
  214. data/lib/jmeter_perf/tasks/dsl.rake +19 -0
  215. data/lib/jmeter_perf/version.rb +5 -0
  216. data/lib/jmeter_perf/views/report_template.html.erb +114 -0
  217. data/lib/jmeter_perf.rb +183 -0
  218. data/lib/specifications/idl.xml +1494 -0
  219. data/sig/jmeter_perf.rbs +195 -0
  220. data/sorbet/config +5 -0
  221. data/sorbet/rbi/annotations/.gitattributes +1 -0
  222. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  223. data/sorbet/rbi/gems/.gitattributes +1 -0
  224. data/sorbet/rbi/gems/ast@2.4.2.rbi +585 -0
  225. data/sorbet/rbi/gems/bump@0.10.0.rbi +169 -0
  226. data/sorbet/rbi/gems/byebug@11.1.3.rbi +3607 -0
  227. data/sorbet/rbi/gems/coderay@1.1.3.rbi +3427 -0
  228. data/sorbet/rbi/gems/diff-lcs@1.5.1.rbi +1131 -0
  229. data/sorbet/rbi/gems/docile@1.4.1.rbi +377 -0
  230. data/sorbet/rbi/gems/erubi@1.13.0.rbi +150 -0
  231. data/sorbet/rbi/gems/json@2.7.2.rbi +1562 -0
  232. data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +14238 -0
  233. data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +240 -0
  234. data/sorbet/rbi/gems/method_source@1.1.0.rbi +304 -0
  235. data/sorbet/rbi/gems/netrc@0.11.0.rbi +159 -0
  236. data/sorbet/rbi/gems/nokogiri@1.16.7.rbi +7311 -0
  237. data/sorbet/rbi/gems/parallel@1.26.3.rbi +291 -0
  238. data/sorbet/rbi/gems/parser@3.3.5.0.rbi +5519 -0
  239. data/sorbet/rbi/gems/prism@1.2.0.rbi +39085 -0
  240. data/sorbet/rbi/gems/pry-byebug@3.10.1.rbi +1151 -0
  241. data/sorbet/rbi/gems/pry@0.14.2.rbi +10076 -0
  242. data/sorbet/rbi/gems/racc@1.8.1.rbi +162 -0
  243. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +403 -0
  244. data/sorbet/rbi/gems/rake@13.2.1.rbi +3074 -0
  245. data/sorbet/rbi/gems/rbi@0.2.1.rbi +4535 -0
  246. data/sorbet/rbi/gems/rbtree3@0.7.1.rbi +9 -0
  247. data/sorbet/rbi/gems/regexp_parser@2.9.2.rbi +3772 -0
  248. data/sorbet/rbi/gems/rexml@3.3.8.rbi +4858 -0
  249. data/sorbet/rbi/gems/rspec-core@3.13.1.rbi +11132 -0
  250. data/sorbet/rbi/gems/rspec-expectations@3.13.3.rbi +8183 -0
  251. data/sorbet/rbi/gems/rspec-mocks@3.13.1.rbi +5341 -0
  252. data/sorbet/rbi/gems/rspec-support@3.13.1.rbi +1630 -0
  253. data/sorbet/rbi/gems/rspec@3.13.0.rbi +83 -0
  254. data/sorbet/rbi/gems/rubocop-ast@1.32.3.rbi +7054 -0
  255. data/sorbet/rbi/gems/rubocop-performance@1.21.1.rbi +9 -0
  256. data/sorbet/rbi/gems/rubocop@1.65.1.rbi +58182 -0
  257. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1318 -0
  258. data/sorbet/rbi/gems/simplecov-html@0.13.1.rbi +225 -0
  259. data/sorbet/rbi/gems/simplecov@0.22.0.rbi +2149 -0
  260. data/sorbet/rbi/gems/simplecov_json_formatter@0.1.4.rbi +9 -0
  261. data/sorbet/rbi/gems/spoom@1.5.0.rbi +4932 -0
  262. data/sorbet/rbi/gems/standard-custom@1.0.2.rbi +9 -0
  263. data/sorbet/rbi/gems/standard-performance@1.4.0.rbi +9 -0
  264. data/sorbet/rbi/gems/standard@1.40.0.rbi +926 -0
  265. data/sorbet/rbi/gems/tapioca@0.16.3.rbi +3596 -0
  266. data/sorbet/rbi/gems/tdigest@0.2.1.rbi +170 -0
  267. data/sorbet/rbi/gems/thor@1.3.2.rbi +4378 -0
  268. data/sorbet/rbi/gems/unicode-display_width@2.6.0.rbi +66 -0
  269. data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +435 -0
  270. data/sorbet/rbi/gems/yard@0.9.37.rbi +18379 -0
  271. data/sorbet/rbi/todo.rbi +31 -0
  272. data/sorbet/tapioca/config.yml +13 -0
  273. data/sorbet/tapioca/require.rb +15 -0
  274. data/tasks/dsl.rake +22 -0
  275. metadata +355 -0
@@ -0,0 +1,4858 @@
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#182
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#186
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#274
3472
+ def current_line; end
3473
+
3474
+ # @return [Boolean]
3475
+ #
3476
+ # source://rexml//lib/rexml/source.rb#269
3477
+ def empty?; end
3478
+
3479
+ # source://rexml//lib/rexml/source.rb#246
3480
+ def ensure_buffer; end
3481
+
3482
+ # source://rexml//lib/rexml/source.rb#250
3483
+ def match(pattern, cons = T.unsafe(nil)); end
3484
+
3485
+ # source://rexml//lib/rexml/source.rb#207
3486
+ def read(term = T.unsafe(nil), min_bytes = T.unsafe(nil)); end
3487
+
3488
+ # source://rexml//lib/rexml/source.rb#228
3489
+ def read_until(term); end
3490
+
3491
+ private
3492
+
3493
+ # source://rexml//lib/rexml/source.rb#316
3494
+ def encoding_updated; end
3495
+
3496
+ # source://rexml//lib/rexml/source.rb#296
3497
+ def readline(term = T.unsafe(nil)); end
3498
+ end
3499
+
3500
+ # Represents an XML Instruction; IE, <? ... ?>
3501
+ # TODO: Add parent arg (3rd arg) to constructor
3502
+ #
3503
+ # source://rexml//lib/rexml/instruction.rb#9
3504
+ class REXML::Instruction < ::REXML::Child
3505
+ # Constructs a new Instruction
3506
+ # the target of this instruction is set to this. If an Instruction,
3507
+ # then the Instruction is shallowly cloned (target and content are
3508
+ # copied).
3509
+ # be a Parent if the target argument is a Source. Otherwise, this
3510
+ # String is set as the content of this instruction.
3511
+ #
3512
+ # @param target can be one of a number of things. If String, then
3513
+ # @param content Must be either a String, or a Parent. Can only
3514
+ # @return [Instruction] a new instance of Instruction
3515
+ #
3516
+ # source://rexml//lib/rexml/instruction.rb#25
3517
+ def initialize(target, content = T.unsafe(nil)); end
3518
+
3519
+ # of the other matches the target and content of this object.
3520
+ #
3521
+ # @return true if other is an Instruction, and the content and target
3522
+ #
3523
+ # source://rexml//lib/rexml/instruction.rb#65
3524
+ def ==(other); end
3525
+
3526
+ # source://rexml//lib/rexml/instruction.rb#44
3527
+ def clone; end
3528
+
3529
+ # target is the "name" of the Instruction; IE, the "tag" in <?tag ...?>
3530
+ # content is everything else.
3531
+ #
3532
+ # source://rexml//lib/rexml/instruction.rb#15
3533
+ def content; end
3534
+
3535
+ # target is the "name" of the Instruction; IE, the "tag" in <?tag ...?>
3536
+ # content is everything else.
3537
+ #
3538
+ # source://rexml//lib/rexml/instruction.rb#15
3539
+ def content=(_arg0); end
3540
+
3541
+ # source://rexml//lib/rexml/instruction.rb#75
3542
+ def inspect; end
3543
+
3544
+ # source://rexml//lib/rexml/instruction.rb#71
3545
+ def node_type; end
3546
+
3547
+ # target is the "name" of the Instruction; IE, the "tag" in <?tag ...?>
3548
+ # content is everything else.
3549
+ #
3550
+ # source://rexml//lib/rexml/instruction.rb#15
3551
+ def target; end
3552
+
3553
+ # target is the "name" of the Instruction; IE, the "tag" in <?tag ...?>
3554
+ # content is everything else.
3555
+ #
3556
+ # source://rexml//lib/rexml/instruction.rb#15
3557
+ def target=(_arg0); end
3558
+
3559
+ # == DEPRECATED
3560
+ # See the rexml/formatters package
3561
+ #
3562
+ # source://rexml//lib/rexml/instruction.rb#51
3563
+ def write(writer, indent = T.unsafe(nil), transitive = T.unsafe(nil), ie_hack = T.unsafe(nil)); end
3564
+ end
3565
+
3566
+ # Adds named attributes to an object.
3567
+ #
3568
+ # source://rexml//lib/rexml/namespace.rb#7
3569
+ module REXML::Namespace
3570
+ include ::REXML::XMLTokens
3571
+
3572
+ # The name of the object, valid if set
3573
+ #
3574
+ # source://rexml//lib/rexml/namespace.rb#9
3575
+ def expanded_name; end
3576
+
3577
+ # Fully expand the name, even if the prefix wasn't specified in the
3578
+ # source file.
3579
+ #
3580
+ # source://rexml//lib/rexml/namespace.rb#57
3581
+ def fully_expanded_name; end
3582
+
3583
+ # Compares names optionally WITH namespaces
3584
+ #
3585
+ # @return [Boolean]
3586
+ #
3587
+ # source://rexml//lib/rexml/namespace.rb#43
3588
+ def has_name?(other, ns = T.unsafe(nil)); end
3589
+
3590
+ # The name of the object, valid if set
3591
+ #
3592
+ # source://rexml//lib/rexml/namespace.rb#9
3593
+ def name; end
3594
+
3595
+ # Sets the name and the expanded name
3596
+ #
3597
+ # source://rexml//lib/rexml/namespace.rb#17
3598
+ def name=(name); end
3599
+
3600
+ # The expanded name of the object, valid if name is set
3601
+ #
3602
+ # source://rexml//lib/rexml/namespace.rb#11
3603
+ def prefix; end
3604
+
3605
+ # The expanded name of the object, valid if name is set
3606
+ #
3607
+ # source://rexml//lib/rexml/namespace.rb#11
3608
+ def prefix=(_arg0); end
3609
+ end
3610
+
3611
+ # source://rexml//lib/rexml/namespace.rb#13
3612
+ REXML::Namespace::NAME_WITHOUT_NAMESPACE = T.let(T.unsafe(nil), Regexp)
3613
+
3614
+ # source://rexml//lib/rexml/doctype.rb#280
3615
+ class REXML::NotationDecl < ::REXML::Child
3616
+ # @return [NotationDecl] a new instance of NotationDecl
3617
+ #
3618
+ # source://rexml//lib/rexml/doctype.rb#282
3619
+ def initialize(name, middle, pub, sys); end
3620
+
3621
+ # This method retrieves the name of the notation.
3622
+ #
3623
+ # Method contributed by Henrik Martensson
3624
+ #
3625
+ # source://rexml//lib/rexml/doctype.rb#307
3626
+ def name; end
3627
+
3628
+ # Returns the value of attribute public.
3629
+ #
3630
+ # source://rexml//lib/rexml/doctype.rb#281
3631
+ def public; end
3632
+
3633
+ # Sets the attribute public
3634
+ #
3635
+ # @param value the value to set the attribute public to.
3636
+ #
3637
+ # source://rexml//lib/rexml/doctype.rb#281
3638
+ def public=(_arg0); end
3639
+
3640
+ # Returns the value of attribute system.
3641
+ #
3642
+ # source://rexml//lib/rexml/doctype.rb#281
3643
+ def system; end
3644
+
3645
+ # Sets the attribute system
3646
+ #
3647
+ # @param value the value to set the attribute system to.
3648
+ #
3649
+ # source://rexml//lib/rexml/doctype.rb#281
3650
+ def system=(_arg0); end
3651
+
3652
+ # source://rexml//lib/rexml/doctype.rb#290
3653
+ def to_s; end
3654
+
3655
+ # source://rexml//lib/rexml/doctype.rb#300
3656
+ def write(output, indent = T.unsafe(nil)); end
3657
+ end
3658
+
3659
+ # source://rexml//lib/rexml/output.rb#5
3660
+ class REXML::Output
3661
+ include ::REXML::Encoding
3662
+
3663
+ # @return [Output] a new instance of Output
3664
+ #
3665
+ # source://rexml//lib/rexml/output.rb#10
3666
+ def initialize(real_IO, encd = T.unsafe(nil)); end
3667
+
3668
+ # source://rexml//lib/rexml/output.rb#22
3669
+ def <<(content); end
3670
+
3671
+ # Returns the value of attribute encoding.
3672
+ #
3673
+ # source://rexml//lib/rexml/output.rb#8
3674
+ def encoding; end
3675
+
3676
+ # source://rexml//lib/rexml/output.rb#26
3677
+ def to_s; end
3678
+ end
3679
+
3680
+ # A parent has children, and has methods for accessing them. The Parent
3681
+ # class is never encountered except as the superclass for some other
3682
+ # object.
3683
+ #
3684
+ # source://rexml//lib/rexml/parent.rb#8
3685
+ class REXML::Parent < ::REXML::Child
3686
+ include ::Enumerable
3687
+
3688
+ # Constructor
3689
+ #
3690
+ # @param parent if supplied, will be set as the parent of this object
3691
+ # @return [Parent] a new instance of Parent
3692
+ #
3693
+ # source://rexml//lib/rexml/parent.rb#13
3694
+ def initialize(parent = T.unsafe(nil)); end
3695
+
3696
+ # source://rexml//lib/rexml/parent.rb#18
3697
+ def <<(object); end
3698
+
3699
+ # Fetches a child at a given index
3700
+ #
3701
+ # @param index the Integer index of the child to fetch
3702
+ #
3703
+ # source://rexml//lib/rexml/parent.rb#57
3704
+ def [](index); end
3705
+
3706
+ # Set an index entry. See Array.[]=
3707
+ #
3708
+ # @param index the index of the element to set
3709
+ # @param opt either the object to set, or an Integer length
3710
+ # @param child if opt is an Integer, this is the child to set
3711
+ # @return the parent (self)
3712
+ #
3713
+ # source://rexml//lib/rexml/parent.rb#70
3714
+ def []=(*args); end
3715
+
3716
+ # source://rexml//lib/rexml/parent.rb#18
3717
+ def add(object); end
3718
+
3719
+ # source://rexml//lib/rexml/parent.rb#115
3720
+ def children; end
3721
+
3722
+ # Deeply clones this object. This creates a complete duplicate of this
3723
+ # Parent, including all descendants.
3724
+ #
3725
+ # source://rexml//lib/rexml/parent.rb#148
3726
+ def deep_clone; end
3727
+
3728
+ # source://rexml//lib/rexml/parent.rb#32
3729
+ def delete(object); end
3730
+
3731
+ # source://rexml//lib/rexml/parent.rb#47
3732
+ def delete_at(index); end
3733
+
3734
+ # source://rexml//lib/rexml/parent.rb#43
3735
+ def delete_if(&block); end
3736
+
3737
+ # source://rexml//lib/rexml/parent.rb#39
3738
+ def each(&block); end
3739
+
3740
+ # source://rexml//lib/rexml/parent.rb#39
3741
+ def each_child(&block); end
3742
+
3743
+ # source://rexml//lib/rexml/parent.rb#51
3744
+ def each_index(&block); end
3745
+
3746
+ # Fetches the index of a given child
3747
+ # of this parent.
3748
+ #
3749
+ # @param child the child to get the index of
3750
+ # @return the index of the child, or nil if the object is not a child
3751
+ #
3752
+ # source://rexml//lib/rexml/parent.rb#123
3753
+ def index(child); end
3754
+
3755
+ # Inserts an child after another child
3756
+ # child2 will be inserted after child1 in the child list of the parent.
3757
+ # If an xpath, child2 will be inserted after the first child to match
3758
+ # the xpath.
3759
+ #
3760
+ # @param child1 this is either an xpath or an Element. If an Element,
3761
+ # @param child2 the child to insert
3762
+ # @return the parent (self)
3763
+ #
3764
+ # source://rexml//lib/rexml/parent.rb#102
3765
+ def insert_after(child1, child2); end
3766
+
3767
+ # Inserts an child before another child
3768
+ # child2 will be inserted before child1 in the child list of the parent.
3769
+ # If an xpath, child2 will be inserted before the first child to match
3770
+ # the xpath.
3771
+ #
3772
+ # @param child1 this is either an xpath or an Element. If an Element,
3773
+ # @param child2 the child to insert
3774
+ # @return the parent (self)
3775
+ #
3776
+ # source://rexml//lib/rexml/parent.rb#82
3777
+ def insert_before(child1, child2); end
3778
+
3779
+ # @return the number of children of this parent
3780
+ #
3781
+ # source://rexml//lib/rexml/parent.rb#130
3782
+ def length; end
3783
+
3784
+ # @return [Boolean]
3785
+ #
3786
+ # source://rexml//lib/rexml/parent.rb#162
3787
+ def parent?; end
3788
+
3789
+ # source://rexml//lib/rexml/parent.rb#18
3790
+ def push(object); end
3791
+
3792
+ # Replaces one child with another, making sure the nodelist is correct
3793
+ # Child)
3794
+ #
3795
+ # @param to_replace the child to replace (must be a Child)
3796
+ # @param replacement the child to insert into the nodelist (must be a
3797
+ #
3798
+ # source://rexml//lib/rexml/parent.rb#140
3799
+ def replace_child(to_replace, replacement); end
3800
+
3801
+ # @return the number of children of this parent
3802
+ #
3803
+ # source://rexml//lib/rexml/parent.rb#130
3804
+ def size; end
3805
+
3806
+ # source://rexml//lib/rexml/parent.rb#115
3807
+ def to_a; end
3808
+
3809
+ # source://rexml//lib/rexml/parent.rb#27
3810
+ def unshift(object); end
3811
+ end
3812
+
3813
+ # source://rexml//lib/rexml/parseexception.rb#3
3814
+ class REXML::ParseException < ::RuntimeError
3815
+ # @return [ParseException] a new instance of ParseException
3816
+ #
3817
+ # source://rexml//lib/rexml/parseexception.rb#6
3818
+ def initialize(message, source = T.unsafe(nil), parser = T.unsafe(nil), exception = T.unsafe(nil)); end
3819
+
3820
+ # source://rexml//lib/rexml/parseexception.rb#49
3821
+ def context; end
3822
+
3823
+ # Returns the value of attribute continued_exception.
3824
+ #
3825
+ # source://rexml//lib/rexml/parseexception.rb#4
3826
+ def continued_exception; end
3827
+
3828
+ # Sets the attribute continued_exception
3829
+ #
3830
+ # @param value the value to set the attribute continued_exception to.
3831
+ #
3832
+ # source://rexml//lib/rexml/parseexception.rb#4
3833
+ def continued_exception=(_arg0); end
3834
+
3835
+ # source://rexml//lib/rexml/parseexception.rb#44
3836
+ def line; end
3837
+
3838
+ # Returns the value of attribute parser.
3839
+ #
3840
+ # source://rexml//lib/rexml/parseexception.rb#4
3841
+ def parser; end
3842
+
3843
+ # Sets the attribute parser
3844
+ #
3845
+ # @param value the value to set the attribute parser to.
3846
+ #
3847
+ # source://rexml//lib/rexml/parseexception.rb#4
3848
+ def parser=(_arg0); end
3849
+
3850
+ # source://rexml//lib/rexml/parseexception.rb#39
3851
+ def position; end
3852
+
3853
+ # Returns the value of attribute source.
3854
+ #
3855
+ # source://rexml//lib/rexml/parseexception.rb#4
3856
+ def source; end
3857
+
3858
+ # Sets the attribute source
3859
+ #
3860
+ # @param value the value to set the attribute source to.
3861
+ #
3862
+ # source://rexml//lib/rexml/parseexception.rb#4
3863
+ def source=(_arg0); end
3864
+
3865
+ # source://rexml//lib/rexml/parseexception.rb#13
3866
+ def to_s; end
3867
+ end
3868
+
3869
+ # = Using the Pull Parser
3870
+ # <em>This API is experimental, and subject to change.</em>
3871
+ # parser = PullParser.new( "<a>text<b att='val'/>txet</a>" )
3872
+ # while parser.has_next?
3873
+ # res = parser.next
3874
+ # puts res[1]['att'] if res.start_tag? and res[0] == 'b'
3875
+ # end
3876
+ # See the PullEvent class for information on the content of the results.
3877
+ # The data is identical to the arguments passed for the various events to
3878
+ # the StreamListener API.
3879
+ #
3880
+ # Notice that:
3881
+ # parser = PullParser.new( "<a>BAD DOCUMENT" )
3882
+ # while parser.has_next?
3883
+ # res = parser.next
3884
+ # raise res[1] if res.error?
3885
+ # end
3886
+ #
3887
+ # Nat Price gave me some good ideas for the API.
3888
+ #
3889
+ # source://rexml//lib/rexml/parsers/baseparser.rb#57
3890
+ class REXML::Parsers::BaseParser
3891
+ # @return [BaseParser] a new instance of BaseParser
3892
+ #
3893
+ # source://rexml//lib/rexml/parsers/baseparser.rb#163
3894
+ def initialize(source); end
3895
+
3896
+ # source://rexml//lib/rexml/parsers/baseparser.rb#172
3897
+ def add_listener(listener); end
3898
+
3899
+ # Returns true if there are no more events
3900
+ #
3901
+ # @return [Boolean]
3902
+ #
3903
+ # source://rexml//lib/rexml/parsers/baseparser.rb#203
3904
+ def empty?; end
3905
+
3906
+ # source://rexml//lib/rexml/parsers/baseparser.rb#535
3907
+ def entity(reference, entities); end
3908
+
3909
+ # Returns the value of attribute entity_expansion_count.
3910
+ #
3911
+ # source://rexml//lib/rexml/parsers/baseparser.rb#177
3912
+ def entity_expansion_count; end
3913
+
3914
+ # Sets the attribute entity_expansion_limit
3915
+ #
3916
+ # @param value the value to set the attribute entity_expansion_limit to.
3917
+ #
3918
+ # source://rexml//lib/rexml/parsers/baseparser.rb#178
3919
+ def entity_expansion_limit=(_arg0); end
3920
+
3921
+ # Sets the attribute entity_expansion_text_limit
3922
+ #
3923
+ # @param value the value to set the attribute entity_expansion_text_limit to.
3924
+ #
3925
+ # source://rexml//lib/rexml/parsers/baseparser.rb#179
3926
+ def entity_expansion_text_limit=(_arg0); end
3927
+
3928
+ # Returns true if there are more events. Synonymous with !empty?
3929
+ #
3930
+ # @return [Boolean]
3931
+ #
3932
+ # source://rexml//lib/rexml/parsers/baseparser.rb#208
3933
+ def has_next?; end
3934
+
3935
+ # Escapes all possible entities
3936
+ #
3937
+ # source://rexml//lib/rexml/parsers/baseparser.rb#546
3938
+ def normalize(input, entities = T.unsafe(nil), entity_filter = T.unsafe(nil)); end
3939
+
3940
+ # Peek at the +depth+ event in the stack. The first element on the stack
3941
+ # is at depth 0. If +depth+ is -1, will parse to the end of the input
3942
+ # stream and return the last event, which is always :end_document.
3943
+ # Be aware that this causes the stream to be parsed up to the +depth+
3944
+ # event, so you can effectively pre-parse the entire document (pull the
3945
+ # entire thing into memory) using this method.
3946
+ #
3947
+ # source://rexml//lib/rexml/parsers/baseparser.rb#224
3948
+ def peek(depth = T.unsafe(nil)); end
3949
+
3950
+ # source://rexml//lib/rexml/parsers/baseparser.rb#193
3951
+ def position; end
3952
+
3953
+ # Returns the next event. This is a +PullEvent+ object.
3954
+ #
3955
+ # source://rexml//lib/rexml/parsers/baseparser.rb#239
3956
+ def pull; end
3957
+
3958
+ # Returns the value of attribute source.
3959
+ #
3960
+ # source://rexml//lib/rexml/parsers/baseparser.rb#176
3961
+ def source; end
3962
+
3963
+ # source://rexml//lib/rexml/parsers/baseparser.rb#181
3964
+ def stream=(source); end
3965
+
3966
+ # Unescapes all possible entities
3967
+ #
3968
+ # source://rexml//lib/rexml/parsers/baseparser.rb#562
3969
+ def unnormalize(string, entities = T.unsafe(nil), filter = T.unsafe(nil)); end
3970
+
3971
+ # Push an event back on the head of the stream. This method
3972
+ # has (theoretically) infinite depth.
3973
+ #
3974
+ # source://rexml//lib/rexml/parsers/baseparser.rb#214
3975
+ def unshift(token); end
3976
+
3977
+ private
3978
+
3979
+ # source://rexml//lib/rexml/parsers/baseparser.rb#607
3980
+ def add_namespace(prefix, uri); end
3981
+
3982
+ # @return [Boolean]
3983
+ #
3984
+ # source://rexml//lib/rexml/parsers/baseparser.rb#640
3985
+ def need_source_encoding_update?(xml_declaration_encoding); end
3986
+
3987
+ # source://rexml//lib/rexml/parsers/baseparser.rb#760
3988
+ def parse_attributes(prefixes); end
3989
+
3990
+ # source://rexml//lib/rexml/parsers/baseparser.rb#659
3991
+ def parse_id(base_error_message, accept_external_id:, accept_public_id:); end
3992
+
3993
+ # source://rexml//lib/rexml/parsers/baseparser.rb#687
3994
+ def parse_id_invalid_details(accept_external_id:, accept_public_id:); end
3995
+
3996
+ # source://rexml//lib/rexml/parsers/baseparser.rb#646
3997
+ def parse_name(base_error_message); end
3998
+
3999
+ # source://rexml//lib/rexml/parsers/baseparser.rb#622
4000
+ def pop_namespaces_restore; end
4001
+
4002
+ # source://rexml//lib/rexml/parsers/baseparser.rb#725
4003
+ def process_instruction; end
4004
+
4005
+ # source://rexml//lib/rexml/parsers/baseparser.rb#249
4006
+ def pull_event; end
4007
+
4008
+ # source://rexml//lib/rexml/parsers/baseparser.rb#616
4009
+ def push_namespaces_restore; end
4010
+
4011
+ # source://rexml//lib/rexml/parsers/baseparser.rb#633
4012
+ def record_entity_expansion(delta = T.unsafe(nil)); end
4013
+ end
4014
+
4015
+ # source://rexml//lib/rexml/parsers/baseparser.rb#130
4016
+ REXML::Parsers::BaseParser::EXTERNAL_ID_PUBLIC = T.let(T.unsafe(nil), Regexp)
4017
+
4018
+ # source://rexml//lib/rexml/parsers/baseparser.rb#131
4019
+ REXML::Parsers::BaseParser::EXTERNAL_ID_SYSTEM = T.let(T.unsafe(nil), Regexp)
4020
+
4021
+ # source://rexml//lib/rexml/parsers/baseparser.rb#132
4022
+ REXML::Parsers::BaseParser::PUBLIC_ID = T.let(T.unsafe(nil), Regexp)
4023
+
4024
+ # source://rexml//lib/rexml/parsers/baseparser.rb#143
4025
+ module REXML::Parsers::BaseParser::Private; end
4026
+
4027
+ # source://rexml//lib/rexml/parsers/baseparser.rb#147
4028
+ REXML::Parsers::BaseParser::Private::ATTLISTDECL_END = T.let(T.unsafe(nil), Regexp)
4029
+
4030
+ # source://rexml//lib/rexml/parsers/baseparser.rb#152
4031
+ REXML::Parsers::BaseParser::Private::CARRIAGE_RETURN_NEWLINE_PATTERN = T.let(T.unsafe(nil), Regexp)
4032
+
4033
+ # source://rexml//lib/rexml/parsers/baseparser.rb#153
4034
+ REXML::Parsers::BaseParser::Private::CHARACTER_REFERENCES = T.let(T.unsafe(nil), Regexp)
4035
+
4036
+ # source://rexml//lib/rexml/parsers/baseparser.rb#146
4037
+ REXML::Parsers::BaseParser::Private::CLOSE_PATTERN = T.let(T.unsafe(nil), Regexp)
4038
+
4039
+ # source://rexml//lib/rexml/parsers/baseparser.rb#154
4040
+ REXML::Parsers::BaseParser::Private::DEFAULT_ENTITIES_PATTERNS = T.let(T.unsafe(nil), Hash)
4041
+
4042
+ # source://rexml//lib/rexml/parsers/baseparser.rb#151
4043
+ REXML::Parsers::BaseParser::Private::ENTITYDECL_PATTERN = T.let(T.unsafe(nil), Regexp)
4044
+
4045
+ # source://rexml//lib/rexml/parsers/baseparser.rb#149
4046
+ REXML::Parsers::BaseParser::Private::GEDECL_PATTERN = T.let(T.unsafe(nil), String)
4047
+
4048
+ # source://rexml//lib/rexml/parsers/baseparser.rb#148
4049
+ REXML::Parsers::BaseParser::Private::NAME_PATTERN = T.let(T.unsafe(nil), Regexp)
4050
+
4051
+ # source://rexml//lib/rexml/parsers/baseparser.rb#150
4052
+ REXML::Parsers::BaseParser::Private::PEDECL_PATTERN = T.let(T.unsafe(nil), String)
4053
+
4054
+ # source://rexml//lib/rexml/parsers/baseparser.rb#144
4055
+ REXML::Parsers::BaseParser::Private::PEREFERENCE_PATTERN = T.let(T.unsafe(nil), Regexp)
4056
+
4057
+ # source://rexml//lib/rexml/parsers/baseparser.rb#145
4058
+ REXML::Parsers::BaseParser::Private::TAG_PATTERN = T.let(T.unsafe(nil), Regexp)
4059
+
4060
+ # source://rexml//lib/rexml/parsers/baseparser.rb#159
4061
+ REXML::Parsers::BaseParser::Private::XML_PREFIXED_NAMESPACE = T.let(T.unsafe(nil), String)
4062
+
4063
+ # source://rexml//lib/rexml/parsers/baseparser.rb#66
4064
+ REXML::Parsers::BaseParser::QNAME = T.let(T.unsafe(nil), Regexp)
4065
+
4066
+ # source://rexml//lib/rexml/parsers/baseparser.rb#65
4067
+ REXML::Parsers::BaseParser::QNAME_STR = T.let(T.unsafe(nil), String)
4068
+
4069
+ # source://rexml//lib/rexml/parsers/streamparser.rb#6
4070
+ class REXML::Parsers::StreamParser
4071
+ # @return [StreamParser] a new instance of StreamParser
4072
+ #
4073
+ # source://rexml//lib/rexml/parsers/streamparser.rb#7
4074
+ def initialize(source, listener); end
4075
+
4076
+ # source://rexml//lib/rexml/parsers/streamparser.rb#13
4077
+ def add_listener(listener); end
4078
+
4079
+ # source://rexml//lib/rexml/parsers/streamparser.rb#17
4080
+ def entity_expansion_count; end
4081
+
4082
+ # source://rexml//lib/rexml/parsers/streamparser.rb#21
4083
+ def entity_expansion_limit=(limit); end
4084
+
4085
+ # source://rexml//lib/rexml/parsers/streamparser.rb#25
4086
+ def entity_expansion_text_limit=(limit); end
4087
+
4088
+ # source://rexml//lib/rexml/parsers/streamparser.rb#29
4089
+ def parse; end
4090
+ end
4091
+
4092
+ # source://rexml//lib/rexml/parsers/baseparser.rb#28
4093
+ module REXML::Parsers::StringScannerCaptures; end
4094
+
4095
+ # source://rexml//lib/rexml/parsers/treeparser.rb#7
4096
+ class REXML::Parsers::TreeParser
4097
+ # @return [TreeParser] a new instance of TreeParser
4098
+ #
4099
+ # source://rexml//lib/rexml/parsers/treeparser.rb#8
4100
+ def initialize(source, build_context = T.unsafe(nil)); end
4101
+
4102
+ # source://rexml//lib/rexml/parsers/treeparser.rb#13
4103
+ def add_listener(listener); end
4104
+
4105
+ # source://rexml//lib/rexml/parsers/treeparser.rb#17
4106
+ def parse; end
4107
+ end
4108
+
4109
+ # You don't want to use this class. Really. Use XPath, which is a wrapper
4110
+ # for this class. Believe me. You don't want to poke around in here.
4111
+ # There is strange, dark magic at work in this code. Beware. Go back! Go
4112
+ # back while you still can!
4113
+ #
4114
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#12
4115
+ class REXML::Parsers::XPathParser
4116
+ include ::REXML::XMLTokens
4117
+
4118
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#42
4119
+ def abbreviate(path_or_parsed); end
4120
+
4121
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#132
4122
+ def expand(path_or_parsed); end
4123
+
4124
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#16
4125
+ def namespaces=(namespaces); end
4126
+
4127
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#21
4128
+ def parse(path); end
4129
+
4130
+ # For backward compatibility
4131
+ #
4132
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#174
4133
+ def preciate_to_string(parsed, &block); end
4134
+
4135
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#36
4136
+ def predicate(path); end
4137
+
4138
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#174
4139
+ def predicate_to_path(parsed, &block); end
4140
+
4141
+ private
4142
+
4143
+ # | AdditiveExpr ('+' | '-') MultiplicativeExpr
4144
+ # | MultiplicativeExpr
4145
+ #
4146
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#505
4147
+ def AdditiveExpr(path, parsed); end
4148
+
4149
+ # | AndExpr S 'and' S EqualityExpr
4150
+ # | EqualityExpr
4151
+ #
4152
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#438
4153
+ def AndExpr(path, parsed); end
4154
+
4155
+ # | EqualityExpr ('=' | '!=') RelationalExpr
4156
+ # | RelationalExpr
4157
+ #
4158
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#457
4159
+ def EqualityExpr(path, parsed); end
4160
+
4161
+ # | FilterExpr Predicate
4162
+ # | PrimaryExpr
4163
+ #
4164
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#608
4165
+ def FilterExpr(path, parsed); end
4166
+
4167
+ # | FUNCTION_NAME '(' ( expr ( ',' expr )* )? ')'
4168
+ #
4169
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#663
4170
+ def FunctionCall(rest, parsed); end
4171
+
4172
+ # LocationPath
4173
+ # | RelativeLocationPath
4174
+ # | '/' RelativeLocationPath?
4175
+ # | '//' RelativeLocationPath
4176
+ #
4177
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#243
4178
+ def LocationPath(path, parsed); end
4179
+
4180
+ # | MultiplicativeExpr ('*' | S ('div' | 'mod') S) UnaryExpr
4181
+ # | UnaryExpr
4182
+ #
4183
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#528
4184
+ def MultiplicativeExpr(path, parsed); end
4185
+
4186
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#343
4187
+ def NodeTest(path, parsed); end
4188
+
4189
+ # | OrExpr S 'or' S AndExpr
4190
+ # | AndExpr
4191
+ #
4192
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#419
4193
+ def OrExpr(path, parsed); end
4194
+
4195
+ # | LocationPath
4196
+ # | FilterExpr ('/' | '//') RelativeLocationPath
4197
+ #
4198
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#590
4199
+ def PathExpr(path, parsed); end
4200
+
4201
+ # Filters the supplied nodeset on the predicate(s)
4202
+ #
4203
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#395
4204
+ def Predicate(path, parsed); end
4205
+
4206
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#626
4207
+ def PrimaryExpr(path, parsed); end
4208
+
4209
+ # | RelationalExpr ('<' | '>' | '<=' | '>=') AdditiveExpr
4210
+ # | AdditiveExpr
4211
+ #
4212
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#480
4213
+ def RelationalExpr(path, parsed); end
4214
+
4215
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#267
4216
+ def RelativeLocationPath(path, parsed); end
4217
+
4218
+ # | '-' UnaryExpr
4219
+ # | UnionExpr
4220
+ #
4221
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#553
4222
+ def UnaryExpr(path, parsed); end
4223
+
4224
+ # | UnionExpr '|' PathExpr
4225
+ # | PathExpr
4226
+ #
4227
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#571
4228
+ def UnionExpr(path, parsed); end
4229
+
4230
+ # get_group( '[foo]bar' ) -> ['bar', '[foo]']
4231
+ #
4232
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#676
4233
+ def get_group(string); end
4234
+
4235
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#694
4236
+ def parse_args(string); end
4237
+
4238
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#224
4239
+ def quote_literal(literal); end
4240
+ end
4241
+
4242
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#339
4243
+ REXML::Parsers::XPathParser::LOCAL_NAME_WILDCARD = T.let(T.unsafe(nil), Regexp)
4244
+
4245
+ # Returns a 1-1 map of the nodeset
4246
+ # The contents of the resulting array are either:
4247
+ # true/false, if a positive match
4248
+ # String, if a name match
4249
+ # NodeTest
4250
+ # | ('*' | NCNAME ':' '*' | QNAME) NameTest
4251
+ # | '*' ':' NCNAME NameTest since XPath 2.0
4252
+ # | NODE_TYPE '(' ')' NodeType
4253
+ # | PI '(' LITERAL ')' PI
4254
+ # | '[' expr ']' Predicate
4255
+ #
4256
+ # source://rexml//lib/rexml/parsers/xpathparser.rb#338
4257
+ REXML::Parsers::XPathParser::PREFIX_WILDCARD = T.let(T.unsafe(nil), Regexp)
4258
+
4259
+ # source://rexml//lib/rexml/doctype.rb#10
4260
+ class REXML::ReferenceWriter
4261
+ # @return [ReferenceWriter] a new instance of ReferenceWriter
4262
+ #
4263
+ # source://rexml//lib/rexml/doctype.rb#11
4264
+ def initialize(id_type, public_id_literal, system_literal, context = T.unsafe(nil)); end
4265
+
4266
+ # source://rexml//lib/rexml/doctype.rb#25
4267
+ def write(output); end
4268
+ end
4269
+
4270
+ # A Source can be searched for patterns, and wraps buffers and other
4271
+ # objects and provides consumption of text
4272
+ #
4273
+ # source://rexml//lib/rexml/source.rb#51
4274
+ class REXML::Source
4275
+ include ::REXML::Encoding
4276
+
4277
+ # Constructor
4278
+ # value, overriding all encoding detection
4279
+ #
4280
+ # @param arg must be a String, and should be a valid XML document
4281
+ # @param encoding if non-null, sets the encoding of the source to this
4282
+ # @return [Source] a new instance of Source
4283
+ #
4284
+ # source://rexml//lib/rexml/source.rb#71
4285
+ def initialize(arg, encoding = T.unsafe(nil)); end
4286
+
4287
+ # The current buffer (what we're going to read next)
4288
+ #
4289
+ # source://rexml//lib/rexml/source.rb#83
4290
+ def buffer; end
4291
+
4292
+ # source://rexml//lib/rexml/source.rb#93
4293
+ def buffer_encoding=(encoding); end
4294
+
4295
+ # @return the current line in the source
4296
+ #
4297
+ # source://rexml//lib/rexml/source.rb#142
4298
+ def current_line; end
4299
+
4300
+ # source://rexml//lib/rexml/source.rb#87
4301
+ def drop_parsed_content; end
4302
+
4303
+ # @return [Boolean] true if the Source is exhausted
4304
+ #
4305
+ # source://rexml//lib/rexml/source.rb#137
4306
+ def empty?; end
4307
+
4308
+ # Returns the value of attribute encoding.
4309
+ #
4310
+ # source://rexml//lib/rexml/source.rb#55
4311
+ def encoding; end
4312
+
4313
+ # Inherited from Encoding
4314
+ # Overridden to support optimized en/decoding
4315
+ #
4316
+ # source://rexml//lib/rexml/source.rb#99
4317
+ def encoding=(enc); end
4318
+
4319
+ # source://rexml//lib/rexml/source.rb#117
4320
+ def ensure_buffer; end
4321
+
4322
+ # The line number of the last consumed text
4323
+ #
4324
+ # source://rexml//lib/rexml/source.rb#54
4325
+ def line; end
4326
+
4327
+ # source://rexml//lib/rexml/source.rb#120
4328
+ def match(pattern, cons = T.unsafe(nil)); end
4329
+
4330
+ # source://rexml//lib/rexml/source.rb#128
4331
+ def position; end
4332
+
4333
+ # source://rexml//lib/rexml/source.rb#132
4334
+ def position=(pos); end
4335
+
4336
+ # source://rexml//lib/rexml/source.rb#104
4337
+ def read(term = T.unsafe(nil)); end
4338
+
4339
+ # source://rexml//lib/rexml/source.rb#107
4340
+ def read_until(term); end
4341
+
4342
+ private
4343
+
4344
+ # source://rexml//lib/rexml/source.rb#151
4345
+ def detect_encoding; end
4346
+
4347
+ # source://rexml//lib/rexml/source.rb#169
4348
+ def encoding_updated; end
4349
+ end
4350
+
4351
+ # source://rexml//lib/rexml/source.rb#57
4352
+ module REXML::Source::Private; end
4353
+
4354
+ # source://rexml//lib/rexml/source.rb#59
4355
+ REXML::Source::Private::PRE_DEFINED_TERM_PATTERNS = T.let(T.unsafe(nil), Hash)
4356
+
4357
+ # source://rexml//lib/rexml/source.rb#58
4358
+ REXML::Source::Private::SCANNER_RESET_SIZE = T.let(T.unsafe(nil), Integer)
4359
+
4360
+ # Represents text nodes in an XML document
4361
+ #
4362
+ # source://rexml//lib/rexml/text.rb#11
4363
+ class REXML::Text < ::REXML::Child
4364
+ include ::Comparable
4365
+
4366
+ # Constructor
4367
+ # +arg+ if a String, the content is set to the String. If a Text,
4368
+ # the object is shallowly cloned.
4369
+ #
4370
+ # +respect_whitespace+ (boolean, false) if true, whitespace is
4371
+ # respected
4372
+ #
4373
+ # +parent+ (nil) if this is a Parent object, the parent
4374
+ # will be set to this.
4375
+ #
4376
+ # +raw+ (nil) This argument can be given three values.
4377
+ # If true, then the value of used to construct this object is expected to
4378
+ # contain no unescaped XML markup, and REXML will not change the text. If
4379
+ # this value is false, the string may contain any characters, and REXML will
4380
+ # escape any and all defined entities whose values are contained in the
4381
+ # text. If this value is nil (the default), then the raw value of the
4382
+ # parent will be used as the raw value for this node. If there is no raw
4383
+ # value for the parent, and no value is supplied, the default is false.
4384
+ # Use this field if you have entities defined for some text, and you don't
4385
+ # want REXML to escape that text in output.
4386
+ # Text.new( "<&", false, nil, false ) #-> "&lt;&amp;"
4387
+ # Text.new( "&lt;&amp;", false, nil, false ) #-> "&amp;lt;&amp;amp;"
4388
+ # Text.new( "<&", false, nil, true ) #-> Parse exception
4389
+ # Text.new( "&lt;&amp;", false, nil, true ) #-> "&lt;&amp;"
4390
+ # # Assume that the entity "s" is defined to be "sean"
4391
+ # # and that the entity "r" is defined to be "russell"
4392
+ # Text.new( "sean russell" ) #-> "&s; &r;"
4393
+ # Text.new( "sean russell", false, nil, true ) #-> "sean russell"
4394
+ #
4395
+ # +entity_filter+ (nil) This can be an array of entities to match in the
4396
+ # supplied text. This argument is only useful if +raw+ is set to false.
4397
+ # Text.new( "sean russell", false, nil, false, ["s"] ) #-> "&s; russell"
4398
+ # Text.new( "sean russell", false, nil, true, ["s"] ) #-> "sean russell"
4399
+ # In the last example, the +entity_filter+ argument is ignored.
4400
+ #
4401
+ # +illegal+ INTERNAL USE ONLY
4402
+ #
4403
+ # @return [Text] a new instance of Text
4404
+ #
4405
+ # source://rexml//lib/rexml/text.rb#94
4406
+ 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
4407
+
4408
+ # Appends text to this text node. The text is appended in the +raw+ mode
4409
+ # of this text node.
4410
+ #
4411
+ # +returns+ the text itself to enable method chain like
4412
+ # 'text << "XXX" << "YYY"'.
4413
+ #
4414
+ # source://rexml//lib/rexml/text.rb#214
4415
+ def <<(to_append); end
4416
+
4417
+ # +other+ a String or a Text
4418
+ # +returns+ the result of (to_s <=> arg.to_s)
4419
+ #
4420
+ # source://rexml//lib/rexml/text.rb#223
4421
+ def <=>(other); end
4422
+
4423
+ # source://rexml//lib/rexml/text.rb#204
4424
+ def clone; end
4425
+
4426
+ # source://rexml//lib/rexml/text.rb#227
4427
+ def doctype; end
4428
+
4429
+ # @return [Boolean]
4430
+ #
4431
+ # source://rexml//lib/rexml/text.rb#199
4432
+ def empty?; end
4433
+
4434
+ # source://rexml//lib/rexml/text.rb#299
4435
+ def indent_text(string, level = T.unsafe(nil), style = T.unsafe(nil), indentfirstline = T.unsafe(nil)); end
4436
+
4437
+ # source://rexml//lib/rexml/text.rb#253
4438
+ def inspect; end
4439
+
4440
+ # source://rexml//lib/rexml/text.rb#195
4441
+ def node_type; end
4442
+
4443
+ # source://rexml//lib/rexml/text.rb#125
4444
+ def parent=(parent); end
4445
+
4446
+ # If +raw+ is true, then REXML leaves the value alone
4447
+ #
4448
+ # source://rexml//lib/rexml/text.rb#21
4449
+ def raw; end
4450
+
4451
+ # If +raw+ is true, then REXML leaves the value alone
4452
+ #
4453
+ # source://rexml//lib/rexml/text.rb#21
4454
+ def raw=(_arg0); end
4455
+
4456
+ # Returns the string value of this text node. This string is always
4457
+ # escaped, meaning that it is a valid XML text node string, and all
4458
+ # entities that can be escaped, have been inserted. This method respects
4459
+ # the entity filter set in the constructor.
4460
+ #
4461
+ # # Assume that the entity "s" is defined to be "sean", and that the
4462
+ # # entity "r" is defined to be "russell"
4463
+ # t = Text.new( "< & sean russell", false, nil, false, ['s'] )
4464
+ # t.to_s #-> "&lt; &amp; &s; russell"
4465
+ # t = Text.new( "< & &s; russell", false, nil, false )
4466
+ # t.to_s #-> "&lt; &amp; &s; russell"
4467
+ # u = Text.new( "sean russell", false, nil, true )
4468
+ # u.to_s #-> "sean russell"
4469
+ #
4470
+ # source://rexml//lib/rexml/text.rb#248
4471
+ def to_s; end
4472
+
4473
+ # Returns the string value of this text. This is the text without
4474
+ # entities, as it might be used programmatically, or printed to the
4475
+ # console. This ignores the 'raw' attribute setting, and any
4476
+ # entity_filter.
4477
+ #
4478
+ # # Assume that the entity "s" is defined to be "sean", and that the
4479
+ # # entity "r" is defined to be "russell"
4480
+ # t = Text.new( "< & sean russell", false, nil, false, ['s'] )
4481
+ # t.value #-> "< & sean russell"
4482
+ # t = Text.new( "< & &s; russell", false, nil, false )
4483
+ # t.value #-> "< & sean russell"
4484
+ # u = Text.new( "sean russell", false, nil, true )
4485
+ # u.value #-> "sean russell"
4486
+ #
4487
+ # source://rexml//lib/rexml/text.rb#270
4488
+ def value; end
4489
+
4490
+ # Sets the contents of this text node. This expects the text to be
4491
+ # unnormalized. It returns self.
4492
+ #
4493
+ # e = Element.new( "a" )
4494
+ # e.add_text( "foo" ) # <a>foo</a>
4495
+ # e[0].value = "bar" # <a>bar</a>
4496
+ # e[0].value = "<a>" # <a>&lt;a&gt;</a>
4497
+ #
4498
+ # source://rexml//lib/rexml/text.rb#282
4499
+ def value=(val); end
4500
+
4501
+ # source://rexml//lib/rexml/text.rb#288
4502
+ def wrap(string, width, addnewline = T.unsafe(nil)); end
4503
+
4504
+ # == DEPRECATED
4505
+ # See REXML::Formatters
4506
+ #
4507
+ # source://rexml//lib/rexml/text.rb#314
4508
+ def write(writer, indent = T.unsafe(nil), transitive = T.unsafe(nil), ie_hack = T.unsafe(nil)); end
4509
+
4510
+ # Writes out text, substituting special characters beforehand.
4511
+ # +out+ A String, IO, or any other object supporting <<( String )
4512
+ # +input+ the text to substitute and the write out
4513
+ #
4514
+ # z=utf8.unpack("U*")
4515
+ # ascOut=""
4516
+ # z.each{|r|
4517
+ # if r < 0x100
4518
+ # ascOut.concat(r.chr)
4519
+ # else
4520
+ # ascOut.concat(sprintf("&#x%x;", r))
4521
+ # end
4522
+ # }
4523
+ # puts ascOut
4524
+ #
4525
+ # source://rexml//lib/rexml/text.rb#346
4526
+ def write_with_substitution(out, input); end
4527
+
4528
+ # FIXME
4529
+ # This probably won't work properly
4530
+ #
4531
+ # source://rexml//lib/rexml/text.rb#326
4532
+ def xpath; end
4533
+
4534
+ private
4535
+
4536
+ # source://rexml//lib/rexml/text.rb#359
4537
+ def clear_cache; end
4538
+
4539
+ class << self
4540
+ # check for illegal characters
4541
+ #
4542
+ # source://rexml//lib/rexml/text.rb#131
4543
+ def check(string, pattern, doctype); end
4544
+
4545
+ # source://rexml//lib/rexml/text.rb#429
4546
+ def expand(ref, doctype, filter); end
4547
+
4548
+ # Escapes all possible entities
4549
+ #
4550
+ # source://rexml//lib/rexml/text.rb#391
4551
+ def normalize(input, doctype = T.unsafe(nil), entity_filter = T.unsafe(nil)); end
4552
+
4553
+ # Reads text, substituting entities
4554
+ #
4555
+ # source://rexml//lib/rexml/text.rb#365
4556
+ def read_with_substitution(input, illegal = T.unsafe(nil)); end
4557
+
4558
+ # Unescapes all possible entities
4559
+ #
4560
+ # source://rexml//lib/rexml/text.rb#415
4561
+ def unnormalize(string, doctype = T.unsafe(nil), filter = T.unsafe(nil), illegal = T.unsafe(nil), entity_expansion_text_limit: T.unsafe(nil)); end
4562
+ end
4563
+ end
4564
+
4565
+ # source://rexml//lib/rexml/undefinednamespaceexception.rb#4
4566
+ class REXML::UndefinedNamespaceException < ::REXML::ParseException
4567
+ # @return [UndefinedNamespaceException] a new instance of UndefinedNamespaceException
4568
+ #
4569
+ # source://rexml//lib/rexml/undefinednamespaceexception.rb#5
4570
+ def initialize(prefix, source, parser); end
4571
+ end
4572
+
4573
+ # source://rexml//lib/rexml/validation/validationexception.rb#4
4574
+ class REXML::Validation::ValidationException < ::RuntimeError
4575
+ # @return [ValidationException] a new instance of ValidationException
4576
+ #
4577
+ # source://rexml//lib/rexml/validation/validationexception.rb#5
4578
+ def initialize(msg); end
4579
+ end
4580
+
4581
+ # NEEDS DOCUMENTATION
4582
+ #
4583
+ # source://rexml//lib/rexml/xmldecl.rb#8
4584
+ class REXML::XMLDecl < ::REXML::Child
4585
+ include ::REXML::Encoding
4586
+
4587
+ # @return [XMLDecl] a new instance of XMLDecl
4588
+ #
4589
+ # source://rexml//lib/rexml/xmldecl.rb#20
4590
+ def initialize(version = T.unsafe(nil), encoding = T.unsafe(nil), standalone = T.unsafe(nil)); end
4591
+
4592
+ # source://rexml//lib/rexml/xmldecl.rb#56
4593
+ def ==(other); end
4594
+
4595
+ # source://rexml//lib/rexml/xmldecl.rb#39
4596
+ def clone; end
4597
+
4598
+ # source://rexml//lib/rexml/xmldecl.rb#102
4599
+ def dowrite; end
4600
+
4601
+ # source://rexml//lib/rexml/xmldecl.rb#76
4602
+ def encoding=(enc); end
4603
+
4604
+ # source://rexml//lib/rexml/xmldecl.rb#106
4605
+ def inspect; end
4606
+
4607
+ # source://rexml//lib/rexml/xmldecl.rb#69
4608
+ def node_type; end
4609
+
4610
+ # source://rexml//lib/rexml/xmldecl.rb#98
4611
+ def nowrite; end
4612
+
4613
+ # source://rexml//lib/rexml/encoding.rb#7
4614
+ def old_enc=(encoding); end
4615
+
4616
+ # Returns the value of attribute standalone.
4617
+ #
4618
+ # source://rexml//lib/rexml/xmldecl.rb#17
4619
+ def stand_alone?; end
4620
+
4621
+ # Returns the value of attribute standalone.
4622
+ #
4623
+ # source://rexml//lib/rexml/xmldecl.rb#17
4624
+ def standalone; end
4625
+
4626
+ # Sets the attribute standalone
4627
+ #
4628
+ # @param value the value to set the attribute standalone to.
4629
+ #
4630
+ # source://rexml//lib/rexml/xmldecl.rb#17
4631
+ def standalone=(_arg0); end
4632
+
4633
+ # Returns the value of attribute version.
4634
+ #
4635
+ # source://rexml//lib/rexml/xmldecl.rb#17
4636
+ def version; end
4637
+
4638
+ # Sets the attribute version
4639
+ #
4640
+ # @param value the value to set the attribute version to.
4641
+ #
4642
+ # source://rexml//lib/rexml/xmldecl.rb#17
4643
+ def version=(_arg0); end
4644
+
4645
+ # indent::
4646
+ # Ignored. There must be no whitespace before an XML declaration
4647
+ # transitive::
4648
+ # Ignored
4649
+ # ie_hack::
4650
+ # Ignored
4651
+ #
4652
+ # source://rexml//lib/rexml/xmldecl.rb#49
4653
+ def write(writer, indent = T.unsafe(nil), transitive = T.unsafe(nil), ie_hack = T.unsafe(nil)); end
4654
+
4655
+ # Returns the value of attribute writeencoding.
4656
+ #
4657
+ # source://rexml//lib/rexml/xmldecl.rb#18
4658
+ def writeencoding; end
4659
+
4660
+ # Returns the value of attribute writethis.
4661
+ #
4662
+ # source://rexml//lib/rexml/xmldecl.rb#18
4663
+ def writethis; end
4664
+
4665
+ # source://rexml//lib/rexml/xmldecl.rb#63
4666
+ def xmldecl(version, encoding, standalone); end
4667
+
4668
+ private
4669
+
4670
+ # source://rexml//lib/rexml/xmldecl.rb#111
4671
+ def content(enc); end
4672
+
4673
+ class << self
4674
+ # Only use this if you do not want the XML declaration to be written;
4675
+ # this object is ignored by the XML writer. Otherwise, instantiate your
4676
+ # own XMLDecl and add it to the document.
4677
+ #
4678
+ # Note that XML 1.1 documents *must* include an XML declaration
4679
+ #
4680
+ # source://rexml//lib/rexml/xmldecl.rb#92
4681
+ def default; end
4682
+ end
4683
+ end
4684
+
4685
+ # @private
4686
+ #
4687
+ # source://rexml//lib/rexml/xpath_parser.rb#963
4688
+ class REXML::XPathNode
4689
+ # @return [XPathNode] a new instance of XPathNode
4690
+ #
4691
+ # source://rexml//lib/rexml/xpath_parser.rb#965
4692
+ def initialize(node, context = T.unsafe(nil)); end
4693
+
4694
+ # Returns the value of attribute context.
4695
+ #
4696
+ # source://rexml//lib/rexml/xpath_parser.rb#964
4697
+ def context; end
4698
+
4699
+ # source://rexml//lib/rexml/xpath_parser.rb#974
4700
+ def position; end
4701
+
4702
+ # Returns the value of attribute raw_node.
4703
+ #
4704
+ # source://rexml//lib/rexml/xpath_parser.rb#964
4705
+ def raw_node; end
4706
+ end
4707
+
4708
+ # You don't want to use this class. Really. Use XPath, which is a wrapper
4709
+ # for this class. Believe me. You don't want to poke around in here.
4710
+ # There is strange, dark magic at work in this code. Beware. Go back! Go
4711
+ # back while you still can!
4712
+ #
4713
+ # source://rexml//lib/rexml/xpath_parser.rb#54
4714
+ class REXML::XPathParser
4715
+ include ::REXML::XMLTokens
4716
+
4717
+ # @return [XPathParser] a new instance of XPathParser
4718
+ #
4719
+ # source://rexml//lib/rexml/xpath_parser.rb#60
4720
+ def initialize(strict: T.unsafe(nil)); end
4721
+
4722
+ # source://rexml//lib/rexml/xpath_parser.rb#94
4723
+ def []=(variable_name, value); end
4724
+
4725
+ # Performs a depth-first (document order) XPath search, and returns the
4726
+ # first match. This is the fastest, lightest way to return a single result.
4727
+ #
4728
+ # FIXME: This method is incomplete!
4729
+ #
4730
+ # source://rexml//lib/rexml/xpath_parser.rb#103
4731
+ def first(path_stack, node); end
4732
+
4733
+ # source://rexml//lib/rexml/xpath_parser.rb#84
4734
+ def get_first(path, nodeset); end
4735
+
4736
+ # source://rexml//lib/rexml/xpath_parser.rb#139
4737
+ def match(path_stack, nodeset); end
4738
+
4739
+ # source://rexml//lib/rexml/xpath_parser.rb#69
4740
+ def namespaces=(namespaces = T.unsafe(nil)); end
4741
+
4742
+ # source://rexml//lib/rexml/xpath_parser.rb#79
4743
+ def parse(path, nodeset); end
4744
+
4745
+ # source://rexml//lib/rexml/xpath_parser.rb#89
4746
+ def predicate(path, nodeset); end
4747
+
4748
+ # source://rexml//lib/rexml/xpath_parser.rb#74
4749
+ def variables=(vars = T.unsafe(nil)); end
4750
+
4751
+ private
4752
+
4753
+ # source://rexml//lib/rexml/xpath_parser.rb#779
4754
+ def child(nodeset); end
4755
+
4756
+ # source://rexml//lib/rexml/xpath_parser.rb#920
4757
+ def compare(a, operator, b); end
4758
+
4759
+ # source://rexml//lib/rexml/xpath_parser.rb#682
4760
+ def descendant(nodeset, include_self); end
4761
+
4762
+ # source://rexml//lib/rexml/xpath_parser.rb#693
4763
+ def descendant_recursive(raw_node, new_nodeset, new_nodes, include_self); end
4764
+
4765
+ # source://rexml//lib/rexml/xpath_parser.rb#942
4766
+ def each_unnode(nodeset); end
4767
+
4768
+ # source://rexml//lib/rexml/xpath_parser.rb#641
4769
+ def enter(tag, *args); end
4770
+
4771
+ # source://rexml//lib/rexml/xpath_parser.rb#819
4772
+ def equality_relational_compare(set1, op, set2); end
4773
+
4774
+ # source://rexml//lib/rexml/xpath_parser.rb#591
4775
+ def evaluate_predicate(expression, nodesets); end
4776
+
4777
+ # Expr takes a stack of path elements and a set of nodes (either a Parent
4778
+ # or an Array and returns an Array of matching nodes
4779
+ #
4780
+ # source://rexml//lib/rexml/xpath_parser.rb#175
4781
+ def expr(path_stack, nodeset, context = T.unsafe(nil)); end
4782
+
4783
+ # source://rexml//lib/rexml/xpath_parser.rb#582
4784
+ def filter_nodeset(nodeset); end
4785
+
4786
+ # source://rexml//lib/rexml/xpath_parser.rb#749
4787
+ def following(node); end
4788
+
4789
+ # source://rexml//lib/rexml/xpath_parser.rb#760
4790
+ def following_node_of(node); end
4791
+
4792
+ # Returns a String namespace for a node, given a prefix
4793
+ # The rules are:
4794
+ #
4795
+ # 1. Use the supplied namespace mapping first.
4796
+ # 2. If no mapping was supplied, use the context node to look up the namespace
4797
+ #
4798
+ # source://rexml//lib/rexml/xpath_parser.rb#163
4799
+ def get_namespace(node, prefix); end
4800
+
4801
+ # source://rexml//lib/rexml/xpath_parser.rb#646
4802
+ def leave(tag, *args); end
4803
+
4804
+ # source://rexml//lib/rexml/xpath_parser.rb#767
4805
+ def next_sibling_node(node); end
4806
+
4807
+ # source://rexml//lib/rexml/xpath_parser.rb#477
4808
+ def node_test(path_stack, nodesets, any_type: T.unsafe(nil)); end
4809
+
4810
+ # source://rexml//lib/rexml/xpath_parser.rb#806
4811
+ def norm(b); end
4812
+
4813
+ # source://rexml//lib/rexml/xpath_parser.rb#894
4814
+ def normalize_compare_values(a, operator, b); end
4815
+
4816
+ # Builds a nodeset of all of the preceding nodes of the supplied node,
4817
+ # in reverse document order
4818
+ # preceding:: includes every element in the document that precedes this node,
4819
+ # except for ancestors
4820
+ #
4821
+ # source://rexml//lib/rexml/xpath_parser.rb#712
4822
+ def preceding(node); end
4823
+
4824
+ # source://rexml//lib/rexml/xpath_parser.rb#734
4825
+ def preceding_node_of(node); end
4826
+
4827
+ # Reorders an array of nodes so that they are in document order
4828
+ # It tries to do this efficiently.
4829
+ #
4830
+ # FIXME: I need to get rid of this, but the issue is that most of the XPath
4831
+ # interpreter functions as a filter, which means that we lose context going
4832
+ # in and out of function calls. If I knew what the index of the nodes was,
4833
+ # I wouldn't have to do this. Maybe add a document IDX for each node?
4834
+ # Problems with mutable documents. Or, rewrite everything.
4835
+ #
4836
+ # source://rexml//lib/rexml/xpath_parser.rb#659
4837
+ def sort(array_of_nodes, order); end
4838
+
4839
+ # source://rexml//lib/rexml/xpath_parser.rb#441
4840
+ def step(path_stack, any_type: T.unsafe(nil), order: T.unsafe(nil)); end
4841
+
4842
+ # @return [Boolean]
4843
+ #
4844
+ # source://rexml//lib/rexml/xpath_parser.rb#154
4845
+ def strict?; end
4846
+
4847
+ # source://rexml//lib/rexml/xpath_parser.rb#634
4848
+ def trace(*args); end
4849
+
4850
+ # source://rexml//lib/rexml/xpath_parser.rb#954
4851
+ def unnode(nodeset); end
4852
+
4853
+ # source://rexml//lib/rexml/xpath_parser.rb#881
4854
+ def value_type(value); end
4855
+ end
4856
+
4857
+ # source://rexml//lib/rexml/xpath_parser.rb#58
4858
+ REXML::XPathParser::DEBUG = T.let(T.unsafe(nil), FalseClass)