honeybadger 5.3.0 → 5.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (513) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/lib/honeybadger/plugins/active_job.rb +28 -0
  4. data/lib/honeybadger/version.rb +1 -1
  5. data/vendor/bundle/ruby/3.2.0/gems/cucumber-9.1.0/lib/cucumber/deprecate.rb +14 -0
  6. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/ast_lookup.rb +14 -6
  7. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/console.rb +7 -2
  8. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/json.rb +1 -1
  9. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/message_builder.rb +14 -5
  10. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/pretty.rb +6 -2
  11. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/glue/proto_world.rb +17 -22
  12. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/glue/registry_and_more.rb +7 -4
  13. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/rake/task.rb +1 -5
  14. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/runtime/for_programming_languages.rb +1 -2
  15. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/runtime/meta_message_builder.rb +2 -2
  16. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/runtime/user_interface.rb +2 -2
  17. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/event.rb +1 -1
  18. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/lib/cucumber/cucumber_expressions/argument.rb +7 -3
  19. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/lib/cucumber/cucumber_expressions/ast.rb +24 -59
  20. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/lib/cucumber/cucumber_expressions/combinatorial_generated_expression_factory.rb +6 -13
  21. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/lib/cucumber/cucumber_expressions/cucumber_expression.rb +9 -11
  22. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/lib/cucumber/cucumber_expressions/cucumber_expression_generator.rb +11 -15
  23. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/lib/cucumber/cucumber_expressions/cucumber_expression_parser.rb +37 -53
  24. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/lib/cucumber/cucumber_expressions/cucumber_expression_tokenizer.rb +13 -18
  25. data/vendor/bundle/ruby/3.2.0/gems/cucumber-cucumber-expressions-17.0.1/lib/cucumber/cucumber_expressions/errors.rb +232 -0
  26. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/lib/cucumber/cucumber_expressions/expression_factory.rb +2 -0
  27. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/lib/cucumber/cucumber_expressions/generated_expression.rb +2 -0
  28. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/lib/cucumber/cucumber_expressions/group.rb +2 -0
  29. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/lib/cucumber/cucumber_expressions/group_builder.rb +3 -1
  30. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/lib/cucumber/cucumber_expressions/parameter_type.rb +13 -23
  31. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/lib/cucumber/cucumber_expressions/parameter_type_matcher.rb +8 -6
  32. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/lib/cucumber/cucumber_expressions/parameter_type_registry.rb +27 -22
  33. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/lib/cucumber/cucumber_expressions/regular_expression.rb +3 -2
  34. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/lib/cucumber/cucumber_expressions/tree_regexp.rb +8 -7
  35. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/spec/cucumber/cucumber_expressions/argument_spec.rb +4 -2
  36. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/spec/cucumber/cucumber_expressions/combinatorial_generated_expression_factory_test.rb +8 -7
  37. data/vendor/bundle/ruby/3.2.0/gems/cucumber-cucumber-expressions-17.0.1/spec/cucumber/cucumber_expressions/cucumber_expression_generator_spec.rb +234 -0
  38. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/spec/cucumber/cucumber_expressions/cucumber_expression_parser_spec.rb +2 -0
  39. data/vendor/bundle/ruby/3.2.0/gems/cucumber-cucumber-expressions-17.0.1/spec/cucumber/cucumber_expressions/cucumber_expression_spec.rb +178 -0
  40. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/spec/cucumber/cucumber_expressions/cucumber_expression_tokenizer_spec.rb +3 -1
  41. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/spec/cucumber/cucumber_expressions/cucumber_expression_transformation_spec.rb +2 -0
  42. data/vendor/bundle/ruby/3.2.0/gems/cucumber-cucumber-expressions-17.0.1/spec/cucumber/cucumber_expressions/custom_parameter_type_spec.rb +216 -0
  43. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/spec/cucumber/cucumber_expressions/expression_factory_spec.rb +2 -0
  44. data/vendor/bundle/ruby/3.2.0/gems/cucumber-cucumber-expressions-17.0.1/spec/cucumber/cucumber_expressions/parameter_type_registry_spec.rb +81 -0
  45. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/spec/cucumber/cucumber_expressions/parameter_type_spec.rb +5 -2
  46. data/vendor/bundle/ruby/3.2.0/gems/cucumber-cucumber-expressions-17.0.1/spec/cucumber/cucumber_expressions/regular_expression_spec.rb +93 -0
  47. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-cucumber-expressions-17.0.1}/spec/cucumber/cucumber_expressions/tree_regexp_spec.rb +23 -22
  48. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/lib/cucumber/messages.deserializers.rb +1 -0
  49. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/lib/cucumber/messages.dtos.rb +5 -1
  50. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-tag-expressions-4.1.0 → cucumber-tag-expressions-5.0.6}/lib/cucumber/tag_expressions/expressions.rb +21 -2
  51. data/vendor/bundle/ruby/3.2.0/gems/{cucumber-tag-expressions-4.1.0 → cucumber-tag-expressions-5.0.6}/lib/cucumber/tag_expressions/parser.rb +48 -48
  52. data/vendor/bundle/ruby/3.2.0/gems/cucumber-tag-expressions-5.0.6/spec/errors_spec.rb +13 -0
  53. data/vendor/bundle/ruby/3.2.0/gems/cucumber-tag-expressions-5.0.6/spec/evaluations_spec.rb +17 -0
  54. data/vendor/bundle/ruby/3.2.0/gems/cucumber-tag-expressions-5.0.6/spec/parsing_spec.rb +14 -0
  55. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/device/date_rolling_log_file.rb +1 -1
  56. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/device/log_file.rb +1 -1
  57. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/device/multi.rb +1 -1
  58. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/device/null.rb +1 -1
  59. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/device/rolling_log_file.rb +1 -1
  60. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/device/size_rolling_log_file.rb +1 -1
  61. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/device/writer.rb +1 -1
  62. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/device.rb +1 -1
  63. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/formatter/date_time_formatter.rb +1 -1
  64. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/formatter/exception_formatter.rb +2 -2
  65. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/formatter/id_formatter.rb +1 -1
  66. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/formatter/inspect_formatter.rb +1 -1
  67. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/formatter/object_formatter.rb +1 -1
  68. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/formatter/pretty_print_formatter.rb +1 -1
  69. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/formatter/string_formatter.rb +1 -1
  70. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/formatter/strip_formatter.rb +1 -1
  71. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/formatter/structured_formatter.rb +1 -1
  72. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/formatter/truncate_formatter.rb +1 -1
  73. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/formatter.rb +1 -1
  74. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/log_entry.rb +2 -2
  75. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/logger.rb +10 -6
  76. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/rack/context.rb +1 -1
  77. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/rack/request_id.rb +1 -1
  78. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/rack/unit_of_work.rb +1 -1
  79. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/rack.rb +1 -1
  80. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/severity.rb +13 -1
  81. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/template.rb +2 -2
  82. data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack.rb +2 -1
  83. data/vendor/bundle/ruby/3.2.0/gems/{public_suffix-5.0.3 → public_suffix-5.0.4}/lib/public_suffix/version.rb +1 -1
  84. data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/application.rb +26 -2
  85. data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/dsl_definition.rb +1 -1
  86. data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/file_task.rb +8 -4
  87. data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/file_utils.rb +0 -2
  88. data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/packagetask.rb +1 -1
  89. data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/task.rb +2 -2
  90. data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/thread_pool.rb +1 -1
  91. data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/version.rb +1 -1
  92. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/alias.rb +111 -0
  93. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/anon_class.rb +10 -0
  94. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/any_method.rb +379 -0
  95. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/attr.rb +175 -0
  96. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/class_module.rb +801 -0
  97. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/code_object.rb +421 -0
  98. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/code_objects.rb +5 -0
  99. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/comment.rb +229 -0
  100. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/constant.rb +186 -0
  101. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/context/section.rb +233 -0
  102. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/context.rb +1264 -0
  103. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/cross_reference.rb +225 -0
  104. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/encoding.rb +131 -0
  105. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/erb_partial.rb +18 -0
  106. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/erbio.rb +37 -0
  107. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/extend.rb +9 -0
  108. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/generator/darkfish.rb +786 -0
  109. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/generator/json_index.rb +300 -0
  110. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/generator/markup.rb +159 -0
  111. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/generator/pot/message_extractor.rb +68 -0
  112. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/generator/pot/po.rb +84 -0
  113. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/generator/pot/po_entry.rb +141 -0
  114. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/generator/pot.rb +98 -0
  115. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/generator/ri.rb +30 -0
  116. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/generator.rb +51 -0
  117. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/ghost_method.rb +6 -0
  118. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/i18n/locale.rb +102 -0
  119. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/i18n/text.rb +126 -0
  120. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/i18n.rb +10 -0
  121. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/include.rb +9 -0
  122. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/known_classes.rb +74 -0
  123. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markdown/entities.rb +2131 -0
  124. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markdown/literals.rb +474 -0
  125. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markdown.rb +16783 -0
  126. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/attr_changer.rb +22 -0
  127. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/attr_span.rb +35 -0
  128. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/attribute_manager.rb +402 -0
  129. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/attributes.rb +70 -0
  130. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/blank_line.rb +27 -0
  131. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/block_quote.rb +14 -0
  132. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/document.rb +164 -0
  133. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/formatter.rb +265 -0
  134. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/hard_break.rb +31 -0
  135. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/heading.rb +78 -0
  136. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/include.rb +42 -0
  137. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/indented_paragraph.rb +47 -0
  138. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/list.rb +101 -0
  139. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/list_item.rb +99 -0
  140. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/paragraph.rb +28 -0
  141. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/parser.rb +581 -0
  142. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/pre_process.rb +298 -0
  143. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/raw.rb +69 -0
  144. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/regexp_handling.rb +40 -0
  145. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/rule.rb +20 -0
  146. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/table.rb +47 -0
  147. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/to_ansi.rb +93 -0
  148. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/to_bs.rb +77 -0
  149. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/to_html.rb +449 -0
  150. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/to_html_crossref.rb +175 -0
  151. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/to_html_snippet.rb +284 -0
  152. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/to_joined_paragraph.rb +46 -0
  153. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/to_label.rb +74 -0
  154. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/to_markdown.rb +191 -0
  155. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/to_rdoc.rb +344 -0
  156. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/to_table_of_contents.rb +88 -0
  157. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/to_test.rb +69 -0
  158. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/to_tt_only.rb +120 -0
  159. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup/verbatim.rb +83 -0
  160. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/markup.rb +235 -0
  161. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/meta_method.rb +6 -0
  162. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/method_attr.rb +418 -0
  163. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/mixin.rb +120 -0
  164. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/normal_class.rb +92 -0
  165. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/normal_module.rb +73 -0
  166. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/options.rb +1330 -0
  167. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/parser/c.rb +1225 -0
  168. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/parser/changelog.rb +334 -0
  169. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/parser/markdown.rb +22 -0
  170. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/parser/rd.rb +22 -0
  171. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/parser/ripper_state_lex.rb +590 -0
  172. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/parser/ruby.rb +2360 -0
  173. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/parser/ruby_tools.rb +165 -0
  174. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/parser/simple.rb +61 -0
  175. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/parser/text.rb +11 -0
  176. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/parser.rb +294 -0
  177. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/rd/block_parser.rb +1710 -0
  178. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/rd/inline.rb +71 -0
  179. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/rd/inline_parser.rb +1210 -0
  180. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/rd.rb +99 -0
  181. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/rdoc.rb +563 -0
  182. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/require.rb +51 -0
  183. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/ri/driver.rb +1513 -0
  184. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/ri/formatter.rb +6 -0
  185. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/ri/paths.rb +171 -0
  186. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/ri/store.rb +6 -0
  187. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/ri/task.rb +71 -0
  188. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/ri.rb +20 -0
  189. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/rubygems_hook.rb +248 -0
  190. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/servlet.rb +451 -0
  191. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/single_class.rb +30 -0
  192. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/stats/normal.rb +58 -0
  193. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/stats/quiet.rb +59 -0
  194. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/stats/verbose.rb +44 -0
  195. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/stats.rb +461 -0
  196. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/store.rb +979 -0
  197. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/task.rb +355 -0
  198. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/text.rb +312 -0
  199. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/token_stream.rb +118 -0
  200. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/tom_doc.rb +263 -0
  201. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/top_level.rb +288 -0
  202. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc/version.rb +10 -0
  203. data/vendor/bundle/ruby/3.2.0/gems/rdoc-6.6.0/lib/rdoc.rb +201 -0
  204. data/vendor/bundle/ruby/3.2.0/gems/sshkit-1.21.6/lib/sshkit/version.rb +3 -0
  205. data/vendor/bundle/ruby/3.2.0/gems/stringio-3.1.0/ext/stringio/extconf.rb +7 -0
  206. metadata +478 -386
  207. data/vendor/bundle/ruby/3.2.0/gems/cucumber-9.0.2/lib/cucumber/deprecate.rb +0 -55
  208. data/vendor/bundle/ruby/3.2.0/gems/cucumber-cucumber-expressions-16.1.2/lib/cucumber/cucumber_expressions/errors.rb +0 -214
  209. data/vendor/bundle/ruby/3.2.0/gems/cucumber-cucumber-expressions-16.1.2/spec/cucumber/cucumber_expressions/cucumber_expression_generator_spec.rb +0 -231
  210. data/vendor/bundle/ruby/3.2.0/gems/cucumber-cucumber-expressions-16.1.2/spec/cucumber/cucumber_expressions/cucumber_expression_spec.rb +0 -181
  211. data/vendor/bundle/ruby/3.2.0/gems/cucumber-cucumber-expressions-16.1.2/spec/cucumber/cucumber_expressions/custom_parameter_type_spec.rb +0 -197
  212. data/vendor/bundle/ruby/3.2.0/gems/cucumber-cucumber-expressions-16.1.2/spec/cucumber/cucumber_expressions/parameter_type_registry_spec.rb +0 -86
  213. data/vendor/bundle/ruby/3.2.0/gems/cucumber-cucumber-expressions-16.1.2/spec/cucumber/cucumber_expressions/regular_expression_spec.rb +0 -84
  214. data/vendor/bundle/ruby/3.2.0/gems/cucumber-messages-21.0.1/spec/capture_warnings.rb +0 -74
  215. data/vendor/bundle/ruby/3.2.0/gems/cucumber-tag-expressions-4.1.0/spec/capture_warnings.rb +0 -74
  216. data/vendor/bundle/ruby/3.2.0/gems/cucumber-tag-expressions-4.1.0/spec/expressions_spec.rb +0 -84
  217. data/vendor/bundle/ruby/3.2.0/gems/cucumber-tag-expressions-4.1.0/spec/parser_spec.rb +0 -50
  218. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/acceptance_test.rb +0 -131
  219. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/benchmarks/bm_find.rb +0 -66
  220. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/benchmarks/bm_find_all.rb +0 -102
  221. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/benchmarks/bm_names.rb +0 -91
  222. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/benchmarks/bm_select.rb +0 -26
  223. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/benchmarks/bm_select_incremental.rb +0 -25
  224. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/benchmarks/bm_valid.rb +0 -101
  225. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/profilers/domain_profiler.rb +0 -12
  226. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/profilers/find_profiler.rb +0 -12
  227. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/profilers/find_profiler_jp.rb +0 -12
  228. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/profilers/initialization_profiler.rb +0 -11
  229. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/profilers/list_profsize.rb +0 -11
  230. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/profilers/object_binsize.rb +0 -57
  231. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/psl_test.rb +0 -52
  232. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/test_helper.rb +0 -10
  233. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/unit/domain_test.rb +0 -106
  234. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/unit/errors_test.rb +0 -25
  235. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/unit/list_test.rb +0 -241
  236. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/unit/public_suffix_test.rb +0 -188
  237. data/vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.3/test/unit/rule_test.rb +0 -222
  238. data/vendor/bundle/ruby/3.2.0/gems/sshkit-1.21.5/lib/sshkit/version.rb +0 -3
  239. data/vendor/bundle/ruby/3.2.0/gems/stringio-3.0.8/ext/stringio/extconf.rb +0 -3
  240. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/autotest/cucumber.rb +0 -0
  241. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/autotest/cucumber_mixin.rb +0 -0
  242. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/autotest/cucumber_rails.rb +0 -0
  243. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/autotest/cucumber_rails_rspec.rb +0 -0
  244. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/autotest/cucumber_rails_rspec2.rb +0 -0
  245. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/autotest/cucumber_rspec.rb +0 -0
  246. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/autotest/cucumber_rspec2.rb +0 -0
  247. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/autotest/discover.rb +0 -0
  248. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/cli/configuration.rb +0 -0
  249. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/cli/main.rb +0 -0
  250. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/cli/options.rb +0 -0
  251. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/cli/profile_loader.rb +0 -0
  252. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/cli/rerun_file.rb +0 -0
  253. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/configuration.rb +0 -0
  254. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/constantize.rb +0 -0
  255. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/encoding.rb +0 -0
  256. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/errors.rb +0 -0
  257. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/events/envelope.rb +0 -0
  258. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/events/gherkin_source_parsed.rb +0 -0
  259. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/events/gherkin_source_read.rb +0 -0
  260. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/events/hook_test_step_created.rb +0 -0
  261. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/events/step_activated.rb +0 -0
  262. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/events/step_definition_registered.rb +0 -0
  263. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/events/test_case_created.rb +0 -0
  264. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/events/test_case_finished.rb +0 -0
  265. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/events/test_case_ready.rb +0 -0
  266. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/events/test_case_started.rb +0 -0
  267. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/events/test_run_finished.rb +0 -0
  268. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/events/test_run_started.rb +0 -0
  269. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/events/test_step_created.rb +0 -0
  270. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/events/test_step_finished.rb +0 -0
  271. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/events/test_step_started.rb +0 -0
  272. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/events/undefined_parameter_type.rb +0 -0
  273. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/events.rb +0 -0
  274. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/file_specs.rb +0 -0
  275. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/filters/activate_steps.rb +0 -0
  276. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/filters/apply_after_hooks.rb +0 -0
  277. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/filters/apply_after_step_hooks.rb +0 -0
  278. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/filters/apply_around_hooks.rb +0 -0
  279. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/filters/apply_before_hooks.rb +0 -0
  280. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/filters/broadcast_test_case_ready_event.rb +0 -0
  281. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/filters/broadcast_test_run_started_event.rb +0 -0
  282. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/filters/gated_receiver.rb +0 -0
  283. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/filters/prepare_world.rb +0 -0
  284. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/filters/quit.rb +0 -0
  285. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/filters/randomizer.rb +0 -0
  286. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/filters/retry.rb +0 -0
  287. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/filters/tag_limits/test_case_index.rb +0 -0
  288. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/filters/tag_limits/verifier.rb +0 -0
  289. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/filters/tag_limits.rb +0 -0
  290. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/filters.rb +0 -0
  291. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/ansicolor.rb +0 -0
  292. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/backtrace_filter.rb +0 -0
  293. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/console_counts.rb +0 -0
  294. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/console_issues.rb +0 -0
  295. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/duration.rb +0 -0
  296. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/duration_extractor.rb +0 -0
  297. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/errors.rb +0 -0
  298. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/fail_fast.rb +0 -0
  299. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/fanout.rb +0 -0
  300. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/html.rb +0 -0
  301. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/http_io.rb +0 -0
  302. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/ignore_missing_messages.rb +0 -0
  303. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/interceptor.rb +0 -0
  304. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/io.rb +0 -0
  305. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/junit.rb +0 -0
  306. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/message.rb +0 -0
  307. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/progress.rb +0 -0
  308. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/publish_banner_printer.rb +0 -0
  309. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/query/hook_by_test_step.rb +0 -0
  310. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/query/pickle_by_test.rb +0 -0
  311. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/query/pickle_step_by_test_step.rb +0 -0
  312. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/query/step_definitions_by_test_step.rb +0 -0
  313. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/query/test_case_started_by_test_case.rb +0 -0
  314. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/rerun.rb +0 -0
  315. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/stepdefs.rb +0 -0
  316. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/steps.rb +0 -0
  317. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/summary.rb +0 -0
  318. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/unicode.rb +0 -0
  319. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/url_reporter.rb +0 -0
  320. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/formatter/usage.rb +0 -0
  321. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/gherkin/data_table_parser.rb +0 -0
  322. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/gherkin/formatter/ansi_escapes.rb +0 -0
  323. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/gherkin/formatter/escaping.rb +0 -0
  324. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/gherkin/i18n.rb +0 -0
  325. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/gherkin/steps_parser.rb +0 -0
  326. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/glue/dsl.rb +0 -0
  327. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/glue/hook.rb +0 -0
  328. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/glue/invoke_in_world.rb +0 -0
  329. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/glue/registry_wrapper.rb +0 -0
  330. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/glue/snippet.rb +0 -0
  331. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/glue/step_definition.rb +0 -0
  332. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/glue/world_factory.rb +0 -0
  333. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/hooks.rb +0 -0
  334. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/load_path.rb +0 -0
  335. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +0 -0
  336. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/multiline_argument/data_table.rb +0 -0
  337. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/multiline_argument/doc_string.rb +0 -0
  338. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/multiline_argument.rb +0 -0
  339. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/platform.rb +0 -0
  340. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/project_initializer.rb +0 -0
  341. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/rspec/disable_option_parser.rb +0 -0
  342. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/rspec/doubles.rb +0 -0
  343. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/running_test_case.rb +0 -0
  344. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/runtime/after_hooks.rb +0 -0
  345. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/runtime/before_hooks.rb +0 -0
  346. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/runtime/step_hooks.rb +0 -0
  347. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/runtime/support_code.rb +0 -0
  348. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/runtime.rb +0 -0
  349. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/step_definition_light.rb +0 -0
  350. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/step_definitions.rb +0 -0
  351. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/step_match.rb +0 -0
  352. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/step_match_search.rb +0 -0
  353. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/term/ansicolor.rb +0 -0
  354. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/term/banner.rb +0 -0
  355. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber/unit.rb +0 -0
  356. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/cucumber.rb +0 -0
  357. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-9.0.2 → cucumber-9.1.0}/lib/simplecov_setup.rb +0 -0
  358. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/compiler.rb +0 -0
  359. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/event_bus.rb +0 -0
  360. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/events.rb +0 -0
  361. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/filter.rb +0 -0
  362. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/gherkin/document.rb +0 -0
  363. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/gherkin/parser.rb +0 -0
  364. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/gherkin/writer/helpers.rb +0 -0
  365. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/gherkin/writer.rb +0 -0
  366. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/platform.rb +0 -0
  367. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/report/summary.rb +0 -0
  368. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/test/action.rb +0 -0
  369. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/test/around_hook.rb +0 -0
  370. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/test/case.rb +0 -0
  371. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/test/data_table.rb +0 -0
  372. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/test/doc_string.rb +0 -0
  373. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/test/empty_multiline_argument.rb +0 -0
  374. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/test/filters/activate_steps_for_self_test.rb +0 -0
  375. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/test/filters/locations_filter.rb +0 -0
  376. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/test/filters/name_filter.rb +0 -0
  377. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/test/filters/tag_filter.rb +0 -0
  378. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/test/filters.rb +0 -0
  379. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/test/location.rb +0 -0
  380. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/test/result.rb +0 -0
  381. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/test/runner.rb +0 -0
  382. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/test/step.rb +0 -0
  383. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/test/tag.rb +0 -0
  384. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core/test/timer.rb +0 -0
  385. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-core-11.1.0 → cucumber-core-12.0.0}/lib/cucumber/core.rb +0 -0
  386. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/lib/cucumber/messages/id_generator.rb +0 -0
  387. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/lib/cucumber/messages/message/deserialization.rb +0 -0
  388. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/lib/cucumber/messages/message/serialization.rb +0 -0
  389. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/lib/cucumber/messages/message/utils.rb +0 -0
  390. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/lib/cucumber/messages/message.rb +0 -0
  391. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/lib/cucumber/messages/ndjson_to_message_enumerator.rb +0 -0
  392. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/lib/cucumber/messages/time_conversion.rb +0 -0
  393. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/lib/cucumber/messages.rb +0 -0
  394. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-cucumber-expressions-16.1.2 → cucumber-messages-22.0.0}/spec/capture_warnings.rb +0 -0
  395. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/spec/cucumber/messages/acceptance_spec.rb +0 -0
  396. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/spec/cucumber/messages/id_generator_spec.rb +0 -0
  397. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/spec/cucumber/messages/message/deserialization_spec.rb +0 -0
  398. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/spec/cucumber/messages/message/dummy_messages.rb +0 -0
  399. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/spec/cucumber/messages/message/serialization_spec.rb +0 -0
  400. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/spec/cucumber/messages/message/utils_spec.rb +0 -0
  401. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/spec/cucumber/messages/ndjson_serialization_spec.rb +0 -0
  402. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/spec/cucumber/messages/time_conversion_spec.rb +0 -0
  403. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-messages-21.0.1 → cucumber-messages-22.0.0}/spec/cucumber/messages/version_spec.rb +0 -0
  404. /data/vendor/bundle/ruby/3.2.0/gems/{cucumber-tag-expressions-4.1.0 → cucumber-tag-expressions-5.0.6}/lib/cucumber/tag_expressions.rb +0 -0
  405. /data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/context.rb +0 -0
  406. /data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/tag_formatter.rb +0 -0
  407. /data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/tagged_logger_support.rb +0 -0
  408. /data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/tagged_logging.rb +0 -0
  409. /data/vendor/bundle/ruby/3.2.0/gems/{lumberjack-1.2.9 → lumberjack-1.2.10}/lib/lumberjack/tags.rb +0 -0
  410. /data/vendor/bundle/ruby/3.2.0/gems/{public_suffix-5.0.3 → public_suffix-5.0.4}/lib/public_suffix/domain.rb +0 -0
  411. /data/vendor/bundle/ruby/3.2.0/gems/{public_suffix-5.0.3 → public_suffix-5.0.4}/lib/public_suffix/errors.rb +0 -0
  412. /data/vendor/bundle/ruby/3.2.0/gems/{public_suffix-5.0.3 → public_suffix-5.0.4}/lib/public_suffix/list.rb +0 -0
  413. /data/vendor/bundle/ruby/3.2.0/gems/{public_suffix-5.0.3 → public_suffix-5.0.4}/lib/public_suffix/rule.rb +0 -0
  414. /data/vendor/bundle/ruby/3.2.0/gems/{public_suffix-5.0.3 → public_suffix-5.0.4}/lib/public_suffix.rb +0 -0
  415. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/doc/jamis.rb +0 -0
  416. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/backtrace.rb +0 -0
  417. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/clean.rb +0 -0
  418. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/cloneable.rb +0 -0
  419. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/cpu_counter.rb +0 -0
  420. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/default_loader.rb +0 -0
  421. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/early_time.rb +0 -0
  422. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/ext/core.rb +0 -0
  423. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/ext/string.rb +0 -0
  424. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/file_creation_task.rb +0 -0
  425. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/file_list.rb +0 -0
  426. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/file_utils_ext.rb +0 -0
  427. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/invocation_chain.rb +0 -0
  428. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/invocation_exception_mixin.rb +0 -0
  429. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/late_time.rb +0 -0
  430. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/linked_list.rb +0 -0
  431. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/loaders/makefile.rb +0 -0
  432. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/multi_task.rb +0 -0
  433. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/name_space.rb +0 -0
  434. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/phony.rb +0 -0
  435. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/private_reader.rb +0 -0
  436. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/promise.rb +0 -0
  437. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/pseudo_status.rb +0 -0
  438. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/rake_module.rb +0 -0
  439. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/rake_test_loader.rb +0 -0
  440. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/rule_recursion_overflow_error.rb +0 -0
  441. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/scope.rb +0 -0
  442. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/task_argument_error.rb +0 -0
  443. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/task_arguments.rb +0 -0
  444. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/task_manager.rb +0 -0
  445. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/tasklib.rb +0 -0
  446. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/testtask.rb +0 -0
  447. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/thread_history_display.rb +0 -0
  448. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/trace_output.rb +0 -0
  449. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake/win32.rb +0 -0
  450. /data/vendor/bundle/ruby/3.2.0/gems/{rake-13.0.6 → rake-13.1.0}/lib/rake.rb +0 -0
  451. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/examples/simple_connection.rb +0 -0
  452. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/core_ext/array.rb +0 -0
  453. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/core_ext/hash.rb +0 -0
  454. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/all.rb +0 -0
  455. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/backends/abstract.rb +0 -0
  456. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/backends/connection_pool/cache.rb +0 -0
  457. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/backends/connection_pool/nil_cache.rb +0 -0
  458. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/backends/connection_pool.rb +0 -0
  459. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/backends/local.rb +0 -0
  460. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/backends/netssh/known_hosts.rb +0 -0
  461. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/backends/netssh.rb +0 -0
  462. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/backends/printer.rb +0 -0
  463. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/backends/skipper.rb +0 -0
  464. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/color.rb +0 -0
  465. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/command.rb +0 -0
  466. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/command_map.rb +0 -0
  467. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/configuration.rb +0 -0
  468. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/coordinator.rb +0 -0
  469. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/deprecation_logger.rb +0 -0
  470. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/dsl.rb +0 -0
  471. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/exception.rb +0 -0
  472. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/formatters/abstract.rb +0 -0
  473. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/formatters/black_hole.rb +0 -0
  474. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/formatters/dot.rb +0 -0
  475. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/formatters/pretty.rb +0 -0
  476. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/formatters/simple_text.rb +0 -0
  477. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/host.rb +0 -0
  478. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/log_message.rb +0 -0
  479. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/logger.rb +0 -0
  480. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/mapping_interaction_handler.rb +0 -0
  481. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/runners/abstract.rb +0 -0
  482. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/runners/group.rb +0 -0
  483. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/runners/null.rb +0 -0
  484. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/runners/parallel.rb +0 -0
  485. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit/runners/sequential.rb +0 -0
  486. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/lib/sshkit.rb +0 -0
  487. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/functional/backends/test_local.rb +0 -0
  488. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/functional/backends/test_netssh.rb +0 -0
  489. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/functional/test_ssh_server_comes_up_for_functional_tests.rb +0 -0
  490. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/helper.rb +0 -0
  491. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/support/vagrant_wrapper.rb +0 -0
  492. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/backends/test_abstract.rb +0 -0
  493. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/backends/test_connection_pool.rb +0 -0
  494. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/backends/test_local.rb +0 -0
  495. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/backends/test_netssh.rb +0 -0
  496. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/backends/test_printer.rb +0 -0
  497. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/formatters/test_custom.rb +0 -0
  498. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/formatters/test_dot.rb +0 -0
  499. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/formatters/test_pretty.rb +0 -0
  500. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/formatters/test_simple_text.rb +0 -0
  501. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/runners/test_group.rb +0 -0
  502. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/runners/test_parallel.rb +0 -0
  503. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/runners/test_sequential.rb +0 -0
  504. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/test_color.rb +0 -0
  505. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/test_command.rb +0 -0
  506. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/test_command_map.rb +0 -0
  507. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/test_configuration.rb +0 -0
  508. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/test_coordinator.rb +0 -0
  509. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/test_deprecation_logger.rb +0 -0
  510. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/test_dsl.rb +0 -0
  511. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/test_host.rb +0 -0
  512. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/test_logger.rb +0 -0
  513. /data/vendor/bundle/ruby/3.2.0/gems/{sshkit-1.21.5 → sshkit-1.21.6}/test/unit/test_mapping_interaction_handler.rb +0 -0
