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
209 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 |
# File 'lib/irb/input-method.rb', line 209 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
246 247 248 |
# File 'lib/irb/input-method.rb', line 246 def auto_indent(&block) @auto_indent_proc = block end |
#check_termination(&block) ⇒ Object
238 239 240 |
# File 'lib/irb/input-method.rb', line 238 def check_termination(&block) @check_termination_proc = block end |
#dynamic_prompt(&block) ⇒ Object
242 243 244 |
# File 'lib/irb/input-method.rb', line 242 def dynamic_prompt(&block) @prompt_proc = block end |
#encoding ⇒ Object
The external encoding for standard input.
293 294 295 |
# File 'lib/irb/input-method.rb', line 293 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.
271 272 273 |
# File 'lib/irb/input-method.rb', line 271 def eof? @eof end |
#gets ⇒ Object
Reads the next line from this input method.
See IO#gets for more information.
253 254 255 256 257 258 259 260 261 262 263 264 265 |
# File 'lib/irb/input-method.rb', line 253 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.
288 289 290 |
# File 'lib/irb/input-method.rb', line 288 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.
279 280 281 |
# File 'lib/irb/input-method.rb', line 279 def readable_after_eof? true end |