pry 0.10.2-i386-mingw32 → 1.0.0.pre1-i386-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (189) hide show
  1. data/.document +2 -0
  2. data/.gitignore +16 -0
  3. data/.travis.yml +21 -0
  4. data/.yardopts +3 -0
  5. data/CHANGELOG +503 -0
  6. data/CONTRIBUTORS +55 -0
  7. data/Gemfile +9 -0
  8. data/Guardfile +62 -0
  9. data/LICENSE +2 -2
  10. data/{README.md → README.markdown} +31 -37
  11. data/Rakefile +144 -0
  12. data/TODO +117 -0
  13. data/lib/pry.rb +146 -33
  14. data/lib/pry/cli.rb +13 -35
  15. data/lib/pry/code.rb +63 -24
  16. data/lib/pry/code/loc.rb +2 -2
  17. data/lib/pry/code_object.rb +21 -40
  18. data/lib/pry/command.rb +6 -9
  19. data/lib/pry/command_set.rb +37 -80
  20. data/lib/pry/commands.rb +1 -1
  21. data/lib/pry/commands/amend_line.rb +1 -1
  22. data/lib/pry/commands/bang.rb +1 -1
  23. data/lib/pry/commands/cat.rb +2 -11
  24. data/lib/pry/commands/cat/abstract_formatter.rb +1 -1
  25. data/lib/pry/commands/cat/exception_formatter.rb +7 -6
  26. data/lib/pry/commands/cat/file_formatter.rb +32 -15
  27. data/lib/pry/commands/cat/input_expression_formatter.rb +1 -1
  28. data/lib/pry/commands/cd.rb +3 -14
  29. data/lib/pry/commands/code_collector.rb +4 -4
  30. data/lib/pry/commands/easter_eggs.rb +3 -3
  31. data/lib/pry/commands/edit.rb +22 -10
  32. data/lib/pry/commands/edit/exception_patcher.rb +1 -1
  33. data/lib/pry/commands/edit/file_and_line_locator.rb +2 -0
  34. data/lib/pry/{method/patcher.rb → commands/edit/method_patcher.rb} +37 -40
  35. data/lib/pry/commands/find_method.rb +22 -16
  36. data/lib/pry/commands/gem_install.rb +2 -5
  37. data/lib/pry/commands/gem_open.rb +1 -1
  38. data/lib/pry/commands/gist.rb +11 -10
  39. data/lib/pry/commands/help.rb +14 -14
  40. data/lib/pry/commands/hist.rb +5 -24
  41. data/lib/pry/commands/ls.rb +287 -56
  42. data/lib/pry/commands/play.rb +10 -44
  43. data/lib/pry/commands/pry_backtrace.rb +2 -1
  44. data/lib/pry/commands/raise_up.rb +1 -1
  45. data/lib/pry/commands/reload_code.rb +15 -31
  46. data/lib/pry/commands/ri.rb +3 -7
  47. data/lib/pry/commands/shell_command.rb +12 -17
  48. data/lib/pry/commands/shell_mode.rb +2 -2
  49. data/lib/pry/commands/show_doc.rb +0 -5
  50. data/lib/pry/commands/show_info.rb +10 -11
  51. data/lib/pry/commands/show_source.rb +3 -15
  52. data/lib/pry/commands/simple_prompt.rb +1 -1
  53. data/lib/pry/commands/toggle_color.rb +4 -8
  54. data/lib/pry/commands/whereami.rb +10 -18
  55. data/lib/pry/completion.rb +293 -0
  56. data/lib/pry/config.rb +233 -20
  57. data/lib/pry/core_extensions.rb +19 -29
  58. data/lib/pry/custom_completions.rb +6 -0
  59. data/lib/pry/editor.rb +103 -109
  60. data/lib/pry/helpers/base_helpers.rb +109 -22
  61. data/lib/pry/helpers/command_helpers.rb +8 -10
  62. data/lib/pry/helpers/documentation_helpers.rb +2 -1
  63. data/lib/pry/helpers/text.rb +5 -4
  64. data/lib/pry/history.rb +10 -21
  65. data/lib/pry/history_array.rb +0 -5
  66. data/lib/pry/hooks.rb +29 -9
  67. data/lib/pry/indent.rb +10 -5
  68. data/lib/pry/method.rb +86 -81
  69. data/lib/pry/method/weird_method_locator.rb +2 -4
  70. data/lib/pry/module_candidate.rb +14 -5
  71. data/lib/pry/pager.rb +48 -193
  72. data/lib/pry/plugins.rb +2 -2
  73. data/lib/pry/pry_class.rb +193 -104
  74. data/lib/pry/pry_instance.rb +154 -152
  75. data/lib/pry/rbx_method.rb +13 -0
  76. data/lib/pry/rbx_path.rb +1 -1
  77. data/lib/pry/repl.rb +14 -17
  78. data/lib/pry/repl_file_loader.rb +3 -8
  79. data/lib/pry/rubygem.rb +3 -3
  80. data/lib/pry/terminal.rb +3 -4
  81. data/lib/pry/test/helper.rb +11 -6
  82. data/lib/pry/version.rb +1 -1
  83. data/lib/pry/wrapped_module.rb +56 -49
  84. data/man/pry.1 +195 -0
  85. data/man/pry.1.html +204 -0
  86. data/man/pry.1.ronn +141 -0
  87. data/pry.gemspec +31 -0
  88. data/spec/Procfile +3 -0
  89. data/spec/cli_spec.rb +78 -0
  90. data/spec/code_object_spec.rb +277 -0
  91. data/spec/code_spec.rb +219 -0
  92. data/spec/command_helpers_spec.rb +29 -0
  93. data/spec/command_integration_spec.rb +562 -0
  94. data/spec/command_set_spec.rb +627 -0
  95. data/spec/command_spec.rb +821 -0
  96. data/spec/commands/amend_line_spec.rb +247 -0
  97. data/spec/commands/bang_spec.rb +18 -0
  98. data/spec/commands/cat_spec.rb +164 -0
  99. data/spec/commands/cd_spec.rb +250 -0
  100. data/spec/commands/disable_pry_spec.rb +25 -0
  101. data/spec/commands/edit_spec.rb +725 -0
  102. data/spec/commands/exit_all_spec.rb +27 -0
  103. data/spec/commands/exit_program_spec.rb +19 -0
  104. data/spec/commands/exit_spec.rb +28 -0
  105. data/spec/commands/find_method_spec.rb +70 -0
  106. data/spec/commands/gem_list_spec.rb +26 -0
  107. data/spec/commands/gist_spec.rb +79 -0
  108. data/spec/commands/help_spec.rb +56 -0
  109. data/spec/commands/hist_spec.rb +172 -0
  110. data/spec/commands/jump_to_spec.rb +15 -0
  111. data/spec/commands/ls_spec.rb +189 -0
  112. data/spec/commands/play_spec.rb +136 -0
  113. data/spec/commands/raise_up_spec.rb +56 -0
  114. data/spec/commands/save_file_spec.rb +177 -0
  115. data/spec/commands/show_doc_spec.rb +488 -0
  116. data/spec/commands/show_input_spec.rb +17 -0
  117. data/spec/commands/show_source_spec.rb +760 -0
  118. data/spec/commands/whereami_spec.rb +203 -0
  119. data/spec/completion_spec.rb +221 -0
  120. data/spec/control_d_handler_spec.rb +62 -0
  121. data/spec/documentation_helper_spec.rb +73 -0
  122. data/spec/editor_spec.rb +79 -0
  123. data/spec/exception_whitelist_spec.rb +21 -0
  124. data/spec/fixtures/candidate_helper1.rb +11 -0
  125. data/spec/fixtures/candidate_helper2.rb +8 -0
  126. data/spec/fixtures/example.erb +5 -0
  127. data/spec/fixtures/example_nesting.rb +33 -0
  128. data/spec/fixtures/show_source_doc_examples.rb +15 -0
  129. data/spec/fixtures/testlinkrc +2 -0
  130. data/spec/fixtures/testrc +2 -0
  131. data/spec/fixtures/testrcbad +2 -0
  132. data/spec/fixtures/whereami_helper.rb +6 -0
  133. data/spec/helper.rb +35 -0
  134. data/spec/helpers/bacon.rb +86 -0
  135. data/spec/helpers/mock_pry.rb +44 -0
  136. data/spec/helpers/repl_tester.rb +112 -0
  137. data/spec/helpers/table_spec.rb +105 -0
  138. data/spec/history_array_spec.rb +67 -0
  139. data/spec/hooks_spec.rb +522 -0
  140. data/spec/indent_spec.rb +301 -0
  141. data/spec/method_spec.rb +482 -0
  142. data/spec/prompt_spec.rb +61 -0
  143. data/spec/pry_defaults_spec.rb +420 -0
  144. data/spec/pry_history_spec.rb +69 -0
  145. data/spec/pry_output_spec.rb +95 -0
  146. data/spec/pry_repl_spec.rb +86 -0
  147. data/spec/pry_spec.rb +394 -0
  148. data/spec/pryrc_spec.rb +97 -0
  149. data/spec/run_command_spec.rb +25 -0
  150. data/spec/sticky_locals_spec.rb +147 -0
  151. data/spec/syntax_checking_spec.rb +81 -0
  152. data/spec/wrapped_module_spec.rb +261 -0
  153. data/wiki/Customizing-pry.md +397 -0
  154. data/wiki/Home.md +4 -0
  155. metadata +272 -61
  156. checksums.yaml +0 -7
  157. data/CHANGELOG.md +0 -714
  158. data/lib/pry/code/code_file.rb +0 -103
  159. data/lib/pry/color_printer.rb +0 -55
  160. data/lib/pry/commands/change_inspector.rb +0 -27
  161. data/lib/pry/commands/change_prompt.rb +0 -26
  162. data/lib/pry/commands/list_inspectors.rb +0 -35
  163. data/lib/pry/commands/list_prompts.rb +0 -35
  164. data/lib/pry/commands/ls/constants.rb +0 -47
  165. data/lib/pry/commands/ls/formatter.rb +0 -49
  166. data/lib/pry/commands/ls/globals.rb +0 -48
  167. data/lib/pry/commands/ls/grep.rb +0 -21
  168. data/lib/pry/commands/ls/instance_vars.rb +0 -39
  169. data/lib/pry/commands/ls/interrogatable.rb +0 -18
  170. data/lib/pry/commands/ls/jruby_hacks.rb +0 -49
  171. data/lib/pry/commands/ls/local_names.rb +0 -35
  172. data/lib/pry/commands/ls/local_vars.rb +0 -39
  173. data/lib/pry/commands/ls/ls_entity.rb +0 -70
  174. data/lib/pry/commands/ls/methods.rb +0 -57
  175. data/lib/pry/commands/ls/methods_helper.rb +0 -46
  176. data/lib/pry/commands/ls/self_methods.rb +0 -32
  177. data/lib/pry/commands/watch_expression.rb +0 -105
  178. data/lib/pry/commands/watch_expression/expression.rb +0 -38
  179. data/lib/pry/config/behavior.rb +0 -139
  180. data/lib/pry/config/convenience.rb +0 -25
  181. data/lib/pry/config/default.rb +0 -161
  182. data/lib/pry/exceptions.rb +0 -78
  183. data/lib/pry/input_completer.rb +0 -242
  184. data/lib/pry/input_lock.rb +0 -132
  185. data/lib/pry/inspector.rb +0 -27
  186. data/lib/pry/last_exception.rb +0 -61
  187. data/lib/pry/object_path.rb +0 -82
  188. data/lib/pry/output.rb +0 -50
  189. data/lib/pry/prompt.rb +0 -26
