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.
-
#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.
Constructor Details
#initialize ⇒ ReidlineInputMethod
Creates a new input method object using Readline
210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 |
# File 'lib/irb/input-method.rb', line 210 def initialize 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
247 248 249 |
# File 'lib/irb/input-method.rb', line 247 def auto_indent(&block) @auto_indent_proc = block end |
#check_termination(&block) ⇒ Object
239 240 241 |
# File 'lib/irb/input-method.rb', line 239 def check_termination(&block) @check_termination_proc = block end |
#dynamic_prompt(&block) ⇒ Object
243 244 245 |
# File 'lib/irb/input-method.rb', line 243 def dynamic_prompt(&block) @prompt_proc = block end |
#encoding ⇒ Object
The external encoding for standard input.
294 295 296 |
# File 'lib/irb/input-method.rb', line 294 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.
272 273 274 |
# File 'lib/irb/input-method.rb', line 272 def eof? super end |
#gets ⇒ Object
Reads the next line from this input method.
See IO#gets for more information.
254 255 256 257 258 259 260 261 262 263 264 265 266 |
# File 'lib/irb/input-method.rb', line 254 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 |
#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.
289 290 291 |
# File 'lib/irb/input-method.rb', line 289 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.
280 281 282 |
# File 'lib/irb/input-method.rb', line 280 def readable_after_eof? true end |