chess_engine 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +5 -0
  3. data/Gemfile.lock +21 -0
  4. data/README.md +26 -0
  5. data/chess_engine.gemspec +14 -0
  6. data/lib/chess_engine/board.rb +95 -0
  7. data/lib/chess_engine/cli.rb +105 -0
  8. data/lib/chess_engine/game.rb +148 -0
  9. data/lib/chess_engine/input.rb +19 -0
  10. data/lib/chess_engine/move.rb +35 -0
  11. data/lib/chess_engine/piece.rb +97 -0
  12. data/lib/chess_engine/validator.rb +87 -0
  13. data/lib/chess_engine.rb +1 -0
  14. data/spec/board_spec.rb +70 -0
  15. data/spec/game_helper.rb +5 -0
  16. data/spec/game_spec.rb +79 -0
  17. data/spec/spec_helper.rb +100 -0
  18. data/spec/validator_spec.rb +26 -0
  19. data/vendor/bundle/bin/coderay +27 -0
  20. data/vendor/bundle/bin/pry +27 -0
  21. data/vendor/bundle/cache/coderay-1.1.2.gem +0 -0
  22. data/vendor/bundle/cache/colorize-0.8.1.gem +0 -0
  23. data/vendor/bundle/cache/method_source-0.9.2.gem +0 -0
  24. data/vendor/bundle/cache/pry-0.12.2.gem +0 -0
  25. data/vendor/bundle/cache/rb-readline-0.5.5.gem +0 -0
  26. data/vendor/bundle/gems/coderay-1.1.2/MIT-LICENSE +22 -0
  27. data/vendor/bundle/gems/coderay-1.1.2/README_INDEX.rdoc +123 -0
  28. data/vendor/bundle/gems/coderay-1.1.2/bin/coderay +215 -0
  29. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/duo.rb +81 -0
  30. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/_map.rb +17 -0
  31. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/comment_filter.rb +25 -0
  32. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/count.rb +39 -0
  33. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/debug.rb +49 -0
  34. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/debug_lint.rb +63 -0
  35. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/div.rb +23 -0
  36. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/encoder.rb +190 -0
  37. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/filter.rb +58 -0
  38. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/html/css.rb +65 -0
  39. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/html/numbering.rb +108 -0
  40. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/html/output.rb +166 -0
  41. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/html.rb +333 -0
  42. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/json.rb +83 -0
  43. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/lines_of_code.rb +45 -0
  44. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/lint.rb +59 -0
  45. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/null.rb +18 -0
  46. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/page.rb +24 -0
  47. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/span.rb +23 -0
  48. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/statistic.rb +95 -0
  49. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/terminal.rb +195 -0
  50. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/text.rb +46 -0
  51. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/token_kind_filter.rb +111 -0
  52. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/xml.rb +72 -0
  53. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/yaml.rb +50 -0
  54. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders.rb +18 -0
  55. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/for_redcloth.rb +95 -0
  56. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/helpers/file_type.rb +151 -0
  57. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/helpers/plugin.rb +55 -0
  58. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/helpers/plugin_host.rb +221 -0
  59. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/helpers/word_list.rb +72 -0
  60. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/_map.rb +24 -0
  61. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/c.rb +189 -0
  62. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/clojure.rb +217 -0
  63. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/cpp.rb +217 -0
  64. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/css.rb +196 -0
  65. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/debug.rb +75 -0
  66. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/delphi.rb +144 -0
  67. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/diff.rb +221 -0
  68. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/erb.rb +81 -0
  69. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/go.rb +208 -0
  70. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/groovy.rb +268 -0
  71. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/haml.rb +168 -0
  72. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/html.rb +275 -0
  73. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/java/builtin_types.rb +421 -0
  74. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/java.rb +174 -0
  75. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/java_script.rb +237 -0
  76. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/json.rb +98 -0
  77. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/lua.rb +280 -0
  78. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/php.rb +527 -0
  79. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/python.rb +287 -0
  80. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/raydebug.rb +75 -0
  81. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/ruby/patterns.rb +178 -0
  82. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/ruby/string_state.rb +79 -0
  83. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/ruby.rb +477 -0
  84. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/sass.rb +232 -0
  85. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/scanner.rb +337 -0
  86. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/sql.rb +169 -0
  87. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/taskpaper.rb +36 -0
  88. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/text.rb +26 -0
  89. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/xml.rb +17 -0
  90. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/yaml.rb +140 -0
  91. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners.rb +27 -0
  92. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/styles/_map.rb +7 -0
  93. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/styles/alpha.rb +153 -0
  94. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/styles/style.rb +18 -0
  95. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/styles.rb +15 -0
  96. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/token_kinds.rb +85 -0
  97. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/tokens.rb +161 -0
  98. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/tokens_proxy.rb +55 -0
  99. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/version.rb +3 -0
  100. data/vendor/bundle/gems/coderay-1.1.2/lib/coderay.rb +284 -0
  101. data/vendor/bundle/gems/colorize-0.8.1/CHANGELOG +65 -0
  102. data/vendor/bundle/gems/colorize-0.8.1/LICENSE +339 -0
  103. data/vendor/bundle/gems/colorize-0.8.1/README.md +105 -0
  104. data/vendor/bundle/gems/colorize-0.8.1/Rakefile +13 -0
  105. data/vendor/bundle/gems/colorize-0.8.1/colorize.gemspec +36 -0
  106. data/vendor/bundle/gems/colorize-0.8.1/lib/colorize/class_methods.rb +120 -0
  107. data/vendor/bundle/gems/colorize-0.8.1/lib/colorize/instance_methods.rb +132 -0
  108. data/vendor/bundle/gems/colorize-0.8.1/lib/colorize.rb +12 -0
  109. data/vendor/bundle/gems/colorize-0.8.1/lib/colorized_string.rb +19 -0
  110. data/vendor/bundle/gems/colorize-0.8.1/test/test_colorize.rb +164 -0
  111. data/vendor/bundle/gems/method_source-0.9.2/Gemfile +2 -0
  112. data/vendor/bundle/gems/method_source-0.9.2/LICENSE +25 -0
  113. data/vendor/bundle/gems/method_source-0.9.2/README.markdown +91 -0
  114. data/vendor/bundle/gems/method_source-0.9.2/Rakefile +81 -0
  115. data/vendor/bundle/gems/method_source-0.9.2/lib/method_source/code_helpers.rb +154 -0
  116. data/vendor/bundle/gems/method_source-0.9.2/lib/method_source/source_location.rb +138 -0
  117. data/vendor/bundle/gems/method_source-0.9.2/lib/method_source/version.rb +3 -0
  118. data/vendor/bundle/gems/method_source-0.9.2/lib/method_source.rb +141 -0
  119. data/vendor/bundle/gems/method_source-0.9.2/method_source.gemspec +35 -0
  120. data/vendor/bundle/gems/method_source-0.9.2/spec/method_source/code_helpers_spec.rb +43 -0
  121. data/vendor/bundle/gems/method_source-0.9.2/spec/method_source_spec.rb +143 -0
  122. data/vendor/bundle/gems/method_source-0.9.2/spec/spec_helper.rb +101 -0
  123. data/vendor/bundle/gems/pry-0.12.2/CHANGELOG.md +953 -0
  124. data/vendor/bundle/gems/pry-0.12.2/LICENSE +25 -0
  125. data/vendor/bundle/gems/pry-0.12.2/README.md +390 -0
  126. data/vendor/bundle/gems/pry-0.12.2/bin/pry +8 -0
  127. data/vendor/bundle/gems/pry-0.12.2/lib/pry/basic_object.rb +6 -0
  128. data/vendor/bundle/gems/pry-0.12.2/lib/pry/cli.rb +218 -0
  129. data/vendor/bundle/gems/pry-0.12.2/lib/pry/code/code_file.rb +110 -0
  130. data/vendor/bundle/gems/pry-0.12.2/lib/pry/code/code_range.rb +71 -0
  131. data/vendor/bundle/gems/pry-0.12.2/lib/pry/code/loc.rb +98 -0
  132. data/vendor/bundle/gems/pry-0.12.2/lib/pry/code.rb +353 -0
  133. data/vendor/bundle/gems/pry-0.12.2/lib/pry/code_object.rb +195 -0
  134. data/vendor/bundle/gems/pry-0.12.2/lib/pry/color_printer.rb +65 -0
  135. data/vendor/bundle/gems/pry-0.12.2/lib/pry/command.rb +723 -0
  136. data/vendor/bundle/gems/pry-0.12.2/lib/pry/command_set.rb +415 -0
  137. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/amend_line.rb +98 -0
  138. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/bang.rb +20 -0
  139. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/bang_pry.rb +17 -0
  140. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat/abstract_formatter.rb +27 -0
  141. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat/exception_formatter.rb +79 -0
  142. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat/file_formatter.rb +71 -0
  143. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat/input_expression_formatter.rb +43 -0
  144. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat.rb +63 -0
  145. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cd.rb +41 -0
  146. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/change_inspector.rb +27 -0
  147. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/change_prompt.rb +46 -0
  148. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/clear_screen.rb +14 -0
  149. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/code_collector.rb +167 -0
  150. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/disable_pry.rb +27 -0
  151. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/disabled_commands.rb +2 -0
  152. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/easter_eggs.rb +112 -0
  153. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/edit/exception_patcher.rb +25 -0
  154. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/edit/file_and_line_locator.rb +36 -0
  155. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/edit.rb +200 -0
  156. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/exit.rb +43 -0
  157. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/exit_all.rb +29 -0
  158. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/exit_program.rb +23 -0
  159. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/find_method.rb +191 -0
  160. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/fix_indent.rb +19 -0
  161. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_cd.rb +26 -0
  162. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_install.rb +32 -0
  163. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_list.rb +33 -0
  164. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_open.rb +29 -0
  165. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_readme.rb +25 -0
  166. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_search.rb +40 -0
  167. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_stats.rb +83 -0
  168. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gist.rb +102 -0
  169. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/help.rb +164 -0
  170. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/hist.rb +181 -0
  171. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/import_set.rb +23 -0
  172. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/install_command.rb +54 -0
  173. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/jump_to.rb +29 -0
  174. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/list_inspectors.rb +35 -0
  175. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/constants.rb +58 -0
  176. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/formatter.rb +51 -0
  177. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/globals.rb +46 -0
  178. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/grep.rb +19 -0
  179. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/instance_vars.rb +38 -0
  180. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/interrogatable.rb +18 -0
  181. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/jruby_hacks.rb +49 -0
  182. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/local_names.rb +33 -0
  183. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/local_vars.rb +37 -0
  184. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/ls_entity.rb +69 -0
  185. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/methods.rb +54 -0
  186. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/methods_helper.rb +46 -0
  187. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/self_methods.rb +33 -0
  188. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls.rb +113 -0
  189. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/nesting.rb +25 -0
  190. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/play.rb +102 -0
  191. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/pry_backtrace.rb +25 -0
  192. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/pry_version.rb +17 -0
  193. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/raise_up.rb +33 -0
  194. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/reload_code.rb +62 -0
  195. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/reset.rb +18 -0
  196. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ri.rb +65 -0
  197. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/save_file.rb +61 -0
  198. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/shell_command.rb +75 -0
  199. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/shell_mode.rb +25 -0
  200. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/show_doc.rb +81 -0
  201. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/show_info.rb +216 -0
  202. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/show_input.rb +17 -0
  203. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/show_source.rb +53 -0
  204. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/stat.rb +40 -0
  205. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/switch_to.rb +23 -0
  206. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/toggle_color.rb +24 -0
  207. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/watch_expression/expression.rb +38 -0
  208. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/watch_expression.rb +107 -0
  209. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/whereami.rb +197 -0
  210. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/wtf.rb +70 -0
  211. data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands.rb +6 -0
  212. data/vendor/bundle/gems/pry-0.12.2/lib/pry/config/behavior.rb +255 -0
  213. data/vendor/bundle/gems/pry-0.12.2/lib/pry/config/convenience.rb +28 -0
  214. data/vendor/bundle/gems/pry-0.12.2/lib/pry/config/default.rb +159 -0
  215. data/vendor/bundle/gems/pry-0.12.2/lib/pry/config/memoization.rb +48 -0
  216. data/vendor/bundle/gems/pry-0.12.2/lib/pry/config.rb +35 -0
  217. data/vendor/bundle/gems/pry-0.12.2/lib/pry/core_extensions.rb +142 -0
  218. data/vendor/bundle/gems/pry-0.12.2/lib/pry/editor.rb +128 -0
  219. data/vendor/bundle/gems/pry-0.12.2/lib/pry/exceptions.rb +76 -0
  220. data/vendor/bundle/gems/pry-0.12.2/lib/pry/forwardable.rb +23 -0
  221. data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/base_helpers.rb +200 -0
  222. data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/command_helpers.rb +157 -0
  223. data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/documentation_helpers.rb +76 -0
  224. data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/options_helpers.rb +27 -0
  225. data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/platform.rb +58 -0
  226. data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/table.rb +114 -0
  227. data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/text.rb +115 -0
  228. data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers.rb +6 -0
  229. data/vendor/bundle/gems/pry-0.12.2/lib/pry/history.rb +161 -0
  230. data/vendor/bundle/gems/pry-0.12.2/lib/pry/hooks.rb +171 -0
  231. data/vendor/bundle/gems/pry-0.12.2/lib/pry/indent.rb +408 -0
  232. data/vendor/bundle/gems/pry-0.12.2/lib/pry/input_completer.rb +265 -0
  233. data/vendor/bundle/gems/pry-0.12.2/lib/pry/input_lock.rb +130 -0
  234. data/vendor/bundle/gems/pry-0.12.2/lib/pry/inspector.rb +27 -0
  235. data/vendor/bundle/gems/pry-0.12.2/lib/pry/last_exception.rb +61 -0
  236. data/vendor/bundle/gems/pry-0.12.2/lib/pry/method/disowned.rb +55 -0
  237. data/vendor/bundle/gems/pry-0.12.2/lib/pry/method/patcher.rb +122 -0
  238. data/vendor/bundle/gems/pry-0.12.2/lib/pry/method/weird_method_locator.rb +198 -0
  239. data/vendor/bundle/gems/pry-0.12.2/lib/pry/method.rb +552 -0
  240. data/vendor/bundle/gems/pry-0.12.2/lib/pry/object_path.rb +83 -0
  241. data/vendor/bundle/gems/pry-0.12.2/lib/pry/output.rb +50 -0
  242. data/vendor/bundle/gems/pry-0.12.2/lib/pry/pager.rb +250 -0
  243. data/vendor/bundle/gems/pry-0.12.2/lib/pry/platform.rb +91 -0
  244. data/vendor/bundle/gems/pry-0.12.2/lib/pry/plugins.rb +122 -0
  245. data/vendor/bundle/gems/pry-0.12.2/lib/pry/prompt.rb +145 -0
  246. data/vendor/bundle/gems/pry-0.12.2/lib/pry/pry_class.rb +425 -0
  247. data/vendor/bundle/gems/pry-0.12.2/lib/pry/pry_instance.rb +699 -0
  248. data/vendor/bundle/gems/pry-0.12.2/lib/pry/repl.rb +261 -0
  249. data/vendor/bundle/gems/pry-0.12.2/lib/pry/repl_file_loader.rb +73 -0
  250. data/vendor/bundle/gems/pry-0.12.2/lib/pry/ring.rb +84 -0
  251. data/vendor/bundle/gems/pry-0.12.2/lib/pry/rubygem.rb +84 -0
  252. data/vendor/bundle/gems/pry-0.12.2/lib/pry/slop/LICENSE +20 -0
  253. data/vendor/bundle/gems/pry-0.12.2/lib/pry/slop/commands.rb +195 -0
  254. data/vendor/bundle/gems/pry-0.12.2/lib/pry/slop/option.rb +206 -0
  255. data/vendor/bundle/gems/pry-0.12.2/lib/pry/slop.rb +661 -0
  256. data/vendor/bundle/gems/pry-0.12.2/lib/pry/terminal.rb +91 -0
  257. data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/evalable.rb +15 -0
  258. data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/mockable.rb +14 -0
  259. data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/pry_tester.rb +73 -0
  260. data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/utility.rb +26 -0
  261. data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/variables.rb +46 -0
  262. data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable.rb +70 -0
  263. data/vendor/bundle/gems/pry-0.12.2/lib/pry/version.rb +3 -0
  264. data/vendor/bundle/gems/pry-0.12.2/lib/pry/wrapped_module/candidate.rb +131 -0
  265. data/vendor/bundle/gems/pry-0.12.2/lib/pry/wrapped_module.rb +378 -0
  266. data/vendor/bundle/gems/pry-0.12.2/lib/pry.rb +132 -0
  267. data/vendor/bundle/gems/rb-readline-0.5.5/CHANGES +94 -0
  268. data/vendor/bundle/gems/rb-readline-0.5.5/LICENSE +25 -0
  269. data/vendor/bundle/gems/rb-readline-0.5.5/README.md +81 -0
  270. data/vendor/bundle/gems/rb-readline-0.5.5/Rakefile +25 -0
  271. data/vendor/bundle/gems/rb-readline-0.5.5/bench/_rl_adjust_point.rb +26 -0
  272. data/vendor/bundle/gems/rb-readline-0.5.5/examples/example_readline.rb +8 -0
  273. data/vendor/bundle/gems/rb-readline-0.5.5/examples/example_readline_with_completion.rb +18 -0
  274. data/vendor/bundle/gems/rb-readline-0.5.5/examples/tinyirb.rb +11 -0
  275. data/vendor/bundle/gems/rb-readline-0.5.5/lib/rb-readline.rb +18 -0
  276. data/vendor/bundle/gems/rb-readline-0.5.5/lib/rbreadline/version.rb +3 -0
  277. data/vendor/bundle/gems/rb-readline-0.5.5/lib/rbreadline.rb +8920 -0
  278. data/vendor/bundle/gems/rb-readline-0.5.5/lib/readline.rb +539 -0
  279. data/vendor/bundle/gems/rb-readline-0.5.5/rb-readline.gemspec +51 -0
  280. data/vendor/bundle/gems/rb-readline-0.5.5/setup.rb +1585 -0
  281. data/vendor/bundle/gems/rb-readline-0.5.5/test/support/filesystem_completion_helper.rb +53 -0
  282. data/vendor/bundle/gems/rb-readline-0.5.5/test/test_completion.rb +100 -0
  283. data/vendor/bundle/gems/rb-readline-0.5.5/test/test_filename_completion_proc.rb +88 -0
  284. data/vendor/bundle/gems/rb-readline-0.5.5/test/test_history.rb +29 -0
  285. data/vendor/bundle/gems/rb-readline-0.5.5/test/test_rbreadline.rb +23 -0
  286. data/vendor/bundle/gems/rb-readline-0.5.5/test/test_readline.rb +221 -0
  287. data/vendor/bundle/specifications/coderay-1.1.2.gemspec +26 -0
  288. data/vendor/bundle/specifications/colorize-0.8.1.gemspec +38 -0
  289. data/vendor/bundle/specifications/method_source-0.9.2.gemspec +35 -0
  290. data/vendor/bundle/specifications/pry-0.12.2.gemspec +38 -0
  291. data/vendor/bundle/specifications/rb-readline-0.5.5.gemspec +39 -0
  292. metadata +363 -0
