irb 1.1.0 → 1.1.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/.gitignore +9 -0
- data/.travis.yml +6 -0
- data/Gemfile +0 -5
- data/README.md +3 -3
- data/irb.gemspec +1 -59
- data/lib/irb.rb +33 -105
- data/lib/irb/cmd/fork.rb +1 -1
- data/lib/irb/cmd/help.rb +5 -9
- data/lib/irb/completion.rb +31 -126
- data/lib/irb/context.rb +65 -104
- data/lib/irb/ext/history.rb +9 -47
- data/lib/irb/ext/save-history.rb +5 -17
- data/lib/irb/ext/use-loader.rb +0 -3
- data/lib/irb/extend-command.rb +48 -70
- data/lib/irb/init.rb +17 -27
- data/lib/irb/input-method.rb +0 -106
- data/lib/irb/inspector.rb +2 -12
- data/lib/irb/lc/help-message +6 -9
- data/lib/irb/lc/ja/help-message +6 -9
- data/lib/irb/ruby-lex.rb +1038 -357
- data/lib/irb/ruby-token.rb +267 -0
- data/lib/irb/version.rb +2 -2
- data/lib/irb/workspace.rb +19 -57
- metadata +6 -22
- data/doc/irb/irb-tools.rd.ja +0 -184
- data/doc/irb/irb.rd.ja +0 -411
- data/lib/irb/color.rb +0 -233
- data/lib/irb/ruby_logo.aa +0 -38
- data/man/irb.1 +0 -207
    
        data/lib/irb/completion.rb
    CHANGED
    
    | @@ -8,7 +8,6 @@ | |
| 8 8 | 
             
            #
         | 
| 9 9 |  | 
| 10 10 | 
             
            require "readline"
         | 
| 11 | 
            -
            autoload :RDoc, "rdoc"
         | 
| 12 11 |  | 
| 13 12 | 
             
            module IRB
         | 
| 14 13 | 
             
              module InputCompletor # :nodoc:
         | 
| @@ -36,13 +35,7 @@ module IRB | |
| 36 35 | 
             
                  yield
         | 
| 37 36 | 
             
                ]
         | 
| 38 37 |  | 
| 39 | 
            -
                BASIC_WORD_BREAK_CHARACTERS = " \t\n`><=;|&{("
         | 
| 40 | 
            -
             | 
| 41 38 | 
             
                CompletionProc = proc { |input|
         | 
| 42 | 
            -
                  retrieve_completion_data(input).compact.map{ |i| i.encode(Encoding.default_external) }
         | 
| 43 | 
            -
                }
         | 
| 44 | 
            -
             | 
| 45 | 
            -
                def self.retrieve_completion_data(input, doc_namespace = false)
         | 
| 46 39 | 
             
                  bind = IRB.conf[:MAIN_CONTEXT].workspace.binding
         | 
| 47 40 |  | 
| 48 41 | 
             
                  case input
         | 
| @@ -52,11 +45,7 @@ module IRB | |
| 52 45 | 
             
                    message = Regexp.quote($3)
         | 
| 53 46 |  | 
| 54 47 | 
             
                    candidates = String.instance_methods.collect{|m| m.to_s}
         | 
| 55 | 
            -
                     | 
| 56 | 
            -
                      "String.#{message}"
         | 
| 57 | 
            -
                    else
         | 
| 58 | 
            -
                      select_message(receiver, message, candidates)
         | 
| 59 | 
            -
                    end
         | 
| 48 | 
            +
                    select_message(receiver, message, candidates)
         | 
| 60 49 |  | 
| 61 50 | 
             
                  when /^(\/[^\/]*\/)\.([^.]*)$/
         | 
| 62 51 | 
             
                    # Regexp
         | 
| @@ -64,11 +53,7 @@ module IRB | |
| 64 53 | 
             
                    message = Regexp.quote($2)
         | 
| 65 54 |  | 
| 66 55 | 
             
                    candidates = Regexp.instance_methods.collect{|m| m.to_s}
         | 
| 67 | 
            -
                     | 
| 68 | 
            -
                      "Regexp.#{message}"
         | 
| 69 | 
            -
                    else
         | 
| 70 | 
            -
                      select_message(receiver, message, candidates)
         | 
| 71 | 
            -
                    end
         | 
| 56 | 
            +
                    select_message(receiver, message, candidates)
         | 
| 72 57 |  | 
| 73 58 | 
             
                  when /^([^\]]*\])\.([^.]*)$/
         | 
| 74 59 | 
             
                    # Array
         | 
| @@ -76,28 +61,19 @@ module IRB | |
| 76 61 | 
             
                    message = Regexp.quote($2)
         | 
| 77 62 |  | 
| 78 63 | 
             
                    candidates = Array.instance_methods.collect{|m| m.to_s}
         | 
