pry 0.9.9.6pre2-i386-mingw32 → 0.9.10-i386-mingw32
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.
- data/CHANGELOG +41 -0
 - data/CONTRIBUTORS +27 -26
 - data/README.markdown +4 -4
 - data/Rakefile +2 -2
 - data/lib/pry.rb +25 -19
 - data/lib/pry/cli.rb +31 -10
 - data/lib/pry/code.rb +41 -83
 - data/lib/pry/command.rb +87 -76
 - data/lib/pry/command_set.rb +13 -20
 - data/lib/pry/completion.rb +139 -121
 - data/lib/pry/config.rb +4 -0
 - data/lib/pry/core_extensions.rb +88 -31
 - data/lib/pry/default_commands/cd.rb +31 -8
 - data/lib/pry/default_commands/context.rb +4 -58
 - data/lib/pry/default_commands/easter_eggs.rb +1 -1
 - data/lib/pry/default_commands/editing.rb +21 -14
 - data/lib/pry/default_commands/find_method.rb +5 -7
 - data/lib/pry/default_commands/gist.rb +187 -0
 - data/lib/pry/default_commands/hist.rb +6 -6
 - data/lib/pry/default_commands/input_and_output.rb +73 -129
 - data/lib/pry/default_commands/introspection.rb +107 -52
 - data/lib/pry/default_commands/ls.rb +1 -1
 - data/lib/pry/default_commands/misc.rb +0 -5
 - data/lib/pry/default_commands/whereami.rb +92 -0
 - data/lib/pry/helpers/base_helpers.rb +6 -1
 - data/lib/pry/helpers/command_helpers.rb +30 -9
 - data/lib/pry/helpers/documentation_helpers.rb +7 -7
 - data/lib/pry/helpers/options_helpers.rb +1 -1
 - data/lib/pry/helpers/text.rb +7 -9
 - data/lib/pry/history.rb +15 -2
 - data/lib/pry/hooks.rb +1 -1
 - data/lib/pry/indent.rb +17 -10
 - data/lib/pry/method.rb +35 -19
 - data/lib/pry/module_candidate.rb +130 -0
 - data/lib/pry/pry_class.rb +54 -22
 - data/lib/pry/pry_instance.rb +71 -14
 - data/lib/pry/repl_file_loader.rb +80 -0
 - data/lib/pry/version.rb +1 -1
 - data/lib/pry/wrapped_module.rb +121 -142
 - data/pry.gemspec +13 -13
 - data/test/candidate_helper1.rb +11 -0
 - data/test/candidate_helper2.rb +8 -0
 - data/test/helper.rb +16 -0
 - data/test/test_code.rb +1 -1
 - data/test/test_command.rb +364 -270
 - data/test/test_command_integration.rb +235 -267
 - data/test/test_completion.rb +36 -0
 - data/test/test_control_d_handler.rb +45 -0
 - data/test/test_default_commands/example.erb +5 -0
 - data/test/test_default_commands/test_cd.rb +316 -11
 - data/test/test_default_commands/test_context.rb +143 -192
 - data/test/test_default_commands/test_documentation.rb +81 -14
 - data/test/test_default_commands/test_find_method.rb +10 -2
 - data/test/test_default_commands/test_input.rb +102 -111
 - data/test/test_default_commands/test_introspection.rb +17 -12
 - data/test/test_default_commands/test_ls.rb +8 -6
 - data/test/test_default_commands/test_shell.rb +18 -15
 - data/test/test_default_commands/test_show_source.rb +170 -44
 - data/test/test_exception_whitelist.rb +6 -2
 - data/test/test_hooks.rb +32 -0
 - data/test/test_input_stack.rb +19 -16
 - data/test/test_method.rb +0 -4
 - data/test/test_prompt.rb +60 -0
 - data/test/test_pry.rb +23 -31
 - data/test/test_pry_defaults.rb +75 -57
 - data/test/test_syntax_checking.rb +12 -11
 - data/test/test_wrapped_module.rb +103 -0
 - metadata +72 -26
 
    
        data/CHANGELOG
    CHANGED
    
    | 
         @@ -1,3 +1,44 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            14/07/2012 version 0.9.10
         
     | 
| 
      
 2 
     | 
    
         
            +
            dependency changes:
         
     | 
| 
      
 3 
     | 
    
         
            +
            * #561 upgrade the slop gem to version 3
         
     | 
| 
      
 4 
     | 
    
         
            +
            * #590 move to the jist gem from gist.
         
     | 
| 
      
 5 
     | 
    
         
            +
            * upgrade method_source to 0.8
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            new features:
         
     | 
| 
      
 8 
     | 
    
         
            +
            * #572 add --hist, -o and -k flags to gist command
         
     | 
| 
      
 9 
     | 
    
         
            +
            * #584 support show-source/doc on methods defined in class-eval
         
     | 
| 
      
 10 
     | 
    
         
            +
            * #585 support show-source/doc on gem methods defined in C
         
     | 
| 
      
 11 
     | 
    
         
            +
            * #596 add --disable-plugin and --select-plugin options
         
     | 
| 
      
 12 
     | 
    
         
            +
            * #597 allow "cd -" to switch between bindings
         
     | 
| 
      
 13 
     | 
    
         
            +
            * #612 add Pry.config.should_load_local_rc to turn off ./.pryrc
         
     | 
| 
      
 14 
     | 
    
         
            +
            * allow running a file of pry input with pry <file>
         
     | 
| 
      
 15 
     | 
    
         
            +
            * support colours in "ri" command
         
     | 
| 
      
 16 
     | 
    
         
            +
            * add before_eval hook
         
     | 
| 
      
 17 
     | 
    
         
            +
            * prompt now gets a lot more data when proc arity is 1
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            bug fixes &c.
         
     | 
| 
      
 20 
     | 
    
         
            +
            * #554 removed the "req" command
         
     | 
| 
      
 21 
     | 
    
         
            +
            * #567 fix rendering bugs when starting pry
         
     | 
| 
      
 22 
     | 
    
         
            +
            * #568 fix Array#pretty_print on Jruby
         
     | 
| 
      
 23 
     | 
    
         
            +
            * #575 fix "edit" on windows
         
     | 
| 
      
 24 
     | 
    
         
            +
            * #576 fix "find-method" in the presence of badly behaved objects
         
     | 
| 
      
 25 
     | 
    
         
            +
            * #580 fix "whereami" in erb files on rails
         
     | 
| 
      
 26 
     | 
    
         
            +
            * #632 raise fewer exceptions while tab completing
         
     | 
| 
      
 27 
     | 
    
         
            +
            * #605 dont immediately quite pry when an error happens in readline
         
     | 
| 
      
 28 
     | 
    
         
            +
            * #606 support for ansicon to give jruby windows users colour
         
     | 
| 
      
 29 
     | 
    
         
            +
            * #613 massive speed improvements to show-source for modules
         
     | 
| 
      
 30 
     | 
    
         
            +
            * #620 improve whereami command when not in a binding.pry
         
     | 
