cocRb 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1708) hide show
  1. checksums.yaml +7 -0
  2. data/ .gitignore +1 -0
  3. data/.bundle/config +2 -0
  4. data/.bundle/ruby/3.0.0/bin/htmldiff +29 -0
  5. data/.bundle/ruby/3.0.0/bin/htmldiff.bat +2 -0
  6. data/.bundle/ruby/3.0.0/bin/ldiff +29 -0
  7. data/.bundle/ruby/3.0.0/bin/ldiff.bat +2 -0
  8. data/.bundle/ruby/3.0.0/bin/rake +27 -0
  9. data/.bundle/ruby/3.0.0/bin/rake.bat +2 -0
  10. data/.bundle/ruby/3.0.0/bin/rspec +27 -0
  11. data/.bundle/ruby/3.0.0/bin/rspec.bat +2 -0
  12. data/.bundle/ruby/3.0.0/bin/rubocop +27 -0
  13. data/.bundle/ruby/3.0.0/bin/rubocop.bat +2 -0
  14. data/.bundle/ruby/3.0.0/bin/ruby-parse +27 -0
  15. data/.bundle/ruby/3.0.0/bin/ruby-parse.bat +2 -0
  16. data/.bundle/ruby/3.0.0/bin/ruby-rewrite +27 -0
  17. data/.bundle/ruby/3.0.0/bin/ruby-rewrite.bat +2 -0
  18. data/.bundle/ruby/3.0.0/cache/ast-2.4.2.gem +0 -0
  19. data/.bundle/ruby/3.0.0/cache/diff-lcs-1.4.4.gem +0 -0
  20. data/.bundle/ruby/3.0.0/cache/faraday-1.4.1.gem +0 -0
  21. data/.bundle/ruby/3.0.0/cache/faraday-excon-1.1.0.gem +0 -0
  22. data/.bundle/ruby/3.0.0/cache/faraday-net_http-1.0.1.gem +0 -0
  23. data/.bundle/ruby/3.0.0/cache/faraday-net_http_persistent-1.1.0.gem +0 -0
  24. data/.bundle/ruby/3.0.0/cache/multipart-post-2.1.1.gem +0 -0
  25. data/.bundle/ruby/3.0.0/cache/parallel-1.20.1.gem +0 -0
  26. data/.bundle/ruby/3.0.0/cache/parser-3.0.1.1.gem +0 -0
  27. data/.bundle/ruby/3.0.0/cache/rainbow-3.0.0.gem +0 -0
  28. data/.bundle/ruby/3.0.0/cache/rake-13.0.3.gem +0 -0
  29. data/.bundle/ruby/3.0.0/cache/regexp_parser-2.1.1.gem +0 -0
  30. data/.bundle/ruby/3.0.0/cache/rexml-3.2.5.gem +0 -0
  31. data/.bundle/ruby/3.0.0/cache/rspec-3.10.0.gem +0 -0
  32. data/.bundle/ruby/3.0.0/cache/rspec-core-3.10.1.gem +0 -0
  33. data/.bundle/ruby/3.0.0/cache/rspec-expectations-3.10.1.gem +0 -0
  34. data/.bundle/ruby/3.0.0/cache/rspec-mocks-3.10.2.gem +0 -0
  35. data/.bundle/ruby/3.0.0/cache/rspec-support-3.10.2.gem +0 -0
  36. data/.bundle/ruby/3.0.0/cache/rubocop-1.14.0.gem +0 -0
  37. data/.bundle/ruby/3.0.0/cache/rubocop-ast-1.5.0.gem +0 -0
  38. data/.bundle/ruby/3.0.0/cache/ruby-progressbar-1.11.0.gem +0 -0
  39. data/.bundle/ruby/3.0.0/cache/ruby2_keywords-0.0.4.gem +0 -0
  40. data/.bundle/ruby/3.0.0/cache/unicode-display_width-2.0.0.gem +0 -0
  41. data/.bundle/ruby/3.0.0/gems/ast-2.4.2/LICENSE.MIT +20 -0
  42. data/.bundle/ruby/3.0.0/gems/ast-2.4.2/README.YARD.md +12 -0
  43. data/.bundle/ruby/3.0.0/gems/ast-2.4.2/lib/ast.rb +17 -0
  44. data/.bundle/ruby/3.0.0/gems/ast-2.4.2/lib/ast/node.rb +268 -0
  45. data/.bundle/ruby/3.0.0/gems/ast-2.4.2/lib/ast/processor.rb +12 -0
  46. data/.bundle/ruby/3.0.0/gems/ast-2.4.2/lib/ast/processor/mixin.rb +288 -0
  47. data/.bundle/ruby/3.0.0/gems/ast-2.4.2/lib/ast/sexp.rb +30 -0
  48. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/.rspec +1 -0
  49. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/Code-of-Conduct.md +74 -0
  50. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/Contributing.md +118 -0
  51. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/History.md +319 -0
  52. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/License.md +39 -0
  53. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/Manifest.txt +45 -0
  54. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/README.rdoc +84 -0
  55. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/Rakefile +74 -0
  56. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/autotest/discover.rb +3 -0
  57. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/bin/htmldiff +35 -0
  58. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/bin/ldiff +9 -0
  59. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/docs/COPYING.txt +339 -0
  60. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/docs/artistic.txt +127 -0
  61. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/lib/diff-lcs.rb +3 -0
  62. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/lib/diff/lcs.rb +739 -0
  63. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/lib/diff/lcs/array.rb +7 -0
  64. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/lib/diff/lcs/backports.rb +9 -0
  65. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/lib/diff/lcs/block.rb +37 -0
  66. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/lib/diff/lcs/callbacks.rb +325 -0
  67. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/lib/diff/lcs/change.rb +174 -0
  68. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/lib/diff/lcs/htmldiff.rb +150 -0
  69. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/lib/diff/lcs/hunk.rb +358 -0
  70. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/lib/diff/lcs/internals.rb +304 -0
  71. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/lib/diff/lcs/ldiff.rb +171 -0
  72. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/lib/diff/lcs/string.rb +5 -0
  73. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/change_spec.rb +89 -0
  74. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/diff_spec.rb +51 -0
  75. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/fixtures/aX +1 -0
  76. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/fixtures/bXaX +1 -0
  77. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/fixtures/ds1.csv +50 -0
  78. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/fixtures/ds2.csv +51 -0
  79. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/fixtures/ldiff/output.diff +4 -0
  80. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/fixtures/ldiff/output.diff-c +7 -0
  81. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/fixtures/ldiff/output.diff-e +3 -0
  82. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/fixtures/ldiff/output.diff-f +3 -0
  83. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/fixtures/ldiff/output.diff-u +5 -0
  84. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/hunk_spec.rb +83 -0
  85. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/issues_spec.rb +154 -0
  86. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/lcs_spec.rb +56 -0
  87. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/ldiff_spec.rb +87 -0
  88. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/patch_spec.rb +416 -0
  89. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/sdiff_spec.rb +214 -0
  90. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/spec_helper.rb +375 -0
  91. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/traverse_balanced_spec.rb +310 -0
  92. data/.bundle/ruby/3.0.0/gems/diff-lcs-1.4.4/spec/traverse_sequences_spec.rb +139 -0
  93. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/CHANGELOG.md +380 -0
  94. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/LICENSE.md +20 -0
  95. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/README.md +53 -0
  96. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/Rakefile +7 -0
  97. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/examples/client_spec.rb +65 -0
  98. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/examples/client_test.rb +79 -0
  99. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday.rb +178 -0
  100. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/adapter.rb +110 -0
  101. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/adapter/em_http.rb +289 -0
  102. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/adapter/em_http_ssl_patch.rb +62 -0
  103. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/adapter/em_synchrony.rb +153 -0
  104. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/adapter/em_synchrony/parallel_manager.rb +69 -0
  105. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/adapter/httpclient.rb +152 -0
  106. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/adapter/patron.rb +132 -0
  107. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/adapter/rack.rb +75 -0
  108. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/adapter/test.rb +246 -0
  109. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/adapter/typhoeus.rb +15 -0
  110. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/adapter_registry.rb +30 -0
  111. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/autoload.rb +92 -0
  112. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/connection.rb +615 -0
  113. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/dependency_loader.rb +37 -0
  114. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/encoders/flat_params_encoder.rb +105 -0
  115. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/encoders/nested_params_encoder.rb +176 -0
  116. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/error.rb +152 -0
  117. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/file_part.rb +128 -0
  118. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/logging/formatter.rb +105 -0
  119. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/methods.rb +6 -0
  120. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/middleware.rb +31 -0
  121. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/middleware_registry.rb +129 -0
  122. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/options.rb +218 -0
  123. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/options/connection_options.rb +22 -0
  124. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/options/env.rb +181 -0
  125. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/options/proxy_options.rb +28 -0
  126. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/options/request_options.rb +22 -0
  127. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/options/ssl_options.rb +59 -0
  128. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/param_part.rb +53 -0
  129. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/parameters.rb +5 -0
  130. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/rack_builder.rb +249 -0
  131. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/request.rb +156 -0
  132. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/request/authorization.rb +55 -0
  133. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/request/basic_authentication.rb +20 -0
  134. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/request/instrumentation.rb +54 -0
  135. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/request/multipart.rb +106 -0
  136. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/request/retry.rb +239 -0
  137. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/request/token_authentication.rb +20 -0
  138. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/request/url_encoded.rb +56 -0
  139. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/response.rb +101 -0
  140. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/response/logger.rb +33 -0
  141. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/response/raise_error.rb +56 -0
  142. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/utils.rb +117 -0
  143. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/utils/headers.rb +139 -0
  144. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/utils/params_hash.rb +61 -0
  145. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/lib/faraday/version.rb +5 -0
  146. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/external_adapters/faraday_specs_setup.rb +14 -0
  147. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/adapter/em_http_spec.rb +47 -0
  148. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/adapter/em_synchrony_spec.rb +16 -0
  149. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/adapter/excon_spec.rb +49 -0
  150. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/adapter/httpclient_spec.rb +73 -0
  151. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/adapter/net_http_spec.rb +64 -0
  152. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/adapter/patron_spec.rb +18 -0
  153. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/adapter/rack_spec.rb +8 -0
  154. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/adapter/test_spec.rb +260 -0
  155. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/adapter/typhoeus_spec.rb +7 -0
  156. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/adapter_registry_spec.rb +28 -0
  157. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/adapter_spec.rb +55 -0
  158. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/composite_read_io_spec.rb +80 -0
  159. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/connection_spec.rb +721 -0
  160. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/error_spec.rb +60 -0
  161. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/middleware_spec.rb +52 -0
  162. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/options/env_spec.rb +70 -0
  163. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/options/options_spec.rb +297 -0
  164. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/options/proxy_options_spec.rb +37 -0
  165. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/options/request_options_spec.rb +19 -0
  166. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/params_encoders/flat_spec.rb +42 -0
  167. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/params_encoders/nested_spec.rb +142 -0
  168. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/rack_builder_spec.rb +345 -0
  169. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/request/authorization_spec.rb +88 -0
  170. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/request/instrumentation_spec.rb +76 -0
  171. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/request/multipart_spec.rb +302 -0
  172. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/request/retry_spec.rb +242 -0
  173. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/request/url_encoded_spec.rb +83 -0
  174. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/request_spec.rb +120 -0
  175. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/response/logger_spec.rb +220 -0
  176. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/response/middleware_spec.rb +68 -0
  177. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/response/raise_error_spec.rb +169 -0
  178. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/response_spec.rb +75 -0
  179. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/utils/headers_spec.rb +82 -0
  180. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday/utils_spec.rb +56 -0
  181. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/faraday_spec.rb +37 -0
  182. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/spec_helper.rb +132 -0
  183. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/support/disabling_stub.rb +14 -0
  184. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/support/fake_safe_buffer.rb +15 -0
  185. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/support/helper_methods.rb +133 -0
  186. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/support/shared_examples/adapter.rb +105 -0
  187. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/support/shared_examples/params_encoder.rb +18 -0
  188. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/support/shared_examples/request_method.rb +262 -0
  189. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/support/streaming_response_checker.rb +35 -0
  190. data/.bundle/ruby/3.0.0/gems/faraday-1.4.1/spec/support/webmock_rack_app.rb +68 -0
  191. data/.bundle/ruby/3.0.0/gems/faraday-excon-1.1.0/LICENSE.md +21 -0
  192. data/.bundle/ruby/3.0.0/gems/faraday-excon-1.1.0/README.md +61 -0
  193. data/.bundle/ruby/3.0.0/gems/faraday-excon-1.1.0/lib/faraday/adapter/excon.rb +124 -0
  194. data/.bundle/ruby/3.0.0/gems/faraday-excon-1.1.0/lib/faraday/excon.rb +11 -0
  195. data/.bundle/ruby/3.0.0/gems/faraday-excon-1.1.0/lib/faraday/excon/version.rb +7 -0
  196. data/.bundle/ruby/3.0.0/gems/faraday-net_http-1.0.1/LICENSE.md +21 -0
  197. data/.bundle/ruby/3.0.0/gems/faraday-net_http-1.0.1/README.md +57 -0
  198. data/.bundle/ruby/3.0.0/gems/faraday-net_http-1.0.1/lib/faraday/adapter/net_http.rb +213 -0
  199. data/.bundle/ruby/3.0.0/gems/faraday-net_http-1.0.1/lib/faraday/net_http.rb +10 -0
  200. data/.bundle/ruby/3.0.0/gems/faraday-net_http-1.0.1/lib/faraday/net_http/version.rb +7 -0
  201. data/.bundle/ruby/3.0.0/gems/faraday-net_http_persistent-1.1.0/LICENSE.md +21 -0
  202. data/.bundle/ruby/3.0.0/gems/faraday-net_http_persistent-1.1.0/README.md +73 -0
  203. data/.bundle/ruby/3.0.0/gems/faraday-net_http_persistent-1.1.0/lib/faraday/adapter/net_http_persistent.rb +91 -0
  204. data/.bundle/ruby/3.0.0/gems/faraday-net_http_persistent-1.1.0/lib/faraday/net_http_persistent.rb +17 -0
  205. data/.bundle/ruby/3.0.0/gems/faraday-net_http_persistent-1.1.0/lib/faraday/net_http_persistent/version.rb +7 -0
  206. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/.gitignore +6 -0
  207. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/.rspec +5 -0
  208. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/.travis.yml +20 -0
  209. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/.yardopts +6 -0
  210. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/Gemfile +6 -0
  211. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/History.txt +64 -0
  212. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/LICENSE +21 -0
  213. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/Manifest.txt +9 -0
  214. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/README.md +127 -0
  215. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/Rakefile +6 -0
  216. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/lib/composite_io.rb +108 -0
  217. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/lib/multipart_post.rb +9 -0
  218. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/lib/multipartable.rb +48 -0
  219. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/lib/net/http/post/multipart.rb +28 -0
  220. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/lib/parts.rb +126 -0
  221. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/multipart-post.gemspec +23 -0
  222. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/spec/composite_io_spec.rb +138 -0
  223. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/spec/multibyte.txt +1 -0
  224. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/spec/net/http/post/multipart_spec.rb +123 -0
  225. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/spec/parts_spec.rb +102 -0
  226. data/.bundle/ruby/3.0.0/gems/multipart-post-2.1.1/spec/spec_helper.rb +29 -0
  227. data/.bundle/ruby/3.0.0/gems/parallel-1.20.1/MIT-LICENSE.txt +20 -0
  228. data/.bundle/ruby/3.0.0/gems/parallel-1.20.1/lib/parallel.rb +523 -0
  229. data/.bundle/ruby/3.0.0/gems/parallel-1.20.1/lib/parallel/processor_count.rb +42 -0
  230. data/.bundle/ruby/3.0.0/gems/parallel-1.20.1/lib/parallel/version.rb +3 -0
  231. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/LICENSE.txt +25 -0
  232. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/bin/ruby-parse +7 -0
  233. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/bin/ruby-rewrite +7 -0
  234. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/gauntlet_parser.rb +123 -0
  235. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser.rb +85 -0
  236. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/all.rb +14 -0
  237. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/ast/node.rb +40 -0
  238. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/ast/processor.rb +288 -0
  239. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/base.rb +291 -0
  240. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/builders/default.rb +2224 -0
  241. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/clobbering_error.rb +13 -0
  242. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/color.rb +32 -0
  243. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/context.rb +68 -0
  244. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/current.rb +110 -0
  245. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/current_arg_stack.rb +46 -0
  246. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/deprecation.rb +13 -0
  247. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/diagnostic.rb +163 -0
  248. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/diagnostic/engine.rb +104 -0
  249. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/lexer.rb +23780 -0
  250. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/lexer/dedenter.rb +82 -0
  251. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/lexer/explanation.rb +55 -0
  252. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/lexer/literal.rb +269 -0
  253. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/lexer/stack_state.rb +49 -0
  254. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/macruby.rb +6149 -0
  255. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/max_numparam_stack.rb +56 -0
  256. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/messages.rb +114 -0
  257. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/meta.rb +39 -0
  258. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/rewriter.rb +105 -0
  259. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/ruby18.rb +5667 -0
  260. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/ruby19.rb +6092 -0
  261. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/ruby20.rb +6527 -0
  262. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/ruby21.rb +6578 -0
  263. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/ruby22.rb +6613 -0
  264. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/ruby23.rb +6624 -0
  265. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/ruby24.rb +6694 -0
  266. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/ruby25.rb +6662 -0
  267. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/ruby26.rb +6676 -0
  268. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/ruby27.rb +7862 -0
  269. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/ruby28.rb +8047 -0
  270. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/ruby30.rb +8060 -0
  271. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/ruby31.rb +8075 -0
  272. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/rubymotion.rb +6086 -0
  273. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/runner.rb +282 -0
  274. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/runner/ruby_parse.rb +157 -0
  275. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/runner/ruby_rewrite.rb +101 -0
  276. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/buffer.rb +355 -0
  277. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/comment.rb +134 -0
  278. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/comment/associator.rb +233 -0
  279. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/map.rb +186 -0
  280. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/map/collection.rb +18 -0
  281. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/map/condition.rb +21 -0
  282. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/map/constant.rb +32 -0
  283. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/map/definition.rb +23 -0
  284. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/map/for.rb +19 -0
  285. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/map/heredoc.rb +19 -0
  286. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/map/index.rb +33 -0
  287. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/map/keyword.rb +20 -0
  288. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/map/method_definition.rb +25 -0
  289. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/map/objc_kwarg.rb +19 -0
  290. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/map/operator.rb +17 -0
  291. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/map/rescue_body.rb +21 -0
  292. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/map/send.rb +36 -0
  293. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/map/ternary.rb +18 -0
  294. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/map/variable.rb +31 -0
  295. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/range.rb +326 -0
  296. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/rewriter.rb +513 -0
  297. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/rewriter/action.rb +44 -0
  298. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/tree_rewriter.rb +431 -0
  299. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/source/tree_rewriter/action.rb +242 -0
  300. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/static_environment.rb +60 -0
  301. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/syntax_error.rb +21 -0
  302. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/tree_rewriter.rb +133 -0
  303. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/variables_stack.rb +36 -0
  304. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/lib/parser/version.rb +5 -0
  305. data/.bundle/ruby/3.0.0/gems/parser-3.0.1.1/parser.gemspec +43 -0
  306. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/.gitignore +17 -0
  307. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/.rubocop.yml +20 -0
  308. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/.rubocop_todo.yml +29 -0
  309. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/.travis.yml +24 -0
  310. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/Changelog.md +93 -0
  311. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/Gemfile +28 -0
  312. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/Guardfile +8 -0
  313. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/LICENSE +20 -0
  314. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/README.markdown +224 -0
  315. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/Rakefile +9 -0
  316. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/appveyor.yml +40 -0
  317. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/lib/rainbow.rb +11 -0
  318. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/lib/rainbow/color.rb +143 -0
  319. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/lib/rainbow/ext/string.rb +54 -0
  320. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/lib/rainbow/global.rb +23 -0
  321. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/lib/rainbow/null_presenter.rb +93 -0
  322. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/lib/rainbow/presenter.rb +135 -0
  323. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/lib/rainbow/refinement.rb +12 -0
  324. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/lib/rainbow/string_utils.rb +21 -0
  325. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/lib/rainbow/version.rb +3 -0
  326. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/lib/rainbow/wrapper.rb +20 -0
  327. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/lib/rainbow/x11_color_names.rb +151 -0
  328. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/rainbow.gemspec +22 -0
  329. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/spec/integration/instance_spec.rb +33 -0
  330. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/spec/integration/rainbow_spec.rb +157 -0
  331. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/spec/integration/refinement_spec.rb +36 -0
  332. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/spec/integration/string_spec.rb +81 -0
  333. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/spec/integration/uncolor_spec.rb +14 -0
  334. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/spec/spec_helper.rb +10 -0
  335. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/spec/support/presenter_shared_examples.rb +9 -0
  336. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/spec/unit/color_spec.rb +296 -0
  337. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/spec/unit/null_presenter_spec.rb +110 -0
  338. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/spec/unit/presenter_spec.rb +199 -0
  339. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/spec/unit/string_utils_spec.rb +94 -0
  340. data/.bundle/ruby/3.0.0/gems/rainbow-3.0.0/spec/unit/wrapper_spec.rb +32 -0
  341. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/CONTRIBUTING.rdoc +43 -0
  342. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/Gemfile +10 -0
  343. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/History.rdoc +2386 -0
  344. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/MIT-LICENSE +21 -0
  345. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/README.rdoc +155 -0
  346. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/Rakefile +41 -0
  347. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/bin/bundle +105 -0
  348. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/bin/console +7 -0
  349. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/bin/rake +29 -0
  350. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/bin/rdoc +29 -0
  351. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/bin/rubocop +29 -0
  352. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/bin/setup +6 -0
  353. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/doc/command_line_usage.rdoc +158 -0
  354. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/doc/example/Rakefile1 +38 -0
  355. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/doc/example/Rakefile2 +35 -0
  356. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/doc/example/a.c +6 -0
  357. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/doc/example/b.c +6 -0
  358. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/doc/example/main.c +11 -0
  359. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/doc/glossary.rdoc +42 -0
  360. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/doc/jamis.rb +592 -0
  361. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/doc/proto_rake.rdoc +127 -0
  362. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/doc/rake.1 +156 -0
  363. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/doc/rakefile.rdoc +622 -0
  364. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/doc/rational.rdoc +151 -0
  365. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/exe/rake +27 -0
  366. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake.rb +71 -0
  367. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/application.rb +824 -0
  368. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/backtrace.rb +24 -0
  369. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/clean.rb +78 -0
  370. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/cloneable.rb +17 -0
  371. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/cpu_counter.rb +107 -0
  372. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/default_loader.rb +15 -0
  373. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/dsl_definition.rb +195 -0
  374. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/early_time.rb +22 -0
  375. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/ext/core.rb +26 -0
  376. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/ext/string.rb +176 -0
  377. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/file_creation_task.rb +25 -0
  378. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/file_list.rb +435 -0
  379. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/file_task.rb +54 -0
  380. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/file_utils.rb +134 -0
  381. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/file_utils_ext.rb +134 -0
  382. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/invocation_chain.rb +57 -0
  383. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/invocation_exception_mixin.rb +17 -0
  384. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/late_time.rb +18 -0
  385. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/linked_list.rb +112 -0
  386. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/loaders/makefile.rb +54 -0
  387. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/multi_task.rb +14 -0
  388. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/name_space.rb +38 -0
  389. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/packagetask.rb +222 -0
  390. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/phony.rb +16 -0
  391. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/private_reader.rb +21 -0
  392. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/promise.rb +100 -0
  393. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/pseudo_status.rb +30 -0
  394. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/rake_module.rb +67 -0
  395. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/rake_test_loader.rb +27 -0
  396. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/rule_recursion_overflow_error.rb +20 -0
  397. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/scope.rb +43 -0
  398. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/task.rb +434 -0
  399. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/task_argument_error.rb +8 -0
  400. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/task_arguments.rb +109 -0
  401. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/task_manager.rb +331 -0
  402. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/tasklib.rb +12 -0
  403. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/testtask.rb +189 -0
  404. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/thread_history_display.rb +49 -0
  405. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/thread_pool.rb +163 -0
  406. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/trace_output.rb +23 -0
  407. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/version.rb +10 -0
  408. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/win32.rb +51 -0
  409. data/.bundle/ruby/3.0.0/gems/rake-13.0.3/rake.gemspec +43 -0
  410. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/CHANGELOG.md +494 -0
  411. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/Gemfile +14 -0
  412. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/LICENSE +22 -0
  413. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/README.md +479 -0
  414. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/Rakefile +87 -0
  415. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser.rb +8 -0
  416. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/error.rb +4 -0
  417. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression.rb +155 -0
  418. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/classes/alternation.rb +10 -0
  419. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/classes/anchor.rb +26 -0
  420. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/classes/backref.rb +60 -0
  421. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/classes/conditional.rb +68 -0
  422. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/classes/escape.rb +94 -0
  423. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/classes/free_space.rb +17 -0
  424. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/classes/group.rb +85 -0
  425. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/classes/keep.rb +5 -0
  426. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/classes/literal.rb +7 -0
  427. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/classes/posix_class.rb +11 -0
  428. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/classes/property.rb +120 -0
  429. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/classes/root.rb +12 -0
  430. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/classes/set.rb +27 -0
  431. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/classes/set/intersection.rb +9 -0
  432. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/classes/set/range.rb +24 -0
  433. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/classes/type.rb +19 -0
  434. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/methods/match.rb +13 -0
  435. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/methods/match_length.rb +172 -0
  436. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/methods/options.rb +35 -0
  437. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/methods/strfregexp.rb +114 -0
  438. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/methods/tests.rb +97 -0
  439. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/methods/traverse.rb +64 -0
  440. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/quantifier.rb +53 -0
  441. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/sequence.rb +51 -0
  442. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/sequence_operation.rb +25 -0
  443. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/expression/subexpression.rb +59 -0
  444. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/lexer.rb +127 -0
  445. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/parser.rb +634 -0
  446. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/scanner.rb +2731 -0
  447. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/scanner/char_type.rl +28 -0
  448. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/scanner/properties/long.yml +594 -0
  449. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/scanner/properties/short.yml +237 -0
  450. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/scanner/property.rl +30 -0
  451. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/scanner/scanner.rl +886 -0
  452. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax.rb +11 -0
  453. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/any.rb +15 -0
  454. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/base.rb +95 -0
  455. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/tokens.rb +45 -0
  456. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/tokens/anchor.rb +15 -0
  457. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/tokens/assertion.rb +13 -0
  458. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/tokens/backref.rb +24 -0
  459. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/tokens/character_set.rb +13 -0
  460. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/tokens/character_type.rb +16 -0
  461. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/tokens/conditional.rb +16 -0
  462. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/tokens/escape.rb +30 -0
  463. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/tokens/group.rb +23 -0
  464. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/tokens/keep.rb +12 -0
  465. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/tokens/meta.rb +13 -0
  466. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/tokens/posix_class.rb +17 -0
  467. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/tokens/quantifier.rb +35 -0
  468. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/tokens/unicode_property.rb +675 -0
  469. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/version_lookup.rb +82 -0
  470. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/versions.rb +6 -0
  471. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/versions/1.8.6.rb +21 -0
  472. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/versions/1.9.1.rb +18 -0
  473. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/versions/1.9.3.rb +11 -0
  474. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/versions/2.0.0.rb +17 -0
  475. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/versions/2.2.0.rb +10 -0
  476. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/versions/2.3.0.rb +10 -0
  477. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/versions/2.4.0.rb +10 -0
  478. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/versions/2.4.1.rb +9 -0
  479. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/versions/2.5.0.rb +10 -0
  480. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/versions/2.6.0.rb +10 -0
  481. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/versions/2.6.2.rb +10 -0
  482. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/syntax/versions/2.6.3.rb +10 -0
  483. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/token.rb +35 -0
  484. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/lib/regexp_parser/version.rb +5 -0
  485. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/regexp_parser.gemspec +36 -0
  486. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/expression/base_spec.rb +104 -0
  487. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/expression/clone_spec.rb +152 -0
  488. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/expression/conditional_spec.rb +89 -0
  489. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/expression/free_space_spec.rb +27 -0
  490. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/expression/methods/match_length_spec.rb +161 -0
  491. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/expression/methods/match_spec.rb +25 -0
  492. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/expression/methods/strfregexp_spec.rb +224 -0
  493. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/expression/methods/tests_spec.rb +99 -0
  494. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/expression/methods/traverse_spec.rb +161 -0
  495. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/expression/options_spec.rb +128 -0
  496. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/expression/subexpression_spec.rb +50 -0
  497. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/expression/to_h_spec.rb +26 -0
  498. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/expression/to_s_spec.rb +108 -0
  499. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/lexer/all_spec.rb +22 -0
  500. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/lexer/conditionals_spec.rb +53 -0
  501. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/lexer/delimiters_spec.rb +68 -0
  502. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/lexer/escapes_spec.rb +14 -0
  503. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/lexer/keep_spec.rb +10 -0
  504. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/lexer/literals_spec.rb +64 -0
  505. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/lexer/nesting_spec.rb +99 -0
  506. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/lexer/refcalls_spec.rb +60 -0
  507. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/all_spec.rb +43 -0
  508. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/alternation_spec.rb +88 -0
  509. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/anchors_spec.rb +17 -0
  510. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/conditionals_spec.rb +179 -0
  511. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/errors_spec.rb +30 -0
  512. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/escapes_spec.rb +121 -0
  513. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/free_space_spec.rb +130 -0
  514. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/groups_spec.rb +108 -0
  515. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/keep_spec.rb +6 -0
  516. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/options_spec.rb +28 -0
  517. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/posix_classes_spec.rb +8 -0
  518. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/properties_spec.rb +115 -0
  519. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/quantifiers_spec.rb +68 -0
  520. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/refcalls_spec.rb +117 -0
  521. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/set/intersections_spec.rb +127 -0
  522. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/set/ranges_spec.rb +111 -0
  523. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/sets_spec.rb +178 -0
  524. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/parser/types_spec.rb +18 -0
  525. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/scanner/all_spec.rb +18 -0
  526. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/scanner/anchors_spec.rb +21 -0
  527. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/scanner/conditionals_spec.rb +128 -0
  528. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/scanner/delimiters_spec.rb +52 -0
  529. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/scanner/errors_spec.rb +67 -0
  530. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/scanner/escapes_spec.rb +64 -0
  531. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/scanner/free_space_spec.rb +165 -0
  532. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/scanner/groups_spec.rb +61 -0
  533. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/scanner/keep_spec.rb +10 -0
  534. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/scanner/literals_spec.rb +39 -0
  535. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/scanner/meta_spec.rb +18 -0
  536. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/scanner/options_spec.rb +36 -0
  537. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/scanner/properties_spec.rb +64 -0
  538. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/scanner/quantifiers_spec.rb +25 -0
  539. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/scanner/refcalls_spec.rb +55 -0
  540. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/scanner/sets_spec.rb +151 -0
  541. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/scanner/types_spec.rb +14 -0
  542. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/spec_helper.rb +16 -0
  543. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/support/runner.rb +42 -0
  544. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/support/shared_examples.rb +77 -0
  545. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/support/warning_extractor.rb +60 -0
  546. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/syntax/syntax_spec.rb +48 -0
  547. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/syntax/syntax_token_map_spec.rb +23 -0
  548. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/syntax/versions/1.8.6_spec.rb +17 -0
  549. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/syntax/versions/1.9.1_spec.rb +10 -0
  550. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/syntax/versions/1.9.3_spec.rb +9 -0
  551. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/syntax/versions/2.0.0_spec.rb +13 -0
  552. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/syntax/versions/2.2.0_spec.rb +9 -0
  553. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/syntax/versions/aliases_spec.rb +37 -0
  554. data/.bundle/ruby/3.0.0/gems/regexp_parser-2.1.1/spec/token/token_spec.rb +85 -0
  555. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/LICENSE.txt +22 -0
  556. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/NEWS.md +178 -0
  557. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/README.md +48 -0
  558. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/doc/rexml/context.rdoc +143 -0
  559. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/doc/rexml/tasks/rdoc/child.rdoc +87 -0
  560. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/doc/rexml/tasks/rdoc/document.rdoc +276 -0
  561. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/doc/rexml/tasks/rdoc/element.rdoc +602 -0
  562. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/doc/rexml/tasks/rdoc/node.rdoc +97 -0
  563. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/doc/rexml/tasks/rdoc/parent.rdoc +267 -0
  564. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/child_toc.rdoc +12 -0
  565. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/document_toc.rdoc +30 -0
  566. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/element_toc.rdoc +55 -0
  567. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/master_toc.rdoc +135 -0
  568. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/node_toc.rdoc +16 -0
  569. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/doc/rexml/tasks/tocs/parent_toc.rdoc +25 -0
  570. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml.rb +3 -0
  571. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/attlistdecl.rb +63 -0
  572. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/attribute.rb +205 -0
  573. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/cdata.rb +68 -0
  574. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/child.rb +97 -0
  575. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/comment.rb +80 -0
  576. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/doctype.rb +311 -0
  577. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/document.rb +451 -0
  578. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/dtd/attlistdecl.rb +11 -0
  579. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/dtd/dtd.rb +47 -0
  580. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/dtd/elementdecl.rb +18 -0
  581. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/dtd/entitydecl.rb +57 -0
  582. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/dtd/notationdecl.rb +40 -0
  583. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/element.rb +2599 -0
  584. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/encoding.rb +51 -0
  585. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/entity.rb +171 -0
  586. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/formatters/default.rb +116 -0
  587. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/formatters/pretty.rb +142 -0
  588. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/formatters/transitive.rb +58 -0
  589. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/functions.rb +447 -0
  590. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/instruction.rb +79 -0
  591. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/light/node.rb +188 -0
  592. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/namespace.rb +59 -0
  593. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/node.rb +76 -0
  594. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/output.rb +30 -0
  595. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/parent.rb +166 -0
  596. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/parseexception.rb +52 -0
  597. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/parsers/baseparser.rb +694 -0
  598. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/parsers/lightparser.rb +59 -0
  599. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/parsers/pullparser.rb +197 -0
  600. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/parsers/sax2parser.rb +273 -0
  601. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/parsers/streamparser.rb +61 -0
  602. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/parsers/treeparser.rb +101 -0
  603. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/parsers/ultralightparser.rb +57 -0
  604. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/parsers/xpathparser.rb +689 -0
  605. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/quickpath.rb +266 -0
  606. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/rexml.rb +37 -0
  607. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/sax2listener.rb +98 -0
  608. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/security.rb +28 -0
  609. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/source.rb +298 -0
  610. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/streamlistener.rb +93 -0
  611. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/text.rb +424 -0
  612. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/undefinednamespaceexception.rb +9 -0
  613. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/validation/relaxng.rb +539 -0
  614. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/validation/validation.rb +144 -0
  615. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/validation/validationexception.rb +10 -0
  616. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/xmldecl.rb +130 -0
  617. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/xmltokens.rb +85 -0
  618. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/xpath.rb +81 -0
  619. data/.bundle/ruby/3.0.0/gems/rexml-3.2.5/lib/rexml/xpath_parser.rb +974 -0
  620. data/.bundle/ruby/3.0.0/gems/rspec-3.10.0/LICENSE.md +27 -0
  621. data/.bundle/ruby/3.0.0/gems/rspec-3.10.0/README.md +43 -0
  622. data/.bundle/ruby/3.0.0/gems/rspec-3.10.0/lib/rspec.rb +3 -0
  623. data/.bundle/ruby/3.0.0/gems/rspec-3.10.0/lib/rspec/version.rb +5 -0
  624. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/.document +5 -0
  625. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/.yardopts +8 -0
  626. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/Changelog.md +2327 -0
  627. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/LICENSE.md +26 -0
  628. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/README.md +384 -0
  629. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/exe/rspec +4 -0
  630. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/autorun.rb +3 -0
  631. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core.rb +186 -0
  632. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/backtrace_formatter.rb +65 -0
  633. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/bisect/coordinator.rb +62 -0
  634. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/bisect/example_minimizer.rb +173 -0
  635. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/bisect/fork_runner.rb +138 -0
  636. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/bisect/server.rb +61 -0
  637. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/bisect/shell_command.rb +126 -0
  638. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/bisect/shell_runner.rb +73 -0
  639. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/bisect/utilities.rb +58 -0
  640. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/configuration.rb +2372 -0
  641. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/configuration_options.rb +233 -0
  642. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/did_you_mean.rb +46 -0
  643. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/drb.rb +120 -0
  644. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/dsl.rb +98 -0
  645. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/example.rb +663 -0
  646. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/example_group.rb +901 -0
  647. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/example_status_persister.rb +235 -0
  648. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/filter_manager.rb +231 -0
  649. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/flat_map.rb +20 -0
  650. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters.rb +273 -0
  651. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/base_bisect_formatter.rb +45 -0
  652. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/base_formatter.rb +70 -0
  653. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/base_text_formatter.rb +75 -0
  654. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/bisect_drb_formatter.rb +29 -0
  655. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/bisect_progress_formatter.rb +157 -0
  656. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/console_codes.rb +68 -0
  657. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
  658. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/documentation_formatter.rb +102 -0
  659. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/exception_presenter.rb +521 -0
  660. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/failure_list_formatter.rb +23 -0
  661. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
  662. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/helpers.rb +110 -0
  663. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/html_formatter.rb +153 -0
  664. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/html_printer.rb +414 -0
  665. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/html_snippet_extractor.rb +120 -0
  666. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/json_formatter.rb +102 -0
  667. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/profile_formatter.rb +68 -0
  668. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/progress_formatter.rb +29 -0
  669. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/protocol.rb +182 -0
  670. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/snippet_extractor.rb +134 -0
  671. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/formatters/syntax_highlighter.rb +91 -0
  672. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/hooks.rb +646 -0
  673. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/invocations.rb +87 -0
  674. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/memoized_helpers.rb +554 -0
  675. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/metadata.rb +498 -0
  676. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/metadata_filter.rb +255 -0
  677. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
  678. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
  679. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
  680. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/mocking_adapters/null.rb +14 -0
  681. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/mocking_adapters/rr.rb +31 -0
  682. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
  683. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/notifications.rb +521 -0
  684. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/option_parser.rb +324 -0
  685. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/ordering.rb +158 -0
  686. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/output_wrapper.rb +29 -0
  687. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/pending.rb +165 -0
  688. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/profiler.rb +34 -0
  689. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/project_initializer.rb +48 -0
  690. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/project_initializer/.rspec +1 -0
  691. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/project_initializer/spec/spec_helper.rb +100 -0
  692. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/rake_task.rb +188 -0
  693. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/reporter.rb +265 -0
  694. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/ruby_project.rb +53 -0
  695. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/runner.rb +212 -0
  696. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/sandbox.rb +37 -0
  697. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/set.rb +54 -0
  698. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/shared_context.rb +55 -0
  699. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/shared_example_group.rb +271 -0
  700. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/shell_escape.rb +49 -0
  701. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
  702. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/version.rb +9 -0
  703. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/warnings.rb +40 -0
  704. data/.bundle/ruby/3.0.0/gems/rspec-core-3.10.1/lib/rspec/core/world.rb +277 -0
  705. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/.document +5 -0
  706. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/.yardopts +6 -0
  707. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/Changelog.md +1240 -0
  708. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/LICENSE.md +25 -0
  709. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/README.md +320 -0
  710. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/expectations.rb +82 -0
  711. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
  712. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/expectations/configuration.rb +230 -0
  713. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/expectations/expectation_target.rb +127 -0
  714. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/expectations/fail_with.rb +39 -0
  715. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/expectations/failure_aggregator.rb +212 -0
  716. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/expectations/handler.rb +182 -0
  717. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/expectations/minitest_integration.rb +58 -0
  718. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/expectations/syntax.rb +132 -0
  719. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/expectations/version.rb +8 -0
  720. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers.rb +1041 -0
  721. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/aliased_matcher.rb +116 -0
  722. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in.rb +53 -0
  723. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/all.rb +86 -0
  724. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/base_matcher.rb +193 -0
  725. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/be.rb +191 -0
  726. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/be_between.rb +77 -0
  727. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/be_instance_of.rb +26 -0
  728. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/be_kind_of.rb +20 -0
  729. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/be_within.rb +72 -0
  730. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/change.rb +428 -0
  731. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/compound.rb +276 -0
  732. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/contain_exactly.rb +302 -0
  733. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/count_expectation.rb +169 -0
  734. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/cover.rb +24 -0
  735. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/eq.rb +40 -0
  736. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/eql.rb +34 -0
  737. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/equal.rb +81 -0
  738. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/exist.rb +90 -0
  739. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/has.rb +167 -0
  740. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
  741. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/include.rb +206 -0
  742. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/match.rb +106 -0
  743. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/operators.rb +128 -0
  744. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/output.rb +200 -0
  745. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/raise_error.rb +259 -0
  746. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/respond_to.rb +200 -0
  747. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/satisfy.rb +60 -0
  748. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
  749. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
  750. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/built_in/yield.rb +355 -0
  751. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/composable.rb +171 -0
  752. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/dsl.rb +540 -0
  753. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/english_phrasing.rb +58 -0
  754. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +82 -0
  755. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/fail_matchers.rb +42 -0
  756. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/generated_descriptions.rb +41 -0
  757. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/matcher_delegator.rb +35 -0
  758. data/.bundle/ruby/3.0.0/gems/rspec-expectations-3.10.1/lib/rspec/matchers/matcher_protocol.rb +99 -0
  759. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/.document +5 -0
  760. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/.yardopts +6 -0
  761. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/Changelog.md +1167 -0
  762. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/LICENSE.md +25 -0
  763. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/README.md +463 -0
  764. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks.rb +133 -0
  765. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/any_instance.rb +11 -0
  766. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/any_instance/chain.rb +111 -0
  767. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
  768. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/any_instance/expect_chain_chain.rb +31 -0
  769. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/any_instance/expectation_chain.rb +50 -0
  770. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
  771. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/any_instance/proxy.rb +116 -0
  772. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/any_instance/recorder.rb +295 -0
  773. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/any_instance/stub_chain.rb +51 -0
  774. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/any_instance/stub_chain_chain.rb +23 -0
  775. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/argument_list_matcher.rb +100 -0
  776. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/argument_matchers.rb +322 -0
  777. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/configuration.rb +212 -0
  778. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/error_generator.rb +369 -0
  779. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/example_methods.rb +434 -0
  780. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/instance_method_stasher.rb +146 -0
  781. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/marshal_extension.rb +41 -0
  782. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
  783. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/matchers/have_received.rb +134 -0
  784. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/matchers/receive.rb +132 -0
  785. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
  786. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
  787. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/message_chain.rb +87 -0
  788. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/message_expectation.rb +751 -0
  789. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/method_double.rb +288 -0
  790. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/method_reference.rb +202 -0
  791. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/minitest_integration.rb +68 -0
  792. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/mutate_const.rb +339 -0
  793. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/object_reference.rb +149 -0
  794. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/order_group.rb +81 -0
  795. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/proxy.rb +519 -0
  796. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/space.rb +238 -0
  797. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/standalone.rb +3 -0
  798. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/syntax.rb +325 -0
  799. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/targets.rb +124 -0
  800. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/test_double.rb +171 -0
  801. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/verifying_double.rb +129 -0
  802. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/verifying_message_expectation.rb +54 -0
  803. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/verifying_proxy.rb +220 -0
  804. data/.bundle/ruby/3.0.0/gems/rspec-mocks-3.10.2/lib/rspec/mocks/version.rb +9 -0
  805. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/Changelog.md +332 -0
  806. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/LICENSE.md +23 -0
  807. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/README.md +40 -0
  808. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support.rb +154 -0
  809. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/caller_filter.rb +83 -0
  810. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/comparable_version.rb +46 -0
  811. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/differ.rb +215 -0
  812. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/directory_maker.rb +63 -0
  813. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/encoded_string.rb +161 -0
  814. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/fuzzy_matcher.rb +48 -0
  815. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/hunk_generator.rb +47 -0
  816. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/matcher_definition.rb +42 -0
  817. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/method_signature_verifier.rb +438 -0
  818. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/mutex.rb +73 -0
  819. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/object_formatter.rb +275 -0
  820. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/recursive_const_methods.rb +76 -0
  821. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/reentrant_mutex.rb +61 -0
  822. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/ruby_features.rb +191 -0
  823. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/source.rb +85 -0
  824. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/source/location.rb +21 -0
  825. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/source/node.rb +110 -0
  826. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/source/token.rb +87 -0
  827. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/spec.rb +82 -0
  828. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/spec/deprecation_helpers.rb +48 -0
  829. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/spec/diff_helpers.rb +31 -0
  830. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/spec/formatting_support.rb +9 -0
  831. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/spec/in_sub_process.rb +67 -0
  832. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/spec/library_wide_checks.rb +150 -0
  833. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/spec/shell_out.rb +105 -0
  834. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/spec/stderr_splitter.rb +75 -0
  835. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/spec/string_matcher.rb +45 -0
  836. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
  837. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
  838. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/version.rb +7 -0
  839. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/warnings.rb +39 -0
  840. data/.bundle/ruby/3.0.0/gems/rspec-support-3.10.2/lib/rspec/support/with_keywords_when_needed.rb +33 -0
  841. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/LICENSE.txt +20 -0
  842. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/README.md +247 -0
  843. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/assets/logo.png +0 -0
  844. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/assets/output.html.erb +261 -0
  845. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/config/default.yml +4877 -0
  846. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/config/obsoletion.yml +200 -0
  847. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/exe/rubocop +15 -0
  848. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop.rb +695 -0
  849. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/ast_aliases.rb +8 -0
  850. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cached_data.rb +58 -0
  851. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cli.rb +133 -0
  852. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cli/command.rb +22 -0
  853. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cli/command/auto_genenerate_config.rb +132 -0
  854. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cli/command/base.rb +35 -0
  855. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cli/command/execute_runner.rb +100 -0
  856. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cli/command/init_dotfile.rb +44 -0
  857. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cli/command/show_cops.rb +74 -0
  858. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cli/command/suggest_extensions.rb +81 -0
  859. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cli/command/version.rb +18 -0
  860. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cli/environment.rb +22 -0
  861. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/comment_config.rb +157 -0
  862. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/config.rb +293 -0
  863. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/config_loader.rb +277 -0
  864. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/config_loader_resolver.rb +266 -0
  865. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/config_obsoletion.rb +103 -0
  866. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/config_obsoletion/changed_enforced_styles.rb +33 -0
  867. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/config_obsoletion/changed_parameter.rb +21 -0
  868. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/config_obsoletion/cop_rule.rb +33 -0
  869. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/config_obsoletion/extracted_cop.rb +44 -0
  870. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/config_obsoletion/parameter_rule.rb +44 -0
  871. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/config_obsoletion/removed_cop.rb +41 -0
  872. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/config_obsoletion/renamed_cop.rb +34 -0
  873. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/config_obsoletion/rule.rb +41 -0
  874. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/config_obsoletion/split_cop.rb +27 -0
  875. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/config_regeneration.rb +33 -0
  876. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/config_store.rb +72 -0
  877. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/config_validator.rb +234 -0
  878. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/autocorrect_logic.rb +105 -0
  879. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/badge.rb +57 -0
  880. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/base.rb +450 -0
  881. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/bundler/duplicated_gem.rb +97 -0
  882. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/bundler/gem_comment.rb +171 -0
  883. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/bundler/gem_version.rb +99 -0
  884. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/bundler/insecure_protocol_source.rb +62 -0
  885. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/bundler/ordered_gems.rb +71 -0
  886. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/commissioner.rb +169 -0
  887. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/cop.rb +146 -0
  888. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/corrector.rb +118 -0
  889. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/correctors/alignment_corrector.rb +136 -0
  890. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/correctors/condition_corrector.rb +25 -0
  891. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/correctors/each_to_for_corrector.rb +51 -0
  892. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/correctors/empty_line_corrector.rb +25 -0
  893. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/correctors/for_to_each_corrector.rb +72 -0
  894. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +136 -0
  895. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/correctors/line_break_corrector.rb +58 -0
  896. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +97 -0
  897. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +42 -0
  898. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/correctors/parentheses_corrector.rb +28 -0
  899. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/correctors/percent_literal_corrector.rb +106 -0
  900. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/correctors/punctuation_corrector.rb +27 -0
  901. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/correctors/space_corrector.rb +46 -0
  902. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/correctors/string_literal_corrector.rb +23 -0
  903. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/correctors/unused_arg_corrector.rb +40 -0
  904. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/documentation.rb +22 -0
  905. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/exclude_limit.rb +26 -0
  906. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/force.rb +43 -0
  907. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/gemspec/date_assignment.rb +57 -0
  908. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/gemspec/duplicated_assignment.rb +105 -0
  909. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/gemspec/ordered_dependencies.rb +102 -0
  910. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/gemspec/required_ruby_version.rb +113 -0
  911. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +57 -0
  912. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/generator.rb +212 -0
  913. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/generator/configuration_injector.rb +65 -0
  914. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/generator/require_file_injector.rb +75 -0
  915. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/ignored_node.rb +36 -0
  916. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/internal_affairs.rb +15 -0
  917. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/internal_affairs/empty_line_between_expect_offense_and_correction.rb +68 -0
  918. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/internal_affairs/example_description.rb +92 -0
  919. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/internal_affairs/method_name_equal.rb +50 -0
  920. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/internal_affairs/node_destructuring.rb +44 -0
  921. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +151 -0
  922. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +41 -0
  923. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +56 -0
  924. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +62 -0
  925. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +65 -0
  926. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +53 -0
  927. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +76 -0
  928. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +148 -0
  929. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +52 -0
  930. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/access_modifier_indentation.rb +100 -0
  931. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/argument_alignment.rb +92 -0
  932. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/array_alignment.rb +84 -0
  933. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/assignment_indentation.rb +56 -0
  934. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/begin_end_alignment.rb +74 -0
  935. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/block_alignment.rb +236 -0
  936. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/block_end_newline.rb +60 -0
  937. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/case_indentation.rb +155 -0
  938. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/class_structure.rb +324 -0
  939. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +124 -0
  940. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +191 -0
  941. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/comment_indentation.rb +137 -0
  942. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/condition_position.rb +64 -0
  943. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/def_end_alignment.rb +73 -0
  944. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/dot_position.rb +104 -0
  945. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/else_alignment.rb +156 -0
  946. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/empty_comment.rb +151 -0
  947. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +174 -0
  948. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +64 -0
  949. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +136 -0
  950. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/empty_line_between_defs.rb +252 -0
  951. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/empty_lines.rb +71 -0
  952. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +206 -0
  953. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +103 -0
  954. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +118 -0
  955. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +42 -0
  956. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +38 -0
  957. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +85 -0
  958. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +126 -0
  959. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +42 -0
  960. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +59 -0
  961. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/end_alignment.rb +183 -0
  962. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/end_of_line.rb +92 -0
  963. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/extra_spacing.rb +182 -0
  964. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/first_argument_indentation.rb +276 -0
  965. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/first_array_element_indentation.rb +173 -0
  966. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/first_array_element_line_break.rb +41 -0
  967. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/first_hash_element_indentation.rb +188 -0
  968. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/first_hash_element_line_break.rb +33 -0
  969. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/first_method_argument_line_break.rb +48 -0
  970. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +42 -0
  971. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/first_parameter_indentation.rb +101 -0
  972. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/hash_alignment.rb +359 -0
  973. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +305 -0
  974. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/heredoc_indentation.rb +172 -0
  975. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/indentation_consistency.rb +205 -0
  976. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/indentation_style.rb +110 -0
  977. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/indentation_width.rb +372 -0
  978. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/initial_indentation.rb +55 -0
  979. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/leading_comment_space.rb +121 -0
  980. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/leading_empty_lines.rb +48 -0
  981. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/line_length.rb +267 -0
  982. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +115 -0
  983. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +35 -0
  984. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/multiline_assignment_layout.rb +117 -0
  985. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/multiline_block_layout.rb +159 -0
  986. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +115 -0
  987. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +46 -0
  988. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +47 -0
  989. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +131 -0
  990. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +231 -0
  991. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +128 -0
  992. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/multiline_operation_indentation.rb +128 -0
  993. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/parameter_alignment.rb +119 -0
  994. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/redundant_line_break.rb +137 -0
  995. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +198 -0
  996. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/single_line_block_chain.rb +53 -0
  997. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_after_colon.rb +49 -0
  998. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_after_comma.rb +32 -0
  999. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_after_method_name.rb +39 -0
  1000. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_after_not.rb +38 -0
  1001. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_after_semicolon.rb +29 -0
  1002. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_around_block_parameters.rb +162 -0
  1003. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +88 -0
  1004. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_around_keyword.rb +240 -0
  1005. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_around_method_call_operator.rb +98 -0
  1006. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_around_operators.rb +241 -0
  1007. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_before_block_braces.rb +152 -0
  1008. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_before_brackets.rb +65 -0
  1009. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_before_comma.rb +29 -0
  1010. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_before_comment.rb +34 -0
  1011. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_before_first_arg.rb +69 -0
  1012. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_before_semicolon.rb +24 -0
  1013. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_in_lambda_literal.rb +72 -0
  1014. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +222 -0
  1015. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +43 -0
  1016. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_inside_block_braces.rb +243 -0
  1017. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +181 -0
  1018. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_inside_parens.rb +130 -0
  1019. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +60 -0
  1020. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_inside_range_literal.rb +54 -0
  1021. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +139 -0
  1022. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +64 -0
  1023. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/trailing_empty_lines.rb +108 -0
  1024. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/layout/trailing_whitespace.rb +101 -0
  1025. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/legacy/corrections_proxy.rb +43 -0
  1026. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/legacy/corrector.rb +27 -0
  1027. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/ambiguous_assignment.rb +54 -0
  1028. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/ambiguous_block_association.rb +74 -0
  1029. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/ambiguous_operator.rb +103 -0
  1030. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +73 -0
  1031. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/assignment_in_condition.rb +97 -0
  1032. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/big_decimal_new.rb +44 -0
  1033. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +55 -0
  1034. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/boolean_symbol.rb +58 -0
  1035. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/circular_argument_reference.rb +72 -0
  1036. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/constant_definition_in_block.rb +100 -0
  1037. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/constant_resolution.rb +89 -0
  1038. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/debugger.rb +117 -0
  1039. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/deprecated_class_methods.rb +146 -0
  1040. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/deprecated_constants.rb +80 -0
  1041. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +148 -0
  1042. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +87 -0
  1043. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/duplicate_branch.rb +154 -0
  1044. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/duplicate_case_condition.rb +43 -0
  1045. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/duplicate_elsif_condition.rb +39 -0
  1046. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/duplicate_hash_key.rb +36 -0
  1047. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/duplicate_methods.rb +235 -0
  1048. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +77 -0
  1049. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/duplicate_require.rb +47 -0
  1050. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +47 -0
  1051. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/each_with_object_argument.rb +44 -0
  1052. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/else_layout.rb +90 -0
  1053. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/empty_block.rb +82 -0
  1054. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/empty_class.rb +93 -0
  1055. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/empty_conditional_body.rb +67 -0
  1056. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/empty_ensure.rb +58 -0
  1057. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/empty_expression.rb +42 -0
  1058. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/empty_file.rb +48 -0
  1059. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/empty_interpolation.rb +33 -0
  1060. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/empty_when.rb +61 -0
  1061. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/ensure_return.rb +59 -0
  1062. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/erb_new_arguments.rb +162 -0
  1063. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/flip_flop.rb +38 -0
  1064. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/float_comparison.rb +93 -0
  1065. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/float_out_of_range.rb +34 -0
  1066. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/format_parameter_mismatch.rb +194 -0
  1067. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/hash_compare_by_identity.rb +38 -0
  1068. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/heredoc_method_call_position.rb +154 -0
  1069. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/identity_comparison.rb +51 -0
  1070. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/implicit_string_concatenation.rb +101 -0
  1071. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/ineffective_access_modifier.rb +121 -0
  1072. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/inherit_exception.rb +105 -0
  1073. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/interpolation_check.rb +53 -0
  1074. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/lambda_without_literal_block.rb +44 -0
  1075. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/literal_as_condition.rb +147 -0
  1076. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/literal_in_interpolation.rb +127 -0
  1077. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/loop.rb +85 -0
  1078. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +81 -0
  1079. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/missing_super.rb +101 -0
  1080. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +36 -0
  1081. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/multiple_comparison.rb +48 -0
  1082. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/nested_method_definition.rb +100 -0
  1083. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/nested_percent_literal.rb +63 -0
  1084. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/next_without_accumulator.rb +51 -0
  1085. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/no_return_in_begin_end_blocks.rb +58 -0
  1086. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/non_deterministic_require_order.rb +169 -0
  1087. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +86 -0
  1088. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/number_conversion.rb +155 -0
  1089. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +47 -0
  1090. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/or_assignment_to_constant.rb +39 -0
  1091. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/ordered_magic_comments.rb +83 -0
  1092. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +96 -0
  1093. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +83 -0
  1094. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/percent_string_array.rb +68 -0
  1095. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/percent_symbol_array.rb +68 -0
  1096. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/raise_exception.rb +87 -0
  1097. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/rand_one.rb +46 -0
  1098. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +259 -0
  1099. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +128 -0
  1100. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/redundant_dir_glob_sort.rb +50 -0
  1101. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/redundant_require_statement.rb +49 -0
  1102. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/redundant_safe_navigation.rb +77 -0
  1103. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/redundant_splat_expansion.rb +209 -0
  1104. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/redundant_string_coercion.rb +52 -0
  1105. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/redundant_with_index.rb +77 -0
  1106. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/redundant_with_object.rb +78 -0
  1107. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/regexp_as_condition.rb +31 -0
  1108. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/require_parentheses.rb +64 -0
  1109. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/rescue_exception.rb +45 -0
  1110. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/rescue_type.rb +88 -0
  1111. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/return_in_void_context.rb +71 -0
  1112. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/safe_navigation_chain.rb +62 -0
  1113. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/safe_navigation_consistency.rb +92 -0
  1114. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +46 -0
  1115. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/script_permission.rb +73 -0
  1116. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/self_assignment.rb +78 -0
  1117. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/send_with_mixin_argument.rb +83 -0
  1118. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/shadowed_argument.rb +176 -0
  1119. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/shadowed_exception.rb +166 -0
  1120. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +67 -0
  1121. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/struct_new_override.rb +59 -0
  1122. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/suppressed_exception.rb +132 -0
  1123. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/symbol_conversion.rb +188 -0
  1124. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/syntax.rb +40 -0
  1125. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/to_enum_arguments.rb +89 -0
  1126. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/to_json.rb +49 -0
  1127. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/top_level_return_with_argument.rb +34 -0
  1128. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +55 -0
  1129. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/triple_quotes.rb +71 -0
  1130. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +80 -0
  1131. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/unexpected_block_arity.rb +85 -0
  1132. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/unified_integer.rb +42 -0
  1133. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +204 -0
  1134. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/unreachable_code.rb +97 -0
  1135. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/unreachable_loop.rb +196 -0
  1136. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/unused_block_argument.rb +172 -0
  1137. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/unused_method_argument.rb +117 -0
  1138. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/uri_escape_unescape.rb +79 -0
  1139. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/uri_regexp.rb +38 -0
  1140. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/useless_access_modifier.rb +290 -0
  1141. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/useless_assignment.rb +125 -0
  1142. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/useless_else_without_rescue.rb +45 -0
  1143. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/useless_method_definition.rb +68 -0
  1144. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/useless_setter_call.rb +170 -0
  1145. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/useless_times.rb +109 -0
  1146. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/lint/void.rb +140 -0
  1147. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/message_annotator.rb +130 -0
  1148. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/metrics/abc_size.rb +48 -0
  1149. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/metrics/block_length.rb +80 -0
  1150. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/metrics/block_nesting.rb +60 -0
  1151. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/metrics/class_length.rb +65 -0
  1152. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +64 -0
  1153. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/metrics/method_length.rb +64 -0
  1154. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/metrics/module_length.rb +56 -0
  1155. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/metrics/parameter_lists.rb +117 -0
  1156. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/metrics/perceived_complexity.rb +59 -0
  1157. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +145 -0
  1158. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +160 -0
  1159. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/metrics/utils/iterating_block.rb +61 -0
  1160. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +143 -0
  1161. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/metrics/utils/repeated_csend_discount.rb +42 -0
  1162. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/migration/department_name.rb +79 -0
  1163. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/alignment.rb +81 -0
  1164. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/allowed_identifiers.rb +18 -0
  1165. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/allowed_methods.rb +21 -0
  1166. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/annotation_comment.rb +42 -0
  1167. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/array_min_size.rb +57 -0
  1168. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/array_syntax.rb +17 -0
  1169. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/auto_corrector.rb +12 -0
  1170. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/check_assignment.rb +44 -0
  1171. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/check_line_breakable.rb +198 -0
  1172. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/code_length.rb +59 -0
  1173. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/comments_help.rb +42 -0
  1174. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/configurable_enforced_style.rb +100 -0
  1175. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/configurable_formatting.rb +40 -0
  1176. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/configurable_max.rb +24 -0
  1177. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/configurable_naming.rb +16 -0
  1178. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/configurable_numbering.rb +18 -0
  1179. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/def_node.rb +31 -0
  1180. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/documentation_comment.rb +49 -0
  1181. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/duplication.rb +46 -0
  1182. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/empty_lines_around_body.rb +172 -0
  1183. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/empty_parameter.rb +25 -0
  1184. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/end_keyword_alignment.rb +81 -0
  1185. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/enforce_superclass.rb +38 -0
  1186. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/first_element_line_break.rb +46 -0
  1187. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/frozen_string_literal.rb +56 -0
  1188. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/gem_declaration.rb +13 -0
  1189. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/hash_alignment_styles.rb +144 -0
  1190. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/hash_transform_method.rb +183 -0
  1191. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/heredoc.rb +32 -0
  1192. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/ignored_methods.rb +52 -0
  1193. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/ignored_pattern.rb +29 -0
  1194. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/integer_node.rb +14 -0
  1195. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/interpolation.rb +25 -0
  1196. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/line_length_help.rb +90 -0
  1197. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/match_range.rb +23 -0
  1198. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/method_complexity.rb +77 -0
  1199. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/method_preference.rb +30 -0
  1200. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/min_body_length.rb +21 -0
  1201. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/multiline_element_indentation.rb +87 -0
  1202. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +33 -0
  1203. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +226 -0
  1204. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +141 -0
  1205. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/negative_conditional.rb +34 -0
  1206. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/nil_methods.rb +23 -0
  1207. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/on_normal_if_unless.rb +14 -0
  1208. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/ordered_gem_node.rb +58 -0
  1209. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/parentheses.rb +16 -0
  1210. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/percent_array.rb +57 -0
  1211. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/percent_literal.rb +32 -0
  1212. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/preceding_following_alignment.rb +175 -0
  1213. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/preferred_delimiters.rb +50 -0
  1214. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/range_help.rb +128 -0
  1215. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/rational_literal.rb +19 -0
  1216. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/rescue_node.rb +28 -0
  1217. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/safe_assignment.rb +27 -0
  1218. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/space_after_punctuation.rb +54 -0
  1219. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/space_before_punctuation.rb +49 -0
  1220. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/statement_modifier.rb +94 -0
  1221. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/string_help.rb +38 -0
  1222. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/string_literals_help.rb +23 -0
  1223. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/surrounding_space.rb +130 -0
  1224. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/target_ruby_version.rb +20 -0
  1225. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/trailing_body.rb +25 -0
  1226. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/trailing_comma.rb +209 -0
  1227. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/uncommunicative_name.rb +104 -0
  1228. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/unused_argument.rb +29 -0
  1229. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/mixin/visibility_help.rb +37 -0
  1230. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/naming/accessor_method_name.rb +71 -0
  1231. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/naming/ascii_identifiers.rb +93 -0
  1232. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +53 -0
  1233. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/naming/block_parameter_name.rb +49 -0
  1234. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/naming/class_and_module_camel_case.rb +43 -0
  1235. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/naming/constant_name.rb +84 -0
  1236. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/naming/file_name.rb +214 -0
  1237. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +68 -0
  1238. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +55 -0
  1239. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +279 -0
  1240. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/naming/method_name.rb +81 -0
  1241. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/naming/method_parameter_name.rb +58 -0
  1242. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/naming/predicate_name.rb +105 -0
  1243. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +156 -0
  1244. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/naming/variable_name.rb +54 -0
  1245. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/naming/variable_number.rb +146 -0
  1246. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/offense.rb +239 -0
  1247. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/registry.rb +287 -0
  1248. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/security/eval.rb +33 -0
  1249. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/security/json_load.rb +46 -0
  1250. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/security/marshal_load.rb +39 -0
  1251. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/security/open.rb +75 -0
  1252. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/security/yaml_load.rb +39 -0
  1253. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/severity.rb +67 -0
  1254. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/access_modifier_declarations.rb +136 -0
  1255. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/accessor_grouping.rb +150 -0
  1256. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/alias.rb +148 -0
  1257. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/and_or.rb +153 -0
  1258. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/arguments_forwarding.rb +143 -0
  1259. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/array_coercion.rb +69 -0
  1260. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/array_join.rb +39 -0
  1261. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/ascii_comments.rb +60 -0
  1262. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/attr.rb +70 -0
  1263. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/auto_resource_cleanup.rb +48 -0
  1264. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/bare_percent_literals.rb +76 -0
  1265. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/begin_block.rb +22 -0
  1266. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/bisected_attr_accessor.rb +125 -0
  1267. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +60 -0
  1268. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/block_comments.rb +66 -0
  1269. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/block_delimiters.rb +382 -0
  1270. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/case_equality.rb +81 -0
  1271. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/case_like_if.rb +258 -0
  1272. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/character_literal.rb +50 -0
  1273. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/class_and_module_children.rb +158 -0
  1274. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/class_check.rb +54 -0
  1275. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/class_equality_comparison.rb +67 -0
  1276. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/class_methods.rb +54 -0
  1277. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/class_methods_definitions.rb +157 -0
  1278. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/class_vars.rb +64 -0
  1279. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/collection_compact.rb +91 -0
  1280. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/collection_methods.rb +86 -0
  1281. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/colon_method_call.rb +46 -0
  1282. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/colon_method_definition.rb +37 -0
  1283. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/combinable_loops.rb +92 -0
  1284. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/command_literal.rb +181 -0
  1285. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/comment_annotation.rb +100 -0
  1286. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/commented_keyword.rb +86 -0
  1287. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/conditional_assignment.rb +652 -0
  1288. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/constant_visibility.rb +106 -0
  1289. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/copyright.rb +96 -0
  1290. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/date_time.rb +88 -0
  1291. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/def_with_parentheses.rb +54 -0
  1292. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/dir.rb +47 -0
  1293. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +87 -0
  1294. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/document_dynamic_eval_definition.rb +169 -0
  1295. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/documentation.rb +171 -0
  1296. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/documentation_method.rb +126 -0
  1297. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/double_cop_disable_directive.rb +52 -0
  1298. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/double_negation.rb +79 -0
  1299. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/each_for_simple_loop.rb +55 -0
  1300. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/each_with_object.rb +108 -0
  1301. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/empty_block_parameter.rb +47 -0
  1302. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/empty_case_condition.rb +103 -0
  1303. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/empty_else.rb +167 -0
  1304. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/empty_lambda_parameter.rb +44 -0
  1305. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/empty_literal.rb +131 -0
  1306. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/empty_method.rb +104 -0
  1307. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/encoding.rb +52 -0
  1308. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/end_block.rb +28 -0
  1309. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/endless_method.rb +101 -0
  1310. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/eval_with_location.rb +237 -0
  1311. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/even_odd.rb +56 -0
  1312. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/expand_path_arguments.rb +196 -0
  1313. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/explicit_block_argument.rb +114 -0
  1314. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/exponential_notation.rb +116 -0
  1315. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/float_division.rb +143 -0
  1316. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/for.rb +82 -0
  1317. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/format_string.rb +133 -0
  1318. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/format_string_token.rb +177 -0
  1319. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/frozen_string_literal_comment.rb +204 -0
  1320. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/global_std_stream.rb +66 -0
  1321. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/global_vars.rb +80 -0
  1322. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/guard_clause.rb +141 -0
  1323. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/hash_as_last_array_item.rb +88 -0
  1324. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/hash_conversion.rb +133 -0
  1325. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/hash_each_methods.rb +86 -0
  1326. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/hash_except.rb +96 -0
  1327. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/hash_like_case.rb +77 -0
  1328. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/hash_syntax.rb +219 -0
  1329. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/hash_transform_keys.rb +95 -0
  1330. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/hash_transform_values.rb +92 -0
  1331. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/identical_conditional_branches.rb +133 -0
  1332. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/if_inside_else.rb +135 -0
  1333. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/if_unless_modifier.rb +198 -0
  1334. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +47 -0
  1335. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +122 -0
  1336. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/if_with_semicolon.rb +78 -0
  1337. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/implicit_runtime_error.rb +34 -0
  1338. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/infinite_loop.rb +129 -0
  1339. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/inline_comment.rb +34 -0
  1340. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/inverse_methods.rb +185 -0
  1341. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/ip_addresses.rb +75 -0
  1342. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/keyword_parameters_order.rb +75 -0
  1343. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/lambda.rb +125 -0
  1344. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/lambda_call.rb +76 -0
  1345. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/line_end_concatenation.rb +121 -0
  1346. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +239 -0
  1347. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +189 -0
  1348. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +44 -0
  1349. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +84 -0
  1350. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/method_called_on_do_end_block.rb +53 -0
  1351. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/method_def_parentheses.rb +160 -0
  1352. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/min_max.rb +64 -0
  1353. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/missing_else.rb +168 -0
  1354. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/missing_respond_to_missing.rb +52 -0
  1355. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/mixin_grouping.rb +135 -0
  1356. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/mixin_usage.rb +72 -0
  1357. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/module_function.rb +149 -0
  1358. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/multiline_block_chain.rb +48 -0
  1359. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/multiline_if_modifier.rb +60 -0
  1360. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/multiline_if_then.rb +44 -0
  1361. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/multiline_memoization.rb +96 -0
  1362. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/multiline_method_signature.rb +91 -0
  1363. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/multiline_ternary_operator.rb +59 -0
  1364. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/multiline_when_then.rb +75 -0
  1365. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/multiple_comparison.rb +157 -0
  1366. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/mutable_constant.rb +182 -0
  1367. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/negated_if.rb +98 -0
  1368. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/negated_if_else_condition.rb +128 -0
  1369. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/negated_unless.rb +88 -0
  1370. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/negated_while.rb +40 -0
  1371. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/nested_modifier.rb +100 -0
  1372. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/nested_parenthesized_calls.rb +70 -0
  1373. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/nested_ternary_operator.rb +58 -0
  1374. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/next.rb +235 -0
  1375. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/nil_comparison.rb +83 -0
  1376. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/nil_lambda.rb +53 -0
  1377. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/non_nil_check.rb +158 -0
  1378. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/not.rb +76 -0
  1379. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/numeric_literal_prefix.rb +119 -0
  1380. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/numeric_literals.rb +106 -0
  1381. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/numeric_predicate.rb +130 -0
  1382. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/one_line_conditional.rb +147 -0
  1383. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/option_hash.rb +54 -0
  1384. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/optional_arguments.rb +55 -0
  1385. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/optional_boolean_parameter.rb +53 -0
  1386. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/or_assignment.rb +97 -0
  1387. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/parallel_assignment.rb +290 -0
  1388. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/parentheses_around_condition.rb +118 -0
  1389. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/percent_literal_delimiters.rb +119 -0
  1390. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/percent_q_literals.rb +70 -0
  1391. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/perl_backrefs.rb +106 -0
  1392. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/preferred_hash_methods.rb +69 -0
  1393. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/proc.rb +34 -0
  1394. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/raise_args.rb +147 -0
  1395. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/random_with_offset.rb +153 -0
  1396. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_argument.rb +85 -0
  1397. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_assignment.rb +106 -0
  1398. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_begin.rb +157 -0
  1399. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_capital_w.rb +47 -0
  1400. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_condition.rb +137 -0
  1401. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_conditional.rb +96 -0
  1402. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_exception.rb +65 -0
  1403. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_fetch_block.rb +115 -0
  1404. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +52 -0
  1405. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_freeze.rb +69 -0
  1406. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_interpolation.rb +103 -0
  1407. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_parentheses.rb +244 -0
  1408. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_percent_q.rb +109 -0
  1409. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_regexp_character_class.rb +104 -0
  1410. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_regexp_escape.rb +118 -0
  1411. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_return.rb +171 -0
  1412. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_self.rb +169 -0
  1413. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_self_assignment.rb +118 -0
  1414. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_sort.rb +160 -0
  1415. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/redundant_sort_by.rb +47 -0
  1416. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/regexp_literal.rb +213 -0
  1417. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/rescue_modifier.rb +100 -0
  1418. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/rescue_standard_error.rb +126 -0
  1419. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/return_nil.rb +94 -0
  1420. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/safe_navigation.rb +280 -0
  1421. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/sample.rb +143 -0
  1422. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/self_assignment.rb +101 -0
  1423. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/semicolon.rb +101 -0
  1424. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/send.rb +29 -0
  1425. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/signal_exception.rb +216 -0
  1426. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/single_argument_dig.rb +55 -0
  1427. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/single_line_block_params.rb +117 -0
  1428. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/single_line_methods.rb +135 -0
  1429. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/slicing_with_range.rb +38 -0
  1430. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/sole_nested_conditional.rb +176 -0
  1431. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/special_global_vars.rb +178 -0
  1432. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +79 -0
  1433. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/static_class.rb +97 -0
  1434. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/stderr_puts.rb +57 -0
  1435. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/string_chars.rb +39 -0
  1436. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/string_concatenation.rb +142 -0
  1437. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/string_hash_keys.rb +51 -0
  1438. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/string_literals.rb +132 -0
  1439. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/string_literals_in_interpolation.rb +50 -0
  1440. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/string_methods.rb +36 -0
  1441. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/strip.rb +42 -0
  1442. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/struct_inheritance.rb +68 -0
  1443. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/swap_values.rb +108 -0
  1444. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/symbol_array.rb +108 -0
  1445. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/symbol_literal.rb +28 -0
  1446. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/symbol_proc.rb +128 -0
  1447. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/ternary_parentheses.rb +218 -0
  1448. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/trailing_body_on_class.rb +40 -0
  1449. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +55 -0
  1450. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/trailing_body_on_module.rb +40 -0
  1451. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +106 -0
  1452. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +96 -0
  1453. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +86 -0
  1454. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +97 -0
  1455. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/trailing_method_end_statement.rb +65 -0
  1456. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/trailing_underscore_variable.rb +152 -0
  1457. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/trivial_accessors.rb +187 -0
  1458. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/unless_else.rb +51 -0
  1459. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/unless_logical_operators.rb +105 -0
  1460. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/unpack_first.rb +59 -0
  1461. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/variable_interpolation.rb +45 -0
  1462. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/when_then.rb +33 -0
  1463. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/while_until_do.rb +49 -0
  1464. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/while_until_modifier.rb +53 -0
  1465. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/word_array.rb +83 -0
  1466. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/yoda_condition.rb +155 -0
  1467. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/style/zero_length_predicate.rb +119 -0
  1468. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/team.rb +259 -0
  1469. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/util.rb +143 -0
  1470. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/utils/format_string.rb +133 -0
  1471. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/variable_force.rb +454 -0
  1472. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/variable_force/assignment.rb +96 -0
  1473. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/variable_force/branch.rb +331 -0
  1474. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/variable_force/branchable.rb +23 -0
  1475. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/variable_force/reference.rb +47 -0
  1476. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/variable_force/scope.rb +106 -0
  1477. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/variable_force/variable.rb +114 -0
  1478. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cop/variable_force/variable_table.rb +129 -0
  1479. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/cops_documentation_generator.rb +270 -0
  1480. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/core_ext/string.rb +23 -0
  1481. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/directive_comment.rb +92 -0
  1482. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/error.rb +35 -0
  1483. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/ext/processed_source.rb +18 -0
  1484. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/ext/regexp_node.rb +87 -0
  1485. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/ext/regexp_parser.rb +92 -0
  1486. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/file_finder.rb +41 -0
  1487. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/auto_gen_config_formatter.rb +17 -0
  1488. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/base_formatter.rb +119 -0
  1489. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/clang_style_formatter.rb +59 -0
  1490. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/colorizable.rb +41 -0
  1491. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/disabled_config_formatter.rb +233 -0
  1492. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/emacs_style_formatter.rb +39 -0
  1493. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/file_list_formatter.rb +20 -0
  1494. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/formatter_set.rb +106 -0
  1495. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/fuubar_style_formatter.rb +80 -0
  1496. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/git_hub_actions_formatter.rb +44 -0
  1497. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/html_formatter.rb +137 -0
  1498. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/json_formatter.rb +77 -0
  1499. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/junit_formatter.rb +78 -0
  1500. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/offense_count_formatter.rb +74 -0
  1501. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/pacman_formatter.rb +80 -0
  1502. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/progress_formatter.rb +62 -0
  1503. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/quiet_formatter.rb +13 -0
  1504. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/simple_text_formatter.rb +171 -0
  1505. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/tap_formatter.rb +86 -0
  1506. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/text_util.rb +20 -0
  1507. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/formatter/worst_offenders_formatter.rb +62 -0
  1508. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/lockfile.rb +40 -0
  1509. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/magic_comment.rb +243 -0
  1510. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/name_similarity.rb +29 -0
  1511. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/options.rb +507 -0
  1512. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/path_util.rb +83 -0
  1513. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/platform.rb +11 -0
  1514. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/rake_task.rb +81 -0
  1515. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/remote_config.rb +102 -0
  1516. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/result_cache.rb +226 -0
  1517. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/rspec/cop_helper.rb +70 -0
  1518. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/rspec/expect_offense.rb +329 -0
  1519. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/rspec/host_environment_simulation_helper.rb +28 -0
  1520. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/rspec/shared_contexts.rb +137 -0
  1521. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/rspec/support.rb +13 -0
  1522. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/runner.rb +416 -0
  1523. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/string_interpreter.rb +60 -0
  1524. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/target_finder.rb +206 -0
  1525. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/target_ruby.rb +264 -0
  1526. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/util.rb +16 -0
  1527. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/version.rb +85 -0
  1528. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/warning.rb +11 -0
  1529. data/.bundle/ruby/3.0.0/gems/rubocop-1.14.0/lib/rubocop/yaml_duplication_checker.rb +40 -0
  1530. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/LICENSE.txt +20 -0
  1531. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/README.md +56 -0
  1532. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop-ast.rb +3 -0
  1533. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast.rb +89 -0
  1534. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/builder.rb +105 -0
  1535. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/ext/range.rb +28 -0
  1536. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/ext/range_min_max.rb +18 -0
  1537. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node.rb +656 -0
  1538. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/alias_node.rb +24 -0
  1539. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/and_node.rb +29 -0
  1540. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/arg_node.rb +34 -0
  1541. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/args_node.rb +39 -0
  1542. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/array_node.rb +65 -0
  1543. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/block_node.rb +149 -0
  1544. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/break_node.rb +12 -0
  1545. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/case_match_node.rb +50 -0
  1546. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/case_node.rb +60 -0
  1547. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/class_node.rb +31 -0
  1548. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/const_node.rb +65 -0
  1549. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/def_node.rb +68 -0
  1550. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/defined_node.rb +19 -0
  1551. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/dstr_node.rb +16 -0
  1552. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/ensure_node.rb +17 -0
  1553. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/float_node.rb +13 -0
  1554. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/for_node.rb +53 -0
  1555. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/forward_args_node.rb +33 -0
  1556. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/hash_node.rb +122 -0
  1557. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/if_node.rb +171 -0
  1558. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/index_node.rb +48 -0
  1559. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/indexasgn_node.rb +50 -0
  1560. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/int_node.rb +13 -0
  1561. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/keyword_splat_node.rb +46 -0
  1562. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/lambda_node.rb +65 -0
  1563. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/mixin/basic_literal_node.rb +16 -0
  1564. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/mixin/binary_operator_node.rb +43 -0
  1565. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/mixin/collection_node.rb +16 -0
  1566. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/mixin/conditional_node.rb +45 -0
  1567. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/mixin/descendence.rb +112 -0
  1568. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/mixin/hash_element_node.rb +125 -0
  1569. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +259 -0
  1570. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +219 -0
  1571. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/mixin/modifier_node.rb +17 -0
  1572. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/mixin/numeric_node.rb +22 -0
  1573. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/mixin/parameterized_node.rb +117 -0
  1574. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/mixin/predicate_operator_node.rb +39 -0
  1575. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/module_node.rb +24 -0
  1576. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/next_node.rb +12 -0
  1577. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/or_node.rb +29 -0
  1578. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/pair_node.rb +67 -0
  1579. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/procarg0_node.rb +17 -0
  1580. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/range_node.rb +18 -0
  1581. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/regexp_node.rb +97 -0
  1582. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/resbody_node.rb +45 -0
  1583. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/rescue_node.rb +49 -0
  1584. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/return_node.rb +12 -0
  1585. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/self_class_node.rb +24 -0
  1586. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/send_node.rb +25 -0
  1587. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/str_node.rb +16 -0
  1588. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/super_node.rb +23 -0
  1589. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/symbol_node.rb +12 -0
  1590. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/until_node.rb +35 -0
  1591. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/when_node.rb +47 -0
  1592. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/while_node.rb +35 -0
  1593. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node/yield_node.rb +23 -0
  1594. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern.rb +126 -0
  1595. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/builder.rb +72 -0
  1596. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/comment.rb +45 -0
  1597. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/compiler.rb +104 -0
  1598. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/compiler/atom_subcompiler.rb +56 -0
  1599. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/compiler/binding.rb +78 -0
  1600. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/compiler/debug.rb +168 -0
  1601. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/compiler/node_pattern_subcompiler.rb +146 -0
  1602. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/compiler/sequence_subcompiler.rb +420 -0
  1603. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/compiler/subcompiler.rb +57 -0
  1604. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/lexer.rb +70 -0
  1605. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/lexer.rex +42 -0
  1606. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/lexer.rex.rb +185 -0
  1607. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/method_definer.rb +145 -0
  1608. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/node.rb +260 -0
  1609. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/parser.racc.rb +470 -0
  1610. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/parser.rb +66 -0
  1611. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/parser.y +103 -0
  1612. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/sets.rb +37 -0
  1613. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/node_pattern/with_meta.rb +111 -0
  1614. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/processed_source.rb +293 -0
  1615. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/rubocop_compatibility.rb +31 -0
  1616. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/sexp.rb +16 -0
  1617. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/token.rb +116 -0
  1618. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/traversal.rb +182 -0
  1619. data/.bundle/ruby/3.0.0/gems/rubocop-ast-1.5.0/lib/rubocop/ast/version.rb +9 -0
  1620. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/LICENSE.txt +19 -0
  1621. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/README.md +131 -0
  1622. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/Rakefile +2 -0
  1623. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar.rb +22 -0
  1624. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/base.rb +183 -0
  1625. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/calculators/length.rb +100 -0
  1626. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/calculators/running_average.rb +9 -0
  1627. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/components.rb +5 -0
  1628. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/components/bar.rb +102 -0
  1629. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/components/percentage.rb +29 -0
  1630. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/components/rate.rb +43 -0
  1631. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/components/time.rb +101 -0
  1632. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/components/title.rb +13 -0
  1633. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/errors/invalid_progress_error.rb +4 -0
  1634. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/format.rb +3 -0
  1635. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/format/formatter.rb +27 -0
  1636. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/format/molecule.rb +60 -0
  1637. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/format/string.rb +36 -0
  1638. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/output.rb +68 -0
  1639. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/outputs/non_tty.rb +47 -0
  1640. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/outputs/null.rb +33 -0
  1641. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/outputs/tty.rb +32 -0
  1642. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/progress.rb +118 -0
  1643. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/refinements.rb +1 -0
  1644. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/refinements/enumerator.rb +23 -0
  1645. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/throttle.rb +25 -0
  1646. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/time.rb +32 -0
  1647. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/timer.rb +72 -0
  1648. data/.bundle/ruby/3.0.0/gems/ruby-progressbar-1.11.0/lib/ruby-progressbar/version.rb +3 -0
  1649. data/.bundle/ruby/3.0.0/gems/ruby2_keywords-0.0.4/LICENSE +22 -0
  1650. data/.bundle/ruby/3.0.0/gems/ruby2_keywords-0.0.4/README.md +67 -0
  1651. data/.bundle/ruby/3.0.0/gems/ruby2_keywords-0.0.4/lib/ruby2_keywords.rb +57 -0
  1652. data/.bundle/ruby/3.0.0/gems/unicode-display_width-2.0.0/CHANGELOG.md +158 -0
  1653. data/.bundle/ruby/3.0.0/gems/unicode-display_width-2.0.0/MIT-LICENSE.txt +22 -0
  1654. data/.bundle/ruby/3.0.0/gems/unicode-display_width-2.0.0/README.md +159 -0
  1655. data/.bundle/ruby/3.0.0/gems/unicode-display_width-2.0.0/data/display_width.marshal.gz +0 -0
  1656. data/.bundle/ruby/3.0.0/gems/unicode-display_width-2.0.0/lib/unicode/display_width.rb +65 -0
  1657. data/.bundle/ruby/3.0.0/gems/unicode-display_width-2.0.0/lib/unicode/display_width/constants.rb +10 -0
  1658. data/.bundle/ruby/3.0.0/gems/unicode-display_width-2.0.0/lib/unicode/display_width/index.rb +14 -0
  1659. data/.bundle/ruby/3.0.0/gems/unicode-display_width-2.0.0/lib/unicode/display_width/no_string_ext.rb +8 -0
  1660. data/.bundle/ruby/3.0.0/gems/unicode-display_width-2.0.0/lib/unicode/display_width/string_ext.rb +9 -0
  1661. data/.bundle/ruby/3.0.0/specifications/ast-2.4.2.gemspec +42 -0
  1662. data/.bundle/ruby/3.0.0/specifications/diff-lcs-1.4.4.gemspec +50 -0
  1663. data/.bundle/ruby/3.0.0/specifications/faraday-1.4.1.gemspec +0 -0
  1664. data/.bundle/ruby/3.0.0/specifications/faraday-excon-1.1.0.gemspec +52 -0
  1665. data/.bundle/ruby/3.0.0/specifications/faraday-net_http-1.0.1.gemspec +50 -0
  1666. data/.bundle/ruby/3.0.0/specifications/faraday-net_http_persistent-1.1.0.gemspec +48 -0
  1667. data/.bundle/ruby/3.0.0/specifications/multipart-post-2.1.1.gemspec +34 -0
  1668. data/.bundle/ruby/3.0.0/specifications/parallel-1.20.1.gemspec +21 -0
  1669. data/.bundle/ruby/3.0.0/specifications/parser-3.0.1.1.gemspec +52 -0
  1670. data/.bundle/ruby/3.0.0/specifications/rainbow-3.0.0.gemspec +31 -0
  1671. data/.bundle/ruby/3.0.0/specifications/rake-13.0.3.gemspec +26 -0
  1672. data/.bundle/ruby/3.0.0/specifications/regexp_parser-2.1.1.gemspec +23 -0
  1673. data/.bundle/ruby/3.0.0/specifications/rexml-3.2.5.gemspec +38 -0
  1674. data/.bundle/ruby/3.0.0/specifications/rspec-3.10.0.gemspec +39 -0
  1675. data/.bundle/ruby/3.0.0/specifications/rspec-core-3.10.1.gemspec +53 -0
  1676. data/.bundle/ruby/3.0.0/specifications/rspec-expectations-3.10.1.gemspec +44 -0
  1677. data/.bundle/ruby/3.0.0/specifications/rspec-mocks-3.10.2.gemspec +44 -0
  1678. data/.bundle/ruby/3.0.0/specifications/rspec-support-3.10.2.gemspec +36 -0
  1679. data/.bundle/ruby/3.0.0/specifications/rubocop-1.14.0.gemspec +52 -0
  1680. data/.bundle/ruby/3.0.0/specifications/rubocop-ast-1.5.0.gemspec +36 -0
  1681. data/.bundle/ruby/3.0.0/specifications/ruby-progressbar-1.11.0.gemspec +38 -0
  1682. data/.bundle/ruby/3.0.0/specifications/ruby2_keywords-0.0.4.gemspec +19 -0
  1683. data/.bundle/ruby/3.0.0/specifications/unicode-display_width-2.0.0.gemspec +36 -0
  1684. data/.rspec +3 -0
  1685. data/.rspec_status +3 -0
  1686. data/.rubocop.yml +13 -0
  1687. data/CHANGELOG.md +5 -0
  1688. data/CODE_OF_CONDUCT.md +84 -0
  1689. data/Gemfile +18 -0
  1690. data/Gemfile.lock +76 -0
  1691. data/LICENSE.txt +21 -0
  1692. data/README.md +35 -0
  1693. data/Rakefile +12 -0
  1694. data/bin/console +14 -0
  1695. data/bin/setup +6 -0
  1696. data/cocRb.gemspec +32 -0
  1697. data/lib/cocRb.rb +29 -0
  1698. data/lib/cocRb/api.rb +50 -0
  1699. data/lib/cocRb/clan.rb +212 -0
  1700. data/lib/cocRb/clanWar.rb +300 -0
  1701. data/lib/cocRb/gp.rb +72 -0
  1702. data/lib/cocRb/labels.rb +68 -0
  1703. data/lib/cocRb/league.rb +140 -0
  1704. data/lib/cocRb/loactions.rb +137 -0
  1705. data/lib/cocRb/player.rb +68 -0
  1706. data/lib/cocRb/utility.rb +43 -0
  1707. data/lib/cocRb/version.rb +5 -0
  1708. metadata +1819 -0
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: false
2
+ require_relative "elementdecl"
3
+ require_relative "entitydecl"
4
+ require_relative "../comment"
5
+ require_relative "notationdecl"
6
+ require_relative "attlistdecl"
7
+ require_relative "../parent"
8
+
9
+ module REXML
10
+ module DTD
11
+ class Parser
12
+ def Parser.parse( input )
13
+ case input
14
+ when String
15
+ parse_helper input
16
+ when File
17
+ parse_helper input.read
18
+ end
19
+ end
20
+
21
+ # Takes a String and parses it out
22
+ def Parser.parse_helper( input )
23
+ contents = Parent.new
24
+ while input.size > 0
25
+ case input
26
+ when ElementDecl.PATTERN_RE
27
+ match = $&
28
+ contents << ElementDecl.new( match )
29
+ when AttlistDecl.PATTERN_RE
30
+ matchdata = $~
31
+ contents << AttlistDecl.new( matchdata )
32
+ when EntityDecl.PATTERN_RE
33
+ matchdata = $~
34
+ contents << EntityDecl.new( matchdata )
35
+ when Comment.PATTERN_RE
36
+ matchdata = $~
37
+ contents << Comment.new( matchdata )
38
+ when NotationDecl.PATTERN_RE
39
+ matchdata = $~
40
+ contents << NotationDecl.new( matchdata )
41
+ end
42
+ end
43
+ contents
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: false
2
+ require_relative "../child"
3
+ module REXML
4
+ module DTD
5
+ class ElementDecl < Child
6
+ START = "<!ELEMENT"
7
+ START_RE = /^\s*#{START}/um
8
+ # PATTERN_RE = /^\s*(#{START}.*?)>/um
9
+ PATTERN_RE = /^\s*#{START}\s+((?:[:\w][-\.\w]*:)?[-!\*\.\w]*)(.*?)>/
10
+ #\s*((((["']).*?\5)|[^\/'">]*)*?)(\/)?>/um, true)
11
+
12
+ def initialize match
13
+ @name = match[1]
14
+ @rest = match[2]
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: false
2
+ require_relative "../child"
3
+ module REXML
4
+ module DTD
5
+ class EntityDecl < Child
6
+ START = "<!ENTITY"
7
+ START_RE = /^\s*#{START}/um
8
+ PUBLIC = /^\s*#{START}\s+(?:%\s+)?(\w+)\s+PUBLIC\s+((["']).*?\3)\s+((["']).*?\5)\s*>/um
9
+ SYSTEM = /^\s*#{START}\s+(?:%\s+)?(\w+)\s+SYSTEM\s+((["']).*?\3)(?:\s+NDATA\s+\w+)?\s*>/um
10
+ PLAIN = /^\s*#{START}\s+(\w+)\s+((["']).*?\3)\s*>/um
11
+ PERCENT = /^\s*#{START}\s+%\s+(\w+)\s+((["']).*?\3)\s*>/um
12
+ # <!ENTITY name SYSTEM "...">
13
+ # <!ENTITY name "...">
14
+ def initialize src
15
+ super()
16
+ md = nil
17
+ if src.match( PUBLIC )
18
+ md = src.match( PUBLIC, true )
19
+ @middle = "PUBLIC"
20
+ @content = "#{md[2]} #{md[4]}"
21
+ elsif src.match( SYSTEM )
22
+ md = src.match( SYSTEM, true )
23
+ @middle = "SYSTEM"
24
+ @content = md[2]
25
+ elsif src.match( PLAIN )
26
+ md = src.match( PLAIN, true )
27
+ @middle = ""
28
+ @content = md[2]
29
+ elsif src.match( PERCENT )
30
+ md = src.match( PERCENT, true )
31
+ @middle = ""
32
+ @content = md[2]
33
+ end
34
+ raise ParseException.new("failed Entity match", src) if md.nil?
35
+ @name = md[1]
36
+ end
37
+
38
+ def to_s
39
+ rv = "<!ENTITY #@name "
40
+ rv << "#@middle " if @middle.size > 0
41
+ rv << @content
42
+ rv
43
+ end
44
+
45
+ def write( output, indent )
46
+ indent( output, indent )
47
+ output << to_s
48
+ end
49
+
50
+ def EntityDecl.parse_source source, listener
51
+ md = source.match( PATTERN_RE, true )
52
+ thing = md[0].squeeze(" \t\n\r")
53
+ listener.send inspect.downcase, thing
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: false
2
+ require_relative "../child"
3
+ module REXML
4
+ module DTD
5
+ class NotationDecl < Child
6
+ START = "<!NOTATION"
7
+ START_RE = /^\s*#{START}/um
8
+ PUBLIC = /^\s*#{START}\s+(\w[\w-]*)\s+(PUBLIC)\s+((["']).*?\4)\s*>/um
9
+ SYSTEM = /^\s*#{START}\s+(\w[\w-]*)\s+(SYSTEM)\s+((["']).*?\4)\s*>/um
10
+ def initialize src
11
+ super()
12
+ if src.match( PUBLIC )
13
+ md = src.match( PUBLIC, true )
14
+ elsif src.match( SYSTEM )
15
+ md = src.match( SYSTEM, true )
16
+ else
17
+ raise ParseException.new( "error parsing notation: no matching pattern", src )
18
+ end
19
+ @name = md[1]
20
+ @middle = md[2]
21
+ @rest = md[3]
22
+ end
23
+
24
+ def to_s
25
+ "<!NOTATION #@name #@middle #@rest>"
26
+ end
27
+
28
+ def write( output, indent )
29
+ indent( output, indent )
30
+ output << to_s
31
+ end
32
+
33
+ def NotationDecl.parse_source source, listener
34
+ md = source.match( PATTERN_RE, true )
35
+ thing = md[0].squeeze(" \t\n\r")
36
+ listener.send inspect.downcase, thing
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,2599 @@
1
+ # frozen_string_literal: false
2
+ require_relative "parent"
3
+ require_relative "namespace"
4
+ require_relative "attribute"
5
+ require_relative "cdata"
6
+ require_relative "xpath"
7
+ require_relative "parseexception"
8
+
9
+ module REXML
10
+ # An implementation note about namespaces:
11
+ # As we parse, when we find namespaces we put them in a hash and assign
12
+ # them a unique ID. We then convert the namespace prefix for the node
13
+ # to the unique ID. This makes namespace lookup much faster for the
14
+ # cost of extra memory use. We save the namespace prefix for the
15
+ # context node and convert it back when we write it.
16
+ @@namespaces = {}
17
+
18
+ # An \REXML::Element object represents an XML element.
19
+ #
20
+ # An element:
21
+ #
22
+ # - Has a name (string).
23
+ # - May have a parent (another element).
24
+ # - Has zero or more children
25
+ # (other elements, text, CDATA, processing instructions, and comments).
26
+ # - Has zero or more siblings
27
+ # (other elements, text, CDATA, processing instructions, and comments).
28
+ # - Has zero or more named attributes.
29
+ #
30
+ # == In a Hurry?
31
+ #
32
+ # If you're somewhat familiar with XML
33
+ # and have a particular task in mind,
34
+ # you may want to see the
35
+ # {tasks pages}[../doc/rexml/tasks/tocs/master_toc_rdoc.html],
36
+ # and in particular, the
37
+ # {tasks page for elements}[../doc/rexml/tasks/tocs/element_toc_rdoc.html].
38
+ #
39
+ # === Name
40
+ #
41
+ # An element has a name, which is initially set when the element is created:
42
+ #
43
+ # e = REXML::Element.new('foo')
44
+ # e.name # => "foo"
45
+ #
46
+ # The name may be changed:
47
+ #
48
+ # e.name = 'bar'
49
+ # e.name # => "bar"
50
+ #
51
+ #
52
+ # === \Parent
53
+ #
54
+ # An element may have a parent.
55
+ #
56
+ # Its parent may be assigned explicitly when the element is created:
57
+ #
58
+ # e0 = REXML::Element.new('foo')
59
+ # e1 = REXML::Element.new('bar', e0)
60
+ # e1.parent # => <foo> ... </>
61
+ #
62
+ # Note: the representation of an element always shows the element's name.
63
+ # If the element has children, the representation indicates that
64
+ # by including an ellipsis (<tt>...</tt>).
65
+ #
66
+ # The parent may be assigned explicitly at any time:
67
+ #
68
+ # e2 = REXML::Element.new('baz')
69
+ # e1.parent = e2
70
+ # e1.parent # => <baz/>
71
+ #
72
+ # When an element is added as a child, its parent is set automatically:
73
+ #
74
+ # e1.add_element(e0)
75
+ # e0.parent # => <bar> ... </>
76
+ #
77
+ # For an element that has no parent, method +parent+ returns +nil+.
78
+ #
79
+ # === Children
80
+ #
81
+ # An element has zero or more children.
82
+ # The children are an ordered collection
83
+ # of all objects whose parent is the element itself.
84
+ #
85
+ # The children may include any combination of elements, text, comments,
86
+ # processing instructions, and CDATA.
87
+ # (This example keeps things clean by controlling whitespace
88
+ # via a +context+ setting.)
89
+ #
90
+ # xml_string = <<-EOT
91
+ # <root>
92
+ # <ele_0/>
93
+ # text 0
94
+ # <!--comment 0-->
95
+ # <?target_0 pi_0?>
96
+ # <![CDATA[cdata 0]]>
97
+ # <ele_1/>
98
+ # text 1
99
+ # <!--comment 1-->
100
+ # <?target_0 pi_1?>
101
+ # <![CDATA[cdata 1]]>
102
+ # </root>
103
+ # EOT
104
+ # context = {ignore_whitespace_nodes: :all, compress_whitespace: :all}
105
+ # d = REXML::Document.new(xml_string, context)
106
+ # root = d.root
107
+ # root.children.size # => 10
108
+ # root.each {|child| p "#{child.class}: #{child}" }
109
+ #
110
+ # Output:
111
+ #
112
+ # "REXML::Element: <ele_0/>"
113
+ # "REXML::Text: \n text 0\n "
114
+ # "REXML::Comment: comment 0"
115
+ # "REXML::Instruction: <?target_0 pi_0?>"
116
+ # "REXML::CData: cdata 0"
117
+ # "REXML::Element: <ele_1/>"
118
+ # "REXML::Text: \n text 1\n "
119
+ # "REXML::Comment: comment 1"
120
+ # "REXML::Instruction: <?target_0 pi_1?>"
121
+ # "REXML::CData: cdata 1"
122
+ #
123
+ # A child may be added using inherited methods
124
+ # Parent#insert_before or Parent#insert_after:
125
+ #
126
+ # xml_string = '<root><a/><c/><d/></root>'
127
+ # d = REXML::Document.new(xml_string)
128
+ # root = d.root
129
+ # c = d.root[1] # => <c/>
130
+ # root.insert_before(c, REXML::Element.new('b'))
131
+ # root.to_a # => [<a/>, <b/>, <c/>, <d/>]
132
+ #
133
+ # A child may be replaced using Parent#replace_child:
134
+ #
135
+ # root.replace_child(c, REXML::Element.new('x'))
136
+ # root.to_a # => [<a/>, <b/>, <x/>, <d/>]
137
+ #
138
+ # A child may be removed using Parent#delete:
139
+ #
140
+ # x = root[2] # => <x/>
141
+ # root.delete(x)
142
+ # root.to_a # => [<a/>, <b/>, <d/>]
143
+ #
144
+ # === Siblings
145
+ #
146
+ # An element has zero or more siblings,
147
+ # which are the other children of the element's parent.
148
+ #
149
+ # In the example above, element +ele_1+ is between a CDATA sibling
150
+ # and a text sibling:
151
+ #
152
+ # ele_1 = root[5] # => <ele_1/>
153
+ # ele_1.previous_sibling # => "cdata 0"
154
+ # ele_1.next_sibling # => "\n text 1\n "
155
+ #
156
+ # === \Attributes
157
+ #
158
+ # An element has zero or more named attributes.
159
+ #
160
+ # A new element has no attributes:
161
+ #
162
+ # e = REXML::Element.new('foo')
163
+ # e.attributes # => {}
164
+ #
165
+ # Attributes may be added:
166
+ #
167
+ # e.add_attribute('bar', 'baz')
168
+ # e.add_attribute('bat', 'bam')
169
+ # e.attributes.size # => 2
170
+ # e['bar'] # => "baz"
171
+ # e['bat'] # => "bam"
172
+ #
173
+ # An existing attribute may be modified:
174
+ #
175
+ # e.add_attribute('bar', 'bad')
176
+ # e.attributes.size # => 2
177
+ # e['bar'] # => "bad"
178
+ #
179
+ # An existing attribute may be deleted:
180
+ #
181
+ # e.delete_attribute('bar')
182
+ # e.attributes.size # => 1
183
+ # e['bar'] # => nil
184
+ #
185
+ # == What's Here
186
+ #
187
+ # To begin with, what's elsewhere?
188
+ #
189
+ # \Class \REXML::Element inherits from its ancestor classes:
190
+ #
191
+ # - REXML::Child
192
+ # - REXML::Parent
193
+ #
194
+ # \REXML::Element itself and its ancestors also include modules:
195
+ #
196
+ # - {Enumerable}[https://docs.ruby-lang.org/en/master/Enumerable.html]
197
+ # - REXML::Namespace
198
+ # - REXML::Node
199
+ # - REXML::XMLTokens
200
+ #
201
+ # === Methods for Creating an \Element
202
+ #
203
+ # ::new:: Returns a new empty element.
204
+ # #clone:: Returns a clone of another element.
205
+ #
206
+ # === Methods for Attributes
207
+ #
208
+ # {[attribute_name]}[#method-i-5B-5D]:: Returns an attribute value.
209
+ # #add_attribute:: Adds a new attribute.
210
+ # #add_attributes:: Adds multiple new attributes.
211
+ # #attribute:: Returns the attribute value for a given name and optional namespace.
212
+ # #delete_attribute:: Removes an attribute.
213
+ #
214
+ # === Methods for Children
215
+ #
216
+ # {[index]}[#method-i-5B-5D]:: Returns the child at the given offset.
217
+ # #add_element:: Adds an element as the last child.
218
+ # #delete_element:: Deletes a child element.
219
+ # #each_element:: Calls the given block with each child element.
220
+ # #each_element_with_attribute:: Calls the given block with each child element
221
+ # that meets given criteria,
222
+ # which can include the attribute name.
223
+ # #each_element_with_text:: Calls the given block with each child element
224
+ # that meets given criteria,
225
+ # which can include text.
226
+ # #get_elements:: Returns an array of element children that match a given xpath.
227
+ #
228
+ # === Methods for \Text Children
229
+ #
230
+ # #add_text:: Adds a text node to the element.
231
+ # #get_text:: Returns a text node that meets specified criteria.
232
+ # #text:: Returns the text string from the first node that meets specified criteria.
233
+ # #texts:: Returns an array of the text children of the element.
234
+ # #text=:: Adds, removes, or replaces the first text child of the element
235
+ #
236
+ # === Methods for Other Children
237
+ #
238
+ # #cdatas:: Returns an array of the cdata children of the element.
239
+ # #comments:: Returns an array of the comment children of the element.
240
+ # #instructions:: Returns an array of the instruction children of the element.
241
+ #
242
+ # === Methods for Namespaces
243
+ #
244
+ # #add_namespace:: Adds a namespace to the element.
245
+ # #delete_namespace:: Removes a namespace from the element.
246
+ # #namespace:: Returns the string namespace URI for the element.
247
+ # #namespaces:: Returns a hash of all defined namespaces in the element.
248
+ # #prefixes:: Returns an array of the string prefixes (names)
249
+ # of all defined namespaces in the element
250
+ #
251
+ # === Methods for Querying
252
+ #
253
+ # #document:: Returns the document, if any, that the element belongs to.
254
+ # #root:: Returns the most distant element (not document) ancestor of the element.
255
+ # #root_node:: Returns the most distant ancestor of the element.
256
+ # #xpath:: Returns the string xpath to the element
257
+ # relative to the most distant parent
258
+ # #has_attributes?:: Returns whether the element has attributes.
259
+ # #has_elements?:: Returns whether the element has elements.
260
+ # #has_text?:: Returns whether the element has text.
261
+ # #next_element:: Returns the next sibling that is an element.
262
+ # #previous_element:: Returns the previous sibling that is an element.
263
+ # #raw:: Returns whether raw mode is set for the element.
264
+ # #whitespace:: Returns whether whitespace is respected for the element.
265
+ # #ignore_whitespace_nodes:: Returns whether whitespace nodes
266
+ # are to be ignored for the element.
267
+ # #node_type:: Returns symbol <tt>:element</tt>.
268
+ #
269
+ # === One More Method
270
+ #
271
+ # #inspect:: Returns a string representation of the element.
272
+ #
273
+ # === Accessors
274
+ #
275
+ # #elements:: Returns the REXML::Elements object for the element.
276
+ # #attributes:: Returns the REXML::Attributes object for the element.
277
+ # #context:: Returns or sets the context hash for the element.
278
+ #
279
+ class Element < Parent
280
+ include Namespace
281
+
282
+ UNDEFINED = "UNDEFINED"; # The default name
283
+
284
+ # Mechanisms for accessing attributes and child elements of this
285
+ # element.
286
+ attr_reader :attributes, :elements
287
+ # The context holds information about the processing environment, such as
288
+ # whitespace handling.
289
+ attr_accessor :context
290
+
291
+ # :call-seq:
292
+ # Element.new(name = 'UNDEFINED', parent = nil, context = nil) -> new_element
293
+ # Element.new(element, parent = nil, context = nil) -> new_element
294
+ #
295
+ # Returns a new \REXML::Element object.
296
+ #
297
+ # When no arguments are given,
298
+ # returns an element with name <tt>'UNDEFINED'</tt>:
299
+ #
300
+ # e = REXML::Element.new # => <UNDEFINED/>
301
+ # e.class # => REXML::Element
302
+ # e.name # => "UNDEFINED"
303
+ #
304
+ # When only argument +name+ is given,
305
+ # returns an element of the given name:
306
+ #
307
+ # REXML::Element.new('foo') # => <foo/>
308
+ #
309
+ # When only argument +element+ is given, it must be an \REXML::Element object;
310
+ # returns a shallow copy of the given element:
311
+ #
312
+ # e0 = REXML::Element.new('foo')
313
+ # e1 = REXML::Element.new(e0) # => <foo/>
314
+ #
315
+ # When argument +parent+ is also given, it must be an REXML::Parent object:
316
+ #
317
+ # e = REXML::Element.new('foo', REXML::Parent.new)
318
+ # e.parent # => #<REXML::Parent @parent=nil, @children=[<foo/>]>
319
+ #
320
+ # When argument +context+ is also given, it must be a hash
321
+ # representing the context for the element;
322
+ # see {Element Context}[../doc/rexml/context_rdoc.html]:
323
+ #
324
+ # e = REXML::Element.new('foo', nil, {raw: :all})
325
+ # e.context # => {:raw=>:all}
326
+ #
327
+ def initialize( arg = UNDEFINED, parent=nil, context=nil )
328
+ super(parent)
329
+
330
+ @elements = Elements.new(self)
331
+ @attributes = Attributes.new(self)
332
+ @context = context
333
+
334
+ if arg.kind_of? String
335
+ self.name = arg
336
+ elsif arg.kind_of? Element
337
+ self.name = arg.expanded_name
338
+ arg.attributes.each_attribute{ |attribute|
339
+ @attributes << Attribute.new( attribute )
340
+ }
341
+ @context = arg.context
342
+ end
343
+ end
344
+
345
+ # :call-seq:
346
+ # inspect -> string
347
+ #
348
+ # Returns a string representation of the element.
349
+ #
350
+ # For an element with no attributes and no children, shows the element name:
351
+ #
352
+ # REXML::Element.new.inspect # => "<UNDEFINED/>"
353
+ #
354
+ # Shows attributes, if any:
355
+ #
356
+ # e = REXML::Element.new('foo')
357
+ # e.add_attributes({'bar' => 0, 'baz' => 1})
358
+ # e.inspect # => "<foo bar='0' baz='1'/>"
359
+ #
360
+ # Shows an ellipsis (<tt>...</tt>), if there are child elements:
361
+ #
362
+ # e.add_element(REXML::Element.new('bar'))
363
+ # e.add_element(REXML::Element.new('baz'))
364
+ # e.inspect # => "<foo bar='0' baz='1'> ... </>"
365
+ #
366
+ def inspect
367
+ rv = "<#@expanded_name"
368
+
369
+ @attributes.each_attribute do |attr|
370
+ rv << " "
371
+ attr.write( rv, 0 )
372
+ end
373
+
374
+ if children.size > 0
375
+ rv << "> ... </>"
376
+ else
377
+ rv << "/>"
378
+ end
379
+ end
380
+
381
+ # :call-seq:
382
+ # clone -> new_element
383
+ #
384
+ # Returns a shallow copy of the element, containing the name and attributes,
385
+ # but not the parent or children:
386
+ #
387
+ # e = REXML::Element.new('foo')
388
+ # e.add_attributes({'bar' => 0, 'baz' => 1})
389
+ # e.clone # => <foo bar='0' baz='1'/>
390
+ #
391
+ def clone
392
+ self.class.new self
393
+ end
394
+
395
+ # :call-seq:
396
+ # root_node -> document or element
397
+ #
398
+ # Returns the most distant ancestor of +self+.
399
+ #
400
+ # When the element is part of a document,
401
+ # returns the root node of the document.
402
+ # Note that the root node is different from the document element;
403
+ # in this example +a+ is document element and the root node is its parent:
404
+ #
405
+ # d = REXML::Document.new('<a><b><c/></b></a>')
406
+ # top_element = d.first # => <a> ... </>
407
+ # child = top_element.first # => <b> ... </>
408
+ # d.root_node == d # => true
409
+ # top_element.root_node == d # => true
410
+ # child.root_node == d # => true
411
+ #
412
+ # When the element is not part of a document, but does have ancestor elements,
413
+ # returns the most distant ancestor element:
414
+ #
415
+ # e0 = REXML::Element.new('foo')
416
+ # e1 = REXML::Element.new('bar')
417
+ # e1.parent = e0
418
+ # e2 = REXML::Element.new('baz')
419
+ # e2.parent = e1
420
+ # e2.root_node == e0 # => true
421
+ #
422
+ # When the element has no ancestor elements,
423
+ # returns +self+:
424
+ #
425
+ # e = REXML::Element.new('foo')
426
+ # e.root_node == e # => true
427
+ #
428
+ # Related: #root, #document.
429
+ #
430
+ def root_node
431
+ parent.nil? ? self : parent.root_node
432
+ end
433
+
434
+ # :call-seq:
435
+ # root -> element
436
+ #
437
+ # Returns the most distant _element_ (not document) ancestor of the element:
438
+ #
439
+ # d = REXML::Document.new('<a><b><c/></b></a>')
440
+ # top_element = d.first
441
+ # child = top_element.first
442
+ # top_element.root == top_element # => true
443
+ # child.root == top_element # => true
444
+ #
445
+ # For a document, returns the topmost element:
446
+ #
447
+ # d.root == top_element # => true
448
+ #
449
+ # Related: #root_node, #document.
450
+ #
451
+ def root
452
+ return elements[1] if self.kind_of? Document
453
+ return self if parent.kind_of? Document or parent.nil?
454
+ return parent.root
455
+ end
456
+
457
+ # :call-seq:
458
+ # document -> document or nil
459
+ #
460
+ # If the element is part of a document, returns that document:
461
+ #
462
+ # d = REXML::Document.new('<a><b><c/></b></a>')
463
+ # top_element = d.first
464
+ # child = top_element.first
465
+ # top_element.document == d # => true
466
+ # child.document == d # => true
467
+ #
468
+ # If the element is not part of a document, returns +nil+:
469
+ #
470
+ # REXML::Element.new.document # => nil
471
+ #
472
+ # For a document, returns +self+:
473
+ #
474
+ # d.document == d # => true
475
+ #
476
+ # Related: #root, #root_node.
477
+ #
478
+ def document
479
+ rt = root
480
+ rt.parent if rt
481
+ end
482
+
483
+ # :call-seq:
484
+ # whitespace
485
+ #
486
+ # Returns +true+ if whitespace is respected for this element,
487
+ # +false+ otherwise.
488
+ #
489
+ # See {Element Context}[../doc/rexml/context_rdoc.html].
490
+ #
491
+ # The evaluation is tested against the element's +expanded_name+,
492
+ # and so is namespace-sensitive.
493
+ def whitespace
494
+ @whitespace = nil
495
+ if @context
496
+ if @context[:respect_whitespace]
497
+ @whitespace = (@context[:respect_whitespace] == :all or
498
+ @context[:respect_whitespace].include? expanded_name)
499
+ end
500
+ @whitespace = false if (@context[:compress_whitespace] and
501
+ (@context[:compress_whitespace] == :all or
502
+ @context[:compress_whitespace].include? expanded_name)
503
+ )
504
+ end
505
+ @whitespace = true unless @whitespace == false
506
+ @whitespace
507
+ end
508
+
509
+ # :call-seq:
510
+ # ignore_whitespace_nodes
511
+ #
512
+ # Returns +true+ if whitespace nodes are ignored for the element.
513
+ #
514
+ # See {Element Context}[../doc/rexml/context_rdoc.html].
515
+ #
516
+ def ignore_whitespace_nodes
517
+ @ignore_whitespace_nodes = false
518
+ if @context
519
+ if @context[:ignore_whitespace_nodes]
520
+ @ignore_whitespace_nodes =
521
+ (@context[:ignore_whitespace_nodes] == :all or
522
+ @context[:ignore_whitespace_nodes].include? expanded_name)
523
+ end
524
+ end
525
+ end
526
+
527
+ # :call-seq:
528
+ # raw
529
+ #
530
+ # Returns +true+ if raw mode is set for the element.
531
+ #
532
+ # See {Element Context}[../doc/rexml/context_rdoc.html].
533
+ #
534
+ # The evaluation is tested against +expanded_name+, and so is namespace
535
+ # sensitive.
536
+ def raw
537
+ @raw = (@context and @context[:raw] and
538
+ (@context[:raw] == :all or
539
+ @context[:raw].include? expanded_name))
540
+ @raw
541
+ end
542
+
543
+ #once :whitespace, :raw, :ignore_whitespace_nodes
544
+
545
+ #################################################
546
+ # Namespaces #
547
+ #################################################
548
+
549
+ # :call-seq:
550
+ # prefixes -> array_of_namespace_prefixes
551
+ #
552
+ # Returns an array of the string prefixes (names) of all defined namespaces
553
+ # in the element and its ancestors:
554
+ #
555
+ # xml_string = <<-EOT
556
+ # <root>
557
+ # <a xmlns:x='1' xmlns:y='2'>
558
+ # <b/>
559
+ # <c xmlns:z='3'/>
560
+ # </a>
561
+ # </root>
562
+ # EOT
563
+ # d = REXML::Document.new(xml_string, {compress_whitespace: :all})
564
+ # d.elements['//a'].prefixes # => ["x", "y"]
565
+ # d.elements['//b'].prefixes # => ["x", "y"]
566
+ # d.elements['//c'].prefixes # => ["x", "y", "z"]
567
+ #
568
+ def prefixes
569
+ prefixes = []
570
+ prefixes = parent.prefixes if parent
571
+ prefixes |= attributes.prefixes
572
+ return prefixes
573
+ end
574
+
575
+ # :call-seq:
576
+ # namespaces -> array_of_namespace_names
577
+ #
578
+ # Returns a hash of all defined namespaces
579
+ # in the element and its ancestors:
580
+ #
581
+ # xml_string = <<-EOT
582
+ # <root>
583
+ # <a xmlns:x='1' xmlns:y='2'>
584
+ # <b/>
585
+ # <c xmlns:z='3'/>
586
+ # </a>
587
+ # </root>
588
+ # EOT
589
+ # d = REXML::Document.new(xml_string)
590
+ # d.elements['//a'].namespaces # => {"x"=>"1", "y"=>"2"}
591
+ # d.elements['//b'].namespaces # => {"x"=>"1", "y"=>"2"}
592
+ # d.elements['//c'].namespaces # => {"x"=>"1", "y"=>"2", "z"=>"3"}
593
+ #
594
+ def namespaces
595
+ namespaces = {}
596
+ namespaces = parent.namespaces if parent
597
+ namespaces = namespaces.merge( attributes.namespaces )
598
+ return namespaces
599
+ end
600
+
601
+ # :call-seq:
602
+ # namespace(prefix = nil) -> string_uri or nil
603
+ #
604
+ # Returns the string namespace URI for the element,
605
+ # possibly deriving from one of its ancestors.
606
+ #
607
+ # xml_string = <<-EOT
608
+ # <root>
609
+ # <a xmlns='1' xmlns:y='2'>
610
+ # <b/>
611
+ # <c xmlns:z='3'/>
612
+ # </a>
613
+ # </root>
614
+ # EOT
615
+ # d = REXML::Document.new(xml_string)
616
+ # b = d.elements['//b']
617
+ # b.namespace # => "1"
618
+ # b.namespace('y') # => "2"
619
+ # b.namespace('nosuch') # => nil
620
+ #
621
+ def namespace(prefix=nil)
622
+ if prefix.nil?
623
+ prefix = prefix()
624
+ end
625
+ if prefix == ''
626
+ prefix = "xmlns"
627
+ else
628
+ prefix = "xmlns:#{prefix}" unless prefix[0,5] == 'xmlns'
629
+ end
630
+ ns = attributes[ prefix ]
631
+ ns = parent.namespace(prefix) if ns.nil? and parent
632
+ ns = '' if ns.nil? and prefix == 'xmlns'
633
+ return ns
634
+ end
635
+
636
+ # :call-seq:
637
+ # add_namespace(prefix, uri = nil) -> self
638
+ #
639
+ # Adds a namespace to the element; returns +self+.
640
+ #
641
+ # With the single argument +prefix+,
642
+ # adds a namespace using the given +prefix+ and the namespace URI:
643
+ #
644
+ # e = REXML::Element.new('foo')
645
+ # e.add_namespace('bar')
646
+ # e.namespaces # => {"xmlns"=>"bar"}
647
+ #
648
+ # With both arguments +prefix+ and +uri+ given,
649
+ # adds a namespace using both arguments:
650
+ #
651
+ # e.add_namespace('baz', 'bat')
652
+ # e.namespaces # => {"xmlns"=>"bar", "baz"=>"bat"}
653
+ #
654
+ def add_namespace( prefix, uri=nil )
655
+ unless uri
656
+ @attributes["xmlns"] = prefix
657
+ else
658
+ prefix = "xmlns:#{prefix}" unless prefix =~ /^xmlns:/
659
+ @attributes[ prefix ] = uri
660
+ end
661
+ self
662
+ end
663
+
664
+ # :call-seq:
665
+ # delete_namespace(namespace = 'xmlns') -> self
666
+ #
667
+ # Removes a namespace from the element.
668
+ #
669
+ # With no argument, removes the default namespace:
670
+ #
671
+ # d = REXML::Document.new "<a xmlns:foo='bar' xmlns='twiddle'/>"
672
+ # d.to_s # => "<a xmlns:foo='bar' xmlns='twiddle'/>"
673
+ # d.root.delete_namespace # => <a xmlns:foo='bar'/>
674
+ # d.to_s # => "<a xmlns:foo='bar'/>"
675
+ #
676
+ # With argument +namespace+, removes the specified namespace:
677
+ #
678
+ # d.root.delete_namespace('foo')
679
+ # d.to_s # => "<a/>"
680
+ #
681
+ # Does nothing if no such namespace is found:
682
+ #
683
+ # d.root.delete_namespace('nosuch')
684
+ # d.to_s # => "<a/>"
685
+ #
686
+ def delete_namespace namespace="xmlns"
687
+ namespace = "xmlns:#{namespace}" unless namespace == 'xmlns'
688
+ attribute = attributes.get_attribute(namespace)
689
+ attribute.remove unless attribute.nil?
690
+ self
691
+ end
692
+
693
+ #################################################
694
+ # Elements #
695
+ #################################################
696
+
697
+ # :call-seq:
698
+ # add_element(name, attributes = nil) -> new_element
699
+ # add_element(element, attributes = nil) -> element
700
+ #
701
+ # Adds a child element, optionally setting attributes
702
+ # on the added element; returns the added element.
703
+ #
704
+ # With string argument +name+, creates a new element with that name
705
+ # and adds the new element as a child:
706
+ #
707
+ # e0 = REXML::Element.new('foo')
708
+ # e0.add_element('bar')
709
+ # e0[0] # => <bar/>
710
+ #
711
+ #
712
+ # With argument +name+ and hash argument +attributes+,
713
+ # sets attributes on the new element:
714
+ #
715
+ # e0.add_element('baz', {'bat' => '0', 'bam' => '1'})
716
+ # e0[1] # => <baz bat='0' bam='1'/>
717
+ #
718
+ # With element argument +element+, adds that element as a child:
719
+ #
720
+ # e0 = REXML::Element.new('foo')
721
+ # e1 = REXML::Element.new('bar')
722
+ # e0.add_element(e1)
723
+ # e0[0] # => <bar/>
724
+ #
725
+ # With argument +element+ and hash argument +attributes+,
726
+ # sets attributes on the added element:
727
+ #
728
+ # e0.add_element(e1, {'bat' => '0', 'bam' => '1'})
729
+ # e0[1] # => <bar bat='0' bam='1'/>
730
+ #
731
+ def add_element element, attrs=nil
732
+ raise "First argument must be either an element name, or an Element object" if element.nil?
733
+ el = @elements.add(element)
734
+ attrs.each do |key, value|
735
+ el.attributes[key]=value
736
+ end if attrs.kind_of? Hash
737
+ el
738
+ end
739
+
740
+ # :call-seq:
741
+ # delete_element(index) -> removed_element or nil
742
+ # delete_element(element) -> removed_element or nil
743
+ # delete_element(xpath) -> removed_element or nil
744
+ #
745
+ # Deletes a child element.
746
+ #
747
+ # When 1-based integer argument +index+ is given,
748
+ # removes and returns the child element at that offset if it exists;
749
+ # indexing does not include text nodes;
750
+ # returns +nil+ if the element does not exist:
751
+ #
752
+ # d = REXML::Document.new '<a><b/>text<c/></a>'
753
+ # a = d.root # => <a> ... </>
754
+ # a.delete_element(1) # => <b/>
755
+ # a.delete_element(1) # => <c/>
756
+ # a.delete_element(1) # => nil
757
+ #
758
+ # When element argument +element+ is given,
759
+ # removes and returns that child element if it exists,
760
+ # otherwise returns +nil+:
761
+ #
762
+ # d = REXML::Document.new '<a><b/>text<c/></a>'
763
+ # a = d.root # => <a> ... </>
764
+ # c = a[2] # => <c/>
765
+ # a.delete_element(c) # => <c/>
766
+ # a.delete_element(c) # => nil
767
+ #
768
+ # When xpath argument +xpath+ is given,
769
+ # removes and returns the element at xpath if it exists,
770
+ # otherwise returns +nil+:
771
+ #
772
+ # d = REXML::Document.new '<a><b/>text<c/></a>'
773
+ # a = d.root # => <a> ... </>
774
+ # a.delete_element('//c') # => <c/>
775
+ # a.delete_element('//c') # => nil
776
+ #
777
+ def delete_element element
778
+ @elements.delete element
779
+ end
780
+
781
+ # :call-seq:
782
+ # has_elements?
783
+ #
784
+ # Returns +true+ if the element has one or more element children,
785
+ # +false+ otherwise:
786
+ #
787
+ # d = REXML::Document.new '<a><b/>text<c/></a>'
788
+ # a = d.root # => <a> ... </>
789
+ # a.has_elements? # => true
790
+ # b = a[0] # => <b/>
791
+ # b.has_elements? # => false
792
+ #
793
+ def has_elements?
794
+ !@elements.empty?
795
+ end
796
+
797
+ # :call-seq:
798
+ # each_element_with_attribute(attr_name, value = nil, max = 0, xpath = nil) {|e| ... }
799
+ #
800
+ # Calls the given block with each child element that meets given criteria.
801
+ #
802
+ # When only string argument +attr_name+ is given,
803
+ # calls the block with each child element that has that attribute:
804
+ #
805
+ # d = REXML::Document.new '<a><b id="1"/><c id="2"/><d id="1"/><e/></a>'
806
+ # a = d.root
807
+ # a.each_element_with_attribute('id') {|e| p e }
808
+ #
809
+ # Output:
810
+ #
811
+ # <b id='1'/>
812
+ # <c id='2'/>
813
+ # <d id='1'/>
814
+ #
815
+ # With argument +attr_name+ and string argument +value+ given,
816
+ # calls the block with each child element that has that attribute
817
+ # with that value:
818
+ #
819
+ # a.each_element_with_attribute('id', '1') {|e| p e }
820
+ #
821
+ # Output:
822
+ #
823
+ # <b id='1'/>
824
+ # <d id='1'/>
825
+ #
826
+ # With arguments +attr_name+, +value+, and integer argument +max+ given,
827
+ # calls the block with at most +max+ child elements:
828
+ #
829
+ # a.each_element_with_attribute('id', '1', 1) {|e| p e }
830
+ #
831
+ # Output:
832
+ #
833
+ # <b id='1'/>
834
+ #
835
+ # With all arguments given, including +xpath+,
836
+ # calls the block with only those child elements
837
+ # that meet the first three criteria,
838
+ # and also match the given +xpath+:
839
+ #
840
+ # a.each_element_with_attribute('id', '1', 2, '//d') {|e| p e }
841
+ #
842
+ # Output:
843
+ #
844
+ # <d id='1'/>
845
+ #
846
+ def each_element_with_attribute( key, value=nil, max=0, name=nil, &block ) # :yields: Element
847
+ each_with_something( proc {|child|
848
+ if value.nil?
849
+ child.attributes[key] != nil
850
+ else
851
+ child.attributes[key]==value
852
+ end
853
+ }, max, name, &block )
854
+ end
855
+
856
+ # :call-seq:
857
+ # each_element_with_text(text = nil, max = 0, xpath = nil) {|e| ... }
858
+ #
859
+ # Calls the given block with each child element that meets given criteria.
860
+ #
861
+ # With no arguments, calls the block with each child element that has text:
862
+ #
863
+ # d = REXML::Document.new '<a><b>b</b><c>b</c><d>d</d><e/></a>'
864
+ # a = d.root
865
+ # a.each_element_with_text {|e| p e }
866
+ #
867
+ # Output:
868
+ #
869
+ # <b> ... </>
870
+ # <c> ... </>
871
+ # <d> ... </>
872
+ #
873
+ # With the single string argument +text+,
874
+ # calls the block with each element that has exactly that text:
875
+ #
876
+ # a.each_element_with_text('b') {|e| p e }
877
+ #
878
+ # Output:
879
+ #
880
+ # <b> ... </>
881
+ # <c> ... </>
882
+ #
883
+ # With argument +text+ and integer argument +max+,
884
+ # calls the block with at most +max+ elements:
885
+ #
886
+ # a.each_element_with_text('b', 1) {|e| p e }
887
+ #
888
+ # Output:
889
+ #
890
+ # <b> ... </>
891
+ #
892
+ # With all arguments given, including +xpath+,
893
+ # calls the block with only those child elements
894
+ # that meet the first two criteria,
895
+ # and also match the given +xpath+:
896
+ #
897
+ # a.each_element_with_text('b', 2, '//c') {|e| p e }
898
+ #
899
+ # Output:
900
+ #
901
+ # <c> ... </>
902
+ #
903
+ def each_element_with_text( text=nil, max=0, name=nil, &block ) # :yields: Element
904
+ each_with_something( proc {|child|
905
+ if text.nil?
906
+ child.has_text?
907
+ else
908
+ child.text == text
909
+ end
910
+ }, max, name, &block )
911
+ end
912
+
913
+ # :call-seq:
914
+ # each_element {|e| ... }
915
+ #
916
+ # Calls the given block with each child element:
917
+ #
918
+ # d = REXML::Document.new '<a><b>b</b><c>b</c><d>d</d><e/></a>'
919
+ # a = d.root
920
+ # a.each_element {|e| p e }
921
+ #
922
+ # Output:
923
+ #
924
+ # <b> ... </>
925
+ # <c> ... </>
926
+ # <d> ... </>
927
+ # <e/>
928
+ #
929
+ def each_element( xpath=nil, &block ) # :yields: Element
930
+ @elements.each( xpath, &block )
931
+ end
932
+
933
+ # :call-seq:
934
+ # get_elements(xpath)
935
+ #
936
+ # Returns an array of the elements that match the given +xpath+:
937
+ #
938
+ # xml_string = <<-EOT
939
+ # <root>
940
+ # <a level='1'>
941
+ # <a level='2'/>
942
+ # </a>
943
+ # </root>
944
+ # EOT
945
+ # d = REXML::Document.new(xml_string)
946
+ # d.root.get_elements('//a') # => [<a level='1'> ... </>, <a level='2'/>]
947
+ #
948
+ def get_elements( xpath )
949
+ @elements.to_a( xpath )
950
+ end
951
+
952
+ # :call-seq:
953
+ # next_element
954
+ #
955
+ # Returns the next sibling that is an element if it exists,
956
+ # +niL+ otherwise:
957
+ #
958
+ # d = REXML::Document.new '<a><b/>text<c/></a>'
959
+ # d.root.elements['b'].next_element #-> <c/>
960
+ # d.root.elements['c'].next_element #-> nil
961
+ #
962
+ def next_element
963
+ element = next_sibling
964
+ element = element.next_sibling until element.nil? or element.kind_of? Element
965
+ return element
966
+ end
967
+
968
+ # :call-seq:
969
+ # previous_element
970
+ #
971
+ # Returns the previous sibling that is an element if it exists,
972
+ # +niL+ otherwise:
973
+ #
974
+ # d = REXML::Document.new '<a><b/>text<c/></a>'
975
+ # d.root.elements['c'].previous_element #-> <b/>
976
+ # d.root.elements['b'].previous_element #-> nil
977
+ #
978
+ def previous_element
979
+ element = previous_sibling
980
+ element = element.previous_sibling until element.nil? or element.kind_of? Element
981
+ return element
982
+ end
983
+
984
+
985
+ #################################################
986
+ # Text #
987
+ #################################################
988
+
989
+ # :call-seq:
990
+ # has_text? -> true or false
991
+ #
992
+ # Returns +true if the element has one or more text noded,
993
+ # +false+ otherwise:
994
+ #
995
+ # d = REXML::Document.new '<a><b/>text<c/></a>'
996
+ # a = d.root
997
+ # a.has_text? # => true
998
+ # b = a[0]
999
+ # b.has_text? # => false
1000
+ #
1001
+ def has_text?
1002
+ not text().nil?
1003
+ end
1004
+
1005
+ # :call-seq:
1006
+ # text(xpath = nil) -> text_string or nil
1007
+ #
1008
+ # Returns the text string from the first text node child
1009
+ # in a specified element, if it exists, # +nil+ otherwise.
1010
+ #
1011
+ # With no argument, returns the text from the first text node in +self+:
1012
+ #
1013
+ # d = REXML::Document.new "<p>some text <b>this is bold!</b> more text</p>"
1014
+ # d.root.text.class # => String
1015
+ # d.root.text # => "some text "
1016
+ #
1017
+ # With argument +xpath+, returns text from the the first text node
1018
+ # in the element that matches +xpath+:
1019
+ #
1020
+ # d.root.text(1) # => "this is bold!"
1021
+ #
1022
+ # Note that an element may have multiple text nodes,
1023
+ # possibly separated by other non-text children, as above.
1024
+ # Even so, the returned value is the string text from the first such node.
1025
+ #
1026
+ # Note also that the text note is retrieved by method get_text,
1027
+ # and so is always normalized text.
1028
+ #
1029
+ def text( path = nil )
1030
+ rv = get_text(path)
1031
+ return rv.value unless rv.nil?
1032
+ nil
1033
+ end
1034
+
1035
+ # :call-seq:
1036
+ # get_text(xpath = nil) -> text_node or nil
1037
+ #
1038
+ # Returns the first text node child in a specified element, if it exists,
1039
+ # +nil+ otherwise.
1040
+ #
1041
+ # With no argument, returns the first text node from +self+:
1042
+ #
1043
+ # d = REXML::Document.new "<p>some text <b>this is bold!</b> more text</p>"
1044
+ # d.root.get_text.class # => REXML::Text
1045
+ # d.root.get_text # => "some text "
1046
+ #
1047
+ # With argument +xpath+, returns the first text node from the element
1048
+ # that matches +xpath+:
1049
+ #
1050
+ # d.root.get_text(1) # => "this is bold!"
1051
+ #
1052
+ def get_text path = nil
1053
+ rv = nil
1054
+ if path
1055
+ element = @elements[ path ]
1056
+ rv = element.get_text unless element.nil?
1057
+ else
1058
+ rv = @children.find { |node| node.kind_of? Text }
1059
+ end
1060
+ return rv
1061
+ end
1062
+
1063
+ # :call-seq:
1064
+ # text = string -> string
1065
+ # text = nil -> nil
1066
+ #
1067
+ # Adds, replaces, or removes the first text node child in the element.
1068
+ #
1069
+ # With string argument +string+,
1070
+ # creates a new \REXML::Text node containing that string,
1071
+ # honoring the current settings for whitespace and row,
1072
+ # then places the node as the first text child in the element;
1073
+ # returns +string+.
1074
+ #
1075
+ # If the element has no text child, the text node is added:
1076
+ #
1077
+ # d = REXML::Document.new '<a><b/></a>'
1078
+ # d.root.text = 'foo' #-> '<a><b/>foo</a>'
1079
+ #
1080
+ # If the element has a text child, it is replaced:
1081
+ #
1082
+ # d.root.text = 'bar' #-> '<a><b/>bar</a>'
1083
+ #
1084
+ # With argument +nil+, removes the first text child:
1085
+ #
1086
+ # d.root.text = nil #-> '<a><b/><c/></a>'
1087
+ #
1088
+ def text=( text )
1089
+ if text.kind_of? String
1090
+ text = Text.new( text, whitespace(), nil, raw() )
1091
+ elsif !text.nil? and !text.kind_of? Text
1092
+ text = Text.new( text.to_s, whitespace(), nil, raw() )
1093
+ end
1094
+ old_text = get_text
1095
+ if text.nil?
1096
+ old_text.remove unless old_text.nil?
1097
+ else
1098
+ if old_text.nil?
1099
+ self << text
1100
+ else
1101
+ old_text.replace_with( text )
1102
+ end
1103
+ end
1104
+ return self
1105
+ end
1106
+
1107
+ # :call-seq:
1108
+ # add_text(string) -> nil
1109
+ # add_text(text_node) -> self
1110
+ #
1111
+ # Adds text to the element.
1112
+ #
1113
+ # When string argument +string+ is given, returns +nil+.
1114
+ #
1115
+ # If the element has no child text node,
1116
+ # creates a \REXML::Text object using the string,
1117
+ # honoring the current settings for whitespace and raw,
1118
+ # then adds that node to the element:
1119
+ #
1120
+ # d = REXML::Document.new('<a><b/></a>')
1121
+ # a = d.root
1122
+ # a.add_text('foo')
1123
+ # a.to_a # => [<b/>, "foo"]
1124
+ #
1125
+ # If the element has child text nodes,
1126
+ # appends the string to the _last_ text node:
1127
+ #
1128
+ # d = REXML::Document.new('<a>foo<b/>bar</a>')
1129
+ # a = d.root
1130
+ # a.add_text('baz')
1131
+ # a.to_a # => ["foo", <b/>, "barbaz"]
1132
+ # a.add_text('baz')
1133
+ # a.to_a # => ["foo", <b/>, "barbazbaz"]
1134
+ #
1135
+ # When text node argument +text_node+ is given,
1136
+ # appends the node as the last text node in the element;
1137
+ # returns +self+:
1138
+ #
1139
+ # d = REXML::Document.new('<a>foo<b/>bar</a>')
1140
+ # a = d.root
1141
+ # a.add_text(REXML::Text.new('baz'))
1142
+ # a.to_a # => ["foo", <b/>, "bar", "baz"]
1143
+ # a.add_text(REXML::Text.new('baz'))
1144
+ # a.to_a # => ["foo", <b/>, "bar", "baz", "baz"]
1145
+ #
1146
+ def add_text( text )
1147
+ if text.kind_of? String
1148
+ if @children[-1].kind_of? Text
1149
+ @children[-1] << text
1150
+ return
1151
+ end
1152
+ text = Text.new( text, whitespace(), nil, raw() )
1153
+ end
1154
+ self << text unless text.nil?
1155
+ return self
1156
+ end
1157
+
1158
+ # :call-seq:
1159
+ # node_type -> :element
1160
+ #
1161
+ # Returns symbol <tt>:element</tt>:
1162
+ #
1163
+ # d = REXML::Document.new('<a/>')
1164
+ # a = d.root # => <a/>
1165
+ # a.node_type # => :element
1166
+ #
1167
+ def node_type
1168
+ :element
1169
+ end
1170
+
1171
+ # :call-seq:
1172
+ # xpath -> string_xpath
1173
+ #
1174
+ # Returns the string xpath to the element
1175
+ # relative to the most distant parent:
1176
+ #
1177
+ # d = REXML::Document.new('<a><b><c/></b></a>')
1178
+ # a = d.root # => <a> ... </>
1179
+ # b = a[0] # => <b> ... </>
1180
+ # c = b[0] # => <c/>
1181
+ # d.xpath # => ""
1182
+ # a.xpath # => "/a"
1183
+ # b.xpath # => "/a/b"
1184
+ # c.xpath # => "/a/b/c"
1185
+ #
1186
+ # If there is no parent, returns the expanded name of the element:
1187
+ #
1188
+ # e = REXML::Element.new('foo')
1189
+ # e.xpath # => "foo"
1190
+ #
1191
+ def xpath
1192
+ path_elements = []
1193
+ cur = self
1194
+ path_elements << __to_xpath_helper( self )
1195
+ while cur.parent
1196
+ cur = cur.parent
1197
+ path_elements << __to_xpath_helper( cur )
1198
+ end
1199
+ return path_elements.reverse.join( "/" )
1200
+ end
1201
+
1202
+ #################################################
1203
+ # Attributes #
1204
+ #################################################
1205
+
1206
+ # :call-seq:
1207
+ # [index] -> object
1208
+ # [attr_name] -> attr_value
1209
+ # [attr_sym] -> attr_value
1210
+ #
1211
+ # With integer argument +index+ given,
1212
+ # returns the child at offset +index+, or +nil+ if none:
1213
+ #
1214
+ # d = REXML::Document.new '><root><a/>text<b/>more<c/></root>'
1215
+ # root = d.root
1216
+ # (0..root.size).each do |index|
1217
+ # node = root[index]
1218
+ # p "#{index}: #{node} (#{node.class})"
1219
+ # end
1220
+ #
1221
+ # Output:
1222
+ #
1223
+ # "0: <a/> (REXML::Element)"
1224
+ # "1: text (REXML::Text)"
1225
+ # "2: <b/> (REXML::Element)"
1226
+ # "3: more (REXML::Text)"
1227
+ # "4: <c/> (REXML::Element)"
1228
+ # "5: (NilClass)"
1229
+ #
1230
+ # With string argument +attr_name+ given,
1231
+ # returns the string value for the given attribute name if it exists,
1232
+ # otherwise +nil+:
1233
+ #
1234
+ # d = REXML::Document.new('<root attr="value"></root>')
1235
+ # root = d.root
1236
+ # root['attr'] # => "value"
1237
+ # root['nosuch'] # => nil
1238
+ #
1239
+ # With symbol argument +attr_sym+ given,
1240
+ # returns <tt>[attr_sym.to_s]</tt>:
1241
+ #
1242
+ # root[:attr] # => "value"
1243
+ # root[:nosuch] # => nil
1244
+ #
1245
+ def [](name_or_index)
1246
+ case name_or_index
1247
+ when String
1248
+ attributes[name_or_index]
1249
+ when Symbol
1250
+ attributes[name_or_index.to_s]
1251
+ else
1252
+ super
1253
+ end
1254
+ end
1255
+
1256
+
1257
+ # :call-seq:
1258
+ # attribute(name, namespace = nil)
1259
+ #
1260
+ # Returns the string value for the given attribute name.
1261
+ #
1262
+ # With only argument +name+ given,
1263
+ # returns the value of the named attribute if it exists, otherwise +nil+:
1264
+ #
1265
+ # xml_string = <<-EOT
1266
+ # <root xmlns="ns0">
1267
+ # <a xmlns="ns1" attr="value"></a>
1268
+ # <b xmlns="ns2" attr="value"></b>
1269
+ # <c attr="value"/>
1270
+ # </root>
1271
+ # EOT
1272
+ # d = REXML::Document.new(xml_string)
1273
+ # root = d.root
1274
+ # a = root[1] # => <a xmlns='ns1' attr='value'/>
1275
+ # a.attribute('attr') # => attr='value'
1276
+ # a.attribute('nope') # => nil
1277
+ #
1278
+ # With arguments +name+ and +namespace+ given,
1279
+ # returns the value of the named attribute if it exists, otherwise +nil+:
1280
+ #
1281
+ # xml_string = "<root xmlns:a='a' a:x='a:x' x='x'/>"
1282
+ # document = REXML::Document.new(xml_string)
1283
+ # document.root.attribute("x") # => x='x'
1284
+ # document.root.attribute("x", "a") # => a:x='a:x'
1285
+ #
1286
+ def attribute( name, namespace=nil )
1287
+ prefix = nil
1288
+ if namespaces.respond_to? :key
1289
+ prefix = namespaces.key(namespace) if namespace
1290
+ else
1291
+ prefix = namespaces.index(namespace) if namespace
1292
+ end
1293
+ prefix = nil if prefix == 'xmlns'
1294
+
1295
+ ret_val =
1296
+ attributes.get_attribute( "#{prefix ? prefix + ':' : ''}#{name}" )
1297
+
1298
+ return ret_val unless ret_val.nil?
1299
+ return nil if prefix.nil?
1300
+
1301
+ # now check that prefix'es namespace is not the same as the
1302
+ # default namespace
1303
+ return nil unless ( namespaces[ prefix ] == namespaces[ 'xmlns' ] )
1304
+
1305
+ attributes.get_attribute( name )
1306
+
1307
+ end
1308
+
1309
+ # :call-seq:
1310
+ # has_attributes? -> true or false
1311
+ #
1312
+ # Returns +true+ if the element has attributes, +false+ otherwise:
1313
+ #
1314
+ # d = REXML::Document.new('<root><a attr="val"/><b/></root>')
1315
+ # a, b = *d.root
1316
+ # a.has_attributes? # => true
1317
+ # b.has_attributes? # => false
1318
+ #
1319
+ def has_attributes?
1320
+ return !@attributes.empty?
1321
+ end
1322
+
1323
+ # :call-seq:
1324
+ # add_attribute(name, value) -> value
1325
+ # add_attribute(attribute) -> attribute
1326
+ #
1327
+ # Adds an attribute to this element, overwriting any existing attribute
1328
+ # by the same name.
1329
+ #
1330
+ # With string argument +name+ and object +value+ are given,
1331
+ # adds the attribute created with that name and value:
1332
+ #
1333
+ # e = REXML::Element.new
1334
+ # e.add_attribute('attr', 'value') # => "value"
1335
+ # e['attr'] # => "value"
1336
+ # e.add_attribute('attr', 'VALUE') # => "VALUE"
1337
+ # e['attr'] # => "VALUE"
1338
+ #
1339
+ # With only attribute object +attribute+ given,
1340
+ # adds the given attribute:
1341
+ #
1342
+ # a = REXML::Attribute.new('attr', 'value')
1343
+ # e.add_attribute(a) # => attr='value'
1344
+ # e['attr'] # => "value"
1345
+ # a = REXML::Attribute.new('attr', 'VALUE')
1346
+ # e.add_attribute(a) # => attr='VALUE'
1347
+ # e['attr'] # => "VALUE"
1348
+ #
1349
+ def add_attribute( key, value=nil )
1350
+ if key.kind_of? Attribute
1351
+ @attributes << key
1352
+ else
1353
+ @attributes[key] = value
1354
+ end
1355
+ end
1356
+
1357
+ # :call-seq:
1358
+ # add_attributes(hash) -> hash
1359
+ # add_attributes(array)
1360
+ #
1361
+ # Adds zero or more attributes to the element;
1362
+ # returns the argument.
1363
+ #
1364
+ # If hash argument +hash+ is given,
1365
+ # each key must be a string;
1366
+ # adds each attribute created with the key/value pair:
1367
+ #
1368
+ # e = REXML::Element.new
1369
+ # h = {'foo' => 'bar', 'baz' => 'bat'}
1370
+ # e.add_attributes(h)
1371
+ #
1372
+ # If argument +array+ is given,
1373
+ # each array member must be a 2-element array <tt>[name, value];
1374
+ # each name must be a string:
1375
+ #
1376
+ # e = REXML::Element.new
1377
+ # a = [['foo' => 'bar'], ['baz' => 'bat']]
1378
+ # e.add_attributes(a)
1379
+ #
1380
+ def add_attributes hash
1381
+ if hash.kind_of? Hash
1382
+ hash.each_pair {|key, value| @attributes[key] = value }
1383
+ elsif hash.kind_of? Array
1384
+ hash.each { |value| @attributes[ value[0] ] = value[1] }
1385
+ end
1386
+ end
1387
+
1388
+ # :call-seq:
1389
+ # delete_attribute(name) -> removed_attribute or nil
1390
+ #
1391
+ # Removes a named attribute if it exists;
1392
+ # returns the removed attribute if found, otherwise +nil+:
1393
+ #
1394
+ # e = REXML::Element.new('foo')
1395
+ # e.add_attribute('bar', 'baz')
1396
+ # e.delete_attribute('bar') # => <bar/>
1397
+ # e.delete_attribute('bar') # => nil
1398
+ #
1399
+ def delete_attribute(key)
1400
+ attr = @attributes.get_attribute(key)
1401
+ attr.remove unless attr.nil?
1402
+ end
1403
+
1404
+ #################################################
1405
+ # Other Utilities #
1406
+ #################################################
1407
+
1408
+ # :call-seq:
1409
+ # cdatas -> array_of_cdata_children
1410
+ #
1411
+ # Returns a frozen array of the REXML::CData children of the element:
1412
+ #
1413
+ # xml_string = <<-EOT
1414
+ # <root>
1415
+ # <![CDATA[foo]]>
1416
+ # <![CDATA[bar]]>
1417
+ # </root>
1418
+ # EOT
1419
+ # d = REXML::Document.new(xml_string)
1420
+ # cds = d.root.cdatas # => ["foo", "bar"]
1421
+ # cds.frozen? # => true
1422
+ # cds.map {|cd| cd.class } # => [REXML::CData, REXML::CData]
1423
+ #
1424
+ def cdatas
1425
+ find_all { |child| child.kind_of? CData }.freeze
1426
+ end
1427
+
1428
+ # :call-seq:
1429
+ # comments -> array_of_comment_children
1430
+ #
1431
+ # Returns a frozen array of the REXML::Comment children of the element:
1432
+ #
1433
+ # xml_string = <<-EOT
1434
+ # <root>
1435
+ # <!--foo-->
1436
+ # <!--bar-->
1437
+ # </root>
1438
+ # EOT
1439
+ # d = REXML::Document.new(xml_string)
1440
+ # cs = d.root.comments
1441
+ # cs.frozen? # => true
1442
+ # cs.map {|c| c.class } # => [REXML::Comment, REXML::Comment]
1443
+ # cs.map {|c| c.to_s } # => ["foo", "bar"]
1444
+ #
1445
+ def comments
1446
+ find_all { |child| child.kind_of? Comment }.freeze
1447
+ end
1448
+
1449
+ # :call-seq:
1450
+ # instructions -> array_of_instruction_children
1451
+ #
1452
+ # Returns a frozen array of the REXML::Instruction children of the element:
1453
+ #
1454
+ # xml_string = <<-EOT
1455
+ # <root>
1456
+ # <?target0 foo?>
1457
+ # <?target1 bar?>
1458
+ # </root>
1459
+ # EOT
1460
+ # d = REXML::Document.new(xml_string)
1461
+ # is = d.root.instructions
1462
+ # is.frozen? # => true
1463
+ # is.map {|i| i.class } # => [REXML::Instruction, REXML::Instruction]
1464
+ # is.map {|i| i.to_s } # => ["<?target0 foo?>", "<?target1 bar?>"]
1465
+ #
1466
+ def instructions
1467
+ find_all { |child| child.kind_of? Instruction }.freeze
1468
+ end
1469
+
1470
+ # :call-seq:
1471
+ # texts -> array_of_text_children
1472
+ #
1473
+ # Returns a frozen array of the REXML::Text children of the element:
1474
+ #
1475
+ # xml_string = '<root><a/>text<b/>more<c/></root>'
1476
+ # d = REXML::Document.new(xml_string)
1477
+ # ts = d.root.texts
1478
+ # ts.frozen? # => true
1479
+ # ts.map {|t| t.class } # => [REXML::Text, REXML::Text]
1480
+ # ts.map {|t| t.to_s } # => ["text", "more"]
1481
+ #
1482
+ def texts
1483
+ find_all { |child| child.kind_of? Text }.freeze
1484
+ end
1485
+
1486
+ # == DEPRECATED
1487
+ # See REXML::Formatters
1488
+ #
1489
+ # Writes out this element, and recursively, all children.
1490
+ # output::
1491
+ # output an object which supports '<< string'; this is where the
1492
+ # document will be written.
1493
+ # indent::
1494
+ # An integer. If -1, no indenting will be used; otherwise, the
1495
+ # indentation will be this number of spaces, and children will be
1496
+ # indented an additional amount. Defaults to -1
1497
+ # transitive::
1498
+ # If transitive is true and indent is >= 0, then the output will be
1499
+ # pretty-printed in such a way that the added whitespace does not affect
1500
+ # the parse tree of the document
1501
+ # ie_hack::
1502
+ # This hack inserts a space before the /> on empty tags to address
1503
+ # a limitation of Internet Explorer. Defaults to false
1504
+ #
1505
+ # out = ''
1506
+ # doc.write( out ) #-> doc is written to the string 'out'
1507
+ # doc.write( $stdout ) #-> doc written to the console
1508
+ def write(output=$stdout, indent=-1, transitive=false, ie_hack=false)
1509
+ Kernel.warn("#{self.class.name}.write is deprecated. See REXML::Formatters", uplevel: 1)
1510
+ formatter = if indent > -1
1511
+ if transitive
1512
+ require_relative "formatters/transitive"
1513
+ REXML::Formatters::Transitive.new( indent, ie_hack )
1514
+ else
1515
+ REXML::Formatters::Pretty.new( indent, ie_hack )
1516
+ end
1517
+ else
1518
+ REXML::Formatters::Default.new( ie_hack )
1519
+ end
1520
+ formatter.write( self, output )
1521
+ end
1522
+
1523
+
1524
+ private
1525
+ def __to_xpath_helper node
1526
+ rv = node.expanded_name.clone
1527
+ if node.parent
1528
+ results = node.parent.find_all {|n|
1529
+ n.kind_of?(REXML::Element) and n.expanded_name == node.expanded_name
1530
+ }
1531
+ if results.length > 1
1532
+ idx = results.index( node )
1533
+ rv << "[#{idx+1}]"
1534
+ end
1535
+ end
1536
+ rv
1537
+ end
1538
+
1539
+ # A private helper method
1540
+ def each_with_something( test, max=0, name=nil )
1541
+ num = 0
1542
+ @elements.each( name ){ |child|
1543
+ yield child if test.call(child) and num += 1
1544
+ return if max>0 and num == max
1545
+ }
1546
+ end
1547
+ end
1548
+
1549
+ ########################################################################
1550
+ # ELEMENTS #
1551
+ ########################################################################
1552
+
1553
+ # A class which provides filtering of children for Elements, and
1554
+ # XPath search support. You are expected to only encounter this class as
1555
+ # the <tt>element.elements</tt> object. Therefore, you are
1556
+ # _not_ expected to instantiate this yourself.
1557
+ #
1558
+ # xml_string = <<-EOT
1559
+ # <?xml version="1.0" encoding="UTF-8"?>
1560
+ # <bookstore>
1561
+ # <book category="cooking">
1562
+ # <title lang="en">Everyday Italian</title>
1563
+ # <author>Giada De Laurentiis</author>
1564
+ # <year>2005</year>
1565
+ # <price>30.00</price>
1566
+ # </book>
1567
+ # <book category="children">
1568
+ # <title lang="en">Harry Potter</title>
1569
+ # <author>J K. Rowling</author>
1570
+ # <year>2005</year>
1571
+ # <price>29.99</price>
1572
+ # </book>
1573
+ # <book category="web">
1574
+ # <title lang="en">XQuery Kick Start</title>
1575
+ # <author>James McGovern</author>
1576
+ # <author>Per Bothner</author>
1577
+ # <author>Kurt Cagle</author>
1578
+ # <author>James Linn</author>
1579
+ # <author>Vaidyanathan Nagarajan</author>
1580
+ # <year>2003</year>
1581
+ # <price>49.99</price>
1582
+ # </book>
1583
+ # <book category="web" cover="paperback">
1584
+ # <title lang="en">Learning XML</title>
1585
+ # <author>Erik T. Ray</author>
1586
+ # <year>2003</year>
1587
+ # <price>39.95</price>
1588
+ # </book>
1589
+ # </bookstore>
1590
+ # EOT
1591
+ # d = REXML::Document.new(xml_string)
1592
+ # elements = d.root.elements
1593
+ # elements # => #<REXML::Elements @element=<bookstore> ... </>>
1594
+ #
1595
+ class Elements
1596
+ include Enumerable
1597
+ # :call-seq:
1598
+ # new(parent) -> new_elements_object
1599
+ #
1600
+ # Returns a new \Elements object with the given +parent+.
1601
+ # Does _not_ assign <tt>parent.elements = self</tt>:
1602
+ #
1603
+ # d = REXML::Document.new(xml_string)
1604
+ # eles = REXML::Elements.new(d.root)
1605
+ # eles # => #<REXML::Elements @element=<bookstore> ... </>>
1606
+ # eles == d.root.elements # => false
1607
+ #
1608
+ def initialize parent
1609
+ @element = parent
1610
+ end
1611
+
1612
+ # :call-seq:
1613
+ # parent
1614
+ #
1615
+ # Returns the parent element cited in creating the \Elements object.
1616
+ # This element is also the default starting point for searching
1617
+ # in the \Elements object.
1618
+ #
1619
+ # d = REXML::Document.new(xml_string)
1620
+ # elements = REXML::Elements.new(d.root)
1621
+ # elements.parent == d.root # => true
1622
+ #
1623
+ def parent
1624
+ @element
1625
+ end
1626
+
1627
+ # :call-seq:
1628
+ # elements[index] -> element or nil
1629
+ # elements[xpath] -> element or nil
1630
+ # elements[n, name] -> element or nil
1631
+ #
1632
+ # Returns the first \Element object selected by the arguments,
1633
+ # if any found, or +nil+ if none found.
1634
+ #
1635
+ # Notes:
1636
+ # - The +index+ is 1-based, not 0-based, so that:
1637
+ # - The first element has index <tt>1</tt>
1638
+ # - The _nth_ element has index +n+.
1639
+ # - The selection ignores non-\Element nodes.
1640
+ #
1641
+ # When the single argument +index+ is given,
1642
+ # returns the element given by the index, if any; otherwise, +nil+:
1643
+ #
1644
+ # d = REXML::Document.new(xml_string)
1645
+ # eles = d.root.elements
1646
+ # eles # => #<REXML::Elements @element=<bookstore> ... </>>
1647
+ # eles[1] # => <book category='cooking'> ... </>
1648
+ # eles.size # => 4
1649
+ # eles[4] # => <book category='web' cover='paperback'> ... </>
1650
+ # eles[5] # => nil
1651
+ #
1652
+ # The node at this index is not an \Element, and so is not returned:
1653
+ #
1654
+ # eles = d.root.first.first # => <title lang='en'> ... </>
1655
+ # eles.to_a # => ["Everyday Italian"]
1656
+ # eles[1] # => nil
1657
+ #
1658
+ # When the single argument +xpath+ is given,
1659
+ # returns the first element found via that +xpath+, if any; otherwise, +nil+:
1660
+ #
1661
+ # eles = d.root.elements # => #<REXML::Elements @element=<bookstore> ... </>>
1662
+ # eles['/bookstore'] # => <bookstore> ... </>
1663
+ # eles['//book'] # => <book category='cooking'> ... </>
1664
+ # eles['//book [@category="children"]'] # => <book category='children'> ... </>
1665
+ # eles['/nosuch'] # => nil
1666
+ # eles['//nosuch'] # => nil
1667
+ # eles['//book [@category="nosuch"]'] # => nil
1668
+ # eles['.'] # => <bookstore> ... </>
1669
+ # eles['..'].class # => REXML::Document
1670
+ #
1671
+ # With arguments +n+ and +name+ given,
1672
+ # returns the _nth_ found element that has the given +name+,
1673
+ # or +nil+ if there is no such _nth_ element:
1674
+ #
1675
+ # eles = d.root.elements # => #<REXML::Elements @element=<bookstore> ... </>>
1676
+ # eles[1, 'book'] # => <book category='cooking'> ... </>
1677
+ # eles[4, 'book'] # => <book category='web' cover='paperback'> ... </>
1678
+ # eles[5, 'book'] # => nil
1679
+ #
1680
+ def []( index, name=nil)
1681
+ if index.kind_of? Integer
1682
+ raise "index (#{index}) must be >= 1" if index < 1
1683
+ name = literalize(name) if name
1684
+ num = 0
1685
+ @element.find { |child|
1686
+ child.kind_of? Element and
1687
+ (name.nil? ? true : child.has_name?( name )) and
1688
+ (num += 1) == index
1689
+ }
1690
+ else
1691
+ return XPath::first( @element, index )
1692
+ #{ |element|
1693
+ # return element if element.kind_of? Element
1694
+ #}
1695
+ #return nil
1696
+ end
1697
+ end
1698
+
1699
+ # :call-seq:
1700
+ # elements[] = index, replacement_element -> replacement_element or nil
1701
+ #
1702
+ # Replaces or adds an element.
1703
+ #
1704
+ # When <tt>eles[index]</tt> exists, replaces it with +replacement_element+
1705
+ # and returns +replacement_element+:
1706
+ #
1707
+ # d = REXML::Document.new(xml_string)
1708
+ # eles = d.root.elements # => #<REXML::Elements @element=<bookstore> ... </>>
1709
+ # eles[1] # => <book category='cooking'> ... </>
1710
+ # eles[1] = REXML::Element.new('foo')
1711
+ # eles[1] # => <foo/>
1712
+ #
1713
+ # Does nothing (or raises an exception)
1714
+ # if +replacement_element+ is not an \Element:
1715
+ # eles[2] # => <book category='web' cover='paperback'> ... </>
1716
+ # eles[2] = REXML::Text.new('bar')
1717
+ # eles[2] # => <book category='web' cover='paperback'> ... </>
1718
+ #
1719
+ # When <tt>eles[index]</tt> does not exist,
1720
+ # adds +replacement_element+ to the element and returns
1721
+ #
1722
+ # d = REXML::Document.new(xml_string)
1723
+ # eles = d.root.elements # => #<REXML::Elements @element=<bookstore> ... </>>
1724
+ # eles.size # => 4
1725
+ # eles[50] = REXML::Element.new('foo') # => <foo/>
1726
+ # eles.size # => 5
1727
+ # eles[5] # => <foo/>
1728
+ #
1729
+ # Does nothing (or raises an exception)
1730
+ # if +replacement_element+ is not an \Element:
1731
+ #
1732
+ # eles[50] = REXML::Text.new('bar') # => "bar"
1733
+ # eles.size # => 5
1734
+ #
1735
+ def []=( index, element )
1736
+ previous = self[index]
1737
+ if previous.nil?
1738
+ @element.add element
1739
+ else
1740
+ previous.replace_with element
1741
+ end
1742
+ return previous
1743
+ end
1744
+
1745
+ # :call-seq:
1746
+ # empty? -> true or false
1747
+ #
1748
+ # Returns +true+ if there are no children, +false+ otherwise.
1749
+ #
1750
+ # d = REXML::Document.new('')
1751
+ # d.elements.empty? # => true
1752
+ # d = REXML::Document.new(xml_string)
1753
+ # d.elements.empty? # => false
1754
+ #
1755
+ def empty?
1756
+ @element.find{ |child| child.kind_of? Element}.nil?
1757
+ end
1758
+
1759
+ # :call-seq:
1760
+ # index(element)
1761
+ #
1762
+ # Returns the 1-based index of the given +element+, if found;
1763
+ # otherwise, returns -1:
1764
+ #
1765
+ # d = REXML::Document.new(xml_string)
1766
+ # elements = d.root.elements
1767
+ # ele_1, ele_2, ele_3, ele_4 = *elements
1768
+ # elements.index(ele_4) # => 4
1769
+ # elements.delete(ele_3)
1770
+ # elements.index(ele_4) # => 3
1771
+ # elements.index(ele_3) # => -1
1772
+ #
1773
+ def index element
1774
+ rv = 0
1775
+ found = @element.find do |child|
1776
+ child.kind_of? Element and
1777
+ (rv += 1) and
1778
+ child == element
1779
+ end
1780
+ return rv if found == element
1781
+ return -1
1782
+ end
1783
+
1784
+ # :call-seq:
1785
+ # delete(index) -> removed_element or nil
1786
+ # delete(element) -> removed_element or nil
1787
+ # delete(xpath) -> removed_element or nil
1788
+ #
1789
+ # Removes an element; returns the removed element, or +nil+ if none removed.
1790
+ #
1791
+ # With integer argument +index+ given,
1792
+ # removes the child element at that offset:
1793
+ #
1794
+ # d = REXML::Document.new(xml_string)
1795
+ # elements = d.root.elements
1796
+ # elements.size # => 4
1797
+ # elements[2] # => <book category='children'> ... </>
1798
+ # elements.delete(2) # => <book category='children'> ... </>
1799
+ # elements.size # => 3
1800
+ # elements[2] # => <book category='web'> ... </>
1801
+ # elements.delete(50) # => nil
1802
+ #
1803
+ # With element argument +element+ given,
1804
+ # removes that child element:
1805
+ #
1806
+ # d = REXML::Document.new(xml_string)
1807
+ # elements = d.root.elements
1808
+ # ele_1, ele_2, ele_3, ele_4 = *elements
1809
+ # elements.size # => 4
1810
+ # elements[2] # => <book category='children'> ... </>
1811
+ # elements.delete(ele_2) # => <book category='children'> ... </>
1812
+ # elements.size # => 3
1813
+ # elements[2] # => <book category='web'> ... </>
1814
+ # elements.delete(ele_2) # => nil
1815
+ #
1816
+ # With string argument +xpath+ given,
1817
+ # removes the first element found via that xpath:
1818
+ #
1819
+ # d = REXML::Document.new(xml_string)
1820
+ # elements = d.root.elements
1821
+ # elements.delete('//book') # => <book category='cooking'> ... </>
1822
+ # elements.delete('//book [@category="children"]') # => <book category='children'> ... </>
1823
+ # elements.delete('//nosuch') # => nil
1824
+ #
1825
+ def delete element
1826
+ if element.kind_of? Element
1827
+ @element.delete element
1828
+ else
1829
+ el = self[element]
1830
+ el.remove if el
1831
+ end
1832
+ end
1833
+
1834
+ # :call-seq:
1835
+ # delete_all(xpath)
1836
+ #
1837
+ # Removes all elements found via the given +xpath+;
1838
+ # returns the array of removed elements, if any, else +nil+.
1839
+ #
1840
+ # d = REXML::Document.new(xml_string)
1841
+ # elements = d.root.elements
1842
+ # elements.size # => 4
1843
+ # deleted_elements = elements.delete_all('//book [@category="web"]')
1844
+ # deleted_elements.size # => 2
1845
+ # elements.size # => 2
1846
+ # deleted_elements = elements.delete_all('//book')
1847
+ # deleted_elements.size # => 2
1848
+ # elements.size # => 0
1849
+ # elements.delete_all('//book') # => []
1850
+ #
1851
+ def delete_all( xpath )
1852
+ rv = []
1853
+ XPath::each( @element, xpath) {|element|
1854
+ rv << element if element.kind_of? Element
1855
+ }
1856
+ rv.each do |element|
1857
+ @element.delete element
1858
+ element.remove
1859
+ end
1860
+ return rv
1861
+ end
1862
+
1863
+ # :call-seq:
1864
+ # add -> new_element
1865
+ # add(name) -> new_element
1866
+ # add(element) -> element
1867
+ #
1868
+ # Adds an element; returns the element added.
1869
+ #
1870
+ # With no argument, creates and adds a new element.
1871
+ # The new element has:
1872
+ #
1873
+ # - No name.
1874
+ # - \Parent from the \Elements object.
1875
+ # - Context from the that parent.
1876
+ #
1877
+ # Example:
1878
+ #
1879
+ # d = REXML::Document.new(xml_string)
1880
+ # elements = d.root.elements
1881
+ # parent = elements.parent # => <bookstore> ... </>
1882
+ # parent.context = {raw: :all}
1883
+ # elements.size # => 4
1884
+ # new_element = elements.add # => </>
1885
+ # elements.size # => 5
1886
+ # new_element.name # => nil
1887
+ # new_element.parent # => <bookstore> ... </>
1888
+ # new_element.context # => {:raw=>:all}
1889
+ #
1890
+ # With string argument +name+, creates and adds a new element.
1891
+ # The new element has:
1892
+ #
1893
+ # - Name +name+.
1894
+ # - \Parent from the \Elements object.
1895
+ # - Context from the that parent.
1896
+ #
1897
+ # Example:
1898
+ #
1899
+ # d = REXML::Document.new(xml_string)
1900
+ # elements = d.root.elements
1901
+ # parent = elements.parent # => <bookstore> ... </>
1902
+ # parent.context = {raw: :all}
1903
+ # elements.size # => 4
1904
+ # new_element = elements.add('foo') # => <foo/>
1905
+ # elements.size # => 5
1906
+ # new_element.name # => "foo"
1907
+ # new_element.parent # => <bookstore> ... </>
1908
+ # new_element.context # => {:raw=>:all}
1909
+ #
1910
+ # With argument +element+,
1911
+ # creates and adds a clone of the given +element+.
1912
+ # The new element has name, parent, and context from the given +element+.
1913
+ #
1914
+ # d = REXML::Document.new(xml_string)
1915
+ # elements = d.root.elements
1916
+ # elements.size # => 4
1917
+ # e0 = REXML::Element.new('foo')
1918
+ # e1 = REXML::Element.new('bar', e0, {raw: :all})
1919
+ # element = elements.add(e1) # => <bar/>
1920
+ # elements.size # => 5
1921
+ # element.name # => "bar"
1922
+ # element.parent # => <bookstore> ... </>
1923
+ # element.context # => {:raw=>:all}
1924
+ #
1925
+ def add element=nil
1926
+ if element.nil?
1927
+ Element.new("", self, @element.context)
1928
+ elsif not element.kind_of?(Element)
1929
+ Element.new(element, self, @element.context)
1930
+ else
1931
+ @element << element
1932
+ element.context = @element.context
1933
+ element
1934
+ end
1935
+ end
1936
+
1937
+ alias :<< :add
1938
+
1939
+ # :call-seq:
1940
+ # each(xpath = nil) {|element| ... } -> self
1941
+ #
1942
+ # Iterates over the elements.
1943
+ #
1944
+ # With no argument, calls the block with each element:
1945
+ #
1946
+ # d = REXML::Document.new(xml_string)
1947
+ # elements = d.root.elements
1948
+ # elements.each {|element| p element }
1949
+ #
1950
+ # Output:
1951
+ #
1952
+ # <book category='cooking'> ... </>
1953
+ # <book category='children'> ... </>
1954
+ # <book category='web'> ... </>
1955
+ # <book category='web' cover='paperback'> ... </>
1956
+ #
1957
+ # With argument +xpath+, calls the block with each element
1958
+ # that matches the given +xpath+:
1959
+ #
1960
+ # elements.each('//book [@category="web"]') {|element| p element }
1961
+ #
1962
+ # Output:
1963
+ #
1964
+ # <book category='web'> ... </>
1965
+ # <book category='web' cover='paperback'> ... </>
1966
+ #
1967
+ def each( xpath=nil )
1968
+ XPath::each( @element, xpath ) {|e| yield e if e.kind_of? Element }
1969
+ end
1970
+
1971
+ # :call-seq:
1972
+ # collect(xpath = nil) {|element| ... } -> array
1973
+ #
1974
+ # Iterates over the elements; returns the array of block return values.
1975
+ #
1976
+ # With no argument, iterates over all elements:
1977
+ #
1978
+ # d = REXML::Document.new(xml_string)
1979
+ # elements = d.root.elements
1980
+ # elements.collect {|element| element.size } # => [9, 9, 17, 9]
1981
+ #
1982
+ # With argument +xpath+, iterates over elements that match
1983
+ # the given +xpath+:
1984
+ #
1985
+ # xpath = '//book [@category="web"]'
1986
+ # elements.collect(xpath) {|element| element.size } # => [17, 9]
1987
+ #
1988
+ def collect( xpath=nil )
1989
+ collection = []
1990
+ XPath::each( @element, xpath ) {|e|
1991
+ collection << yield(e) if e.kind_of?(Element)
1992
+ }
1993
+ collection
1994
+ end
1995
+
1996
+ # :call-seq:
1997
+ # inject(xpath = nil, initial = nil) -> object
1998
+ #
1999
+ # Calls the block with elements; returns the last block return value.
2000
+ #
2001
+ # With no argument, iterates over the elements, calling the block
2002
+ # <tt>elements.size - 1</tt> times.
2003
+ #
2004
+ # - The first call passes the first and second elements.
2005
+ # - The second call passes the first block return value and the third element.
2006
+ # - The third call passes the second block return value and the fourth element.
2007
+ # - And so on.
2008
+ #
2009
+ # In this example, the block returns the passed element,
2010
+ # which is then the object argument to the next call:
2011
+ #
2012
+ # d = REXML::Document.new(xml_string)
2013
+ # elements = d.root.elements
2014
+ # elements.inject do |object, element|
2015
+ # p [elements.index(object), elements.index(element)]
2016
+ # element
2017
+ # end
2018
+ #
2019
+ # Output:
2020
+ #
2021
+ # [1, 2]
2022
+ # [2, 3]
2023
+ # [3, 4]
2024
+ #
2025
+ # With the single argument +xpath+, calls the block only with
2026
+ # elements matching that xpath:
2027
+ #
2028
+ # elements.inject('//book [@category="web"]') do |object, element|
2029
+ # p [elements.index(object), elements.index(element)]
2030
+ # element
2031
+ # end
2032
+ #
2033
+ # Output:
2034
+ #
2035
+ # [3, 4]
2036
+ #
2037
+ # With argument +xpath+ given as +nil+
2038
+ # and argument +initial+ also given,
2039
+ # calls the block once for each element.
2040
+ #
2041
+ # - The first call passes the +initial+ and the first element.
2042
+ # - The second call passes the first block return value and the second element.
2043
+ # - The third call passes the second block return value and the third element.
2044
+ # - And so on.
2045
+ #
2046
+ # In this example, the first object index is <tt>-1</tt>
2047
+ #
2048
+ # elements.inject(nil, 'Initial') do |object, element|
2049
+ # p [elements.index(object), elements.index(element)]
2050
+ # element
2051
+ # end
2052
+ #
2053
+ # Output:
2054
+ #
2055
+ # [-1, 1]
2056
+ # [1, 2]
2057
+ # [2, 3]
2058
+ # [3, 4]
2059
+ #
2060
+ # In this form the passed object can be used as an accumulator:
2061
+ #
2062
+ # elements.inject(nil, 0) do |total, element|
2063
+ # total += element.size
2064
+ # end # => 44
2065
+ #
2066
+ # With both arguments +xpath+ and +initial+ are given,
2067
+ # calls the block only with elements matching that xpath:
2068
+ #
2069
+ # elements.inject('//book [@category="web"]', 0) do |total, element|
2070
+ # total += element.size
2071
+ # end # => 26
2072
+ #
2073
+ def inject( xpath=nil, initial=nil )
2074
+ first = true
2075
+ XPath::each( @element, xpath ) {|e|
2076
+ if (e.kind_of? Element)
2077
+ if (first and initial == nil)
2078
+ initial = e
2079
+ first = false
2080
+ else
2081
+ initial = yield( initial, e ) if e.kind_of? Element
2082
+ end
2083
+ end
2084
+ }
2085
+ initial
2086
+ end
2087
+
2088
+ # :call-seq:
2089
+ # size -> integer
2090
+ #
2091
+ # Returns the count of \Element children:
2092
+ #
2093
+ # d = REXML::Document.new '<a>sean<b/>elliott<b/>russell<b/></a>'
2094
+ # d.root.elements.size # => 3 # Three elements.
2095
+ # d.root.size # => 6 # Three elements plus three text nodes..
2096
+ #
2097
+ def size
2098
+ count = 0
2099
+ @element.each {|child| count+=1 if child.kind_of? Element }
2100
+ count
2101
+ end
2102
+
2103
+ # :call-seq:
2104
+ # to_a(xpath = nil) -> array_of_elements
2105
+ #
2106
+ # Returns an array of element children (not including non-element children).
2107
+ #
2108
+ # With no argument, returns an array of all element children:
2109
+ #
2110
+ # d = REXML::Document.new '<a>sean<b/>elliott<c/></a>'
2111
+ # elements = d.root.elements
2112
+ # elements.to_a # => [<b/>, <c/>] # Omits non-element children.
2113
+ # children = d.root.children
2114
+ # children # => ["sean", <b/>, "elliott", <c/>] # Includes non-element children.
2115
+ #
2116
+ # With argument +xpath+, returns an array of element children
2117
+ # that match the xpath:
2118
+ #
2119
+ # elements.to_a('//c') # => [<c/>]
2120
+ #
2121
+ def to_a( xpath=nil )
2122
+ rv = XPath.match( @element, xpath )
2123
+ return rv.find_all{|e| e.kind_of? Element} if xpath
2124
+ rv
2125
+ end
2126
+
2127
+ private
2128
+ # Private helper class. Removes quotes from quoted strings
2129
+ def literalize name
2130
+ name = name[1..-2] if name[0] == ?' or name[0] == ?" #'
2131
+ name
2132
+ end
2133
+ end
2134
+
2135
+ ########################################################################
2136
+ # ATTRIBUTES #
2137
+ ########################################################################
2138
+
2139
+ # A class that defines the set of Attributes of an Element and provides
2140
+ # operations for accessing elements in that set.
2141
+ class Attributes < Hash
2142
+
2143
+ # :call-seq:
2144
+ # new(element)
2145
+ #
2146
+ # Creates and returns a new \REXML::Attributes object.
2147
+ # The element given by argument +element+ is stored,
2148
+ # but its own attributes are not modified:
2149
+ #
2150
+ # ele = REXML::Element.new('foo')
2151
+ # attrs = REXML::Attributes.new(ele)
2152
+ # attrs.object_id == ele.attributes.object_id # => false
2153
+ #
2154
+ # Other instance methods in class \REXML::Attributes may refer to:
2155
+ #
2156
+ # - +element.document+.
2157
+ # - +element.prefix+.
2158
+ # - +element.expanded_name+.
2159
+ #
2160
+ def initialize element
2161
+ @element = element
2162
+ end
2163
+
2164
+ # :call-seq:
2165
+ # [name] -> attribute_value or nil
2166
+ #
2167
+ # Returns the value for the attribute given by +name+,
2168
+ # if it exists; otherwise +nil+.
2169
+ # The value returned is the unnormalized attribute value,
2170
+ # with entities expanded:
2171
+ #
2172
+ # xml_string = <<-EOT
2173
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
2174
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
2175
+ # </root>
2176
+ # EOT
2177
+ # d = REXML::Document.new(xml_string)
2178
+ # ele = d.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
2179
+ # ele.attributes['att'] # => "<"
2180
+ # ele.attributes['bar:att'] # => "2"
2181
+ # ele.attributes['nosuch'] # => nil
2182
+ #
2183
+ # Related: get_attribute (returns an \Attribute object).
2184
+ #
2185
+ def [](name)
2186
+ attr = get_attribute(name)
2187
+ return attr.value unless attr.nil?
2188
+ return nil
2189
+ end
2190
+
2191
+ # :call-seq:
2192
+ # to_a -> array_of_attribute_objects
2193
+ #
2194
+ # Returns an array of \REXML::Attribute objects representing
2195
+ # the attributes:
2196
+ #
2197
+ # xml_string = <<-EOT
2198
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
2199
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
2200
+ # </root>
2201
+ # EOT
2202
+ # d = REXML::Document.new(xml_string)
2203
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
2204
+ # attrs = ele.attributes.to_a # => [foo:att='1', bar:att='2', att='&lt;']
2205
+ # attrs.first.class # => REXML::Attribute
2206
+ #
2207
+ def to_a
2208
+ enum_for(:each_attribute).to_a
2209
+ end
2210
+
2211
+ # :call-seq:
2212
+ # length
2213
+ #
2214
+ # Returns the count of attributes:
2215
+ #
2216
+ # xml_string = <<-EOT
2217
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
2218
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
2219
+ # </root>
2220
+ # EOT
2221
+ # d = REXML::Document.new(xml_string)
2222
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
2223
+ # ele.attributes.length # => 3
2224
+ #
2225
+ def length
2226
+ c = 0
2227
+ each_attribute { c+=1 }
2228
+ c
2229
+ end
2230
+ alias :size :length
2231
+
2232
+ # :call-seq:
2233
+ # each_attribute {|attr| ... }
2234
+ #
2235
+ # Calls the given block with each \REXML::Attribute object:
2236
+ #
2237
+ # xml_string = <<-EOT
2238
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
2239
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
2240
+ # </root>
2241
+ # EOT
2242
+ # d = REXML::Document.new(xml_string)
2243
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
2244
+ # ele.attributes.each_attribute do |attr|
2245
+ # p [attr.class, attr]
2246
+ # end
2247
+ #
2248
+ # Output:
2249
+ #
2250
+ # [REXML::Attribute, foo:att='1']
2251
+ # [REXML::Attribute, bar:att='2']
2252
+ # [REXML::Attribute, att='&lt;']
2253
+ #
2254
+ def each_attribute # :yields: attribute
2255
+ return to_enum(__method__) unless block_given?
2256
+ each_value do |val|
2257
+ if val.kind_of? Attribute
2258
+ yield val
2259
+ else
2260
+ val.each_value { |atr| yield atr }
2261
+ end
2262
+ end
2263
+ end
2264
+
2265
+ # :call-seq:
2266
+ # each {|expanded_name, value| ... }
2267
+ #
2268
+ # Calls the given block with each expanded-name/value pair:
2269
+ #
2270
+ # xml_string = <<-EOT
2271
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
2272
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
2273
+ # </root>
2274
+ # EOT
2275
+ # d = REXML::Document.new(xml_string)
2276
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
2277
+ # ele.attributes.each do |expanded_name, value|
2278
+ # p [expanded_name, value]
2279
+ # end
2280
+ #
2281
+ # Output:
2282
+ #
2283
+ # ["foo:att", "1"]
2284
+ # ["bar:att", "2"]
2285
+ # ["att", "<"]
2286
+ #
2287
+ def each
2288
+ return to_enum(__method__) unless block_given?
2289
+ each_attribute do |attr|
2290
+ yield [attr.expanded_name, attr.value]
2291
+ end
2292
+ end
2293
+
2294
+ # :call-seq:
2295
+ # get_attribute(name) -> attribute_object or nil
2296
+ #
2297
+ # Returns the \REXML::Attribute object for the given +name+:
2298
+ #
2299
+ # xml_string = <<-EOT
2300
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
2301
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
2302
+ # </root>
2303
+ # EOT
2304
+ # d = REXML::Document.new(xml_string)
2305
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
2306
+ # attrs = ele.attributes
2307
+ # attrs.get_attribute('foo:att') # => foo:att='1'
2308
+ # attrs.get_attribute('foo:att').class # => REXML::Attribute
2309
+ # attrs.get_attribute('bar:att') # => bar:att='2'
2310
+ # attrs.get_attribute('att') # => att='&lt;'
2311
+ # attrs.get_attribute('nosuch') # => nil
2312
+ #
2313
+ def get_attribute( name )
2314
+ attr = fetch( name, nil )
2315
+ if attr.nil?
2316
+ return nil if name.nil?
2317
+ # Look for prefix
2318
+ name =~ Namespace::NAMESPLIT
2319
+ prefix, n = $1, $2
2320
+ if prefix
2321
+ attr = fetch( n, nil )
2322
+ # check prefix
2323
+ if attr == nil
2324
+ elsif attr.kind_of? Attribute
2325
+ return attr if prefix == attr.prefix
2326
+ else
2327
+ attr = attr[ prefix ]
2328
+ return attr
2329
+ end
2330
+ end
2331
+ element_document = @element.document
2332
+ if element_document and element_document.doctype
2333
+ expn = @element.expanded_name
2334
+ expn = element_document.doctype.name if expn.size == 0
2335
+ attr_val = element_document.doctype.attribute_of(expn, name)
2336
+ return Attribute.new( name, attr_val ) if attr_val
2337
+ end
2338
+ return nil
2339
+ end
2340
+ if attr.kind_of? Hash
2341
+ attr = attr[ @element.prefix ]
2342
+ end
2343
+ return attr
2344
+ end
2345
+
2346
+ # :call-seq:
2347
+ # [name] = value -> value
2348
+ #
2349
+ # When +value+ is non-+nil+,
2350
+ # assigns that to the attribute for the given +name+,
2351
+ # overwriting the previous value if it exists:
2352
+ #
2353
+ # xml_string = <<-EOT
2354
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
2355
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
2356
+ # </root>
2357
+ # EOT
2358
+ # d = REXML::Document.new(xml_string)
2359
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
2360
+ # attrs = ele.attributes
2361
+ # attrs['foo:att'] = '2' # => "2"
2362
+ # attrs['baz:att'] = '3' # => "3"
2363
+ #
2364
+ # When +value+ is +nil+, deletes the attribute if it exists:
2365
+ #
2366
+ # attrs['baz:att'] = nil
2367
+ # attrs.include?('baz:att') # => false
2368
+ #
2369
+ def []=( name, value )
2370
+ if value.nil? # Delete the named attribute
2371
+ attr = get_attribute(name)
2372
+ delete attr
2373
+ return
2374
+ end
2375
+
2376
+ unless value.kind_of? Attribute
2377
+ if @element.document and @element.document.doctype
2378
+ value = Text::normalize( value, @element.document.doctype )
2379
+ else
2380
+ value = Text::normalize( value, nil )
2381
+ end
2382
+ value = Attribute.new(name, value)
2383
+ end
2384
+ value.element = @element
2385
+ old_attr = fetch(value.name, nil)
2386
+ if old_attr.nil?
2387
+ store(value.name, value)
2388
+ elsif old_attr.kind_of? Hash
2389
+ old_attr[value.prefix] = value
2390
+ elsif old_attr.prefix != value.prefix
2391
+ # Check for conflicting namespaces
2392
+ if value.prefix != "xmlns" and old_attr.prefix != "xmlns"
2393
+ old_namespace = old_attr.namespace
2394
+ new_namespace = value.namespace
2395
+ if old_namespace == new_namespace
2396
+ raise ParseException.new(
2397
+ "Namespace conflict in adding attribute \"#{value.name}\": "+
2398
+ "Prefix \"#{old_attr.prefix}\" = \"#{old_namespace}\" and "+
2399
+ "prefix \"#{value.prefix}\" = \"#{new_namespace}\"")
2400
+ end
2401
+ end
2402
+ store value.name, {old_attr.prefix => old_attr,
2403
+ value.prefix => value}
2404
+ else
2405
+ store value.name, value
2406
+ end
2407
+ return @element
2408
+ end
2409
+
2410
+ # :call-seq:
2411
+ # prefixes -> array_of_prefix_strings
2412
+ #
2413
+ # Returns an array of prefix strings in the attributes.
2414
+ # The array does not include the default
2415
+ # namespace declaration, if one exists.
2416
+ #
2417
+ # xml_string = '<a xmlns="foo" xmlns:x="bar" xmlns:y="twee" z="glorp"/>'
2418
+ # d = REXML::Document.new(xml_string)
2419
+ # d.root.attributes.prefixes # => ["x", "y"]
2420
+ #
2421
+ def prefixes
2422
+ ns = []
2423
+ each_attribute do |attribute|
2424
+ ns << attribute.name if attribute.prefix == 'xmlns'
2425
+ end
2426
+ if @element.document and @element.document.doctype
2427
+ expn = @element.expanded_name
2428
+ expn = @element.document.doctype.name if expn.size == 0
2429
+ @element.document.doctype.attributes_of(expn).each {
2430
+ |attribute|
2431
+ ns << attribute.name if attribute.prefix == 'xmlns'
2432
+ }
2433
+ end
2434
+ ns
2435
+ end
2436
+
2437
+ # :call-seq:
2438
+ # namespaces
2439
+ #
2440
+ # Returns a hash of name/value pairs for the namespaces:
2441
+ #
2442
+ # xml_string = '<a xmlns="foo" xmlns:x="bar" xmlns:y="twee" z="glorp"/>'
2443
+ # d = REXML::Document.new(xml_string)
2444
+ # d.root.attributes.namespaces # => {"xmlns"=>"foo", "x"=>"bar", "y"=>"twee"}
2445
+ #
2446
+ def namespaces
2447
+ namespaces = {}
2448
+ each_attribute do |attribute|
2449
+ namespaces[attribute.name] = attribute.value if attribute.prefix == 'xmlns' or attribute.name == 'xmlns'
2450
+ end
2451
+ if @element.document and @element.document.doctype
2452
+ expn = @element.expanded_name
2453
+ expn = @element.document.doctype.name if expn.size == 0
2454
+ @element.document.doctype.attributes_of(expn).each {
2455
+ |attribute|
2456
+ namespaces[attribute.name] = attribute.value if attribute.prefix == 'xmlns' or attribute.name == 'xmlns'
2457
+ }
2458
+ end
2459
+ namespaces
2460
+ end
2461
+
2462
+ # :call-seq:
2463
+ # delete(name) -> element
2464
+ # delete(attribute) -> element
2465
+ #
2466
+ # Removes a specified attribute if it exists;
2467
+ # returns the attributes' element.
2468
+ #
2469
+ # When string argument +name+ is given,
2470
+ # removes the attribute of that name if it exists:
2471
+ #
2472
+ # xml_string = <<-EOT
2473
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
2474
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
2475
+ # </root>
2476
+ # EOT
2477
+ # d = REXML::Document.new(xml_string)
2478
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
2479
+ # attrs = ele.attributes
2480
+ # attrs.delete('foo:att') # => <ele bar:att='2' att='&lt;'/>
2481
+ # attrs.delete('foo:att') # => <ele bar:att='2' att='&lt;'/>
2482
+ #
2483
+ # When attribute argument +attribute+ is given,
2484
+ # removes that attribute if it exists:
2485
+ #
2486
+ # attr = REXML::Attribute.new('bar:att', '2')
2487
+ # attrs.delete(attr) # => <ele att='&lt;'/> # => <ele att='&lt;'/>
2488
+ # attrs.delete(attr) # => <ele att='&lt;'/> # => <ele/>
2489
+ #
2490
+ def delete( attribute )
2491
+ name = nil
2492
+ prefix = nil
2493
+ if attribute.kind_of? Attribute
2494
+ name = attribute.name
2495
+ prefix = attribute.prefix
2496
+ else
2497
+ attribute =~ Namespace::NAMESPLIT
2498
+ prefix, name = $1, $2
2499
+ prefix = '' unless prefix
2500
+ end
2501
+ old = fetch(name, nil)
2502
+ if old.kind_of? Hash # the supplied attribute is one of many
2503
+ old.delete(prefix)
2504
+ if old.size == 1
2505
+ repl = nil
2506
+ old.each_value{|v| repl = v}
2507
+ store name, repl
2508
+ end
2509
+ elsif old.nil?
2510
+ return @element
2511
+ else # the supplied attribute is a top-level one
2512
+ super(name)
2513
+ end
2514
+ @element
2515
+ end
2516
+
2517
+ # :call-seq:
2518
+ # add(attribute) -> attribute
2519
+ #
2520
+ # Adds attribute +attribute+, replacing the previous
2521
+ # attribute of the same name if it exists;
2522
+ # returns +attribute+:
2523
+ #
2524
+ # xml_string = <<-EOT
2525
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
2526
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
2527
+ # </root>
2528
+ # EOT
2529
+ # d = REXML::Document.new(xml_string)
2530
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
2531
+ # attrs = ele.attributes
2532
+ # attrs # => {"att"=>{"foo"=>foo:att='1', "bar"=>bar:att='2', ""=>att='&lt;'}}
2533
+ # attrs.add(REXML::Attribute.new('foo:att', '2')) # => foo:att='2'
2534
+ # attrs.add(REXML::Attribute.new('baz', '3')) # => baz='3'
2535
+ # attrs.include?('baz') # => true
2536
+ #
2537
+ def add( attribute )
2538
+ self[attribute.name] = attribute
2539
+ end
2540
+
2541
+ alias :<< :add
2542
+
2543
+ # :call-seq:
2544
+ # delete_all(name) -> array_of_removed_attributes
2545
+ #
2546
+ # Removes all attributes matching the given +name+;
2547
+ # returns an array of the removed attributes:
2548
+ #
2549
+ # xml_string = <<-EOT
2550
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
2551
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
2552
+ # </root>
2553
+ # EOT
2554
+ # d = REXML::Document.new(xml_string)
2555
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
2556
+ # attrs = ele.attributes
2557
+ # attrs.delete_all('att') # => [att='&lt;']
2558
+ #
2559
+ def delete_all( name )
2560
+ rv = []
2561
+ each_attribute { |attribute|
2562
+ rv << attribute if attribute.expanded_name == name
2563
+ }
2564
+ rv.each{ |attr| attr.remove }
2565
+ return rv
2566
+ end
2567
+
2568
+ # :call-seq:
2569
+ # get_attribute_ns(namespace, name)
2570
+ #
2571
+ # Returns the \REXML::Attribute object among the attributes
2572
+ # that matches the given +namespace+ and +name+:
2573
+ #
2574
+ # xml_string = <<-EOT
2575
+ # <root xmlns:foo="http://foo" xmlns:bar="http://bar">
2576
+ # <ele foo:att='1' bar:att='2' att='&lt;'/>
2577
+ # </root>
2578
+ # EOT
2579
+ # d = REXML::Document.new(xml_string)
2580
+ # ele = d.root.elements['//ele'] # => <a foo:att='1' bar:att='2' att='&lt;'/>
2581
+ # attrs = ele.attributes
2582
+ # attrs.get_attribute_ns('http://foo', 'att') # => foo:att='1'
2583
+ # attrs.get_attribute_ns('http://foo', 'nosuch') # => nil
2584
+ #
2585
+ def get_attribute_ns(namespace, name)
2586
+ result = nil
2587
+ each_attribute() { |attribute|
2588
+ if name == attribute.name &&
2589
+ namespace == attribute.namespace() &&
2590
+ ( !namespace.empty? || !attribute.fully_expanded_name.index(':') )
2591
+ # foo will match xmlns:foo, but only if foo isn't also an attribute
2592
+ result = attribute if !result or !namespace.empty? or
2593
+ !attribute.fully_expanded_name.index(':')
2594
+ end
2595
+ }
2596
+ result
2597
+ end
2598
+ end
2599
+ end