| 79 | 
            -
                     | 
| 80 | 
            -
                      "Array.#{message}"
         | 
| 81 | 
            -
                    else
         | 
| 82 | 
            -
                      select_message(receiver, message, candidates)
         | 
| 83 | 
            -
                    end
         | 
| 64 | 
            +
                    select_message(receiver, message, candidates)
         | 
| 84 65 |  | 
| 85 66 | 
             
                  when /^([^\}]*\})\.([^.]*)$/
         | 
| 86 67 | 
             
                    # Proc or Hash
         | 
| 87 68 | 
             
                    receiver = $1
         | 
| 88 69 | 
             
                    message = Regexp.quote($2)
         | 
| 89 70 |  | 
| 90 | 
            -
                     | 
| 91 | 
            -
                     | 
| 92 | 
            -
                     | 
| 93 | 
            -
                      ["Proc.#{message}", "Hash.#{message}"]
         | 
| 94 | 
            -
                    else
         | 
| 95 | 
            -
                      select_message(receiver, message, proc_candidates | hash_candidates)
         | 
| 96 | 
            -
                    end
         | 
| 71 | 
            +
                    candidates = Proc.instance_methods.collect{|m| m.to_s}
         | 
| 72 | 
            +
                    candidates |= Hash.instance_methods.collect{|m| m.to_s}
         | 
| 73 | 
            +
                    select_message(receiver, message, candidates)
         | 
| 97 74 |  | 
| 98 75 | 
             
                  when /^(:[^:.]*)$/
         | 
| 99 76 | 
             
                    # Symbol
         | 
| 100 | 
            -
                    return nil if doc_namespace
         | 
| 101 77 | 
             
                    if Symbol.respond_to?(:all_symbols)
         | 
| 102 78 | 
             
                      sym = $1
         | 
| 103 79 | 
             
                      candidates = Symbol.all_symbols.collect{|s| ":" + s.id2name}
         | 
| @@ -110,11 +86,7 @@ module IRB | |
| 110 86 | 
             
                    # Absolute Constant or class methods
         | 
| 111 87 | 
             
                    receiver = $1
         | 
| 112 88 | 
             
                    candidates = Object.constants.collect{|m| m.to_s}
         | 
| 113 | 
            -
                     | 
| 114 | 
            -
                      candidates.find { |i| i == receiver }
         | 
| 115 | 
            -
                    else
         | 
