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
252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 |
# File 'lib/irb/input-method.rb', line 252 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.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
290 291 292 |
# File 'lib/irb/input-method.rb', line 290 def auto_indent(&block) @auto_indent_proc = block end |
#check_termination(&block) ⇒ Object
282 283 284 |
# File 'lib/irb/input-method.rb', line 282 def check_termination(&block) @check_termination_proc = block end |
#dynamic_prompt(&block) ⇒ Object
286 287 288 |
# File 'lib/irb/input-method.rb', line 286 def dynamic_prompt(&block) @prompt_proc = block end |
#encoding ⇒ Object
The external encoding for standard input.
337 338 339 |
# File 'lib/irb/input-method.rb', line 337 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.
315 316 317 |
# File 'lib/irb/input-method.rb', line 315 def eof? @eof end |
#gets ⇒ Object
Reads the next line from this input method.
See IO#gets for more information.
297 298 299 300 301 302 303 304 305 306 307 308 309 |
# File 'lib/irb/input-method.rb', line 297 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
342 343 344 345 346 347 348 349 350 351 352 |
# File 'lib/irb/input-method.rb', line 342 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.
332 333 334 |
# File 'lib/irb/input-method.rb', line 332 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.
323 324 325 |
# File 'lib/irb/input-method.rb', line 323 def readable_after_eof? true end |