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
trueif 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
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 238 239 240 |
# File 'lib/irb/input-method.rb', line 212 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
250 251 252 |
# File 'lib/irb/input-method.rb', line 250 def auto_indent(&block) @auto_indent_proc = block end |
#check_termination(&block) ⇒ Object
242 243 244 |
# File 'lib/irb/input-method.rb', line 242 def check_termination(&block) @check_termination_proc = block end |
#dynamic_prompt(&block) ⇒ Object
246 247 248 |
# File 'lib/irb/input-method.rb', line 246 def dynamic_prompt(&block) @prompt_proc = block end |
#encoding ⇒ Object
The external encoding for standard input.
297 298 299 |
# File 'lib/irb/input-method.rb', line 297 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.
275 276 277 |
# File 'lib/irb/input-method.rb', line 275 def eof? @eof end |
#gets ⇒ Object
Reads the next line from this input method.
See IO#gets for more information.
257 258 259 260 261 262 263 264 265 266 267 268 269 |
# File 'lib/irb/input-method.rb', line 257 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.
292 293 294 |
# File 'lib/irb/input-method.rb', line 292 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.
283 284 285 |
# File 'lib/irb/input-method.rb', line 283 def readable_after_eof? true end |