@@ -0,0 +1,1513 @@
1
+ # frozen_string_literal: true
2
+ require 'optparse'
3
+
4
+ require_relative '../../rdoc'
5
+
6
+ require_relative 'formatter' # For RubyGems backwards compatibility
7
+ # TODO: Fix weird documentation with `require_relative`
8
+
9
+ ##
10
+ # The RI driver implements the command-line ri tool.
11
+ #
12
+ # The driver supports:
13
+ # * loading RI data from:
14
+ # * Ruby's standard library
15
+ # * RubyGems
16
+ # * ~/.rdoc
17
+ # * A user-supplied directory
18
+ # * Paging output (uses RI_PAGER environment variable, PAGER environment
19
+ # variable or the less, more and pager programs)
20
+ # * Interactive mode with tab-completion
21
+ # * Abbreviated names (ri Zl shows Zlib documentation)
22
+ # * Colorized output
23
+ # * Merging output from multiple RI data sources
24
+
25
+ class RDoc::RI::Driver
26
+
27
+ ##
28
+ # Base Driver error class
29
+
30
+ class Error < RDoc::RI::Error; end
31
+
32
+ ##
33
+ # Raised when a name isn't found in the ri data stores
34
+
35
+ class NotFoundError < Error
36
+
37
+ def initialize(klass, suggestion_proc = nil) # :nodoc:
38
+ @klass = klass
39
+ @suggestion_proc = suggestion_proc
40
+ end
41
+
42
+ ##
43
+ # Name that wasn't found
44
+
45
+ def name
46
+ @klass
47
+ end
48
+
49
+ def message # :nodoc:
50
+ str = "Nothing known about #{@klass}"
51
+ suggestions = @suggestion_proc&.call
52
+ if suggestions and !suggestions.empty?
53
+ str += "\nDid you mean? #{suggestions.join("\n ")}"
54
+ end
55
+ str
56
+ end
57
+ end
58
+
59
+ ##
60
+ # Show all method documentation following a class or module
61
+
62
+ attr_accessor :show_all
63
+
64
+ ##
65
+ # An RDoc::RI::Store for each entry in the RI path
66
+
67
+ attr_accessor :stores
68
+
69
+ ##
70
+ # Controls the user of the pager vs $stdout
71
+
72
+ attr_accessor :use_stdout
73
+
74
+ ##
75
+ # Default options for ri
76
+
77
+ def self.default_options
78
+ options = {}
79
+ options[:interactive] = false
80
+ options[:profile] = false
81
+ options[:show_all] = false
82
+ options[:use_stdout] = !$stdout.tty?
83
+ options[:width] = 72
84
+
85
+ # By default all standard paths are used.
86
+ options[:use_system] = true
87
+ options[:use_site] = true
88
+ options[:use_home] = true
89
+ options[:use_gems] = true
90
+ options[:extra_doc_dirs] = []
91
+
92
+ return options
93
+ end
94
+
95
+ ##
96
+ # Dump +data_path+ using pp
97
+
98
+ def self.dump data_path
99
+ require 'pp'
100
+
101
+ File.open data_path, 'rb' do |io|
102
+ pp Marshal.load(io.read)
103
+ end
104
+ end
105
+
106
+ ##
107
+ # Parses +argv+ and returns a Hash of options
108
+
109
+ def self.process_args argv
110
+ options = default_options
111
+
112
+ opts = OptionParser.new do |opt|
113
+ opt.accept File do |file,|
114
+ File.readable?(file) and not File.directory?(file) and file
115
+ end
116
+
117
+ opt.program_name = File.basename $0
118
+ opt.version = RDoc::VERSION
119
+ opt.release = nil
120
+ opt.summary_indent = ' ' * 4
121
+
122
+ opt.banner = <<-EOT
123
+ Usage: #{opt.program_name} [options] [name ...]
124
+
125
+ Where name can be:
126
+
127
+ Class | Module | Module::Class
128
+
129
+ Class::method | Class#method | Class.method | method
130
+
131
+ gem_name: | gem_name:README | gem_name:History
132
+
133
+ ruby: | ruby:NEWS | ruby:globals
134
+
135
+ All class names may be abbreviated to their minimum unambiguous form.
136
+ If a name is ambiguous, all valid options will be listed.
137
+
138
+ A '.' matches either class or instance methods, while #method
139
+ matches only instance and ::method matches only class methods.
140
+
141
+ README and other files may be displayed by prefixing them with the gem name
142
+ they're contained in. If the gem name is followed by a ':' all files in the
143
+ gem will be shown. The file name extension may be omitted where it is
144
+ unambiguous.
145
+
146
+ 'ruby' can be used as a pseudo gem name to display files from the Ruby
147
+ core documentation. Use 'ruby:' by itself to get a list of all available
148
+ core documentation files.
149
+
150
+ For example:
151
+
152
+ #{opt.program_name} Fil
153
+ #{opt.program_name} File
154
+ #{opt.program_name} File.new
155
+ #{opt.program_name} zip
156
+ #{opt.program_name} rdoc:README
157
+ #{opt.program_name} ruby:comments
158
+
159
+ Note that shell quoting or escaping may be required for method names
160
+ containing punctuation:
161
+
162
+ #{opt.program_name} 'Array.[]'
163
+ #{opt.program_name} compact\\!
164
+
165
+ To see the default directories #{opt.program_name} will search, run:
166
+
167
+ #{opt.program_name} --list-doc-dirs
168
+
169
+ Specifying the --system, --site, --home, --gems, or --doc-dir options
170
+ will limit ri to searching only the specified directories.
171
+
172
+ ri options may be set in the RI environment variable.
173
+
174
+ The ri pager can be set with the RI_PAGER environment variable
175
+ or the PAGER environment variable.
176
+ EOT
177
+
178
+ opt.separator nil
179
+ opt.separator "Options:"
180
+
181
+ opt.separator nil
182
+
183
+ opt.on("--[no-]interactive", "-i",
184
+ "In interactive mode you can repeatedly",
185
+ "look up methods with autocomplete.") do |interactive|
186
+ options[:interactive] = interactive
187
+ end
188
+
189
+ opt.separator nil
190
+
191
+ opt.on("--[no-]all", "-a",
192
+ "Show all documentation for a class or",
193
+ "module.") do |show_all|
194
+ options[:show_all] = show_all
195
+ end
196
+
197
+ opt.separator nil
198
+
199
+ opt.on("--[no-]list", "-l",
200
+ "List classes ri knows about.") do |list|
201
+ options[:list] = list
202
+ end
203
+
204
+ opt.separator nil
205
+
206
+ opt.on("--[no-]pager",
207
+ "Send output to a pager,",
208
+ "rather than directly to stdout.") do |use_pager|
209
+ options[:use_stdout] = !use_pager
210
+ end
211
+
212
+ opt.separator nil
213
+
214
+ opt.on("-T",
215
+ "Synonym for --no-pager.") do
216
+ options[:use_stdout] = true
217
+ end
218
+
219
+ opt.separator nil
220
+
221
+ opt.on("--width=WIDTH", "-w", OptionParser::DecimalInteger,
222
+ "Set the width of the output.") do |width|
223
+ options[:width] = width
224
+ end
225
+
226
+ opt.separator nil
227
+
228
+ opt.on("--server[=PORT]", Integer,
229
+ "Run RDoc server on the given port.",
230
+ "The default port is 8214.") do |port|
231
+ options[:server] = port || 8214
232
+ end
233
+
234
+ opt.separator nil
235
+
236
+ formatters = RDoc::Markup.constants.grep(/^To[A-Z][a-z]+$/).sort
237
+ formatters = formatters.sort.map do |formatter|
238
+ formatter.to_s.sub('To', '').downcase
239
+ end
240
+ formatters -= %w[html label test] # remove useless output formats
241
+
242
+ opt.on("--format=NAME", "-f",
243
+ "Use the selected formatter. The default",
244
+ "formatter is bs for paged output and ansi",
245
+ "otherwise. Valid formatters are:",
246
+ "#{formatters.join(', ')}.", formatters) do |value|
247
+ options[:formatter] = RDoc::Markup.const_get "To#{value.capitalize}"
248
+ end
249
+
250
+ opt.separator nil
251
+
252
+ opt.on("--help", "-h",
253
+ "Show help and exit.") do
254
+ puts opts
255
+ exit
256
+ end
257
+
258
+ opt.separator nil
259
+
260
+ opt.on("--version", "-v",
261
+ "Output version information and exit.") do
262
+ puts "#{opts.program_name} #{opts.version}"
263
+ exit
264
+ end
265
+
266
+ opt.separator nil
267
+ opt.separator "Data source options:"
268
+ opt.separator nil
269
+
270
+ opt.on("--[no-]list-doc-dirs",
271
+ "List the directories from which ri will",
272
+ "source documentation on stdout and exit.") do |list_doc_dirs|
273
+ options[:list_doc_dirs] = list_doc_dirs
274
+ end
275
+
276
+ opt.separator nil
277
+
278
+ opt.on("--doc-dir=DIRNAME", "-d", Array,
279
+ "List of directories from which to source",
280
+ "documentation in addition to the standard",
281
+ "directories. May be repeated.") do |value|
282
+ value.each do |dir|
283
+ unless File.directory? dir then
284
+ raise OptionParser::InvalidArgument, "#{dir} is not a directory"
285
+ end
286
+
287
+ options[:extra_doc_dirs] << File.expand_path(dir)
288
+ end
289
+ end
290
+
291
+ opt.separator nil
292
+
293
+ opt.on("--no-standard-docs",
294
+ "Do not include documentation from",
295
+ "the Ruby standard library, site_lib,",
296
+ "installed gems, or ~/.rdoc.",
297
+ "Use with --doc-dir.") do
298
+ options[:use_system] = false
299
+ options[:use_site] = false
300
+ options[:use_gems] = false
301
+ options[:use_home] = false
302
+ end
303
+
304
+ opt.separator nil
305
+
306
+ opt.on("--[no-]system",
307
+ "Include documentation from Ruby's",
308
+ "standard library. Defaults to true.") do |value|
309
+ options[:use_system] = value
310
+ end
311
+
312
+ opt.separator nil
313
+
314
+ opt.on("--[no-]site",
315
+ "Include documentation from libraries",
316
+ "installed in site_lib.",
317
+ "Defaults to true.") do |value|
318
+ options[:use_site] = value
319
+ end
320
+
321
+ opt.separator nil
322
+
323
+ opt.on("--[no-]gems",
324
+ "Include documentation from RubyGems.",
325
+ "Defaults to true.") do |value|
326
+ options[:use_gems] = value
327
+ end
328
+
329
+ opt.separator nil
330
+
331
+ opt.on("--[no-]home",
332
+ "Include documentation stored in ~/.rdoc.",
333
+ "Defaults to true.") do |value|
334
+ options[:use_home] = value
335
+ end
336
+
337
+ opt.separator nil
338
+ opt.separator "Debug options:"
339
+ opt.separator nil
340
+
341
+ opt.on("--[no-]profile",
342
+ "Run with the ruby profiler.") do |value|
343
+ options[:profile] = value
344
+ end
345
+
346
+ opt.separator nil
347
+
348
+ opt.on("--dump=CACHE", File,
349
+ "Dump data from an ri cache or data file.") do |value|
350
+ options[:dump_path] = value
351
+ end
352
+ end
353
+
354
+ argv = ENV['RI'].to_s.split(' ').concat argv
355
+
356
+ opts.parse! argv
357
+
358
+ options[:names] = argv
359
+
360
+ options[:use_stdout] ||= !$stdout.tty?
361
+ options[:use_stdout] ||= options[:interactive]
362
+ options[:width] ||= 72
363
+
364
+ options
365
+
366
+ rescue OptionParser::InvalidArgument, OptionParser::InvalidOption => e
367
+ puts opts
368
+ puts
369
+ puts e
370
+ exit 1
371
+ end
372
+
373
+ ##
374
+ # Runs the ri command line executable using +argv+
375
+
376
+ def self.run argv = ARGV
377
+ options = process_args argv
378
+
379
+ if options[:dump_path] then
380
+ dump options[:dump_path]
381
+ return
382
+ end
383
+
384
+ ri = new options
385
+ ri.run
386
+ end
387
+
388
+ ##
389
+ # Creates a new driver using +initial_options+ from ::process_args
390
+
391
+ def initialize initial_options = {}
392
+ @paging = false
393
+ @classes = nil
394
+
395
+ options = self.class.default_options.update(initial_options)
396
+
397
+ @formatter_klass = options[:formatter]
398
+
399
+ require 'profile' if options[:profile]
400
+
401
+ @names = options[:names]
402
+ @list = options[:list]
403
+
404
+ @doc_dirs = []
405
+ @stores = []
406
+
407
+ RDoc::RI::Paths.each(options[:use_system], options[:use_site],
408
+ options[:use_home], options[:use_gems],
409
+ *options[:extra_doc_dirs]) do |path, type|
410
+ @doc_dirs << path
411
+
412
+ store = RDoc::RI::Store.new path, type
413
+ store.load_cache
414
+ @stores << store
415
+ end
416
+
417
+ @list_doc_dirs = options[:list_doc_dirs]
418
+
419
+ @interactive = options[:interactive]
420
+ @server = options[:server]
421
+ @use_stdout = options[:use_stdout]
422
+ @show_all = options[:show_all]
423
+ @width = options[:width]
424
+ end
425
+
426
+ ##
427
+ # Adds paths for undocumented classes +also_in+ to +out+
428
+
429
+ def add_also_in out, also_in
430
+ return if also_in.empty?
431
+
432
+ out << RDoc::Markup::Rule.new(1)
433
+ out << RDoc::Markup::Paragraph.new("Also found in:")
434
+
435
+ paths = RDoc::Markup::Verbatim.new
436
+ also_in.each do |store|
437
+ paths.parts.push store.friendly_path, "\n"
438
+ end
439
+ out << paths
440
+ end
441
+
442
+ ##
443
+ # Adds a class header to +out+ for class +name+ which is described in
444
+ # +classes+.
445
+
446
+ def add_class out, name, classes
447
+ heading = if classes.all? { |klass| klass.module? } then
448
+ name
449
+ else
450
+ superclass = classes.map do |klass|
451
+ klass.superclass unless klass.module?
452
+ end.compact.shift || 'Object'
453
+
454
+ superclass = superclass.full_name unless String === superclass
455
+
456
+ "#{name} < #{superclass}"
457
+ end
458
+
459
+ out << RDoc::Markup::Heading.new(1, heading)
460
+ out << RDoc::Markup::BlankLine.new
461
+ end
462
+
463
+ ##
464
+ # Adds "(from ...)" to +out+ for +store+
465
+
466
+ def add_from out, store
467
+ out << RDoc::Markup::Paragraph.new("(from #{store.friendly_path})")
468
+ end
469
+
470
+ ##
471
+ # Adds +extends+ to +out+
472
+
473
+ def add_extends out, extends
474
+ add_extension_modules out, 'Extended by', extends
475
+ end
476
+
477
+ ##
478
+ # Adds a list of +extensions+ to this module of the given +type+ to +out+.
479
+ # add_includes and add_extends call this, so you should use those directly.
480
+
481
+ def add_extension_modules out, type, extensions
482
+ return if extensions.empty?
483
+
484
+ out << RDoc::Markup::Rule.new(1)
485
+ out << RDoc::Markup::Heading.new(1, "#{type}:")
486
+
487
+ extensions.each do |modules, store|
488
+ if modules.length == 1 then
489
+ add_extension_modules_single out, store, modules.first
490
+ else
491
+ add_extension_modules_multiple out, store, modules
492
+ end
493
+ end
494
+ end
495
+
496
+ ##
497
+ # Renders multiple included +modules+ from +store+ to +out+.
498
+
499
+ def add_extension_modules_multiple out, store, modules # :nodoc:
500
+ out << RDoc::Markup::Paragraph.new("(from #{store.friendly_path})")
501
+
502
+ wout, with = modules.partition { |incl| incl.comment.empty? }
503
+
504
+ out << RDoc::Markup::BlankLine.new unless with.empty?
505
+
506
+ with.each do |incl|
507
+ out << RDoc::Markup::Paragraph.new(incl.name)
508
+ out << RDoc::Markup::BlankLine.new
509
+ out << incl.comment
510
+ end
511
+
512
+ unless wout.empty? then
513
+ verb = RDoc::Markup::Verbatim.new
514
+
515
+ wout.each do |incl|
516
+ verb.push incl.name, "\n"
517
+ end
518
+
519
+ out << verb
520
+ end
521
+ end
522
+
523
+ ##
524
+ # Adds a single extension module +include+ from +store+ to +out+
525
+
526
+ def add_extension_modules_single out, store, include # :nodoc:
527
+ name = include.name
528
+ path = store.friendly_path
529
+ out << RDoc::Markup::Paragraph.new("#{name} (from #{path})")
530
+
531
+ if include.comment then
532
+ out << RDoc::Markup::BlankLine.new
533
+ out << include.comment
534
+ end
535
+ end
536
+
537
+ ##
538
+ # Adds +includes+ to +out+
539
+
540
+ def add_includes out, includes
541
+ add_extension_modules out, 'Includes', includes
542
+ end
543
+
544
+ ##
545
+ # Looks up the method +name+ and adds it to +out+
546
+
547
+ def add_method out, name
548
+ filtered = lookup_method name
549
+
550
+ method_out = method_document name, filtered
551
+
552
+ out.concat method_out.parts
553
+ end
554
+
555
+ ##
556
+ # Adds documentation for all methods in +klass+ to +out+
557
+
558
+ def add_method_documentation out, klass
559
+ klass.method_list.each do |method|
560
+ begin
561
+ add_method out, method.full_name
562
+ rescue NotFoundError
563
+ next
564
+ end
565
+ end
566
+ end
567
+
568
+ ##
569
+ # Adds a list of +methods+ to +out+ with a heading of +name+
570
+
571
+ def add_method_list out, methods, name
572
+ return if methods.empty?
573
+
574
+ out << RDoc::Markup::Heading.new(1, "#{name}:")
575
+ out << RDoc::Markup::BlankLine.new
576
+
577
+ if @use_stdout and !@interactive then
578
+ out.concat methods.map { |method|
579
+ RDoc::Markup::Verbatim.new method
580
+ }
581
+ else
582
+ out << RDoc::Markup::IndentedParagraph.new(2, methods.join(', '))
583
+ end
584
+
585
+ out << RDoc::Markup::BlankLine.new
586
+ end
587
+
588
+ ##
589
+ # Returns ancestor classes of +klass+
590
+
591
+ def ancestors_of klass
592
+ ancestors = []
593
+
594
+ unexamined = [klass]
595
+ seen = []
596
+
597
+ loop do
598
+ break if unexamined.empty?
599
+ current = unexamined.shift
600
+ seen << current
601
+
602
+ stores = classes[current]
603
+
604
+ next unless stores and not stores.empty?
605
+
606
+ klasses = stores.flat_map do |store|
607
+ store.ancestors[current] || []
608
+ end.uniq
609
+
610
+ klasses = klasses - seen
611
+
612
+ ancestors.concat klasses
613
+ unexamined.concat klasses
614
+ end
615
+
616
+ ancestors.reverse
617
+ end
618
+
619
+ ##
620
+ # For RubyGems backwards compatibility
621
+
622
+ def class_cache # :nodoc:
623
+ end
624
+
625
+ ##
626
+ # Builds a RDoc::Markup::Document from +found+, +klasess+ and +includes+
627
+
628
+ def class_document name, found, klasses, includes, extends
629
+ also_in = []
630
+
631
+ out = RDoc::Markup::Document.new
632
+
633
+ add_class out, name, klasses
634
+
635
+ add_includes out, includes
636
+ add_extends out, extends
637
+
638
+ found.each do |store, klass|
639
+ render_class out, store, klass, also_in
640
+ end
641
+
642
+ add_also_in out, also_in
643
+
644
+ out
645
+ end
646
+
647
+ ##
648
+ # Adds the class +comment+ to +out+.
649
+
650
+ def class_document_comment out, comment # :nodoc:
651
+ unless comment.empty? then
652
+ out << RDoc::Markup::Rule.new(1)
653
+
654
+ if comment.merged? then
655
+ parts = comment.parts
656
+ parts = parts.zip [RDoc::Markup::BlankLine.new] * parts.length
657
+ parts.flatten!
658
+ parts.pop
659
+
660
+ out.concat parts
661
+ else
662
+ out << comment
663
+ end
664
+ end
665
+ end
666
+
667
+ ##
668
+ # Adds the constants from +klass+ to the Document +out+.
669
+
670
+ def class_document_constants out, klass # :nodoc:
671
+ return if klass.constants.empty?
672
+
673
+ out << RDoc::Markup::Heading.new(1, "Constants:")
674
+ out << RDoc::Markup::BlankLine.new
675
+ list = RDoc::Markup::List.new :NOTE
676
+
677
+ constants = klass.constants.sort_by { |constant| constant.name }
678
+
679
+ list.items.concat constants.map { |constant|
680
+ parts = constant.comment.parts if constant.comment
681
+ parts << RDoc::Markup::Paragraph.new('[not documented]') if
682
+ parts.empty?
683
+
684
+ RDoc::Markup::ListItem.new(constant.name, *parts)
685
+ }
686
+
687
+ out << list
688
+ out << RDoc::Markup::BlankLine.new
689
+ end
690
+
691
+ ##
692
+ # Hash mapping a known class or module to the stores it can be loaded from
693
+
694
+ def classes
695
+ return @classes if @classes
696
+
697
+ @classes = {}
698
+
699
+ @stores.each do |store|
700
+ store.cache[:modules].each do |mod|
701
+ # using default block causes searched-for modules to be added
702
+ @classes[mod] ||= []
703
+ @classes[mod] << store
704
+ end
705
+ end
706
+
707
+ @classes
708
+ end
709
+
710
+ ##
711
+ # Returns the stores wherein +name+ is found along with the classes,
712
+ # extends and includes that match it
713
+
714
+ def classes_and_includes_and_extends_for name
715
+ klasses = []
716
+ extends = []
717
+ includes = []
718
+
719
+ found = @stores.map do |store|
720
+ begin
721
+ klass = store.load_class name
722
+ klasses << klass
723
+ extends << [klass.extends, store] if klass.extends
724
+ includes << [klass.includes, store] if klass.includes
725
+ [store, klass]
726
+ rescue RDoc::Store::MissingFileError
727
+ end
728
+ end.compact
729
+
730
+ extends.reject! do |modules,| modules.empty? end
731
+ includes.reject! do |modules,| modules.empty? end
732
+
733
+ [found, klasses, includes, extends]
734
+ end
735
+
736
+ ##
737
+ # Completes +name+ based on the caches. For Readline
738
+
739
+ def complete name
740
+ completions = []
741
+
742
+ klass, selector, method = parse_name name
743
+
744
+ complete_klass name, klass, selector, method, completions
745
+ complete_method name, klass, selector, completions
746
+
747
+ completions.sort.uniq
748
+ end
749
+
750
+ def complete_klass name, klass, selector, method, completions # :nodoc:
751
+ klasses = classes.keys
752
+
753
+ # may need to include Foo when given Foo::
754
+ klass_name = method ? name : klass
755
+
756
+ if name !~ /#|\./ then
757
+ completions.replace klasses.grep(/^#{Regexp.escape klass_name}[^:]*$/)
758
+ completions.concat klasses.grep(/^#{Regexp.escape name}[^:]*$/) if
759
+ name =~ /::$/
760
+
761
+ completions << klass if classes.key? klass # to complete a method name
762
+ elsif selector then
763
+ completions << klass if classes.key? klass
764
+ elsif classes.key? klass_name then
765
+ completions << klass_name
766
+ end
767
+ end
768
+
769
+ def complete_method name, klass, selector, completions # :nodoc:
770
+ if completions.include? klass and name =~ /#|\.|::/ then
771
+ methods = list_methods_matching name
772
+
773
+ if not methods.empty? then
774
+ # remove Foo if given Foo:: and a method was found
775
+ completions.delete klass
776
+ elsif selector then
777
+ # replace Foo with Foo:: as given
778
+ completions.delete klass
779
+ completions << "#{klass}#{selector}"
780
+ end
781
+
782
+ completions.concat methods
783
+ end
784
+ end
785
+
786
+ ##
787
+ # Converts +document+ to text and writes it to the pager
788
+
789
+ def display document
790
+ page do |io|
791
+ f = formatter(io)
792
+ f.width = @width if @width and f.respond_to?(:width)
793
+ text = document.accept f
794
+
795
+ io.write text
796
+ end
797
+ end
798
+
799
+ ##
800
+ # Outputs formatted RI data for class +name+. Groups undocumented classes
801
+
802
+ def display_class name
803
+ return if name =~ /#|\./
804
+
805
+ found, klasses, includes, extends =
806
+ classes_and_includes_and_extends_for name
807
+
808
+ return if found.empty?
809
+
810
+ out = class_document name, found, klasses, includes, extends
811
+
812
+ display out
813
+ end
814
+
815
+ ##
816
+ # Outputs formatted RI data for method +name+
817
+
818
+ def display_method name
819
+ out = RDoc::Markup::Document.new
820
+
821
+ add_method out, name
822
+
823
+ display out
824
+ end
825
+
826
+ ##
827
+ # Outputs formatted RI data for the class or method +name+.
828
+ #
829
+ # Returns true if +name+ was found, false if it was not an alternative could
830
+ # be guessed, raises an error if +name+ couldn't be guessed.
831
+
832
+ def display_name name
833
+ if name =~ /\w:(\w|$)/ then
834
+ display_page name
835
+ return true
836
+ end
837
+
838
+ return true if display_class name
839
+
840
+ display_method name if name =~ /::|#|\./
841
+
842
+ true
843
+ rescue NotFoundError
844
+ matches = list_methods_matching name if name =~ /::|#|\./
845
+ matches = classes.keys.grep(/^#{Regexp.escape name}/) if matches.empty?
846
+
847
+ raise if matches.empty?
848
+
849
+ page do |io|
850
+ io.puts "#{name} not found, maybe you meant:"
851
+ io.puts
852
+ io.puts matches.sort.join("\n")
853
+ end
854
+
855
+ false
856
+ end
857
+
858
+ ##
859
+ # Displays each name in +name+
860
+
861
+ def display_names names
862
+ names.each do |name|
863
+ name = expand_name name
864
+
865
+ display_name name
866
+ end
867
+ end
868
+
869
+ ##
870
+ # Outputs formatted RI data for page +name+.
871
+
872
+ def display_page name
873
+ store_name, page_name = name.split ':', 2
874
+
875
+ store = @stores.find { |s| s.source == store_name }
876
+
877
+ return display_page_list store if page_name.empty?
878
+
879
+ pages = store.cache[:pages]
880
+
881
+ unless pages.include? page_name then
882
+ found_names = pages.select do |n|
883
+ n =~ /#{Regexp.escape page_name}\.[^.]+$/
884
+ end
885
+
886
+ if found_names.length.zero? then
887
+ return display_page_list store, pages
888
+ elsif found_names.length > 1 then
889
+ return display_page_list store, found_names, page_name
890
+ end
891
+
892
+ page_name = found_names.first
893
+ end
894
+
895
+ page = store.load_page page_name
896
+
897
+ display page.comment
898
+ end
899
+
900
+ ##
901
+ # Outputs a formatted RI page list for the pages in +store+.
902
+
903
+ def display_page_list store, pages = store.cache[:pages], search = nil
904
+ out = RDoc::Markup::Document.new
905
+
906
+ title = if search then
907
+ "#{search} pages"
908
+ else
909
+ 'Pages'
910
+ end
911
+
912
+ out << RDoc::Markup::Heading.new(1, "#{title} in #{store.friendly_path}")
913
+ out << RDoc::Markup::BlankLine.new
914
+
915
+ list = RDoc::Markup::List.new(:BULLET)
916
+
917
+ pages.each do |page|
918
+ list << RDoc::Markup::Paragraph.new(page)
919
+ end
920
+
921
+ out << list
922
+
923
+ display out
924
+ end
925
+
926
+ def check_did_you_mean # :nodoc:
927
+ if defined? DidYouMean::SpellChecker
928
+ true
929
+ else
930
+ begin
931
+ require 'did_you_mean'
932
+ if defined? DidYouMean::SpellChecker
933
+ true
934
+ else
935
+ false
936
+ end
937
+ rescue LoadError
938
+ false
939
+ end
940
+ end
941
+ end
942
+
943
+ ##
944
+ # Expands abbreviated klass +klass+ into a fully-qualified class. "Zl::Da"
945
+ # will be expanded to Zlib::DataError.
946
+
947
+ def expand_class klass
948
+ class_names = classes.keys
949
+ ary = class_names.grep(Regexp.new("\\A#{klass.gsub(/(?=::|\z)/, '[^:]*')}\\z"))
950
+ if ary.length != 1 && ary.first != klass
951
+ if check_did_you_mean
952
+ suggestion_proc = -> { DidYouMean::SpellChecker.new(dictionary: class_names).correct(klass) }
953
+ raise NotFoundError.new(klass, suggestion_proc)
954
+ else
955
+ raise NotFoundError, klass
956
+ end
957
+ end
958
+ ary.first
959
+ end
960
+
961
+ ##
962
+ # Expands the class portion of +name+ into a fully-qualified class. See
963
+ # #expand_class.
964
+
965
+ def expand_name name
966
+ klass, selector, method = parse_name name
967
+
968
+ return [selector, method].join if klass.empty?
969
+
970
+ case selector
971
+ when ':' then
972
+ [find_store(klass), selector, method]
973
+ else
974
+ [expand_class(klass), selector, method]
975
+ end.join
976
+ end
977
+
978
+ ##
979
+ # Filters the methods in +found+ trying to find a match for +name+.
980
+
981
+ def filter_methods found, name
982
+ regexp = name_regexp name
983
+
984
+ filtered = found.find_all do |store, methods|
985
+ methods.any? { |method| method.full_name =~ regexp }
986
+ end
987
+
988
+ return filtered unless filtered.empty?
989
+
990
+ found
991
+ end
992
+
993
+ ##
994
+ # Yields items matching +name+ including the store they were found in, the
995
+ # class being searched for, the class they were found in (an ancestor) the
996
+ # types of methods to look up (from #method_type), and the method name being
997
+ # searched for
998
+
999
+ def find_methods name
1000
+ klass, selector, method = parse_name name
1001
+
1002
+ types = method_type selector
1003
+
1004
+ klasses = nil
1005
+ ambiguous = klass.empty?
1006
+
1007
+ if ambiguous then
1008
+ klasses = classes.keys
1009
+ else
1010
+ klasses = ancestors_of klass
1011
+ klasses.unshift klass
1012
+ end
1013
+
1014
+ methods = []
1015
+
1016
+ klasses.each do |ancestor|
1017
+ ancestors = classes[ancestor]
1018
+
1019
+ next unless ancestors
1020
+
1021
+ klass = ancestor if ambiguous
1022
+
1023
+ ancestors.each do |store|
1024
+ methods << [store, klass, ancestor, types, method]
1025
+ end
1026
+ end
1027
+
1028
+ methods = methods.sort_by do |_, k, a, _, m|
1029
+ [k, a, m].compact
1030
+ end
1031
+
1032
+ methods.each do |item|
1033
+ yield(*item) # :yields: store, klass, ancestor, types, method
1034
+ end
1035
+
1036
+ self
1037
+ end
1038
+
1039
+ ##
1040
+ # Finds a store that matches +name+ which can be the name of a gem, "ruby",
1041
+ # "home" or "site".
1042
+ #
1043
+ # See also RDoc::Store#source
1044
+
1045
+ def find_store name
1046
+ @stores.each do |store|
1047
+ source = store.source
1048
+
1049
+ return source if source == name
1050
+
1051
+ return source if
1052
+ store.type == :gem and source =~ /^#{Regexp.escape name}-\d/
1053
+ end
1054
+
1055
+ raise RDoc::RI::Driver::NotFoundError, name
1056
+ end
1057
+
1058
+ ##
1059
+ # Creates a new RDoc::Markup::Formatter. If a formatter is given with -f,
1060
+ # use it. If we're outputting to a pager, use bs, otherwise ansi.
1061
+
1062
+ def formatter(io)
1063
+ if @formatter_klass then
1064
+ @formatter_klass.new
1065
+ elsif paging? or !io.tty? then
1066
+ RDoc::Markup::ToBs.new
1067
+ else
1068
+ RDoc::Markup::ToAnsi.new
1069
+ end
1070
+ end
1071
+
1072
+ ##
1073
+ # Runs ri interactively using Readline if it is available.
1074
+
1075
+ def interactive
1076
+ puts "\nEnter the method name you want to look up."
1077
+
1078
+ begin
1079
+ require 'readline'
1080
+ rescue LoadError
1081
+ end
1082
+ if defined? Readline then
1083
+ Readline.completion_proc = method :complete
1084
+ puts "You can use tab to autocomplete."
1085
+ end
1086
+
1087
+ puts "Enter a blank line to exit.\n\n"
1088
+
1089
+ loop do
1090
+ name = if defined? Readline then
1091
+ Readline.readline ">> "
1092
+ else
1093
+ print ">> "
1094
+ $stdin.gets
1095
+ end
1096
+
1097
+ return if name.nil? or name.empty?
1098
+
1099
+ begin
1100
+ display_name expand_name(name.strip)
1101
+ rescue NotFoundError => e
1102
+ puts e.message
1103
+ end
1104
+ end
1105
+
1106
+ rescue Interrupt
1107
+ exit
1108
+ end
1109
+
1110
+ ##
1111
+ # Lists classes known to ri starting with +names+. If +names+ is empty all
1112
+ # known classes are shown.
1113
+
1114
+ def list_known_classes names = []
1115
+ classes = []
1116
+
1117
+ stores.each do |store|
1118
+ classes << store.module_names
1119
+ end
1120
+
1121
+ classes = classes.flatten.uniq.sort
1122
+
1123
+ unless names.empty? then
1124
+ filter = Regexp.union names.map { |name| /^#{name}/ }
1125
+
1126
+ classes = classes.grep filter
1127
+ end
1128
+
1129
+ page do |io|
1130
+ if paging? or io.tty? then
1131
+ if names.empty? then
1132
+ io.puts "Classes and Modules known to ri:"
1133
+ else
1134
+ io.puts "Classes and Modules starting with #{names.join ', '}:"
1135
+ end
1136
+ io.puts
1137
+ end
1138
+
1139
+ io.puts classes.join("\n")
1140
+ end
1141
+ end
1142
+
1143
+ ##
1144
+ # Returns an Array of methods matching +name+
1145
+
1146
+ def list_methods_matching name
1147
+ found = []
1148
+
1149
+ find_methods name do |store, klass, ancestor, types, method|
1150
+ if types == :instance or types == :both then
1151
+ methods = store.instance_methods[ancestor]
1152
+
1153
+ if methods then
1154
+ matches = methods.grep(/^#{Regexp.escape method.to_s}/)
1155
+
1156
+ matches = matches.map do |match|
1157
+ "#{klass}##{match}"
1158
+ end
1159
+
1160
+ found.concat matches
1161
+ end
1162
+ end
1163
+
1164
+ if types == :class or types == :both then
1165
+ methods = store.class_methods[ancestor]
1166
+
1167
+ next unless methods
1168
+ matches = methods.grep(/^#{Regexp.escape method.to_s}/)
1169
+
1170
+ matches = matches.map do |match|
1171
+ "#{klass}::#{match}"
1172
+ end
1173
+
1174
+ found.concat matches
1175
+ end
1176
+ end
1177
+
1178
+ found.uniq
1179
+ end
1180
+
1181
+ ##
1182
+ # Loads RI data for method +name+ on +klass+ from +store+. +type+ and
1183
+ # +cache+ indicate if it is a class or instance method.
1184
+
1185
+ def load_method store, cache, klass, type, name
1186
+ methods = store.public_send(cache)[klass]
1187
+
1188
+ return unless methods
1189
+
1190
+ method = methods.find do |method_name|
1191
+ method_name == name
1192
+ end
1193
+
1194
+ return unless method
1195
+
1196
+ store.load_method klass, "#{type}#{method}"
1197
+ rescue RDoc::Store::MissingFileError => e
1198
+ comment = RDoc::Comment.new("missing documentation at #{e.file}").parse
1199
+
1200
+ method = RDoc::AnyMethod.new nil, name
1201
+ method.comment = comment
1202
+ method
1203
+ end
1204
+
1205
+ ##
1206
+ # Returns an Array of RI data for methods matching +name+
1207
+
1208
+ def load_methods_matching name
1209
+ found = []
1210
+
1211
+ find_methods name do |store, klass, ancestor, types, method|
1212
+ methods = []
1213
+
1214
+ methods << load_method(store, :class_methods, ancestor, '::', method) if
1215
+ [:class, :both].include? types
1216
+
1217
+ methods << load_method(store, :instance_methods, ancestor, '#', method) if
1218
+ [:instance, :both].include? types
1219
+
1220
+ found << [store, methods.compact]
1221
+ end
1222
+
1223
+ found.reject do |path, methods| methods.empty? end
1224
+ end
1225
+
1226
+ ##
1227
+ # Returns a filtered list of methods matching +name+
1228
+
1229
+ def lookup_method name
1230
+ found = load_methods_matching name
1231
+
1232
+ if found.empty?
1233
+ if check_did_you_mean
1234
+ methods = []
1235
+ _, _, method_name = parse_name name
1236
+ find_methods name do |store, klass, ancestor, types, method|
1237
+ methods.push(*store.class_methods[klass]) if [:class, :both].include? types
1238
+ methods.push(*store.instance_methods[klass]) if [:instance, :both].include? types
1239
+ end
1240
+ methods = methods.uniq
1241
+ suggestion_proc = -> { DidYouMean::SpellChecker.new(dictionary: methods).correct(method_name) }
1242
+ raise NotFoundError.new(name, suggestion_proc)
1243
+ else
1244
+ raise NotFoundError, name
1245
+ end
1246
+ end
1247
+
1248
+ filter_methods found, name
1249
+ end
1250
+
1251
+ ##
1252
+ # Builds a RDoc::Markup::Document from +found+, +klasses+ and +includes+
1253
+
1254
+ def method_document name, filtered
1255
+ out = RDoc::Markup::Document.new
1256
+
1257
+ out << RDoc::Markup::Heading.new(1, name)
1258
+ out << RDoc::Markup::BlankLine.new
1259
+
1260
+ filtered.each do |store, methods|
1261
+ methods.each do |method|
1262
+ render_method out, store, method, name
1263
+ end
1264
+ end
1265
+
1266
+ out
1267
+ end
1268
+
1269
+ ##
1270
+ # Returns the type of method (:both, :instance, :class) for +selector+
1271
+
1272
+ def method_type selector
1273
+ case selector
1274
+ when '.', nil then :both
1275
+ when '#' then :instance
1276
+ else :class
1277
+ end
1278
+ end
1279
+
1280
+ ##
1281
+ # Returns a regular expression for +name+ that will match an
1282
+ # RDoc::AnyMethod's name.
1283
+
1284
+ def name_regexp name
1285
+ klass, type, name = parse_name name
1286
+
1287
+ case type
1288
+ when '#', '::' then
1289
+ /^#{klass}#{type}#{Regexp.escape name}$/
1290
+ else
1291
+ /^#{klass}(#|::)#{Regexp.escape name}$/
1292
+ end
1293
+ end
1294
+
1295
+ ##
1296
+ # Paginates output through a pager program.
1297
+
1298
+ def page
1299
+ if pager = setup_pager then
1300
+ begin
1301
+ yield pager
1302
+ ensure
1303
+ pager.close
1304
+ end
1305
+ else
1306
+ yield $stdout
1307
+ end
1308
+ rescue Errno::EPIPE
1309
+ ensure
1310
+ @paging = false
1311
+ end
1312
+
1313
+ ##
1314
+ # Are we using a pager?
1315
+
1316
+ def paging?
1317
+ @paging
1318
+ end
1319
+
1320
+ ##
1321
+ # Extracts the class, selector and method name parts from +name+ like
1322
+ # Foo::Bar#baz.
1323
+ #
1324
+ # NOTE: Given Foo::Bar, Bar is considered a class even though it may be a
1325
+ # method
1326
+
1327
+ def parse_name name
1328
+ parts = name.split(/(::?|#|\.)/)
1329
+
1330
+ if parts.length == 1 then
1331
+ if parts.first =~ /^[a-z]|^([%&*+\/<>^`|~-]|\+@|-@|<<|<=>?|===?|=>|=~|>>|\[\]=?|~@)$/ then
1332
+ type = '.'
1333
+ meth = parts.pop
1334
+ else
1335
+ type = nil
1336
+ meth = nil
1337
+ end
1338
+ elsif parts.length == 2 or parts.last =~ /::|#|\./ then
1339
+ type = parts.pop
1340
+ meth = nil
1341
+ elsif parts[1] == ':' then
1342
+ klass = parts.shift
1343
+ type = parts.shift
1344
+ meth = parts.join
1345
+ elsif parts[-2] != '::' or parts.last !~ /^[A-Z]/ then
1346
+ meth = parts.pop
1347
+ type = parts.pop
1348
+ end
1349
+
1350
+ klass ||= parts.join
1351
+
1352
+ [klass, type, meth]
1353
+ end
1354
+
1355
+ ##
1356
+ # Renders the +klass+ from +store+ to +out+. If the klass has no
1357
+ # documentable items the class is added to +also_in+ instead.
1358
+
1359
+ def render_class out, store, klass, also_in # :nodoc:
1360
+ comment = klass.comment
1361
+ # TODO the store's cache should always return an empty Array
1362
+ class_methods = store.class_methods[klass.full_name] || []
1363
+ instance_methods = store.instance_methods[klass.full_name] || []
1364
+ attributes = store.attributes[klass.full_name] || []
1365
+
1366
+ if comment.empty? and
1367
+ instance_methods.empty? and class_methods.empty? then
1368
+ also_in << store
1369
+ return
1370
+ end
1371
+
1372
+ add_from out, store
1373
+
1374
+ class_document_comment out, comment
1375
+
1376
+ if class_methods or instance_methods or not klass.constants.empty? then
1377
+ out << RDoc::Markup::Rule.new(1)
1378
+ end
1379
+
1380
+ class_document_constants out, klass
1381
+
1382
+ add_method_list out, class_methods, 'Class methods'
1383
+ add_method_list out, instance_methods, 'Instance methods'
1384
+ add_method_list out, attributes, 'Attributes'
1385
+
1386
+ add_method_documentation out, klass if @show_all
1387
+ end
1388
+
1389
+ def render_method out, store, method, name # :nodoc:
1390
+ out << RDoc::Markup::Paragraph.new("(from #{store.friendly_path})")
1391
+
1392
+ unless name =~ /^#{Regexp.escape method.parent_name}/ then
1393
+ out << RDoc::Markup::Heading.new(3, "Implementation from #{method.parent_name}")
1394
+ end
1395
+
1396
+ out << RDoc::Markup::Rule.new(1)
1397
+
1398
+ render_method_arguments out, method.arglists
1399
+ render_method_superclass out, method
1400
+ if method.is_alias_for
1401
+ al = method.is_alias_for
1402
+ alias_for = store.load_method al.parent_name, "#{al.name_prefix}#{al.name}"
1403
+ render_method_comment out, method, alias_for
1404
+ else
1405
+ render_method_comment out, method
1406
+ end
1407
+ end
1408
+
1409
+ def render_method_arguments out, arglists # :nodoc:
1410
+ return unless arglists
1411
+
1412
+ arglists = arglists.chomp.split "\n"
1413
+ arglists = arglists.map { |line| line + "\n" }
1414
+ out << RDoc::Markup::Verbatim.new(*arglists)
1415
+ out << RDoc::Markup::Rule.new(1)
1416
+ end
1417
+
1418
+ def render_method_comment out, method, alias_for = nil# :nodoc:
1419
+ if alias_for
1420
+ unless method.comment.nil? or method.comment.empty?
1421
+ out << RDoc::Markup::BlankLine.new
1422
+ out << method.comment
1423
+ end
1424
+ out << RDoc::Markup::BlankLine.new
1425
+ out << RDoc::Markup::Paragraph.new("(This method is an alias for #{alias_for.full_name}.)")
1426
+ out << RDoc::Markup::BlankLine.new
1427
+ out << alias_for.comment
1428
+ out << RDoc::Markup::BlankLine.new
1429
+ else
1430
+ out << RDoc::Markup::BlankLine.new
1431
+ out << method.comment
1432
+ out << RDoc::Markup::BlankLine.new
1433
+ end
1434
+ end
1435
+
1436
+ def render_method_superclass out, method # :nodoc:
1437
+ return unless
1438
+ method.respond_to?(:superclass_method) and method.superclass_method
1439
+
1440
+ out << RDoc::Markup::BlankLine.new
1441
+ out << RDoc::Markup::Heading.new(4, "(Uses superclass method #{method.superclass_method})")
1442
+ out << RDoc::Markup::Rule.new(1)
1443
+ end
1444
+
1445
+ ##
1446
+ # Looks up and displays ri data according to the options given.
1447
+
1448
+ def run
1449
+ if @list_doc_dirs then
1450
+ puts @doc_dirs
1451
+ elsif @list then
1452
+ list_known_classes @names
1453
+ elsif @server then
1454
+ start_server
1455
+ elsif @interactive or @names.empty? then
1456
+ interactive
1457
+ else
1458
+ display_names @names
1459
+ end
1460
+ rescue NotFoundError => e
1461
+ abort e.message
1462
+ end
1463
+
1464
+ ##
1465
+ # Sets up a pager program to pass output through. Tries the RI_PAGER and
1466
+ # PAGER environment variables followed by pager, less then more.
1467
+
1468
+ def setup_pager
1469
+ return if @use_stdout
1470
+
1471
+ pagers = [ENV['RI_PAGER'], ENV['PAGER'], 'pager', 'less', 'more']
1472
+
1473
+ require 'shellwords'
1474
+ pagers.compact.uniq.each do |pager|
1475
+ pager = Shellwords.split(pager)
1476
+ next if pager.empty?
1477
+
1478
+ io = IO.popen(pager, 'w') rescue next
1479
+ next if $? and $?.pid == io.pid and $?.exited? # pager didn't work
1480
+
1481
+ @paging = true
1482
+
1483
+ return io
1484
+ end
1485
+
1486
+ @use_stdout = true
1487
+
1488
+ nil
1489
+ end
1490
+
1491
+ ##
1492
+ # Starts a WEBrick server for ri.
1493
+
1494
+ def start_server
1495
+ begin
1496
+ require 'webrick'
1497
+ rescue LoadError
1498
+ abort "webrick is not found. You may need to `gem install webrick` to install webrick."
1499
+ end
1500
+
1501
+ server = WEBrick::HTTPServer.new :Port => @server
1502
+
1503
+ extra_doc_dirs = @stores.map {|s| s.type == :extra ? s.path : nil}.compact
1504
+
1505
+ server.mount '/', RDoc::Servlet, nil, extra_doc_dirs
1506
+
1507
+ trap 'INT' do server.shutdown end
1508
+ trap 'TERM' do server.shutdown end
1509
+
1510
+ server.start
1511
+ end
1512
+
1513
+ end