Class: IRB::ReidlineInputMethod
- Inherits:
-
InputMethod
- Object
- InputMethod
- IRB::ReidlineInputMethod
- Includes:
- Reline
- Defined in:
- lib/irb/input-method.rb
Instance Attribute Summary
Attributes inherited from InputMethod
Instance Method Summary collapse
- #auto_indent(&block) ⇒ Object
- #check_termination(&block) ⇒ Object
- #dynamic_prompt(&block) ⇒ Object
-
#encoding ⇒ Object
The external encoding for standard input.
-
#eof? ⇒ Boolean
Whether the end of this input method has been reached, returns
true
if there is no more data to read. -
#gets ⇒ Object
Reads the next line from this input method.
-
#initialize ⇒ ReidlineInputMethod
constructor
Creates a new input method object using Readline.
-
#inspect ⇒ Object
For debug message.
-
#line(line_no) ⇒ Object
Returns the current line number for #io.
-
#readable_after_eof? ⇒ Boolean
Whether this input method is still readable when there is no more data to read.
Methods inherited from InputMethod
Constructor Details
#initialize ⇒ ReidlineInputMethod
Creates a new input method object using Readline
268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 |
# File 'lib/irb/input-method.rb', line 268 def initialize IRB.__send__(:set_encoding, Reline.encoding_system_needs.name, override: false) super @line_no = 0 @line = [] @eof = false @stdin = ::IO.open(STDIN.to_i, :external_encoding => IRB.conf[:LC_MESSAGES].encoding, :internal_encoding => "-") @stdout = ::IO.open(STDOUT.to_i, 'w', :external_encoding => IRB.conf[:LC_MESSAGES].encoding, :internal_encoding => "-") if Reline.respond_to?("basic_word_break_characters=") Reline.basic_word_break_characters = IRB::InputCompletor::BASIC_WORD_BREAK_CHARACTERS end Reline.completion_append_character = nil Reline.completer_quote_characters = '' Reline.completion_proc = IRB::InputCompletor::CompletionProc Reline.output_modifier_proc = if IRB.conf[:USE_COLORIZE] proc do |output, complete: | next unless IRB::Color.colorable? IRB::Color.colorize_code(output, complete: complete) end else proc do |output| Reline::Unicode.escape_for_print(output) end end Reline.dig_perfect_match_proc = IRB::InputCompletor::PerfectMatchedProc end |
Instance Method Details
#auto_indent(&block) ⇒ Object
307 308 309 |
# File 'lib/irb/input-method.rb', line 307 def auto_indent(&block) @auto_indent_proc = block end |
#check_termination(&block) ⇒ Object
299 300 301 |
# File 'lib/irb/input-method.rb', line 299 def check_termination(&block) @check_termination_proc = block end |
#dynamic_prompt(&block) ⇒ Object
303 304 305 |
# File 'lib/irb/input-method.rb', line 303 def dynamic_prompt(&block) @prompt_proc = block end |
#encoding ⇒ Object
The external encoding for standard input.
354 355 356 |
# File 'lib/irb/input-method.rb', line 354 def encoding @stdin.external_encoding end |
#eof? ⇒ Boolean
Whether the end of this input method has been reached, returns true
if there is no more data to read.
See IO#eof? for more information.
332 333 334 |
# File 'lib/irb/input-method.rb', line 332 def eof? @eof end |
#gets ⇒ Object
Reads the next line from this input method.
See IO#gets for more information.
314 315 316 317 318 319 320 321 322 323 324 325 326 |
# File 'lib/irb/input-method.rb', line 314 def gets Reline.input = @stdin Reline.output = @stdout Reline.prompt_proc = @prompt_proc Reline.auto_indent_proc = @auto_indent_proc if @auto_indent_proc if l = readmultiline(@prompt, false, &@check_termination_proc) HISTORY.push(l) if !l.empty? @line[@line_no += 1] = l + "\n" else @eof = true l end end |
#inspect ⇒ Object
For debug message
359 360 361 362 363 364 365 366 367 368 369 |
# File 'lib/irb/input-method.rb', line 359 def inspect config = Reline::Config.new str = "ReidlineInputMethod with Reline #{Reline::VERSION}" if config.respond_to?(:inputrc_path) inputrc_path = File.(config.inputrc_path) else inputrc_path = File.(ENV['INPUTRC'] || '~/.inputrc') end str += " and #{inputrc_path}" if File.exist?(inputrc_path) str end |
#line(line_no) ⇒ Object
Returns the current line number for #io.
#line counts the number of times #gets is called.
See IO#lineno for more information.
349 350 351 |
# File 'lib/irb/input-method.rb', line 349 def line(line_no) @line[line_no] end |
#readable_after_eof? ⇒ Boolean
Whether this input method is still readable when there is no more data to read.
See IO#eof for more information.
340 341 342 |
# File 'lib/irb/input-method.rb', line 340 def readable_after_eof? true end |