@@ -0,0 +1,204 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv='content-type' value='text/html;charset=utf8'>
5
+ <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
6
+ <title>PRY(1) - A Reference to the PRY repl.</title>
7
+ <style type='text/css' media='all'>
8
+ /* style: man */
9
+ body#manpage {margin:0}
10
+ .mp {max-width:100ex;padding:0 9ex 1ex 4ex}
11
+ .mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0}
12
+ .mp h2 {margin:10px 0 0 0}
13
+ .mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex}
14
+ .mp h3 {margin:0 0 0 4ex}
15
+ .mp dt {margin:0;clear:left}
16
+ .mp dt.flush {float:left;width:8ex}
17
+ .mp dd {margin:0 0 0 9ex}
18
+ .mp h1,.mp h2,.mp h3,.mp h4 {clear:left}
19
+ .mp pre {margin-bottom:20px}
20
+ .mp pre+h2,.mp pre+h3 {margin-top:22px}
21
+ .mp h2+pre,.mp h3+pre {margin-top:5px}
22
+ .mp img {display:block;margin:auto}
23
+ .mp h1.man-title {display:none}
24
+ .mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143}
25
+ .mp h2 {font-size:16px;line-height:1.25}
26
+ .mp h1 {font-size:20px;line-height:2}
27
+ .mp {text-align:justify;background:#fff}
28
+ .mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211}
29
+ .mp h1,.mp h2,.mp h3,.mp h4 {color:#030201}
30
+ .mp u {text-decoration:underline}
31
+ .mp code,.mp strong,.mp b {font-weight:bold;color:#131211}
32
+ .mp em,.mp var {font-style:italic;color:#232221;text-decoration:none}
33
+ .mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff}
34
+ .mp b.man-ref {font-weight:normal;color:#434241}
35
+ .mp pre {padding:0 4ex}
36
+ .mp pre code {font-weight:normal;color:#434241}
37
+ .mp h2+pre,h3+pre {padding-left:0}
38
+ ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px}
39
+ ol.man-decor {width:100%}
40
+ ol.man-decor li.tl {text-align:left}
41
+ ol.man-decor li.tc {text-align:center;letter-spacing:4px}
42
+ ol.man-decor li.tr {text-align:right;float:right}
43
+ </style>
44
+ </head>
45
+ <!--
46
+ The following styles are deprecated and will be removed at some point:
47
+ div#man, div#man ol.man, div#man ol.head, div#man ol.man.
48
+
49
+ The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
50
+ .man-navigation should be used instead.
51
+ -->
52
+ <body id='manpage'>
53
+ <div class='mp' id='man'>
54
+
55
+ <div class='man-navigation' style='display:none'>
56
+ <a href="#NAME">NAME</a>
57
+ <a href="#Synopsis">Synopsis</a>
58
+ <a href="#DESCRIPTION">DESCRIPTION</a>
59
+ <a href="#HOMEPAGE">HOMEPAGE</a>
60
+ <a href="#OPTIONS">OPTIONS</a>
61
+ <a href="#FILES">FILES</a>
62
+ <a href="#EXAMPLES">EXAMPLES</a>
63
+ <a href="#AUTHORS">AUTHORS</a>
64
+ </div>
65
+
66
+ <ol class='man-decor man-head man head'>
67
+ <li class='tl'>PRY(1)</li>
68
+ <li class='tc'></li>
69
+ <li class='tr'>PRY(1)</li>
70
+ </ol>
71
+
72
+ <h2 id="NAME">NAME</h2>
73
+ <p class="man-name">
74
+ <code>PRY</code> - <span class="man-whatis">A Reference to the PRY repl.</span>
75
+ </p>
76
+
77
+ <h2 id="Synopsis">Synopsis</h2>
78
+
79
+ <p><code>pry</code> [<code>--version</code>] [<code>--exec</code>] [<code>--no-pager</code>] [<code>--no-history</code>] [<code>--no-color</code>] [<code>-f</code>] [<code>--no-plugins</code>] [<code>--installed-plugins</code>] [<code>--simple-prompt</code>] [<code>--require</code> <em>file</em>] [<code>-I</code>] [<code>--context</code>] [<code>--help</code>]</p>
80
+
81
+ <h2 id="DESCRIPTION">DESCRIPTION</h2>
82
+
83
+ <p>Pry is a powerful alternative to the standard IRB shell for Ruby. It is written from scratch to provide a number of advanced features.</p>
84
+
85
+ <h2 id="HOMEPAGE">HOMEPAGE</h2>
86
+
87
+ <p>http://pry.github.com/</p>
88
+
89
+ <h2 id="OPTIONS">OPTIONS</h2>
90
+
91
+ <dl>
92
+ <dt><code>-v --version</code></dt><dd><p>Prints the version of Pry.</p></dd>
93
+ <dt><code>-e --exec</code></dt><dd><p>Executes argument in context before the session starts.</p></dd>
94
+ <dt><code>--no-pager</code></dt><dd><p>Disable pager for long output.</p></dd>
95
+ <dt><code>--no-history</code></dt><dd><p>Disable history loading.</p></dd>
96
+ <dt><code>--no-color</code></dt><dd><p>Disable syntax highlighting for session.</p></dd>
97
+ <dt class="flush"><code>-f</code></dt><dd><p>Prevent loading of ~/.pryrc for session.</p></dd>
98
+ <dt><code>--no-plugins</code></dt><dd><p>Supress loading of plugins.</p></dd>
99
+ <dt><code>--installed-plugins</code></dt><dd><p>List installed plugins.</p></dd>
100
+ <dt><code>--simple-prompt</code></dt><dd><p>Enable simple prompt mode (eg, >>).</p></dd>
101
+ <dt><code>-r --require</code></dt><dd><p>Require a ruby script at startup.</p></dd>
102
+ <dt class="flush"><code>-I</code></dt><dd><p>Add a path to the $LOAD_PATH</p></dd>
103
+ <dt><code>-c --context</code></dt><dd><p>Start the session in the specified context. Equivalent to <code>context.pry</code> in a session.</p></dd>
104
+ </dl>
105
+
106
+
107
+ <h2 id="FILES">FILES</h2>
108
+
109
+ <p>~/.pryrc Personal pry initialization</p>
110
+
111
+ <h2 id="EXAMPLES">EXAMPLES</h2>
112
+
113
+ <h3 id="Basic-Usage">Basic Usage</h3>
114
+
115
+ <pre><code>$ pry
116
+ [1] pry(main)&gt;4 + 5
117
+ =&gt; 9
118
+ [2] pry(main)&gt; def hello_world
119
+ [2] pry(main)* puts "Hello, World!"
120
+ [2] pry(main)* end
121
+ =&gt; nil
122
+ [3] pry(main)&gt; hello_world
123
+ Hello, World!
124
+ =&gt; nil
125
+ </code></pre>
126
+
127
+ <h3 id="Command-Line-Interaction">Command Line Interaction</h3>
128
+
129
+ <p>Prefix any command you want your shell to execute with a period and pry will return the results from your shell.</p>
130
+
131
+ <pre><code>[1] pry(main)&gt; .date
132
+ Fri Nov 11 09:52:07 EST 2011
133
+ </code></pre>
134
+
135
+ <p>On the command line enter <code>shell-mode</code> to incorporate the current working directory into the Pry prompt.</p>
136
+
137
+ <pre><code>pry(main)&gt; shell-mode
138
+ pry main:/Users/john/ruby/projects/pry $ .cd ..
139
+ pry main:/Users/john/ruby/projects $ .cd ~
140
+ pry main:/Users/john $ .pwd
141
+ /Users/john
142
+ pry main:/Users/john $ shell-mode
143
+ pry(main)&gt;
144
+ </code></pre>
145
+
146
+ <h3 id="State-Navigation">State Navigation</h3>
147
+
148
+ <p>The cd command is used to move into a new object (or scope) inside a Pry session. When inside the new scope it becomes the self for the session and all commands and methods will operate on this new self.</p>
149
+
150
+ <pre><code>pry(main)&gt; self
151
+ =&gt; main
152
+ pry(main)&gt; cd Pry
153
+ pry(Pry):1&gt; self
154
+ =&gt; Pry
155
+ pry(Pry):1&gt; cd ..
156
+ pry(main)&gt;
157
+ </code></pre>
158
+
159
+ <p>The ls command is essentially a unified wrapper to a number of Ruby's introspection mechanisms, including (but not limited to) the following methods: methods, instance_variables, constants, local_variables, instance_methods, class_variables and all the various permutations thereof.</p>
160
+
161
+ <p>By default typing ls will return a list of just the local and instance variables available in the current context.</p>
162
+
163
+ <ul>
164
+ <li>The -M option selects public instance methods (if available).</li>
165
+ <li>The -m option selects public methods.</li>
166
+ <li>The -c option selects constants.</li>
167
+ <li>The -i option select just instance variables.</li>
168
+ <li>The -l option selects just local variables.</li>
169
+ <li>The -s option modifies the -c and -m and -M options to go up the superclass chain (excluding Object).</li>
170
+ <li>The --grep REGEX prunes the list to items that match the regex.</li>
171
+ </ul>
172
+
173
+
174
+ <h3 id="Source-Browsing">Source Browsing</h3>
175
+
176
+ <p>Simply typing show-method method_name will pull the source for the method and display it with syntax highlighting. You can also look up the source for multiple methods at the same time, by typing show-method method1 method2. As a convenience, Pry looks up both instance methods and class methods using this syntax, with priority given to instance methods.</p>
177
+
178
+ <pre><code>pry(Pry):1&gt; show-method rep
179
+
180
+ From: /Users/john/ruby/projects/pry/lib/pry/pry_instance.rb @ line 191:
181
+ Number of lines: 6
182
+
183
+ def rep(target=TOPLEVEL_BINDING)
184
+ target = Pry.binding_for(target)
185
+ result = re(target)
186
+
187
+ show_result(result) if should_print?
188
+ end
189
+ </code></pre>
190
+
191
+ <h2 id="AUTHORS">AUTHORS</h2>
192
+
193
+ <p>Pry is primarily the work of John Mair (banisterfiend)</p>
194
+
195
+
196
+ <ol class='man-decor man-foot man foot'>
197
+ <li class='tl'></li>
198
+ <li class='tc'>November 2011</li>
199
+ <li class='tr'>PRY(1)</li>
200
+ </ol>
201
+
202
+ </div>
203
+ </body>
204
+ </html>
@@ -0,0 +1,141 @@
1
+ PRY(1) -- A Reference to the PRY repl.
2
+ ======================================
3
+
4
+ ##Synopsis
5
+
6
+
7
+ `pry` [`--version`] [`--exec`] [`--no-pager`] [`--no-history`] [`--no-color`] [`-f`] [`--no-plugins`] [`--installed-plugins`] [`--simple-prompt`] [`--require` _file_] [`-I`] [`--context`] [`--help`]
8
+
9
+ ## DESCRIPTION
10
+
11
+
12
+ Pry is a powerful alternative to the standard IRB shell for Ruby. It is written from scratch to provide a number of advanced features.
13
+
14
+ ## HOMEPAGE
15
+
16
+
17
+ http://pry.github.com/
18
+
19
+ ##OPTIONS
20
+
21
+
22
+ * `-v --version`:
23
+ Prints the version of Pry.
24
+
25
+ * `-e --exec`:
26
+ Executes argument in context before the session starts.
27
+
28
+ * `--no-pager`:
29
+ Disable pager for long output.
30
+
31
+ * `--no-history`:
32
+ Disable history loading.
33
+
34
+ * `--no-color`:
35
+ Disable syntax highlighting for session.
36
+
37
+ * `-f`:
38
+ Prevent loading of ~/.pryrc for session.
39
+
40
+ * `--no-plugins`:
41
+ Supress loading of plugins.
42
+
43
+ * `--installed-plugins`:
44
+ List installed plugins.
45
+
46
+ * `--simple-prompt`:
47
+ Enable simple prompt mode (eg, >>).
48
+
49
+ * `-r --require`:
50
+ Require a ruby script at startup.
51
+
52
+ * `-I`:
53
+ Add a path to the $LOAD_PATH
54
+
55
+ * `-c --context`:
56
+ Start the session in the specified context. Equivalent to `context.pry` in a session.
57
+
58
+ ##FILES
59
+
60
+
61
+ ~/.pryrc Personal pry initialization
62
+
63
+ ##EXAMPLES
64
+
65
+ ###Basic Usage
66
+
67
+
68
+ $ pry
69
+ [1] pry(main)>4 + 5
70
+ => 9
71
+ [2] pry(main)> def hello_world
72
+ [2] pry(main)* puts "Hello, World!"
73
+ [2] pry(main)* end
74
+ => nil
75
+ [3] pry(main)> hello_world
76
+ Hello, World!
77
+ => nil
78
+
79
+ ###Command Line Interaction
80
+
81
+
82
+ Prefix any command you want your shell to execute with a period and pry will return the results from your shell.
83
+
84
+ [1] pry(main)> .date
85
+ Fri Nov 11 09:52:07 EST 2011
86
+
87
+ On the command line enter `shell-mode` to incorporate the current working directory into the Pry prompt.
88
+
89
+ pry(main)> shell-mode
90
+ pry main:/Users/john/ruby/projects/pry $ .cd ..
91
+ pry main:/Users/john/ruby/projects $ .cd ~
92
+ pry main:/Users/john $ .pwd
93
+ /Users/john
94
+ pry main:/Users/john $ shell-mode
95
+ pry(main)>
96
+
97
+ ###State Navigation
98
+
99
+
100
+ The cd command is used to move into a new object (or scope) inside a Pry session. When inside the new scope it becomes the self for the session and all commands and methods will operate on this new self.
101
+
102
+ pry(main)> self
103
+ => main
104
+ pry(main)> cd Pry
105
+ pry(Pry):1> self
106
+ => Pry
107
+ pry(Pry):1> cd ..
108
+ pry(main)>
109
+
110
+ The ls command is essentially a unified wrapper to a number of Ruby's introspection mechanisms, including (but not limited to) the following methods: methods, instance\_variables, constants, local\_variables, instance\_methods, class_variables and all the various permutations thereof.
111
+
112
+ By default typing ls will return a list of just the local and instance variables available in the current context.
113
+
114
+ * The -M option selects public instance methods (if available).
115
+ * The -m option selects public methods.
116
+ * The -c option selects constants.
117
+ * The -i option select just instance variables.
118
+ * The -l option selects just local variables.
119
+ * The -s option modifies the -c and -m and -M options to go up the superclass chain (excluding Object).
120
+ * The --grep REGEX prunes the list to items that match the regex.
121
+
122
+ ###Source Browsing
123
+
124
+
125
+ Simply typing show-method method_name will pull the source for the method and display it with syntax highlighting. You can also look up the source for multiple methods at the same time, by typing show-method method1 method2. As a convenience, Pry looks up both instance methods and class methods using this syntax, with priority given to instance methods.
126
+
127
+ pry(Pry):1> show-method rep
128
+
129
+ From: /Users/john/ruby/projects/pry/lib/pry/pry_instance.rb @ line 191:
130
+ Number of lines: 6
131
+
132
+ def rep(target=TOPLEVEL_BINDING)
133
+ target = Pry.binding_for(target)
134
+ result = re(target)
135
+
136
+ show_result(result) if should_print?
137
+ end
138
+
139
+ ##AUTHORS
140
+
141
+ Pry is primarily the work of John Mair (banisterfiend)
@@ -0,0 +1,31 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/pry/version', __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "pry"
6
+ s.version = Pry::VERSION
7
+
8
+ s.authors = ["John Mair (banisterfiend)", "Conrad Irwin", "Ryan Fitzgerald"]
9
+ s.email = ["jrmair@gmail.com", "conrad.irwin@gmail.com", "rwfitzge@gmail.com"]
10
+ s.summary = "An IRB alternative and runtime developer console"
11
+ s.description = s.summary
12
+ s.homepage = "http://pry.github.com"
13
+ s.license = 'MIT'
14
+
15
+ s.executables = ["pry"]
16
+ s.require_paths = ["lib"]
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- spec/*`.split("\n")
19
+
20
+ s.add_dependency 'coderay', '~> 1.0.5'
21
+ s.add_dependency 'slop', '~> 3.4'
22
+ s.add_dependency 'method_source', '~> 0.8'
23
+
24
+ s.add_development_dependency 'bacon', '~> 1.2'
25
+ s.add_development_dependency 'open4', '~> 1.3'
26
+ s.add_development_dependency 'rake', '~> 0.9'
27
+ s.add_development_dependency 'guard', '~> 1.3.2'
28
+ s.add_development_dependency 'mocha', '~> 0.13.1'
29
+ # TODO: make this a plain dependency:
30
+ s.add_development_dependency 'bond', '~> 0.4.2'
31
+ end
@@ -0,0 +1,3 @@
1
+ # Run this with:
2
+ # gem install foreman && foreman start -f spec/Procfile
3
+ pryhere: sh -c '(cd ..; rake pry)'
@@ -0,0 +1,78 @@
1
+ require 'helper'
2
+
3
+ describe Pry::Hooks do
4
+ before do
5
+ Pry::CLI.reset
6
+ end
7
+
8
+ describe "parsing options" do
9
+ it 'should raise if no options defined' do
10
+ lambda { Pry::CLI.parse_options(["--nothing"]) }.should.raise Pry::CLI::NoOptionsError
11
+ end
12
+ end
13
+
14
+ describe "adding options" do
15
+ it "should be able to add an option" do
16
+ run = false
17
+
18
+ Pry::CLI.add_options do
19
+ on :optiontest, "A test option" do
20
+ run = true
21
+ end
22
+ end.parse_options(["--optiontest"])
23
+
24
+ run.should == true
25
+ end
26
+
27
+ it "should be able to add multiple options" do
28
+ run = false
29
+ run2 = false
30
+
31
+ Pry::CLI.add_options do
32
+ on :optiontest, "A test option" do
33
+ run = true
34
+ end
35
+ end.add_options do
36
+ on :optiontest2, "Another test option" do
37
+ run2 = true
38
+ end
39
+ end.parse_options(["--optiontest", "--optiontest2"])
40
+
41
+ run.should == true
42
+ run2.should == true
43
+ end
44
+
45
+ end
46
+
47
+ describe "processing options" do
48
+ it "should be able to process an option" do
49
+ run = false
50
+
51
+ Pry::CLI.add_options do
52
+ on :optiontest, "A test option"
53
+ end.process_options do |opts|
54
+ run = true if opts.present?(:optiontest)
55
+ end.parse_options(["--optiontest"])
56
+
57
+ run.should == true
58
+ end
59
+
60
+ it "should be able to process multiple options" do
61
+ run = false
62
+ run2 = false
63
+
64
+ Pry::CLI.add_options do
65
+ on :optiontest, "A test option"
66
+ on :optiontest2, "Another test option"
67
+ end.process_options do |opts|
68
+ run = true if opts.present?(:optiontest)
69
+ end.process_options do |opts|
70
+ run2 = true if opts.present?(:optiontest2)
71
+ end.parse_options(["--optiontest", "--optiontest2"])
72
+
73
+ run.should == true
74
+ run2.should == true
75
+ end
76
+
77
+ end
78
+ end