irb 1.13.0 → 1.13.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.
- checksums.yaml +4 -4
 - data/lib/irb/command/base.rb +2 -2
 - data/lib/irb/command/debug.rb +1 -16
 - data/lib/irb/command/help.rb +16 -8
 - data/lib/irb/context.rb +11 -2
 - data/lib/irb/helper_method/conf.rb +1 -1
 - data/lib/irb/input-method.rb +1 -0
 - data/lib/irb/version.rb +2 -2
 - data/lib/irb.rb +10 -4
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: b57e45ef4cb7d58489abeda8131ed81a1625b05fd139e00082bf3011fc0c2fdc
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 411b92eee70de798e94c0c9c30801467cdf240a43eff4da9e46230374fa8504f
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: '0919ac233b97abb80a9d34cad9be792e85bce261cc4c29c36eac8d7ba81bd99c4592b5b8c1bdbdc7e96d778ccf20b5374987eef0224e9fb6583639633e3c2bb0'
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 89dad0bbdebdee60a3f08ca2cf918293bffac4db7b183a45ab93f6cc4906ca7a62437286a08291ba76fae8e2bba31f3b6a28be3cd13a141f451a5c4e1b09041d
         
     | 
    
        data/lib/irb/command/base.rb
    CHANGED
    
    | 
         @@ -18,12 +18,12 @@ module IRB 
     | 
|
| 
       18 
18 
     | 
    
         
             
                  class << self
         
     | 
| 
       19 
19 
     | 
    
         
             
                    def category(category = nil)
         
     | 
| 
       20 
20 
     | 
    
         
             
                      @category = category if category
         
     | 
| 
       21 
     | 
    
         
            -
                      @category
         
     | 
| 
      
 21 
     | 
    
         
            +
                      @category || "No category"
         
     | 
| 
       22 
22 
     | 
    
         
             
                    end
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
                    def description(description = nil)
         
     | 
| 
       25 
25 
     | 
    
         
             
                      @description = description if description
         
     | 
| 
       26 
     | 
    
         
            -
                      @description
         
     | 
| 
      
 26 
     | 
    
         
            +
                      @description || "No description provided."
         
     | 
| 
       27 
27 
     | 
    
         
             
                    end
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         
             
                    def help_message(help_message = nil)
         
     | 
    
        data/lib/irb/command/debug.rb
    CHANGED
    
    | 
         @@ -8,11 +8,6 @@ module IRB 
     | 
|
| 
       8 
8 
     | 
    
         
             
                  category "Debugging"
         
     | 
| 
       9 