| 
      
 31 
     | 
    
         
            +
            * #622 support embedded documents (=begin ... =end)
         
     | 
| 
      
 32 
     | 
    
         
            +
            * #627 support editing files with spaces in the name
         
     | 
| 
      
 33 
     | 
    
         
            +
            * changed __binding_impl__ to __pry__
         
     | 
| 
      
 34 
     | 
    
         
            +
            * support for absolute paths in $EDITOR
         
     | 
| 
      
 35 
     | 
    
         
            +
            * fix "cat" command on files with unknown extensions
         
     | 
| 
      
 36 
     | 
    
         
            +
            * many many internal refactorings and tidyings
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            09/05/2012 version 0.9.9.6 fixes #558
         
     | 
| 
      
 39 
     | 
    
         
            +
            * #558 has been a thorn in our side for long enough, hopefully this properly fixes it
         
     | 
| 
      
 40 
     | 
    
         
            +
            (though im not to confident :P)
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
       1 
42 
     | 
    
         
             
            09/05/2012 version 0.9.9.5 minor bugfix
         
     | 
| 
       2 
43 
     | 
    
         
             
            * fixed ZeroDivisionError in correct_indentation, bug #558
         
     | 
| 
       3 
44 
     | 
    
         
             
            * fix double highlighting in rdoc, bug #562
         
     | 
    
        data/CONTRIBUTORS
    CHANGED
    
    | 
         @@ -1,36 +1,37 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
                
     | 
| 
       2 
     | 
    
         
            -
                
     | 
| 
       3 
     | 
    
         
            -
                
     | 
| 
       4 
     | 
    
         
            -
                 
     | 
| 
       5 
     | 
    
         
            -
                51	 
     | 
| 
       6 
     | 
    
         
            -
                49	 
     | 
| 
       7 
     | 
    
         
            -
                39	 
     | 
| 
      
 1 
     | 
    
         
            +
               938	banisterfiend
         
     | 
| 
      
 2 
     | 
    
         
            +
               290	cirwin
         
     | 
| 
      
 3 
     | 
    
         
            +
               140	ryanf
         
     | 
| 
      
 4 
     | 
    
         
            +
                93	robgleeson
         
     | 
| 
      
 5 
     | 
    
         
            +
                51	injekt
         
     | 
| 
      
 6 
     | 
    
         
            +
                49	Mon_Ouie
         
     | 
| 
      
 7 
     | 
    
         
            +
                39	envygeeks
         
     | 
| 
      
 8 
     | 
    
         
            +
                28	yorickpeterse
         
     | 
| 
       8 
9 
     | 
    
         
             
                18	David Palm
         
     | 
| 
       9 
     | 
    
         
            -
                 
     | 
| 
       10 
     | 
    
         
            -
                 
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                 8	 
     | 
| 
      
 10 
     | 
    
         
            +
                15	epitron
         
     | 
| 
      
 11 
     | 
    
         
            +
                15	kyrylo
         
     | 
| 
      
 12 
     | 
    
         
            +
                10	swarley
         
     | 
| 
      
 13 
     | 
    
         
            +
                 8	rue
         
     | 
| 
       13 
14 
     | 
    
         
             
                 3	Darrick Wiebe
         
     | 
| 
       14 
     | 
    
         
            -
                 3	 
     | 
| 
      
 15 
     | 
    
         
            +
                 3	fowl
         
     | 
| 
       15 
16 
     | 
    
         
             
                 3	misfo
         
     | 
| 
       16 
17 
     | 
    
         
             
                 2	Ben Langfeld
         
     | 
| 
       17 
     | 
    
         
            -
                 2	Bram Swenson
         
     | 
| 
       18 
18 
     | 
    
         
             
                 2	Eric Christopherson
         
     | 
| 
       19 
     | 
    
         
            -
                 2	Erik Michaels-Ober
         
     | 
| 
       20 
19 
     | 
    
         
             
                 2	Kelsey Judson
         
     | 
| 
       21 
20 
     | 
    
         
             
                 2	Xavier Shay
         
     | 
| 
       22 
     | 
    
         
            -
                 2	 
     | 
| 
       23 
     | 
    
         
            -
                  
     | 
| 
       24 
     | 
    
         
            -
                 1	Reginald Tan
         
     | 
| 
       25 
     | 
    
         
            -
                 1	Jordan Running
         
     | 
| 
       26 
     | 
    
         
            -
                 1	Robert Gleeson
         
     | 
| 
       27 
     | 
    
         
            -
                 1	Jonathan Soeder
         
     | 
| 
       28 
     | 
    
         
            -
                 1	Shawn Anderson
         
     | 
| 
       29 
     | 
    
         
            -
                 1	Sherin C
         
     | 
| 
       30 
     | 
    
         
            -
                 1	Tim Pope
         
     | 
| 
      
 21 
     | 
    
         
            +
                 2	sferic
         
     | 
| 
      
 22 
     | 
    
         
            +
                 2	shadowshell
         
     | 
| 
       31 
23 
     | 
    
         
             
                 1	Gerbert Olivé
         
     | 
| 
       32 
     | 
    
         
            -
                 1	Jonathan Jackson
         
     | 
| 
       33 
     | 
    
         
            -
                 1	Joe Peduto
         
     | 
| 
       34 
24 
     | 
    
         
             
                 1	Gosha Arinich
         
     | 
| 
       35 
     | 
    
         
            -
                 1	 
     | 
| 
      
 25 
     | 
    
         
            +
                 1	Joe Peduto
         
     | 
| 
      
 26 
     | 
    
         
            +
                 1	Jonathan Jackson
         
     | 
| 
      
 27 
     | 
    
         
            +
                 1	Jonathan Soeder
         
     | 
| 
      
 28 
     | 
    
         
            +
                 1	Jordan Running
         
     | 
| 
       36 
29 
     | 
    
         
             
                 1	Josh Cheek
         
     | 
| 
      
 30 
     | 
    
         
            +
                 1	KL-7
         
     | 
| 
      
 31 
     | 
    
         
            +
                 1	Lars Haugseth
         
     | 
| 
      
 32 
     | 
    
         
            +
                 1	Reginald Tan
         
     | 
| 
      
 33 
     | 
    
         
            +
                 1	Renato Mascarenhas
         
     | 
| 
      
 34 
     | 
    
         
            +
                 1	Shawn Anderson
         
     | 
| 
      
 35 
     | 
    
         
            +
                 1	Sherin C
         
     | 
| 
      
 36 
     | 
    
         
            +
                 1	sonnym
         
     | 
| 
      
 37 
     | 
    
         
            +
                 1	tpope
         
     | 
    
        data/README.markdown
    CHANGED
    
    | 
         @@ -21,8 +21,8 @@ 
     | 
|
| 
       21 
21 
     | 
    
         
             
            </center>
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
            Pry is a powerful alternative to the standard IRB shell for Ruby. It is
         
     | 
| 
       24 
     | 
    
         
            -
            written from scratch to provide a number of advanced features, 
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
            written from scratch to provide a number of advanced features,
         
     | 
