honeybadger 5.3.0 → 5.4.0

Sign up to get free protection for your applications and to get access to all the features.
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