9 
     | 
    
         
             
                  description "Start the debugger of debug.gem."
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
                  BINDING_IRB_FRAME_REGEXPS = [
         
     | 
| 
       12 
     | 
    
         
            -
                    '<internal:prelude>',
         
     | 
| 
       13 
     | 
    
         
            -
                    binding.method(:irb).source_location.first,
         
     | 
| 
       14 
     | 
    
         
            -
                  ].map { |file| /\A#{Regexp.escape(file)}:\d+:in (`|'Binding#)irb'\z/ }
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
11 
     | 
    
         
             
                  def execute(_arg)
         
     | 
| 
       17 
12 
     | 
    
         
             
                    execute_debug_command
         
     | 
| 
       18 
13 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -36,7 +31,7 @@ module IRB 
     | 
|
| 
       36 
31 
     | 
    
         
             
                      # 3. Insert a debug breakpoint at `Irb#debug_break` with the intended command.
         
     | 
| 
       37 
32 
     | 
    
         
             
                      # 4. Exit the current Irb#run call via `throw :IRB_EXIT`.
         
     | 
| 
       38 
33 
     | 
    
         
             
                      # 5. `Irb#debug_break` will be called and trigger the breakpoint, which will run the intended command.
         
     | 
| 
       39 
     | 
    
         
            -
                      unless  
     | 
| 
      
 34 
     | 
    
         
            +
                      unless irb_context.from_binding?
         
     | 
| 
       40 
35 
     | 
    
         
             
                        puts "Debugging commands are only available when IRB is started with binding.irb"
         
     | 
| 
       41 
36 
     | 
    
         
             
                        return
         
     | 
| 
       42 
37 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -60,16 +55,6 @@ module IRB 
     | 
|
| 
       60 
55 
     | 
    
         
             
                      throw :IRB_EXIT
         
     | 
| 
       61 
56 
     | 
    
         
             
                    end
         
     | 
| 
       62 
57 
     | 
    
         
             
                  end
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
                  private
         
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
                  def binding_irb?
         
     | 
| 
       67 
     | 
    
         
            -
                    caller.any? do |frame|
         
     | 
| 
       68 
     | 
    
         
            -
                      BINDING_IRB_FRAME_REGEXPS.any? do |regexp|
         
     | 
| 
       69 
     | 
    
         
            -
                        frame.match?(regexp)
         
     | 
| 
       70 
     | 
    
         
            -
                      end
         
     | 
| 
       71 
     | 
    
         
            -
                    end
         
     | 
| 
       72 
     | 
    
         
            -
                  end
         
     | 
| 
       73 
58 
     | 
    
         
             
                end
         
     | 
| 
       74 
59 
     | 
    
         | 
| 
       75 
60 
     | 
    
         
             
                class DebugCommand < Debug
         
     | 
    
        data/lib/irb/command/help.rb
    CHANGED
    
    | 
         @@ -28,17 +28,9 @@ module IRB 
     | 
|
| 
       28 
28 
     | 
    
         
             
                    commands_grouped_by_categories = commands_info.group_by { |cmd| cmd[:category] }
         
     | 
| 
       29 
29 
     | 
    
         
             
                    commands_grouped_by_categories["Helper methods"] = helper_methods_info
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
                    user_aliases = irb_context.instance_variable_get(:@user_aliases)
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
                    commands_grouped_by_categories["Aliases"] = user_aliases.map do |alias_name, target|
         
     | 
| 
       34 
     | 
    
         
            -
                      { display_name: alias_name, description: "Alias for `#{target}`" }
         
     | 
| 
       35 
     | 
    
         
            -
                    end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
31 
     | 
    
         
             
                    if irb_context.with_debugger
         
     | 
| 
       38 
32 
     | 
    
         
             
                      # Remove the original "Debugging" category
         
     | 
| 
       39 
33 
     | 
    
         
             
                      commands_grouped_by_categories.delete("Debugging")
         
     | 
| 
       40 
     | 
    
         
            -
                      # Add an empty "Debugging (from debug.gem)" category at the end
         
     | 
| 
       41 
     | 
    
         
            -
                      commands_grouped_by_categories["Debugging (from debug.gem)"] = []
         
     | 
| 
       42 
34 
     | 
    
         
             
                    end
         
     | 
| 
       43 
35 
     | 
    
         | 
| 
       44 
36 
     | 
    
         
             
                    longest_cmd_name_length = commands_info.map { |c| c[:display_name].length }.max
         
     | 
| 
         @@ -46,15 +38,31 @@ module IRB 
     | 
|
| 
       46 
38 
     | 
    
         
             
                    output = StringIO.new
         
     | 
| 
       47 
39 
     | 
    
         | 
| 
       48 
40 
     | 
    
         
             
                    help_cmds = commands_grouped_by_categories.delete("Help")
         
     | 
| 
      
 41 
     | 
    
         
            +
                    no_category_cmds = commands_grouped_by_categories.delete("No category")
         
     | 
| 
      
 42 
     | 
    
         
            +
                    aliases = irb_context.instance_variable_get(:@user_aliases).map do |alias_name, target|
         
     | 
| 
      
 43 
     | 
    
         
            +
                      { display_name: alias_name, description: "Alias for `#{target}`" }
         
     | 
| 
      
 44 
     | 
    
         
            +
                    end
         
     | 
| 
       49 
45 
     | 
    
         | 
| 
      
 46 
     | 
    
         
            +
                    # Display help commands first
         
     | 
| 
       50 
47 
     | 
    
         
             
                    add_category_to_output("Help", help_cmds, output, longest_cmd_name_length)
         
     | 
| 
       51 
48 
     | 
    
         | 
| 
      
 49 
     | 
    
         
            +
                    # Display the rest of the commands grouped by categories
         
     | 
| 
       52 
50 
     | 
    
         
             
                    commands_grouped_by_categories.each do |category, cmds|
         
     | 
| 
       53 
51 
     | 
    
         
             
                      add_category_to_output(category, cmds, output, longest_cmd_name_length)
         
     | 
| 
       54 
52 
     | 
    
         
             
                    end
         
     | 
| 
       55 
53 
     | 
    
         | 
| 
      
 54 
     | 
    
         
            +
                    # Display commands without a category
         
     | 
| 
      
 55 
     | 
    
         
            +
                    if no_category_cmds
         
     | 
| 
      
 56 
     | 
    
         
            +
                      add_category_to_output("No category", no_category_cmds, output, longest_cmd_name_length)
         
     | 
| 
      
 57 
     | 
    
         
            +
                    end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                    # Display aliases
         
     | 
| 
      
 60 
     | 
    
         
            +
                    add_category_to_output("Aliases", aliases, output, longest_cmd_name_length)
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
       56 
62 
     | 
    
         
             
                    # Append the debugger help at the end
         
     | 
| 
       57 
63 
     | 
    
         
             
                    if irb_context.with_debugger
         
     | 
| 
      
 64 
     | 
    
         
            +
                      # Add "Debugging (from debug.gem)" category as title
         
     | 
| 
      
 65 
     | 
    
         
            +
                      add_category_to_output("Debugging (from debug.gem)", [], output, longest_cmd_name_length)
         
     | 
| 
       58 
66 
     | 
    
         
             
                      output.puts DEBUGGER__.help
         
     | 
| 
       59 
67 
     | 
    
         
             
                    end
         
     | 
| 
       60 
68 
     | 
    
         | 
    
        data/lib/irb/context.rb
    CHANGED
    
    | 
         @@ -85,7 +85,7 @@ module IRB 
     | 
|
| 
       85 
85 
     | 
    
         
             
                    @io = nil
         
     | 
| 
       86 
86 
     | 
    
         
             
                    case use_multiline?
         
     | 
| 
       87 
87 
     | 
    
         
             
                    when nil
         
     | 
| 
       88 
     | 
    
         
            -
                      if  
     | 
| 
      
 88 
     | 
    
         
            +
                      if term_interactive? && IRB.conf[:PROMPT_MODE] != :INF_RUBY && !use_singleline?
         
     | 
| 
       89 
89 
     | 
    
         
             
                        # Both of multiline mode and singleline mode aren't specified.
         
     | 
| 
       90 
90 
     | 
    
         
             
                        @io = RelineInputMethod.new(build_completor)
         
     | 
| 
       91 
91 
     | 
    
         
             
                      else
         
     | 
| 
         @@ -99,7 +99,7 @@ module IRB 
     | 
|
| 
       99 
99 
     | 
    
         
             
                    unless @io
         
     | 
| 
       100 
100 
     | 
    
         
             
                      case use_singleline?
         
     | 
| 
       101 
101 
     | 
    
         
             
                      when nil
         
     | 
| 
       102 
     | 
    
         
            -
                        if (defined?(ReadlineInputMethod) &&  
     | 
| 
      
 102 
     | 
    
         
            +
                        if (defined?(ReadlineInputMethod) && term_interactive? &&
         
     | 
| 
       103 
103 
     | 
    
         
             
                            IRB.conf[:PROMPT_MODE] != :INF_RUBY)
         
     | 
| 
       104 
104 
     | 
    
         
             
                          @io = ReadlineInputMethod.new
         
     | 
| 
       105 
105 
     | 
    
         
             
                        else
         
     | 
| 
         @@ -151,6 +151,11 @@ module IRB 
     | 
|
| 
       151 
151 
     | 
    
         
             
                  @command_aliases = @user_aliases.merge(KEYWORD_ALIASES)
         
     | 
| 
       152 
152 
     | 
    
         
             
                end
         
     | 
| 
       153 
153 
     | 
    
         | 
| 
      
 154 
     | 
    
         
            +
                private def term_interactive?
         
     | 
| 
      
 155 
     | 
    
         
            +
                  return true if ENV['TEST_IRB_FORCE_INTERACTIVE']
         
     | 
| 
      
 156 
     | 
    
         
            +
                  STDIN.tty? && ENV['TERM'] != 'dumb'
         
     | 
| 
      
 157 
     | 
    
         
            +
                end
         
     | 
| 
      
 158 
     | 
    
         
            +
             
     | 
| 
       154 
159 
     | 
    
         
             
                # because all input will eventually be evaluated as Ruby code,
         
     | 
| 
       155 
160 
     | 
    
         
             
                # command names that conflict with Ruby keywords need special workaround
         
     | 
| 
       156 
161 
     | 
    
         
             
                # we can remove them once we implemented a better command system for IRB
         
     | 
| 
         @@ -602,6 +607,10 @@ module IRB 
     | 
|
| 
       602 
607 
     | 
    
         
             
                  nil
         
     | 
| 
       603 
608 
     | 
    
         
             
                end
         
     | 
| 
       604 
609 
     | 
    
         | 
| 
      
 610 
     | 
    
         
            +
                def from_binding?
         
     | 
| 
      
 611 
     | 
    
         
            +
                  @irb.from_binding
         
     | 
| 
      
 612 
     | 
    
         
            +
                end
         
     | 
| 
      
 613 
     | 
    
         
            +
             
     | 
| 
       605 
614 
     | 
    
         
             
                def evaluate_expression(code, line_no) # :nodoc:
         
     | 
| 
       606 
615 
     | 
    
         
             
                  result = nil
         
     | 
| 
       607 
616 
     | 
    
         
             
                  if IRB.conf[:MEASURE] && IRB.conf[:MEASURE_CALLBACKS].empty?
         
     | 
    
        data/lib/irb/input-method.rb
    CHANGED
    
    
    
        data/lib/irb/version.rb
    CHANGED
    
    
    
        data/lib/irb.rb
    CHANGED
    
    | 
         @@ -311,7 +311,9 @@ require_relative "irb/pager" 
     | 
|
| 
       311 
311 
     | 
    
         
             
            # ### Input Method
         
     | 
| 
       312 
312 
     | 
    
         
             
            #
         
     | 
| 
       313 
313 
     | 
    
         
             
            # The IRB input method determines how command input is to be read; by default,
         
     | 
| 
       314 
     | 
    
         
            -
            # the input method for a session is IRB::RelineInputMethod.
         
     | 
| 
      
 314 
     | 
    
         
            +
            # the input method for a session is IRB::RelineInputMethod. Unless the
         
     | 
| 
      
 315 
     | 
    
         
            +
            # value of the TERM environment variable is 'dumb', in which case the
         
     | 
| 
      
 316 
     | 
    
         
            +
            # most simplistic input method is used.
         
     | 
| 
       315 
317 
     | 
    
         
             
            #
         
     | 
| 
       316 
318 
     | 
    
         
             
            # You can set the input method by:
         
     | 
| 
       317 
319 
     | 
    
         
             
            #
         
     | 
| 
         @@ -329,7 +331,8 @@ require_relative "irb/pager" 
     | 
|
| 
       329 
331 
     | 
    
         
             
            #         IRB::ReadlineInputMethod.
         
     | 
| 
       330 
332 
     | 
    
         
             
            #     *   `--nosingleline` or `--multiline` sets the input method to
         
     | 
| 
       331 
333 
     | 
    
         
             
            #         IRB::RelineInputMethod.
         
     | 
| 
       332 
     | 
    
         
            -
            #
         
     | 
| 
      
 334 
     | 
    
         
            +
            #     *   `--nosingleline` together with `--nomultiline` sets the
         
     | 
| 
      
 335 
     | 
    
         
            +
            #         input to IRB::StdioInputMethod.
         
     | 
| 
       333 
336 
     | 
    
         
             
            #
         
     | 
| 
       334 
337 
     | 
    
         
             
            #
         
     | 
| 
       335 
338 
     | 
    
         
             
            # Method `conf.use_multiline?` and its synonym `conf.use_reline` return:
         
     | 
| 
         @@ -928,8 +931,11 @@ module IRB 
     | 
|
| 
       928 
931 
     | 
    
         
             
                # The lexer used by this irb session
         
     | 
| 
       929 
932 
     | 
    
         
             
                attr_accessor :scanner
         
     | 
| 
       930 
933 
     | 
    
         | 
| 
      
 934 
     | 
    
         
            +
                attr_reader :from_binding
         
     | 
| 
      
 935 
     | 
    
         
            +
             
     | 
| 
       931 
936 
     | 
    
         
             
                # Creates a new irb session
         
     | 
| 
       932 
     | 
    
         
            -
                def initialize(workspace = nil, input_method = nil)
         
     | 
| 
      
 937 
     | 
    
         
            +
                def initialize(workspace = nil, input_method = nil, from_binding: false)
         
     | 
| 
      
 938 
     | 
    
         
            +
                  @from_binding = from_binding
         
     | 
| 
       933 
939 
     | 
    
         
             
                  @context = Context.new(self, workspace, input_method)
         
     | 
| 
       934 
940 
     | 
    
         
             
                  @context.workspace.load_helper_methods_to_main
         
     | 
| 
       935 
941 
     | 
    
         
             
                  @signal_status = :IN_IRB
         
     | 
| 
         @@ -1593,7 +1599,7 @@ class Binding 
     | 
|
| 
       1593 
1599 
     | 
    
         
             
                else
         
     | 
| 
       1594 
1600 
     | 
    
         
             
                  # If we're not in a debugger session, create a new IRB instance with the current
         
     | 
| 
       1595 
1601 
     | 
    
         
             
                  # workspace
         
     | 
| 
       1596 
     | 
    
         
            -
                  binding_irb = IRB::Irb.new(workspace)
         
     | 
| 
      
 1602 
     | 
    
         
            +
                  binding_irb = IRB::Irb.new(workspace, from_binding: true)
         
     | 
| 
       1597 
1603 
     | 
    
         
             
                  binding_irb.context.irb_path = irb_path
         
     | 
| 
       1598 
1604 
     | 
    
         
             
                  binding_irb.run(IRB.conf)
         
     | 
| 
       1599 
1605 
     | 
    
         
             
                  binding_irb.debug_break
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: irb
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.13. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.13.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - aycabta
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire:
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2024-05- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2024-05-05 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: reline
         
     |