| 
      
 25 
     | 
    
         
            +
            including:
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
            * Source code browsing (including core C source with the pry-doc gem)
         
     | 
| 
       28 
28 
     | 
    
         
             
            * Documentation browsing
         
     | 
| 
         @@ -280,7 +280,7 @@ picked up by `rdoc`. Pry also has a basic understanding of both the 
     | 
|
| 
       280 
280 
     | 
    
         
             
            rdoc and yard formats and will attempt to syntax highlight the
         
     | 
| 
       281 
281 
     | 
    
         
             
            documentation appropriately.
         
     | 
| 
       282 
282 
     | 
    
         | 
| 
       283 
     | 
    
         
            -
            Nonetheless  
     | 
| 
      
 283 
     | 
    
         
            +
            Nonetheless, the `ri` functionality is very good and
         
     | 
| 
       284 
284 
     | 
    
         
             
            has an advantage over Pry's system in that it allows documentation
         
     | 
| 
       285 
285 
     | 
    
         
             
            lookup for classes as well as methods. Pry therefore has good
         
     | 
| 
       286 
286 
     | 
    
         
             
            integration with  `ri` through the `ri` command. The syntax
         
     | 
| 
         @@ -391,7 +391,7 @@ between commands and running commands in background 
     | 
|
| 
       391 
391 
     | 
    
         | 
| 
       392 
392 
     | 
    
         
             
            ### Contact
         
     | 
| 
       393 
393 
     | 
    
         | 
| 
       394 
     | 
    
         
            -
            Problems or questions  
     | 