@@ -0,0 +1,40 @@
1
+ class Pry::Command::GemSearch < Pry::ClassCommand
2
+ match 'gem-search'
3
+ description 'Search for a gem with the rubygems.org JSON API'
4
+ group 'Gems'
5
+ command_options argument_required: true
6
+ banner <<-BANNER
7
+ gem-search [options] gem
8
+ Search for a gem with the rubygems.org HTTP API
9
+ BANNER
10
+
11
+ API_ENDPOINT = 'https://rubygems.org/api/v1/search.json'
12
+
13
+ def setup
14
+ require 'json' unless defined?(JSON)
15
+ require 'net/http' unless defined?(Net::HTTP)
16
+ end
17
+
18
+ def options(opt)
19
+ opt.on :l, :limit, 'Limit the number of results (max: 30)',
20
+ default: 10,
21
+ as: Integer,
22
+ argument: true
23
+ end
24
+
25
+ def process(str)
26
+ uri = URI.parse(API_ENDPOINT)
27
+ uri.query = URI.encode_www_form(query: str)
28
+ gems = JSON.load Net::HTTP.get(uri)
29
+ _pry_.pager.page list_as_string(gems, opts[:limit])
30
+ end
31
+
32
+ private
33
+ def list_as_string(gems, limit = 10)
34
+ gems[0..limit - 1].map do |gem|
35
+ name, version, info = gem.values_at 'name', 'version', 'info'
36
+ "#{bold(name)} #{bold('v' + version)} \n#{info}\n\n"
37
+ end.join
38
+ end
39
+ Pry::Commands.add_command(self)
40
+ end
@@ -0,0 +1,83 @@
1
+ class Pry::Command::GemStat < Pry::ClassCommand
2
+ require 'json'
3
+ require 'net/http'
4
+ STAT_HOST = "rubygems.org"
5
+ STAT_PORT = 443
6
+ STAT_PATH = "/api/v1/gems/%s.json"
7
+ FAIL_WHALE = <<-FAILWHALE
8
+ W W W
9
+ W W W W
10
+ '. W
11
+ .-""-._ \ \.--|
12
+ / "-..__) .-'
13
+ | _ /
14
+ \'-.__, .__.,'
15
+ `'----'._\--'
16
+ VVVVVVVVVVVVVVVVVVVVV
17
+ FAILWHALE
18
+
19
+ match 'gem-stat'
20
+ description 'Show the statistics of a gem (requires internet connection)'
21
+ group 'Gems'
22
+ command_options argument_required: true
23
+ banner <<-BANNER
24
+ gem-stats name
25
+
26
+ Show the statistics of a gem.
27
+ Requires an internet connection.
28
+ BANNER
29
+
30
+ def process(name)
31
+ client = Net::HTTP.start STAT_HOST, STAT_PORT, use_ssl: true
32
+ res = client.get STAT_PATH % URI.encode_www_form_component(name)
33
+ case res
34
+ when Net::HTTPOK
35
+ _pry_.pager.page format_gem(JSON.parse(res.body))
36
+ when Net::HTTPServiceUnavailable
37
+ _pry_.pager.page <<-FAILURE
38
+ #{bright_blue(FAIL_WHALE)}
39
+ #{bright_red('Ruby On Rails')}
40
+ #{bright_red('Net::HTTPServiceUnavailable')}
41
+ FAILURE
42
+ else
43
+ raise Pry::CommandError, "Bad response (#{res.class})"
44
+ end
45
+ ensure
46
+ client.finish if client
47
+ end
48
+
49
+ private
50
+ def format_gem(h)
51
+ h = Pry::Config.from_hash(h, nil)
52
+ format_str = unindent <<-FORMAT
53
+ %{name} %{version}
54
+ --
55
+ Total Downloads : %{downloads}
56
+ Version Downloads : %{version_downloads}
57
+
58
+ #{red('Dependencies')} (runtime)
59
+ --
60
+ %{rdependencies}
61
+
62
+ #{red('Dependencies')} (development)
63
+ %{ddependencies}
64
+ FORMAT
65
+ format_str % {name: green(h.name),
66
+ version: bold("v#{h.version}"),
67
+ downloads: h.downloads,
68
+ version_downloads: h.version_downloads,
69
+ rdependencies: format_dependencies(h.dependencies.runtime),
70
+ ddependencies: format_dependencies(h.dependencies.development)}
71
+ end
72
+
73
+ def format_dependencies(rdeps)
74
+ return bold('None') if rdeps.empty?
75
+
76
+ with_line_numbers(
77
+ rdeps.map { |h| "#{h['name']} (#{h['requirements']})" }.join("\n"),
78
+ 1,
79
+ :bold
80
+ )
81
+ end
82
+ Pry::Commands.add_command(self)
83
+ end
@@ -0,0 +1,102 @@
1
+ class Pry
2
+ class Command::Gist < Pry::ClassCommand
3
+ match 'gist'
4
+ group 'Misc'
5
+ description 'Upload code, docs, history to https://gist.github.com/.'
6
+ command_options requires_gem: "gist"
7
+
8
+ banner <<-'BANNER'
9
+ Usage: gist [OPTIONS] [--help]
10
+
11
+ The gist command enables you to gist code from files and methods to github.
12
+
13
+ gist -i 20 --lines 1..3
14
+ gist Pry#repl --lines 1..-1
15
+ gist Rakefile --lines 5
16
+ BANNER
17
+
18
+ def setup
19
+ require 'gist'
20
+ end
21
+
22
+ def options(opt)
23
+ CodeCollector.inject_options(opt)
24
+ opt.on :login, "Authenticate the gist gem with GitHub"
25
+ opt.on :p, :public, "Create a public gist (default: false)", default: false
26
+ opt.on :clip, "Copy the selected content to clipboard instead, do NOT gist it", default: false
27
+ end
28
+
29
+ def process
30
+ return ::Gist.login! if opts.present?(:login)
31
+
32
+ cc = CodeCollector.new(args, opts, _pry_)
33
+
34
+ if cc.content =~ /\A\s*\z/
35
+ raise CommandError, "Found no code to gist."
36
+ end
37
+
38
+ if opts.present?(:clip)
39
+ clipboard_content(cc.content)
40
+ else
41
+ # we're overriding the default behavior of the 'in' option (as
42
+ # defined on CodeCollector) with our local behaviour.
43
+ content = opts.present?(:in) ? input_content : cc.content
44
+ gist_content content, cc.file
45
+ end
46
+ end
47
+
48
+ def clipboard_content(content)
49
+ ::Gist.copy(content)
50
+ output.puts "Copied content to clipboard!"
51
+ end
52
+
53
+ def input_content
54
+ content = ""
55
+ CodeCollector.input_expression_ranges.each do |range|
56
+ input_expressions = _pry_.input_ring[range] || []
57
+ Array(input_expressions).each_with_index do |code, index|
58
+ corrected_index = index + range.first
59
+ if code && code != ""
60
+ content << code
61
+ if code !~ /;\Z/
62
+ content << "#{comment_expression_result_for_gist(_pry_.config.gist.inspecter.call(_pry_.output_ring[corrected_index]))}"
63
+ end
64
+ end
65
+ end
66
+ end
67
+
68
+ content
69
+ end
70
+
71
+ def comment_expression_result_for_gist(result)
72
+ content = ""
73
+ result.lines.each_with_index do |line, index|
74
+ if index == 0
75
+ content << "# => #{line}"
76
+ else
77
+ content << "# #{line}"
78
+ end
79
+ end
80
+
81
+ content
82
+ end
83
+
84
+ def gist_content(content, filename)
85
+ response = ::Gist.gist(content, filename: filename || "pry_gist.rb", public: !!opts[:p])
86
+ if response
87
+ url = response['html_url']
88
+ message = "Gist created at URL #{url}"
89
+ begin
90
+ ::Gist.copy(url)
91
+ message << ", which is now in the clipboard."
92
+ rescue ::Gist::ClipboardError
93
+ end
94
+
95
+ output.puts message
96
+ end
97
+ end
98
+ end
99
+
100
+ Pry::Commands.add_command(Pry::Command::Gist)
101
+ Pry::Commands.alias_command 'clipit', 'gist --clip'
102
+ end
@@ -0,0 +1,164 @@
1
+ class Pry
2
+ class Command::Help < Pry::ClassCommand
3
+ match 'help'
4
+ group 'Help'
5
+ description 'Show a list of commands or information about a specific command.'
6
+
7
+ banner <<-'BANNER'
8
+ Usage: help [COMMAND]
9
+
10
+ With no arguments, help lists all the available commands along with their
11
+ descriptions. When given a command name as an argument, shows the help
12
+ for that command.
13
+ BANNER
14
+
15
+ # We only want to show commands that have descriptions, so that the
16
+ # easter eggs don't show up.
17
+ def visible_commands
18
+ visible = {}
19
+ commands.each do |key, command|
20
+ visible[key] = command if command.description && !command.description.empty?
21
+ end
22
+ visible
23
+ end
24
+
25
+ # Get a hash of available commands grouped by the "group" name.
26
+ def command_groups
27
+ visible_commands.values.group_by(&:group)
28
+ end
29
+
30
+ def process
31
+ if args.empty?
32
+ display_index(command_groups)
33
+ else
34
+ display_search(args.first)
35
+ end
36
+ end
37
+
38
+ # Display the index view, with headings and short descriptions per command.
39
+ #
40
+ # @param [Hash<String, Array<Commands>>] groups
41
+ def display_index(groups)
42
+ help_text = []
43
+
44
+ sorted_group_names(groups).each do |group_name|
45
+ commands = sorted_commands(groups[group_name])
46
+
47
+ if commands.any?
48
+ help_text << help_text_for_commands(group_name, commands)
49
+ end
50
+ end
51
+
52
+ _pry_.pager.page help_text.join("\n\n")
53
+ end
54
+
55
+ # Given a group name and an array of commands,
56
+ # return the help string for those commands.
57
+ #
58
+ # @param [String] name The group name.
59
+ # @param [Array<Pry::Command>] commands
60
+ # @return [String] The generated help string.
61
+ def help_text_for_commands(name, commands)
62
+ "#{bold(name.capitalize)}\n" << commands.map do |command|
63
+ " #{command.options[:listing].to_s.ljust(18)} #{command.description.capitalize}"
64
+ end.join("\n")
65
+ end
66
+
67
+ # @param [Hash] groups
68
+ # @return [Array<String>] An array of sorted group names.
69
+ def sorted_group_names(groups)
70
+ groups.keys.sort_by(&method(:group_sort_key))
71
+ end
72
+
73
+ # Sort an array of commands by their `listing` name.
74
+ #
75
+ # @param [Array<Pry::Command>] commands The commands to sort
76
+ # @return [Array<Pry::Command>] commands sorted by listing name.
77
+ def sorted_commands(commands)
78
+ commands.sort_by { |command| command.options[:listing].to_s }
79
+ end
80
+
81
+ # Display help for an individual command or group.
82
+ #
83
+ # @param [String] search The string to search for.
84
+ def display_search(search)
85
+ if (command = command_set.find_command_for_help(search))
86
+ display_command(command)
87
+ else
88
+ display_filtered_search_results(search)
89
+ end
90
+ end
91
+
92
+ # Display help for a searched item, filtered first by group
93
+ # and if that fails, filtered by command name.
94
+ #
95
+ # @param [String] search The string to search for.
96
+ def display_filtered_search_results(search)
97
+ groups = search_hash(search, command_groups)
98
+
99
+ if groups.size > 0
100
+ display_index(groups)
101
+ else
102
+ display_filtered_commands(search)
103
+ end
104
+ end
105
+
106
+ # Display help for a searched item, filtered by group
107
+ #
108
+ # @param [String] search The string to search for.
109
+ def display_filtered_commands(search)
110
+ filtered = search_hash(search, visible_commands)
111
+ raise CommandError, "No help found for '#{args.first}'" if filtered.empty?
112
+
113
+ if filtered.size == 1
114
+ display_command(filtered.values.first)
115
+ else
116
+ display_index({"'#{search}' commands" => filtered.values})
117
+ end
118
+ end
119
+
120
+ # Display help for an individual command.
121
+ #
122
+ # @param [Pry::Command] command
123
+ def display_command(command)
124
+ _pry_.pager.page command.new.help
125
+ end
126
+
127
+ # Find a subset of a hash that matches the user's search term.
128
+ #
129
+ # If there's an exact match a Hash of one element will be returned,
130
+ # otherwise a sub-Hash with every key that matches the search will
131
+ # be returned.
132
+ #
133
+ # @param [String] search the search term
134
+ # @param [Hash] hash the hash to search
135
+ def search_hash(search, hash)
136
+ matching = {}
137
+
138
+ hash.each_pair do |key, value|
139
+ next unless key.is_a?(String)
140
+ if normalize(key) == normalize(search)
141
+ return {key => value}
142
+ elsif normalize(key).start_with?(normalize(search))
143
+ matching[key] = value
144
+ end
145
+ end
146
+
147
+ matching
148
+ end
149
+
150
+ # Clean search terms to make it easier to search group names
151
+ #
152
+ # @param [String] key
153
+ # @return [String]
154
+ def normalize(key)
155
+ key.downcase.gsub(/pry\W+/, '')
156
+ end
157
+
158
+ def group_sort_key(group_name)
159
+ [%w(Help Context Editing Introspection Input_and_output Navigating_pry Gems Basic Commands).index(group_name.gsub(' ', '_')) || 99, group_name]
160
+ end
161
+ end
162
+
163
+ Pry::Commands.add_command(Pry::Command::Help)
164
+ end
@@ -0,0 +1,181 @@
1
+ class Pry
2
+ class Command::Hist < Pry::ClassCommand
3
+ match 'hist'
4
+ group 'Editing'
5
+ description 'Show and replay Readline history.'
6
+
7
+ banner <<-'BANNER'
8
+ Usage: hist [--head|--tail]
9
+ hist --all
10
+ hist --head N
11
+ hist --tail N
12
+ hist --show START..END
13
+ hist --grep PATTERN
14
+ hist --clear
15
+ hist --replay START..END
16
+ hist --save [START..END] FILE
17
+ Aliases: history
18
+
19
+ Show and replay Readline history.
20
+ BANNER
21
+
22
+ def options(opt)
23
+ opt.on :a, :all, "Display all history"
24
+ opt.on :H, :head, "Display the first N items", optional_argument: true, as: Integer
25
+ opt.on :T, :tail, "Display the last N items", optional_argument: true, as: Integer
26
+ opt.on :s, :show, "Show the given range of lines", optional_argument: true, as: Range
27
+ opt.on :G, :grep, "Show lines matching the given pattern", argument: true, as: String
28
+ opt.on :c, :clear , "Clear the current session's history"
29
+ opt.on :r, :replay, "Replay a line or range of lines", argument: true, as: Range
30
+ opt.on :save, "Save history to a file", argument: true, as: Range
31
+ opt.on :e, :'exclude-pry', "Exclude Pry commands from the history"
32
+ opt.on :n, :'no-numbers', "Omit line numbers"
33
+ end
34
+
35
+ def process
36
+ @history = find_history
37
+
38
+ if opts.present?(:show)
39
+ @history = @history.between(opts[:show])
40
+ end
41
+
42
+ if opts.present?(:grep)
43
+ @history = @history.grep(opts[:grep])
44
+ end
45
+
46
+ @history =
47
+ case
48
+ when opts.present?(:head)
49
+ @history.take_lines(1, opts[:head] || 10)
50
+ when opts.present?(:tail)
51
+ @history.take_lines(-(opts[:tail] || 10), opts[:tail] || 10)
52
+ when opts.present?(:show)
53
+ @history.between(opts[:show])
54
+ else
55
+ @history
56
+ end
57
+
58
+ if opts.present?(:'exclude-pry')
59
+ @history = @history.select do |loc|
60
+ !command_set.valid_command?(loc.line)
61
+ end
62
+ end
63
+
64
+ if opts.present?(:save)
65
+ process_save
66
+ elsif opts.present?(:clear)
67
+ process_clear
68
+ elsif opts.present?(:replay)
69
+ process_replay
70
+ else
71
+ process_display
72
+ end
73
+ end
74
+
75
+ private
76
+
77
+ def process_display
78
+ unless opts.present?(:'no-numbers')
79
+ @history = @history.with_line_numbers
80
+ end
81
+
82
+ _pry_.pager.open do |pager|
83
+ @history.print_to_output(pager, true)
84
+ end
85
+ end
86
+
87
+ def process_save
88
+ case opts[:save]
89
+ when Range
90
+ @history = @history.between(opts[:save])
91
+
92
+ unless args.first
93
+ raise CommandError, "Must provide a file name."
94
+ end
95
+
96
+ file_name = File.expand_path(args.first)
97
+ when String
98
+ file_name = File.expand_path(opts[:save])
99
+ end
100
+
101
+ output.puts "Saving history in #{file_name}..."
102
+
103
+ File.open(file_name, 'w') { |f| f.write(@history.raw) }
104
+
105
+ output.puts "History saved."
106
+ end
107
+
108
+ def process_clear
109
+ Pry.history.clear
110
+ output.puts "History cleared."
111
+ end
112
+
113
+ def process_replay
114
+ @history = @history.between(opts[:r])
115
+ replay_sequence = @history.raw
116
+
117
+ # If we met follow-up "hist" call, check for the "--replay" option
118
+ # presence. If "hist" command is called with other options, proceed
119
+ # further.
120
+ check_for_juxtaposed_replay(replay_sequence)
121
+
122
+ replay_sequence.lines.each do |line|
123
+ _pry_.eval line, generated: true
124
+ end
125
+ end
126
+
127
+ # Checks +replay_sequence+ for the presence of neighboring replay calls.
128
+ # @example
129
+ # [1] pry(main)> hist --show 46894
130
+ # 46894: hist --replay 46675..46677
131
+ # [2] pry(main)> hist --show 46675..46677
132
+ # 46675: 1+1
133
+ # 46676: a = 100
134
+ # 46677: hist --tail
135
+ # [3] pry(main)> hist --replay 46894
136
+ # Error: Replay index 46894 points out to another replay call: `hist -r 46675..46677`
137
+ # [4] pry(main)>
138
+ #
139
+ # @raise [Pry::CommandError] If +replay_sequence+ contains another
140
+ # "hist --replay" call
141
+ # @param [String] replay_sequence The sequence of commands to be replayed
142
+ # (per saltum)
143
+ # @return [Boolean] `false` if +replay_sequence+ does not contain another
144
+ # "hist --replay" call
145
+ def check_for_juxtaposed_replay(replay_sequence)
146
+ if replay_sequence =~ /\Ahist(?:ory)?\b/
147
+ # Create *fresh* instance of Options for parsing of "hist" command.
148
+ _slop = self.slop
149
+ _slop.parse replay_sequence.split(' ')[1..-1]
150
+
151
+ if _slop.present?(:r)
152
+ replay_sequence = replay_sequence.split("\n").join('; ')
153
+ index = opts[:r]
154
+ index = index.min if index.min == index.max || index.max.nil?
155
+
156
+ raise CommandError, "Replay index #{ index } points out to another replay call: `#{ replay_sequence }`"
157
+ end
158
+ else
159
+ false
160
+ end
161
+ end
162
+
163
+ # Finds history depending on the given switch.
164
+ #
165
+ # @return [Pry::Code] if it finds `--all` (or `-a`) switch, returns all
166
+ # entries in history. Without the switch returns only the entries from the
167
+ # current Pry session.
168
+ def find_history
169
+ h = if opts.present?(:all)
170
+ Pry.history.to_a
171
+ else
172
+ Pry.history.to_a.last(Pry.history.session_line_count)
173
+ end
174
+
175
+ Pry::Code(Pry.history.filter(h[0..-2]))
176
+ end
177
+ end
178
+
179
+ Pry::Commands.add_command(Pry::Command::Hist)
180
+ Pry::Commands.alias_command 'history', 'hist'
181
+ end