| 116 | 
            -
                      candidates.grep(/^#{receiver}/).collect{|e| "::" + e}
         | 
| 117 | 
            -
                    end
         | 
| 89 | 
            +
                    candidates.grep(/^#{receiver}/).collect{|e| "::" + e}
         | 
| 118 90 |  | 
| 119 91 | 
             
                  when /^([A-Z].*)::([^:.]*)$/
         | 
| 120 92 | 
             
                    # Constant or class methods
         | 
| @@ -126,11 +98,7 @@ module IRB | |
| 126 98 | 
             
                    rescue Exception
         | 
| 127 99 | 
             
                      candidates = []
         | 
| 128 100 | 
             
                    end
         | 
| 129 | 
            -
                     | 
| 130 | 
            -
                      "#{receiver}::#{message}"
         | 
| 131 | 
            -
                    else
         | 
| 132 | 
            -
                      select_message(receiver, message, candidates, "::")
         | 
| 133 | 
            -
                    end
         | 
| 101 | 
            +
                    select_message(receiver, message, candidates, "::")
         | 
| 134 102 |  | 
| 135 103 | 
             
                  when /^(:[^:.]+)(\.|::)([^.]*)$/
         | 
| 136 104 | 
             
                    # Symbol
         | 
| @@ -139,33 +107,20 @@ module IRB | |
| 139 107 | 
             
                    message = Regexp.quote($3)
         | 
| 140 108 |  | 
| 141 109 | 
             
                    candidates = Symbol.instance_methods.collect{|m| m.to_s}
         | 
| 142 | 
            -
                     | 
| 143 | 
            -
                      "Symbol.#{message}"
         | 
| 144 | 
            -
                    else
         | 
| 145 | 
            -
                      select_message(receiver, message, candidates, sep)
         | 
| 146 | 
            -
                    end
         | 
| 110 | 
            +
                    select_message(receiver, message, candidates, sep)
         | 
| 147 111 |  | 
| 148 | 
            -
                  when /^( | 
| 112 | 
            +
                  when /^(-?(0[dbo])?[0-9_]+(\.[0-9_]+)?([eE]-?[0-9]+)?)(\.|::)([^.]*)$/
         | 
| 149 113 | 
             
                    # Numeric
         | 
| 150 | 
            -
                    receiver =  | 
| 151 | 
            -
                    sep =  | 
| 152 | 
            -
                    message = Regexp.quote( | 
| 114 | 
            +
                    receiver = $1
         | 
| 115 | 
            +
                    sep = $5
         | 
| 116 | 
            +
                    message = Regexp.quote($6)
         | 
| 153 117 |  | 
| 154 118 | 
             
                    begin
         | 
| 155 | 
            -
                       | 
| 156 | 
            -
                      if doc_namespace
         | 
| 157 | 
            -
                        "#{instance.class.name}.#{message}"
         | 
| 158 | 
            -
                      else
         | 
| 159 | 
            -
                        candidates = instance.methods.collect{|m| m.to_s}
         | 
| 160 | 
            -
                        select_message(receiver, message, candidates, sep)
         | 
| 161 | 
            -
                      end
         | 
| 119 | 
            +
                      candidates = eval(receiver, bind).methods.collect{|m| m.to_s}
         | 
| 162 120 | 
             
                    rescue Exception
         | 
| 163 | 
            -
                       | 
| 164 | 
            -
                        nil
         | 
| 165 | 
            -
                      else
         | 
| 166 | 
            -
                        candidates = []
         | 
| 167 | 
            -
                      end
         | 
| 121 | 
            +
                      candidates = []
         | 
| 168 122 | 
             
                    end
         | 
| 123 | 
            +
                    select_message(receiver, message, candidates, sep)
         | 
| 169 124 |  | 
| 170 125 | 
             
                  when /^(-?0x[0-9a-fA-F_]+)(\.|::)([^.]*)$/
         | 
| 171 126 | 
             
                    # Numeric(0xFFFF)
         | 
| @@ -174,30 +129,16 @@ module IRB | |
| 174 129 | 
             
                    message = Regexp.quote($3)
         | 
| 175 130 |  | 
| 176 131 | 
             
                    begin
         | 
| 177 | 
            -
                       | 
| 178 | 
            -
                      if doc_namespace
         | 
| 179 | 
            -
                        "#{instance.class.name}.#{message}"
         | 
| 180 | 
            -
                      else
         | 
| 181 | 
            -
                        candidates = instance.methods.collect{|m| m.to_s}
         | 
| 182 | 
            -
                        select_message(receiver, message, candidates, sep)
         | 
| 183 | 
            -
                      end
         | 
| 132 | 
            +
                      candidates = eval(receiver, bind).methods.collect{|m| m.to_s}
         | 
| 184 133 | 
             
                    rescue Exception
         | 
| 185 | 
            -
                       | 
| 186 | 
            -
                        nil
         | 
| 187 | 
            -
                      else
         | 
| 188 | 
            -
                        candidates = []
         | 
| 189 | 
            -
                      end
         | 
| 134 | 
            +
                      candidates = []
         | 
| 190 135 | 
             
                    end
         | 
| 136 | 
            +
                    select_message(receiver, message, candidates, sep)
         | 
| 191 137 |  | 
| 192 138 | 
             
                  when /^(\$[^.]*)$/
         | 
| 193 139 | 
             
                    # global var
         | 
| 194 | 
            -
                     | 
| 195 | 
            -
                     | 
| 196 | 
            -
                    if doc_namespace
         | 
| 197 | 
            -
                      all_gvars.find{ |i| i == gvar }
         | 
| 198 | 
            -
                    else
         | 
| 199 | 
            -
                      all_gvars.grep(Regexp.new(Regexp.quote(gvar)))
         | 
| 200 | 
            -
                    end
         | 
| 140 | 
            +
                    regmessage = Regexp.new(Regexp.quote($1))
         | 
| 141 | 
            +
                    candidates = global_variables.collect{|m| m.to_s}.grep(regmessage)
         | 
| 201 142 |  | 
| 202 143 | 
             
                  when /^([^."].*)(\.|::)([^.]*)$/
         | 
| 203 144 | 
             
                    # variable.func or func.func
         | 
| @@ -205,7 +146,7 @@ module IRB | |
| 205 146 | 
             
                    sep = $2
         | 
| 206 147 | 
             
                    message = Regexp.quote($3)
         | 
| 207 148 |  | 
| 208 | 
            -
                    gv = eval("global_variables", bind).collect{|m| m.to_s} | 
| 149 | 
            +
                    gv = eval("global_variables", bind).collect{|m| m.to_s}
         | 
| 209 150 | 
             
                    lv = eval("local_variables", bind).collect{|m| m.to_s}
         | 
| 210 151 | 
             
                    iv = eval("instance_variables", bind).collect{|m| m.to_s}
         | 
| 211 152 | 
             
                    cv = eval("self.class.constants", bind).collect{|m| m.to_s}
         | 
| @@ -236,11 +177,7 @@ module IRB | |
| 236 177 | 
             
                      candidates.sort!
         | 
| 237 178 | 
             
                      candidates.uniq!
         | 
| 238 179 | 
             
                    end
         | 
| 239 | 
            -
                     | 
| 240 | 
            -
                      "#{rec.class.name}#{sep}#{candidates.find{ |i| i == message }}"
         | 
| 241 | 
            -
                    else
         | 
| 242 | 
            -
                      select_message(receiver, message, candidates, sep)
         | 
| 243 | 
            -
                    end
         | 
| 180 | 
            +
                    select_message(receiver, message, candidates, sep)
         | 
| 244 181 |  | 
| 245 182 | 
             
                  when /^\.([^.]*)$/
         | 
| 246 183 | 
             
                    # unknown(maybe String)
         | 
| @@ -249,50 +186,12 @@ module IRB | |
| 249 186 | 
             
                    message = Regexp.quote($1)
         | 
| 250 187 |  | 
| 251 188 | 
             
                    candidates = String.instance_methods(true).collect{|m| m.to_s}
         | 
| 252 | 
            -
                     | 
| 253 | 
            -
                      "String.#{candidates.find{ |i| i == message }}"
         | 
| 254 | 
            -
                    else
         | 
| 255 | 
            -
                      select_message(receiver, message, candidates)
         | 
| 256 | 
            -
                    end
         | 
| 189 | 
            +
                    select_message(receiver, message, candidates)
         | 
| 257 190 |  | 
| 258 191 | 
             
                  else
         | 
| 259 192 | 
             
                    candidates = eval("methods | private_methods | local_variables | instance_variables | self.class.constants", bind).collect{|m| m.to_s}
         | 
| 260 | 
            -
                    conditions |= ReservedWords
         | 
| 261 | 
            -
             | 
| 262 | 
            -
                    if doc_namespace
         | 
| 263 | 
            -
                      candidates.find{ |i| i == input }
         | 
| 264 | 
            -
                    else
         | 
| 265 | 
            -
                      candidates.grep(/^#{Regexp.quote(input)}/)
         | 
| 266 | 
            -
                    end
         | 
| 267 | 
            -
                  end
         | 
| 268 | 
            -
                end
         | 
| 269 193 |  | 
| 270 | 
            -
             | 
| 271 | 
            -
                  RDocRIDriver ||= RDoc::RI::Driver.new
         | 
| 272 | 
            -
                  if matched =~ /\A(?:::)?RubyVM/ and not ENV['RUBY_YES_I_AM_NOT_A_NORMAL_USER']
         | 
| 273 | 
            -
                    File.open(File.join(__dir__, 'ruby_logo.aa')) do |f|
         | 
| 274 | 
            -
                      RDocRIDriver.page do |io|
         | 
| 275 | 
            -
                        IO.copy_stream(f, io)
         | 
| 276 | 
            -
                      end
         | 
| 277 | 
            -
                    end
         | 
| 278 | 
            -
                    return
         | 
| 279 | 
            -
                  end
         | 
| 280 | 
            -
                  namespace = retrieve_completion_data(matched, true)
         | 
| 281 | 
            -
                  return unless matched
         | 
| 282 | 
            -
                  if namespace.is_a?(Array)
         | 
| 283 | 
            -
                    out = RDoc::Markup::Document.new
         | 
| 284 | 
            -
                    namespace.each do |m|
         | 
| 285 | 
            -
                      begin
         | 
| 286 | 
            -
                        RDocRIDriver.add_method(out, m)
         | 
| 287 | 
            -
                      rescue RDoc::RI::Driver::NotFoundError
         | 
| 288 | 
            -
                      end
         | 
| 289 | 
            -
                    end
         | 
| 290 | 
            -
                    RDocRIDriver.display(out)
         | 
| 291 | 
            -
                  else
         | 
| 292 | 
            -
                    begin
         | 
| 293 | 
            -
                      RDocRIDriver.display_names([namespace])
         | 
| 294 | 
            -
                    rescue RDoc::RI::Driver::NotFoundError
         | 
| 295 | 
            -
                    end
         | 
| 194 | 
            +
                    (candidates|ReservedWords).grep(/^#{Regexp.quote(input)}/)
         | 
| 296 195 | 
             
                  end
         | 
| 297 196 | 
             
                }
         | 
| 298 197 |  | 
| @@ -337,3 +236,9 @@ module IRB | |
| 337 236 | 
             
                end
         | 
| 338 237 | 
             
              end
         | 
| 339 238 | 
             
            end
         | 
| 239 | 
            +
             | 
| 240 | 
            +
            if Readline.respond_to?("basic_word_break_characters=")
         | 
| 241 | 
            +
              Readline.basic_word_break_characters= " \t\n`><=;|&{("
         | 
| 242 | 
            +
            end
         | 
| 243 | 
            +
            Readline.completion_append_character = nil
         | 
| 244 | 
            +
            Readline.completion_proc = IRB::InputCompletor::CompletionProc
         | 
    
        data/lib/irb/context.rb
    CHANGED
    
    | @@ -22,10 +22,10 @@ module IRB | |
| 22 22 | 
             
                #
         | 
| 23 23 | 
             
                # The optional +input_method+ argument:
         | 
| 24 24 | 
             
                #
         | 
| 25 | 
            -
                # +nil+::     uses stdin or  | 
| 25 | 
            +
                # +nil+::     uses stdin or Readline
         | 
| 26 26 | 
             
                # +String+::  uses a File
         | 
| 27 27 | 
             
                # +other+::   uses this as InputMethod
         | 
| 28 | 
            -
                def initialize(irb, workspace = nil, input_method = nil)
         | 
| 28 | 
            +
                def initialize(irb, workspace = nil, input_method = nil, output_method = nil)
         | 
| 29 29 | 
             
                  @irb = irb
         | 
| 30 30 | 
             
                  if workspace
         | 
| 31 31 | 
             
                    @workspace = workspace
         | 
| @@ -39,21 +39,7 @@ module IRB | |
| 39 39 | 
             
                  @rc = IRB.conf[:RC]
         | 
| 40 40 | 
             
                  @load_modules = IRB.conf[:LOAD_MODULES]
         | 
| 41 41 |  | 
| 42 | 
            -
                   | 
| 43 | 
            -
                    @use_singleline = IRB.conf[:USE_SINGLELINE]
         | 
| 44 | 
            -
                  elsif IRB.conf.has_key?(:USE_READLINE) # backward compatibility
         | 
| 45 | 
            -
                    @use_singleline = IRB.conf[:USE_READLINE]
         | 
| 46 | 
            -
                  else
         | 
| 47 | 
            -
                    @use_singleline = nil
         | 
| 48 | 
            -
                  end
         | 
| 49 | 
            -
                  if IRB.conf.has_key?(:USE_MULTILINE)
         | 
| 50 | 
            -
                    @use_multiline = IRB.conf[:USE_MULTILINE]
         | 
| 51 | 
            -
                  elsif IRB.conf.has_key?(:USE_REIDLINE) # backward compatibility
         | 
| 52 | 
            -
                    @use_multiline = IRB.conf[:USE_REIDLINE]
         | 
| 53 | 
            -
                  else
         | 
| 54 | 
            -
                    @use_multiline = nil
         | 
| 55 | 
            -
                  end
         | 
| 56 | 
            -
                  @use_colorize = IRB.conf[:USE_COLORIZE]
         | 
| 42 | 
            +
                  @use_readline = IRB.conf[:USE_READLINE]
         | 
| 57 43 | 
             
                  @verbose = IRB.conf[:VERBOSE]
         | 
| 58 44 | 
             
                  @io = nil
         | 
| 59 45 |  | 
| @@ -78,47 +64,23 @@ module IRB | |
| 78 64 |  | 
| 79 65 | 
             
                  case input_method
         | 
| 80 66 | 
             
                  when nil
         | 
| 81 | 
            -
                     | 
| 82 | 
            -
                    case use_multiline?
         | 
| 67 | 
            +
                    case use_readline?
         | 
| 83 68 | 
             
                    when nil
         | 
| 84 | 
            -
                      if  | 
| 85 | 
            -
             | 
| 86 | 
            -
                         | 
| 87 | 
            -
                          This version of IRB is drastically different from the previous version.
         | 
| 88 | 
            -
                          If you hit any issues, you can use "irb --legacy" to run the old version.
         | 
| 89 | 
            -
                          If you want to just erase this message, please use "irb --multiline".
         | 
| 90 | 
            -
                        EOM
         | 
| 91 | 
            -
                        @io = ReidlineInputMethod.new
         | 
| 69 | 
            +
                      if (defined?(ReadlineInputMethod) && STDIN.tty? &&
         | 
| 70 | 
            +
                          IRB.conf[:PROMPT_MODE] != :INF_RUBY)
         | 
| 71 | 
            +
                        @io = ReadlineInputMethod.new
         | 
| 92 72 | 
             
                      else
         | 
| 93 | 
            -
                        @io =  | 
| 73 | 
            +
                        @io = StdioInputMethod.new
         | 
| 94 74 | 
             
                      end
         | 
| 95 75 | 
             
                    when false
         | 
| 96 | 
            -
                      @io =  | 
| 76 | 
            +
                      @io = StdioInputMethod.new
         | 
| 97 77 | 
             
                    when true
         | 
| 98 | 
            -
                       | 
| 99 | 
            -
             | 
| 100 | 
            -
                    unless @io
         | 
| 101 | 
            -
                      case use_singleline?
         | 
| 102 | 
            -
                      when nil
         | 
| 103 | 
            -
                        if (defined?(ReadlineInputMethod) && STDIN.tty? &&
         | 
| 104 | 
            -
                            IRB.conf[:PROMPT_MODE] != :INF_RUBY)
         | 
| 105 | 
            -
                          @io = ReadlineInputMethod.new
         | 
| 106 | 
            -
                        else
         | 
| 107 | 
            -
                          @io = nil
         | 
| 108 | 
            -
                        end
         | 
| 109 | 
            -
                      when false
         | 
| 110 | 
            -
                        @io = nil
         | 
| 111 | 
            -
                      when true
         | 
| 112 | 
            -
                        if defined?(ReadlineInputMethod)
         | 
| 113 | 
            -
                          @io = ReadlineInputMethod.new
         | 
| 114 | 
            -
                        else
         | 
| 115 | 
            -
                          @io = nil
         | 
| 116 | 
            -
                        end
         | 
| 78 | 
            +
                      if defined?(ReadlineInputMethod)
         | 
| 79 | 
            +
                        @io = ReadlineInputMethod.new
         | 
| 117 80 | 
             
                      else
         | 
| 118 | 
            -
                        @io =  | 
| 81 | 
            +
                        @io = StdioInputMethod.new
         | 
| 119 82 | 
             
                      end
         | 
| 120 83 | 
             
                    end
         | 
| 121 | 
            -
                    @io = StdioInputMethod.new unless @io
         | 
| 122 84 |  | 
| 123 85 | 
             
                  when String
         | 
| 124 86 | 
             
                    @io = FileInputMethod.new(input_method)
         | 
| @@ -129,15 +91,17 @@ module IRB | |
| 129 91 | 
             
                  end
         | 
| 130 92 | 
             
                  self.save_history = IRB.conf[:SAVE_HISTORY] if IRB.conf[:SAVE_HISTORY]
         | 
| 131 93 |  | 
| 94 | 
            +
                  if output_method
         | 
| 95 | 
            +
                    @output_method = output_method
         | 
| 96 | 
            +
                  else
         | 
| 97 | 
            +
                    @output_method = StdioOutputMethod.new
         | 
| 98 | 
            +
                  end
         | 
| 99 | 
            +
             | 
| 132 100 | 
             
                  @echo = IRB.conf[:ECHO]
         | 
| 133 101 | 
             
                  if @echo.nil?
         | 
| 134 102 | 
             
                    @echo = true
         | 
| 135 103 | 
             
                  end
         | 
| 136 | 
            -
             | 
| 137 | 
            -
                  @echo_on_assignment = IRB.conf[:ECHO_ON_ASSIGNMENT]
         | 
| 138 | 
            -
                  if @echo_on_assignment.nil?
         | 
| 139 | 
            -
                    @echo_on_assignment = false
         | 
| 140 | 
            -
                  end
         | 
| 104 | 
            +
                  self.debug_level = IRB.conf[:DEBUG_LEVEL]
         | 
| 141 105 | 
             
                end
         | 
| 142 106 |  | 
| 143 107 | 
             
                # The top-level workspace, see WorkSpace#main
         | 
| @@ -153,9 +117,9 @@ module IRB | |
| 153 117 | 
             
                attr_reader :thread
         | 
| 154 118 | 
             
                # The current input method
         | 
| 155 119 | 
             
                #
         | 
| 156 | 
            -
                # Can be either StdioInputMethod, ReadlineInputMethod,
         | 
| 157 | 
            -
                #  | 
| 158 | 
            -
                #  | 
| 120 | 
            +
                # Can be either StdioInputMethod, ReadlineInputMethod, FileInputMethod or
         | 
| 121 | 
            +
                # other specified when the context is created. See ::new for more
         | 
| 122 | 
            +
                # information on +input_method+.
         | 
| 159 123 | 
             
                attr_accessor :io
         | 
| 160 124 |  | 
| 161 125 | 
             
                # Current irb session
         | 
| @@ -173,18 +137,12 @@ module IRB | |
| 173 137 | 
             
                # +input_method+ passed to Context.new
         | 
| 174 138 | 
             
                attr_accessor :irb_path
         | 
| 175 139 |  | 
| 176 | 
            -
                # Whether  | 
| 177 | 
            -
                #
         | 
| 178 | 
            -
                # A copy of the default <code>IRB.conf[:USE_MULTILINE]</code>
         | 
| 179 | 
            -
                attr_reader :use_multiline
         | 
| 180 | 
            -
                # Whether singleline editor mode is enabled or not.
         | 
| 140 | 
            +
                # Whether +Readline+ is enabled or not.
         | 
| 181 141 | 
             
                #
         | 
| 182 | 
            -
                # A copy of the default <code>IRB.conf[: | 
| 183 | 
            -
                attr_reader :use_singleline
         | 
| 184 | 
            -
                # Whether colorization is enabled or not.
         | 
| 142 | 
            +
                # A copy of the default <code>IRB.conf[:USE_READLINE]</code>
         | 
| 185 143 | 
             
                #
         | 
| 186 | 
            -
                #  | 
| 187 | 
            -
                attr_reader : | 
| 144 | 
            +
                # See #use_readline= for more information.
         | 
| 145 | 
            +
                attr_reader :use_readline
         | 
| 188 146 | 
             
                # A copy of the default <code>IRB.conf[:INSPECT_MODE]</code>
         | 
| 189 147 | 
             
                attr_reader :inspect_mode
         | 
| 190 148 |  | 
| @@ -207,17 +165,17 @@ module IRB | |
| 207 165 | 
             
                # Can be either the default <code>IRB.conf[:AUTO_INDENT]</code>, or the
         | 
| 208 166 | 
             
                # mode set by #prompt_mode=
         | 
| 209 167 | 
             
                #
         | 
| 210 | 
            -
                # To  | 
| 168 | 
            +
                # To enable auto-indentation in irb:
         | 
| 211 169 | 
             
                #
         | 
| 212 | 
            -
                #     IRB.conf[:AUTO_INDENT] =  | 
| 170 | 
            +
                #     IRB.conf[:AUTO_INDENT] = true
         | 
| 213 171 | 
             
                #
         | 
| 214 172 | 
             
                # or
         | 
| 215 173 | 
             
                #
         | 
| 216 | 
            -
                #     irb_context.auto_indent_mode =  | 
| 174 | 
            +
                #     irb_context.auto_indent_mode = true
         | 
| 217 175 | 
             
                #
         | 
| 218 176 | 
             
                # or
         | 
| 219 177 | 
             
                #
         | 
| 220 | 
            -
                #     IRB.CurrentContext.auto_indent_mode =  | 
| 178 | 
            +
                #     IRB.CurrentContext.auto_indent_mode = true
         | 
| 221 179 | 
             
                #
         | 
| 222 180 | 
             
                # See IRB@Configuration for more information.
         | 
| 223 181 | 
             
                attr_accessor :auto_indent_mode
         | 
| @@ -249,19 +207,14 @@ module IRB | |
| 249 207 | 
             
                #     puts "omg"
         | 
| 250 208 | 
             
                #     # omg
         | 
| 251 209 | 
             
                attr_accessor :echo
         | 
| 252 | 
            -
                # Whether to echo for assignment expressions
         | 
| 253 | 
            -
                #
         | 
| 254 | 
            -
                # Uses IRB.conf[:ECHO_ON_ASSIGNMENT] if available, or defaults to +false+.
         | 
| 255 | 
            -
                #
         | 
| 256 | 
            -
                #     a = "omg"
         | 
| 257 | 
            -
                #     IRB.CurrentContext.echo_on_assignment = true
         | 
| 258 | 
            -
                #     a = "omg"
         | 
| 259 | 
            -
                #     #=> omg
         | 
| 260 | 
            -
                attr_accessor :echo_on_assignment
         | 
| 261 210 | 
             
                # Whether verbose messages are displayed or not.
         | 
| 262 211 | 
             
                #
         | 
| 263 212 | 
             
                # A copy of the default <code>IRB.conf[:VERBOSE]</code>
         | 
| 264 213 | 
             
                attr_accessor :verbose
         | 
| 214 | 
            +
                # The debug level of irb
         | 
| 215 | 
            +
                #
         | 
| 216 | 
            +
                # See #debug_level= for more information.
         | 
| 217 | 
            +
                attr_reader :debug_level
         | 
| 265 218 |  | 
| 266 219 | 
             
                # The limit of backtrace lines displayed as top +n+ and tail +n+.
         | 
| 267 220 | 
             
                #
         | 
| @@ -272,33 +225,18 @@ module IRB | |
| 272 225 | 
             
                # See IRB@Command+line+options for more command line options.
         | 
| 273 226 | 
             
                attr_accessor :back_trace_limit
         | 
| 274 227 |  | 
| 275 | 
            -
                # Alias for # | 
| 276 | 
            -
                alias  | 
| 277 | 
            -
                # Alias for #use_singleline
         | 
| 278 | 
            -
                alias use_singleline? use_singleline
         | 
| 279 | 
            -
                # backward compatibility
         | 
| 280 | 
            -
                alias use_reidline use_multiline
         | 
| 281 | 
            -
                # backward compatibility
         | 
| 282 | 
            -
                alias use_reidline? use_multiline
         | 
| 283 | 
            -
                # backward compatibility
         | 
| 284 | 
            -
                alias use_readline use_singleline
         | 
| 285 | 
            -
                # backward compatibility
         | 
| 286 | 
            -
                alias use_readline? use_singleline
         | 
| 287 | 
            -
                # Alias for #use_colorize
         | 
| 288 | 
            -
                alias use_colorize? use_colorize
         | 
| 228 | 
            +
                # Alias for #use_readline
         | 
| 229 | 
            +
                alias use_readline? use_readline
         | 
| 289 230 | 
             
                # Alias for #rc
         | 
| 290 231 | 
             
                alias rc? rc
         | 
| 291 232 | 
             
                alias ignore_sigint? ignore_sigint
         | 
| 292 233 | 
             
                alias ignore_eof? ignore_eof
         | 
| 293 234 | 
             
                alias echo? echo
         | 
| 294 | 
            -
                alias echo_on_assignment? echo_on_assignment
         | 
| 295 235 |  | 
| 296 236 | 
             
                # Returns whether messages are displayed or not.
         | 
| 297 237 | 
             
                def verbose?
         | 
| 298 238 | 
             
                  if @verbose.nil?
         | 
| 299 | 
            -
                    if @io.kind_of?( | 
| 300 | 
            -
                      false
         | 
| 301 | 
            -
                    elsif defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod)
         | 
| 239 | 
            +
                    if defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod)
         | 
| 302 240 | 
             
                      false
         | 
| 303 241 | 
             
                    elsif !STDIN.tty? or @io.kind_of?(FileInputMethod)
         | 
| 304 242 | 
             
                      true
         | 
| @@ -311,11 +249,9 @@ module IRB | |
| 311 249 | 
             
                end
         | 
| 312 250 |  | 
| 313 251 | 
             
                # Whether #verbose? is +true+, and +input_method+ is either
         | 
| 314 | 
            -
                # StdioInputMethod or  | 
| 315 | 
            -
                # for more information.
         | 
| 252 | 
            +
                # StdioInputMethod or ReadlineInputMethod, see #io for more information.
         | 
| 316 253 | 
             
                def prompting?
         | 
| 317 254 | 
             
                  verbose? || (STDIN.tty? && @io.kind_of?(StdioInputMethod) ||
         | 
| 318 | 
            -
                               @io.kind_of?(ReidlineInputMethod) ||
         | 
| 319 255 | 
             
                               (defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod)))
         | 
| 320 256 | 
             
                end
         | 
| 321 257 |  | 
| @@ -414,11 +350,36 @@ module IRB | |
| 414 350 | 
             
                  @inspect_mode
         | 
| 415 351 | 
             
                end
         | 
| 416 352 |  | 
| 353 | 
            +
                # Obsolete method.
         | 
| 354 | 
            +
                #
         | 
| 355 | 
            +
                # Can be set using the +--noreadline+ and +--readline+ command line
         | 
| 356 | 
            +
                # options.
         | 
| 357 | 
            +
                #
         | 
| 358 | 
            +
                # See IRB@Command+line+options for more command line options.
         | 
| 359 | 
            +
                def use_readline=(opt)
         | 
| 360 | 
            +
                  print "This method is obsolete."
         | 
| 361 | 
            +
                  print "Do nothing."
         | 
| 362 | 
            +
                end
         | 
| 363 | 
            +
             | 
| 364 | 
            +
                # Sets the debug level of irb
         | 
| 365 | 
            +
                #
         | 
| 366 | 
            +
                # Can also be set using the +--irb_debug+ command line option.
         | 
| 367 | 
            +
                #
         | 
| 368 | 
            +
                # See IRB@Command+line+options for more command line options.
         | 
| 369 | 
            +
                def debug_level=(value)
         | 
| 370 | 
            +
                  @debug_level = value
         | 
| 371 | 
            +
                  RubyLex.debug_level = value
         | 
| 372 | 
            +
                end
         | 
| 373 | 
            +
             | 
| 374 | 
            +
                # Whether or not debug mode is enabled, see #debug_level=.
         | 
| 375 | 
            +
                def debug?
         | 
| 376 | 
            +
                  @debug_level > 0
         | 
| 377 | 
            +
                end
         | 
| 378 | 
            +
             | 
| 417 379 | 
             
                def evaluate(line, line_no, exception: nil) # :nodoc:
         | 
| 418 380 | 
             
                  @line_no = line_no
         | 
| 419 381 | 
             
                  if exception
         | 
| 420 | 
            -
                     | 
| 421 | 
            -
                    line = "begin ::Kernel.raise _; rescue _.class\n#{line}\n""end"
         | 
| 382 | 
            +
                    line = "begin ::Kernel.raise _; rescue _.class; #{line}; end"
         | 
| 422 383 | 
             
                    @workspace.local_variable_set(:_, exception)
         | 
| 423 384 | 
             
                  end
         | 
| 424 385 | 
             
                  set_last_value(@workspace.evaluate(self, line, irb_path, line_no))
         |