| 
      
 394 
     | 
    
         
            +
            Problems or questions? file an issue at [github](https://github.com/pry/pry/issues)
         
     | 
| 
       395 
395 
     | 
    
         | 
| 
       396 
396 
     | 
    
         
             
            ### Contributors
         
     | 
| 
       397 
397 
     | 
    
         | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -20,8 +20,8 @@ def apply_spec_defaults(s) 
     | 
|
| 
       20 
20 
     | 
    
         
             
              s.files = `git ls-files`.split("\n")
         
     | 
| 
       21 
21 
     | 
    
         
             
              s.test_files = `git ls-files -- test/*`.split("\n")
         
     | 
| 
       22 
22 
     | 
    
         
             
              s.add_dependency('coderay', '~> 1.0.5')
         
     | 
| 
       23 
     | 
    
         
            -
              s.add_dependency('slop', [' 
     | 
| 
       24 
     | 
    
         
            -
              s.add_dependency('method_source','~> 0. 
     | 
| 
      
 23 
     | 
    
         
            +
              s.add_dependency('slop', ['~> 3.3.1'])
         
     | 
| 
      
 24 
     | 
    
         
            +
              s.add_dependency('method_source','~> 0.8')
         
     | 
| 
       25 
25 
     | 
    
         
             
              s.add_development_dependency('bacon', '~> 1.1')
         
     | 
| 
       26 
26 
     | 
    
         
             
              s.add_development_dependency('open4', '~> 1.3')
         
     | 
| 
       27 
27 
     | 
    
         
             
              s.add_development_dependency('rake', '~> 0.9')
         
     | 
    
        data/lib/pry.rb
    CHANGED
    
    | 
         @@ -10,13 +10,7 @@ class Pry 
     | 
|
| 
       10 
10 
     | 
    
         
             
              # The default hooks - display messages when beginning and ending Pry sessions.
         
     | 
| 
       11 
11 
     | 
    
         
             
              DEFAULT_HOOKS = Pry::Hooks.new.add_hook(:before_session, :default) do |out, target, _pry_|
         
     | 
| 
       12 
12 
     | 
    
         
             
                next if _pry_.quiet?
         
     | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
       14 
     | 
    
         
            -
                file = target.eval('__FILE__')
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                # /unknown/ for rbx
         
     | 
| 
       17 
     | 
    
         
            -
                if file !~ /(\(.*\))|<.*>/ && file !~ /__unknown__/ && file != "" && file != "-e"  || file == Pry.eval_path
         
     | 
| 
       18 
     | 
    
         
            -
                  _pry_.run_command("whereami", "", target)
         
     | 
| 
       19 
     | 
    
         
            -
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
                _pry_.run_command("whereami --quiet", "", target)
         
     | 
| 
       20 
14 
     | 
    
         
             
              end
         
     | 
| 
       21 
15 
     | 
    
         | 
| 
       22 
16 
     | 
    
         
             
              # The default print
         
     | 
| 
         @@ -89,13 +83,13 @@ class Pry 
     | 
|
| 
       89 
83 
     | 
    
         
             
              # A prompt that includes the full object path as well as
         
     | 
| 
       90 
84 
     | 
    
         
             
              # input/output (_in_ and _out_) information. Good for navigation.
         
     | 
| 
       91 
85 
     | 
    
         
             
              NAV_PROMPT = [
         
     | 
| 
       92 
     | 
    
         
            -
                            proc do | 
     | 
| 
       93 
     | 
    
         
            -
                              tree =  
     | 
| 
       94 
     | 
    
         
            -
                              "[#{ 
     | 
| 
      
 86 
     | 
    
         
            +
                            proc do |conf|
         
     | 
| 
      
 87 
     | 
    
         
            +
                              tree = conf.binding_stack.map { |b| Pry.view_clip(b.eval("self")) }.join " / "
         
     | 
| 
      
 88 
     | 
    
         
            +
                              "[#{conf.expr_number}] (pry) #{tree}: #{conf.nesting_level}> "
         
     | 
| 
       95 
89 
     | 
    
         
             
                            end,
         
     | 
| 
       96 
     | 
    
         
            -
                            proc do | 
     | 
| 
       97 
     | 
    
         
            -
                              tree =  
     | 
| 
       98 
     | 
    
         
            -
                              "[#{ 
     | 
| 
      
 90 
     | 
    
         
            +
                            proc do |conf|
         
     | 
| 
      
 91 
     | 
    
         
            +
                              tree = conf.binding_stack.map { |b| Pry.view_clip(b.eval("self")) }.join " / "
         
     | 
| 
      
 92 
     | 
    
         
            +
                              "[#{conf.expr_number}] (pry) #{tree}: #{conf.nesting_level}* "
         
     | 
| 
       99 
93 
     | 
    
         
             
                            end,
         
     | 
| 
       100 
94 
     | 
    
         
             
                           ]
         
     | 
| 
       101 
95 
     | 
    
         | 
| 
         @@ -106,14 +100,16 @@ class Pry 
     | 
|
| 
       106 
100 
     | 
    
         
             
              # 3) In a nested session  - behave like `cd ..`       (pop a binding)
         
     | 
| 
       107 
101 
     | 
    
         
             
              DEFAULT_CONTROL_D_HANDLER = proc do |eval_string, _pry_|
         
     | 
| 
       108 
102 
     | 
    
         
             
                if !eval_string.empty?
         
     | 
| 
       109 
     | 
    
         
            -
                  #  
     | 
| 
      
 103 
     | 
    
         
            +
                  # Clear input buffer.
         
     | 
| 
       110 
104 
     | 
    
         
             
                  eval_string.replace("")
         
     | 
| 
       111 
105 
     | 
    
         
             
                elsif _pry_.binding_stack.one?
         
     | 
| 
       112 
     | 
    
         
            -
                  # ^D at top-level breaks out of loop
         
     | 
| 
      
 106 
     | 
    
         
            +
                  # ^D at top-level breaks out of a REPL loop.
         
     | 
| 
       113 
107 
     | 
    
         
             
                  _pry_.binding_stack.clear
         
     | 
| 
       114 
108 
     | 
    
         
             
                  throw(:breakout)
         
     | 
| 
       115 
109 
     | 
    
         
             
                else
         
     | 
| 
       116 
     | 
    
         
            -
                  #  
     | 
| 
      
 110 
     | 
    
         
            +
                  # Otherwise, saves current binding stack as old stack and pops last
         
     | 
| 
      
 111 
     | 
    
         
            +
                  # binding out of binding stack (the old stack still has that binding).
         
     | 
| 
      
 112 
     | 
    
         
            +
                  _pry_.command_state["cd"].old_stack = _pry_.binding_stack.dup
         
     | 
| 
       117 
113 
     | 
    
         
             
                  _pry_.binding_stack.pop
         
     | 
| 
       118 
114 
     | 
    
         
             
                end
         
     | 
| 
       119 
115 
     | 
    
         
             
              end
         
     | 
| 
         @@ -168,13 +164,20 @@ end 
     | 
|
| 
       168 
164 
     | 
    
         | 
| 
       169 
165 
     | 
    
         
             
            require "method_source"
         
     | 
| 
       170 
166 
     | 
    
         
             
            require 'shellwords'
         
     | 
| 
       171 
     | 
    
         
            -
            require "readline"
         
     | 
| 
       172 
167 
     | 
    
         
             
            require "stringio"
         
     | 
| 
       173 
168 
     | 
    
         
             
            require "coderay"
         
     | 
| 
       174 
169 
     | 
    
         
             
            require "optparse"
         
     | 
| 
       175 
170 
     | 
    
         
             
            require "slop"
         
     | 
| 
       176 
171 
     | 
    
         
             
            require "rbconfig"
         
     | 
| 
       177 
172 
     | 
    
         | 
| 
      
 173 
     | 
    
         
            +
            begin
         
     | 
| 
      
 174 
     | 
    
         
            +
              require 'readline'
         
     | 
| 
      
 175 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 176 
     | 
    
         
            +
              warn "You're running a version of ruby with no Readline support"
         
     | 
| 
      
 177 
     | 
    
         
            +
              warn "Please `gem install rb-readline` or recompile ruby --with-readline."
         
     | 
| 
      
 178 
     | 
    
         
            +
              exit!
         
     | 
| 
      
 179 
     | 
    
         
            +
            end
         
     | 
| 
      
 180 
     | 
    
         
            +
             
     | 
| 
       178 
181 
     | 
    
         
             
            if Pry::Helpers::BaseHelpers.jruby?
         
     | 
| 
       179 
182 
     | 
    
         
             
              begin
         
     | 
| 
       180 
183 
     | 
    
         
             
                require 'ffi'
         
     | 
| 
         @@ -183,11 +186,14 @@ if Pry::Helpers::BaseHelpers.jruby? 
     | 
|
| 
       183 
186 
     | 
    
         
             
              end
         
     | 
| 
       184 
187 
     | 
    
         
             
            end
         
     | 
| 
       185 
188 
     | 
    
         | 
| 
       186 
     | 
    
         
            -
            if Pry::Helpers::BaseHelpers.windows?
         
     | 
| 
      
 189 
     | 
    
         
            +
            if Pry::Helpers::BaseHelpers.windows? && !Pry::Helpers::BaseHelpers.windows_ansi?
         
     | 
| 
       187 
190 
     | 
    
         
             
              begin
         
     | 
| 
       188 
191 
     | 
    
         
             
                require 'win32console'
         
     | 
| 
      
 192 
     | 
    
         
            +
              # The mswin and mingw versions of pry require win32console, so this should
         
     | 
| 
      
 193 
     | 
    
         
            +
              # only fail on jruby (where win32console doesn't work).
         
     | 
| 
      
 194 
     | 
    
         
            +
              # Instead we'll recommend ansicon, which does.
         
     | 
| 
       189 
195 
     | 
    
         
             
              rescue LoadError
         
     | 
| 
       190 
     | 
    
         
            -
                warn " 
     | 
| 
      
 196 
     | 
    
         
            +
                warn "For a better pry experience, please use ansicon: http://adoxa.3eeweb.com/ansicon/"
         
     | 
| 
       191 
197 
     | 
    
         
             
              end
         
     | 
| 
       192 
198 
     | 
    
         
             
            end
         
     | 
| 
       193 
199 
     | 
    
         | 
    
        data/lib/pry/cli.rb
    CHANGED
    
    | 
         @@ -14,6 +14,10 @@ class Pry 
     | 
|
| 
       14 
14 
     | 
    
         
             
                  # @return [Array] The Procs that process the parsed options.
         
     | 
| 
       15 
15 
     | 
    
         
             
                  attr_accessor :option_processors
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
      
 17 
     | 
    
         
            +
                  # @return [Array<String>] The input array of strings to process
         
     | 
| 
      
 18 
     | 
    
         
            +
                  #   as CLI options.
         
     | 
| 
      
 19 
     | 
    
         
            +
                  attr_accessor :input_args
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
       17 
21 
     | 
    
         
             
                  # Add another set of CLI options (a Slop block)
         
     | 
| 
       18 
22 
     | 
    
         
             
                  def add_options(&block)
         
     | 
| 
       19 
23 
     | 
    
         
             
                    if options
         
     | 
| 
         @@ -55,7 +59,9 @@ class Pry 
     | 
|
| 
       55 
59 
     | 
    
         
             
                  def parse_options(args=ARGV.dup)
         
     | 
| 
       56 
60 
     | 
    
         
             
                    raise NoOptionsError, "No command line options defined! Use Pry::CLI.add_options to add command line options." if !options
         
     | 
| 
       57 
61 
     | 
    
         | 
| 
       58 
     | 
    
         
            -
                     
     | 
| 
      
 62 
     | 
    
         
            +
                    self.input_args = args
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                    opts = Slop.parse!(args, :help => true, :multiple_switches => false, &options)
         
     | 
| 
       59 
65 
     | 
    
         
             
                    option_processors.each { |processor| processor.call(opts) } if option_processors # option processors are optional
         
     | 
| 
       60 
66 
     | 
    
         | 
| 
       61 
67 
     | 
    
         
             
                    self
         
     | 
| 
         @@ -78,7 +84,7 @@ See: `https://github.com/pry` for more information. 
     | 
|
| 
       78 
84 
     | 
    
         
             
            Copyright (c) 2011 John Mair (banisterfiend)
         
     | 
| 
       79 
85 
     | 
    
         
             
            --
         
     | 
| 
       80 
86 
     | 
    
         
             
            }
         
     | 
| 
       81 
     | 
    
         
            -
              on :e, :exec, "A line of code to execute in context before the session starts", true
         
     | 
| 
      
 87 
     | 
    
         
            +
              on :e, :exec, "A line of code to execute in context before the session starts", :argument => true
         
     | 
| 
       82 
88 
     | 
    
         | 
| 
       83 
89 
     | 
    
         
             
              on "no-pager", "Disable pager for long output" do
         
     | 
| 
       84 
90 
     | 
    
         
             
                Pry.config.pager = false
         
     | 
| 
         @@ -92,13 +98,21 @@ Copyright (c) 2011 John Mair (banisterfiend) 
     | 
|
| 
       92 
98 
     | 
    
         
             
                Pry.color = false
         
     | 
| 
       93 
99 
     | 
    
         
             
              end
         
     | 
| 
       94 
100 
     | 
    
         | 
| 
       95 
     | 
    
         
            -
              on :f, "Suppress loading of ~/.pryrc" do
         
     | 
| 
       96 
     | 
    
         
            -
                # load ~/.pryrc, if not suppressed with -f option
         
     | 
| 
      
 101 
     | 
    
         
            +
              on :f, "Suppress loading of ~/.pryrc and ./.pryrc" do
         
     | 
| 
       97 
102 
     | 
    
         
             
                Pry.config.should_load_rc = false
         
     | 
| 
      
 103 
     | 
    
         
            +
                Pry.config.should_load_local_rc = false
         
     | 
| 
      
 104 
     | 
    
         
            +
              end
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
              on :s, "select-plugin", "Only load specified plugin (and no others).", :argument => true do |plugin_name|
         
     | 
| 
      
 107 
     | 
    
         
            +
                Pry.config.should_load_plugins = false
         
     | 
| 
      
 108 
     | 
    
         
            +
                Pry.plugins[plugin_name].activate!
         
     | 
| 
      
 109 
     | 
    
         
            +
              end
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
              on :d, "disable-plugin", "Disable a specific plugin.", :argument => true do |plugin_name|
         
     | 
| 
      
 112 
     | 
    
         
            +
                Pry.plugins[plugin_name].disable!
         
     | 
| 
       98 
113 
     | 
    
         
             
              end
         
     | 
| 
       99 
114 
     | 
    
         | 
| 
       100 
115 
     | 
    
         
             
              on "no-plugins", "Suppress loading of plugins." do
         
     | 
| 
       101 
     | 
    
         
            -
                # suppress plugins if given --no-plugins optino
         
     | 
| 
       102 
116 
     | 
    
         
             
                Pry.config.should_load_plugins = false
         
     | 
| 
       103 
117 
     | 
    
         
             
              end
         
     | 
| 
       104 
118 
     | 
    
         | 
| 
         @@ -115,11 +129,11 @@ Copyright (c) 2011 John Mair (banisterfiend) 
     | 
|
| 
       115 
129 
     | 
    
         
             
                Pry.config.prompt = Pry::SIMPLE_PROMPT
         
     | 
| 
       116 
130 
     | 
    
         
             
              end
         
     | 
| 
       117 
131 
     | 
    
         | 
| 
       118 
     | 
    
         
            -
              on :r, :require, "`require` a Ruby script at startup", true do |file|
         
     | 
| 
      
 132 
     | 
    
         
            +
              on :r, :require, "`require` a Ruby script at startup", :argument => true do |file|
         
     | 
| 
       119 
133 
     | 
    
         
             
                Pry.config.requires << file
         
     | 
| 
       120 
134 
     | 
    
         
             
              end
         
     | 
| 
       121 
135 
     | 
    
         | 
| 
       122 
     | 
    
         
            -
              on :I, "Add a path to the $LOAD_PATH", true do |path|
         
     | 
| 
      
 136 
     | 
    
         
            +
              on :I, "Add a path to the $LOAD_PATH", :argument => true do |path|
         
     | 
| 
       123 
137 
     | 
    
         
             
                $LOAD_PATH << path
         
     | 
| 
       124 
138 
     | 
    
         
             
              end
         
     | 
| 
       125 
139 
     | 
    
         | 
| 
         @@ -130,17 +144,24 @@ Copyright (c) 2011 John Mair (banisterfiend) 
     | 
|
| 
       130 
144 
     | 
    
         | 
| 
       131 
145 
     | 
    
         
             
              on(:c, :context,
         
     | 
| 
       132 
146 
     | 
    
         
             
                 "Start the session in the specified context. Equivalent to `context.pry` in a session.",
         
     | 
| 
       133 
     | 
    
         
            -
                 true,
         
     | 
| 
       134 
     | 
    
         
            -
                 :default => " 
     | 
| 
      
 147 
     | 
    
         
            +
                 :argument => true,
         
     | 
| 
      
 148 
     | 
    
         
            +
                 :default => "Pry.toplevel_binding"
         
     | 
| 
       135 
149 
     | 
    
         
             
                 )
         
     | 
| 
       136 
150 
     | 
    
         
             
            end.process_options do |opts|
         
     | 
| 
      
 151 
     | 
    
         
            +
             
     | 
| 
      
 152 
     | 
    
         
            +
              exit if opts.help?
         
     | 
| 
      
 153 
     | 
    
         
            +
             
     | 
| 
       137 
154 
     | 
    
         
             
              # invoked via cli
         
     | 
| 
       138 
155 
     | 
    
         
             
              Pry.cli = true
         
     | 
| 
       139 
156 
     | 
    
         | 
| 
       140 
157 
     | 
    
         
             
              # create the actual context
         
     | 
| 
       141 
158 
     | 
    
         
             
              context = Pry.binding_for(eval(opts[:context]))
         
     | 
| 
       142 
159 
     | 
    
         | 
| 
       143 
     | 
    
         
            -
              if  
     | 
| 
      
 160 
     | 
    
         
            +
              if Pry::CLI.input_args.any? && Pry::CLI.input_args != ["pry"]
         
     | 
| 
      
 161 
     | 
    
         
            +
                full_name = File.expand_path(Pry::CLI.input_args.first)
         
     | 
| 
      
 162 
     | 
    
         
            +
                Pry.load_file_through_repl(full_name)
         
     | 
| 
      
 163 
     | 
    
         
            +
                exit
         
     | 
| 
      
 164 
     | 
    
         
            +
              elsif opts[:exec]
         
     | 
| 
       144 
165 
     | 
    
         
             
                exec_string = opts[:exec] + "\n"
         
     | 
| 
       145 
166 
     | 
    
         
             
              else
         
     | 
| 
       146 
167 
     | 
    
         
             
                exec_string = ""
         
     | 
    
        data/lib/pry/code.rb
    CHANGED
    
    | 
         @@ -27,79 +27,15 @@ class Pry 
     | 
|
| 
       27 
27 
     | 
    
         
             
              # object.
         
     | 
| 
       28 
28 
     | 
    
         
             
              class Code
         
     | 
| 
       29 
29 
     | 
    
         
             
                class << self
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                  # Determine if a string of code is a complete Ruby expression.
         
     | 
| 
       32 
     | 
    
         
            -
                  # @param [String] code The code to validate.
         
     | 
| 
       33 
     | 
    
         
            -
                  # @return [Boolean] Whether or not the code is a complete Ruby expression.
         
     | 
| 
       34 
     | 
    
         
            -
                  # @raise [SyntaxError] Any SyntaxError that does not represent incompleteness.
         
     | 
| 
       35 
     | 
    
         
            -
                  # @example
         
     | 
| 
       36 
     | 
    
         
            -
                  #   complete_expression?("class Hello") #=> false
         
     | 
| 
       37 
     | 
    
         
            -
                  #   complete_expression?("class Hello; end") #=> true
         
     | 
| 
       38 
     | 
    
         
            -
                  def complete_expression?(str)
         
     | 
| 
       39 
     | 
    
         
            -
                    if defined?(Rubinius::Melbourne19) && RUBY_VERSION =~ /^1\.9/
         
     | 
| 
       40 
     | 
    
         
            -
                      Rubinius::Melbourne19.parse_string(str, Pry.eval_path)
         
     | 
| 
       41 
     | 
    
         
            -
                    elsif defined?(Rubinius::Melbourne)
         
     | 
| 
       42 
     | 
    
         
            -
                      Rubinius::Melbourne.parse_string(str, Pry.eval_path)
         
     | 
| 
       43 
     | 
    
         
            -
                    else
         
     | 
| 
       44 
     | 
    
         
            -
                      catch(:valid) do
         
     | 
| 
       45 
     | 
    
         
            -
                        Helpers::BaseHelpers.silence_warnings do
         
     | 
| 
       46 
     | 
    
         
            -
                          eval("BEGIN{throw :valid}\n#{str}", binding, Pry.eval_path)
         
     | 
| 
       47 
     | 
    
         
            -
                        end
         
     | 
| 
       48 
     | 
    
         
            -
                      end
         
     | 
| 
       49 
     | 
    
         
            -
                    end
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
                    # Assert that a line which ends with a , or \ is incomplete.
         
     | 
| 
       52 
     | 
    
         
            -
                    str !~ /[,\\]\s*\z/
         
     | 
| 
       53 
     | 
    
         
            -
                  rescue SyntaxError => e
         
     | 
| 
       54 
     | 
    
         
            -
                    if incomplete_user_input_exception?(e)
         
     | 
| 
       55 
     | 
    
         
            -
                      false
         
     | 
| 
       56 
     | 
    
         
            -
                    else
         
     | 
| 
       57 
     | 
    
         
            -
                      raise e
         
     | 
| 
       58 
     | 
    
         
            -
                    end
         
     | 
| 
       59 
     | 
    
         
            -
                  end
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
                  # Check whether the exception indicates that the user should input more.
         
     | 
| 
       62 
     | 
    
         
            -
                  #
         
     | 
| 
       63 
     | 
    
         
            -
                  # @param [SyntaxError] the exception object that was raised.
         
     | 
| 
       64 
     | 
    
         
            -
                  # @param [Array<String>] The stack frame of the function that executed eval.
         
     | 
| 
       65 
     | 
    
         
            -
                  # @return [Boolean]
         
     | 
| 
       66 
     | 
    
         
            -
                  #
         
     | 
| 
       67 
     | 
    
         
            -
                  def incomplete_user_input_exception?(ex)
         
     | 
| 
       68 
     | 
    
         
            -
                    case ex.message
         
     | 
| 
       69 
     | 
    
         
            -
                    when /unexpected (\$end|end-of-file|END_OF_FILE)/, # mri, jruby, ironruby
         
     | 
| 
       70 
     | 
    
         
            -
                      /unterminated (quoted string|string|regexp) meets end of file/, # "quoted string" is ironruby
         
     | 
| 
       71 
     | 
    
         
            -
                      /missing 'end' for/, /: expecting '[})\]]'$/, /can't find string ".*" anywhere before EOF/, /: expecting keyword_end/, /expecting kWHEN/ # rbx
         
     | 
| 
       72 
     | 
    
         
            -
                      true
         
     | 
| 
       73 
     | 
    
         
            -
                    else
         
     | 
| 
       74 
     | 
    
         
            -
                      false
         
     | 
| 
       75 
     | 
    
         
            -
                    end
         
     | 
| 
       76 
     | 
    
         
            -
                  end
         
     | 
| 
       77 
     | 
    
         
            -
                  private :incomplete_user_input_exception?
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
                  # Retrieve the first complete expression from the passed string.
         
     | 
| 
       80 
     | 
    
         
            -
                  #
         
     | 
| 
       81 
     | 
    
         
            -
                  # @param [String, Array<String>] str The string (or array of lines) to extract the complete
         
     | 
| 
       82 
     | 
    
         
            -
                  #   expression from.
         
     | 
| 
       83 
     | 
    
         
            -
                  # @return [String, nil] The first complete expression, or `nil` if
         
     | 
| 
       84 
     | 
    
         
            -
                  #   none found.
         
     | 
| 
       85 
     | 
    
         
            -
                  def retrieve_complete_expression_from(str_or_lines)
         
     | 
| 
       86 
     | 
    
         
            -
                    lines = str_or_lines.is_a?(Array) ? str_or_lines : str_or_lines.each_line.to_a
         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
                    code = ""
         
     | 
| 
       89 
     | 
    
         
            -
                    lines.each do |v|
         
     | 
| 
       90 
     | 
    
         
            -
                      code << v
         
     | 
| 
       91 
     | 
    
         
            -
                      return code if complete_expression?(code)
         
     | 
| 
       92 
     | 
    
         
            -
                    end
         
     | 
| 
       93 
     | 
    
         
            -
                    nil
         
     | 
| 
       94 
     | 
    
         
            -
                  end
         
     | 
| 
      
 30 
     | 
    
         
            +
                  include MethodSource::CodeHelpers
         
     | 
| 
       95 
31 
     | 
    
         | 
| 
       96 
32 
     | 
    
         
             
                  # Instantiate a `Code` object containing code loaded from a file or
         
     | 
| 
       97 
33 
     | 
    
         
             
                  # Pry's line buffer.
         
     | 
| 
       98 
34 
     | 
    
         
             
                  #
         
     | 
| 
       99 
35 
     | 
    
         
             
                  # @param [String] fn The name of a file, or "(pry)".
         
     | 
| 
       100 
     | 
    
         
            -
                  # @param [Symbol] code_type  
     | 
| 
      
 36 
     | 
    
         
            +
                  # @param [Symbol] code_type The type of code the file contains.
         
     | 
| 
       101 
37 
     | 
    
         
             
                  # @return [Code]
         
     | 
| 
       102 
     | 
    
         
            -
                  def from_file(fn, code_type=nil)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  def from_file(fn, code_type = nil)
         
     | 
| 
       103 
39 
     | 
    
         
             
                    if fn == Pry.eval_path
         
     | 
| 
       104 
40 
     | 
    
         
             
                      f = Pry.line_buffer.drop(1)
         
     | 
| 
       105 
41 
     | 
    
         
             
                    else
         
     | 
| 
         @@ -107,7 +43,7 @@ class Pry 
     | 
|
| 
       107 
43 
     | 
    
         
             
                        f = File.open(fn, 'r')
         
     | 
| 
       108 
44 
     | 
    
         
             
                        code_type = type_from_filename(fn)
         
     | 
| 
       109 
45 
     | 
    
         
             
                      else
         
     | 
| 
       110 
     | 
    
         
            -
                        raise  
     | 
| 
      
 46 
     | 
    
         
            +
                        raise MethodSource::SourceNotFoundError, "Cannot open #{fn.inspect} for reading."
         
     | 
| 
       111 
47 
     | 
    
         
             
                      end
         
     | 
| 
       112 
48 
     | 
    
         
             
                    end
         
     | 
| 
       113 
49 
     | 
    
         
             
                    new(f, 1, code_type || :ruby)
         
     | 
| 
         @@ -120,8 +56,8 @@ class Pry 
     | 
|
| 
       120 
56 
     | 
    
         
             
                  #
         
     | 
| 
       121 
57 
     | 
    
         
             
                  # @param [::Method, UnboundMethod, Proc, Pry::Method] meth The method
         
     | 
| 
       122 
58 
     | 
    
         
             
                  #   object.
         
     | 
| 
       123 
     | 
    
         
            -
                  # @param [Fixnum, nil] The line number to start on, or nil to 
     | 
| 
       124 
     | 
    
         
            -
                  #   method's original line numbers.
         
     | 
| 
      
 59 
     | 
    
         
            +
                  # @param [Fixnum, nil] start_line The line number to start on, or nil to
         
     | 
| 
      
 60 
     | 
    
         
            +
                  #   use the method's original line numbers.
         
     | 
| 
       125 
61 
     | 
    
         
             
                  # @return [Code]
         
     | 
| 
       126 
62 
     | 
    
         
             
                  def from_method(meth, start_line=nil)
         
     | 
| 
       127 
63 
     | 
    
         
             
                    meth = Pry::Method(meth)
         
     | 
| 
         @@ -132,11 +68,16 @@ class Pry 
     | 
|
| 
       132 
68 
     | 
    
         
             
                  # Attempt to extract the source code for module (or class) `mod`.
         
     | 
| 
       133 
69 
     | 
    
         
             
                  #
         
     | 
| 
       134 
70 
     | 
    
         
             
                  # @param [Module, Class] mod The module (or class) of interest.
         
     | 
| 
      
 71 
     | 
    
         
            +
                  # @param [Fixnum, nil] start_line The line number to start on, or nil to use the
         
     | 
| 
      
 72 
     | 
    
         
            +
                  #   method's original line numbers.
         
     | 
| 
      
 73 
     | 
    
         
            +
                  # @param [Fixnum] candidate_rank The module candidate (by rank)
         
     | 
| 
      
 74 
     | 
    
         
            +
                  #   to use (see `Pry::WrappedModule::Candidate` for more information).
         
     | 
| 
       135 
75 
     | 
    
         
             
                  # @return [Code]
         
     | 
| 
       136 
     | 
    
         
            -
                  def from_module(mod, start_line=nil)
         
     | 
| 
       137 
     | 
    
         
            -
                     
     | 
| 
       138 
     | 
    
         
            -
             
     | 
| 
       139 
     | 
    
         
            -
                     
     | 
| 
      
 76 
     | 
    
         
            +
                  def from_module(mod, start_line=nil, candidate_rank=0)
         
     | 
| 
      
 77 
     | 
    
         
            +
                    candidate = Pry::WrappedModule(mod).candidate(candidate_rank)
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
                    start_line ||= candidate.line
         
     | 
| 
      
 80 
     | 
    
         
            +
                    new(candidate.source, start_line, :ruby)
         
     | 
| 
       140 
81 
     | 
    
         
             
                  end
         
     | 
| 
       141 
82 
     | 
    
         | 
| 
       142 
83 
     | 
    
         
             
                  protected
         
     | 
| 
         @@ -171,6 +112,7 @@ class Pry 
     | 
|
| 
       171 
112 
     | 
    
         
             
                    end
         
     | 
| 
       172 
113 
     | 
    
         
             
                end
         
     | 
| 
       173 
114 
     | 
    
         | 
| 
      
 115 
     | 
    
         
            +
                # @return [Symbol] The type of code stored in this wrapper.
         
     | 
| 
       174 
116 
     | 
    
         
             
                attr_accessor :code_type
         
     | 
| 
       175 
117 
     | 
    
         | 
| 
       176 
118 
     | 
    
         
             
                # Instantiate a `Code` object containing code from the given `Array`,
         
     | 
| 
         @@ -179,8 +121,8 @@ class Pry 
     | 
|
| 
       179 
121 
     | 
    
         
             
                # empty `Code` object and then use `#push` to insert the lines.
         
     | 
| 
       180 
122 
     | 
    
         
             
                #
         
     | 
| 
       181 
123 
     | 
    
         
             
                # @param [Array<String>, String, IO] lines
         
     | 
| 
       182 
     | 
    
         
            -
                # @param [Fixnum?]  
     | 
| 
       183 
     | 
    
         
            -
                # @param [Symbol?]  
     | 
| 
      
 124 
     | 
    
         
            +
                # @param [Fixnum?] start_line
         
     | 
| 
      
 125 
     | 
    
         
            +
                # @param [Symbol?] code_type
         
     | 
| 
       184 
126 
     | 
    
         
             
                def initialize(lines=[], start_line=1, code_type=:ruby)
         
     | 
| 
       185 
127 
     | 
    
         
             
                  if lines.is_a? String
         
     | 
| 
       186 
128 
     | 
    
         
             
                    lines = lines.lines
         
     | 
| 
         @@ -269,7 +211,7 @@ class Pry 
     | 
|
| 
       269 
211 
     | 
    
         
             
                # Remove all lines except for the `lines` up to and excluding `line_num`.
         
     | 
| 
       270 
212 
     | 
    
         
             
                #
         
     | 
| 
       271 
213 
     | 
    
         
             
                # @param [Fixnum] line_num
         
     | 
| 
       272 
     | 
    
         
            -
                # @param [Fixnum]  
     | 
| 
      
 214 
     | 
    
         
            +
                # @param [Fixnum] lines
         
     | 
| 
       273 
215 
     | 
    
         
             
                # @return [Code]
         
     | 
| 
       274 
216 
     | 
    
         
             
                def before(line_num, lines=1)
         
     | 
| 
       275 
217 
     | 
    
         
             
                  return self unless line_num
         
     | 
| 
         @@ -283,7 +225,7 @@ class Pry 
     | 
|
| 
       283 
225 
     | 
    
         
             
                # `line_num`.
         
     | 
| 
       284 
226 
     | 
    
         
             
                #
         
     | 
| 
       285 
227 
     | 
    
         
             
                # @param [Fixnum] line_num
         
     | 
| 
       286 
     | 
    
         
            -
                # @param [Fixnum]  
     | 
| 
      
 228 
     | 
    
         
            +
                # @param [Fixnum] lines
         
     | 
| 
       287 
229 
     | 
    
         
             
                # @return [Code]
         
     | 
| 
       288 
230 
     | 
    
         
             
                def around(line_num, lines=1)
         
     | 
| 
       289 
231 
     | 
    
         
             
                  return self unless line_num
         
     | 
| 
         @@ -296,7 +238,7 @@ class Pry 
     | 
|
| 
       296 
238 
     | 
    
         
             
                # Remove all lines except for the `lines` after and excluding `line_num`.
         
     | 
| 
       297 
239 
     | 
    
         
             
                #
         
     | 
| 
       298 
240 
     | 
    
         
             
                # @param [Fixnum] line_num
         
     | 
| 
       299 
     | 
    
         
            -
                # @param [Fixnum]  
     | 
| 
      
 241 
     | 
    
         
            +
                # @param [Fixnum] lines
         
     | 
| 
       300 
242 
     | 
    
         
             
                # @return [Code]
         
     | 
| 
       301 
243 
     | 
    
         
             
                def after(line_num, lines=1)
         
     | 
| 
       302 
244 
     | 
    
         
             
                  return self unless line_num
         
     | 
| 
         @@ -321,7 +263,7 @@ class Pry 
     | 
|
| 
       321 
263 
     | 
    
         | 
| 
       322 
264 
     | 
    
         
             
                # Format output with line numbers next to it, unless `y_n` is falsy.
         
     | 
| 
       323 
265 
     | 
    
         
             
                #
         
     | 
| 
       324 
     | 
    
         
            -
                # @param [Boolean?]  
     | 
| 
      
 266 
     | 
    
         
            +
                # @param [Boolean?] y_n
         
     | 
| 
       325 
267 
     | 
    
         
             
                # @return [Code]
         
     | 
| 
       326 
268 
     | 
    
         
             
                def with_line_numbers(y_n=true)
         
     | 
| 
       327 
269 
     | 
    
         
             
                  alter do
         
     | 
| 
         @@ -332,7 +274,7 @@ class Pry 
     | 
|
| 
       332 
274 
     | 
    
         
             
                # Format output with a marker next to the given `line_num`, unless `line_num`
         
     | 
| 
       333 
275 
     | 
    
         
             
                # is falsy.
         
     | 
| 
       334 
276 
     | 
    
         
             
                #
         
     | 
| 
       335 
     | 
    
         
            -
                # @param [Fixnum?]  
     | 
| 
      
 277 
     | 
    
         
            +
                # @param [Fixnum?] line_num
         
     | 
| 
       336 
278 
     | 
    
         
             
                # @return [Code]
         
     | 
| 
       337 
279 
     | 
    
         
             
                def with_marker(line_num=1)
         
     | 
| 
       338 
280 
     | 
    
         
             
                  alter do
         
     | 
| 
         @@ -344,7 +286,7 @@ class Pry 
     | 
|
| 
       344 
286 
     | 
    
         
             
                # Format output with the specified number of spaces in front of every line,
         
     | 
| 
       345 
287 
     | 
    
         
             
                # unless `spaces` is falsy.
         
     | 
| 
       346 
288 
     | 
    
         
             
                #
         
     | 
| 
       347 
     | 
    
         
            -
                # @param [Fixnum?]  
     | 
| 
      
 289 
     | 
    
         
            +
                # @param [Fixnum?] spaces
         
     | 
| 
       348 
290 
     | 
    
         
             
                # @return [Code]
         
     | 
| 
       349 
291 
     | 
    
         
             
                def with_indentation(spaces=0)
         
     | 
| 
       350 
292 
     | 
    
         
             
                  alter do
         
     | 
| 
         @@ -375,7 +317,7 @@ class Pry 
     | 
|
| 
       375 
317 
     | 
    
         
             
                    max_width = lines.last.last.to_s.length if lines.length > 0
         
     | 
| 
       376 
318 
     | 
    
         
             
                    lines.each do |l|
         
     | 
| 
       377 
319 
     | 
    
         
             
                      padded_line_num = l[1].to_s.rjust(max_width)
         
     | 
| 
       378 
     | 
    
         
            -
                      l[0] = "#{Pry::Helpers:: 
     | 
| 
      
 320 
     | 
    
         
            +
                      l[0] = "#{Pry::Helpers::BaseHelpers.colorize_code(padded_line_num.to_s)}: #{l[0]}"
         
     | 
| 
       379 
321 
     | 
    
         
             
                    end
         
     | 
| 
       380 
322 
     | 
    
         
             
                  end
         
     | 
| 
       381 
323 
     | 
    
         | 
| 
         @@ -398,6 +340,22 @@ class Pry 
     | 
|
| 
       398 
340 
     | 
    
         
             
                  lines.map { |l| "#{l.first}\n" }.join
         
     | 
| 
       399 
341 
     | 
    
         
             
                end
         
     | 
| 
       400 
342 
     | 
    
         | 
| 
      
 343 
     | 
    
         
            +
                # Get the comment that describes the expression on the given line number.
         
     | 
| 
      
 344 
     | 
    
         
            +
                #
         
     | 
| 
      
 345 
     | 
    
         
            +
                # @param [Fixnum]  line_number (1-based)
         
     | 
| 
      
 346 
     | 
    
         
            +
                # @return [String]  the code.
         
     | 
| 
      
 347 
     | 
    
         
            +
                def comment_describing(line_number)
         
     | 
| 
      
 348 
     | 
    
         
            +
                  self.class.comment_describing(raw, line_number)
         
     | 
| 
      
 349 
     | 
    
         
            +
                end
         
     | 
| 
      
 350 
     | 
    
         
            +
             
     | 
| 
      
 351 
     | 
    
         
            +
                # Get the multiline expression that starts on the given line number.
         
     | 
| 
      
 352 
     | 
    
         
            +
                #
         
     | 
| 
      
 353 
     | 
    
         
            +
                # @param [Fixnum]  line_number (1-based)
         
     | 
| 
      
 354 
     | 
    
         
            +
                # @return [String]  the code.
         
     | 
| 
      
 355 
     | 
    
         
            +
                def expression_at(line_number, consume=0)
         
     | 
| 
      
 356 
     | 
    
         
            +
                  self.class.expression_at(raw, line_number, :consume => consume)
         
     | 
| 
      
 357 
     | 
    
         
            +
                end
         
     | 
| 
      
 358 
     | 
    
         
            +
             
     | 
| 
       401 
359 
     | 
    
         
             
                # Return an unformatted String of the code.
         
     | 
| 
       402 
360 
     | 
    
         
             
                #
         
     | 
| 
       403 
361 
     | 
    
         
             
                # @return [String]
         
     |