Class: Reline::Core
Defined Under Namespace
Classes: DialogProc
Constant Summary collapse
- ATTR_READER_NAMES =
%i( completion_append_character basic_word_break_characters completer_word_break_characters basic_quote_characters completer_quote_characters filename_quote_characters special_prefixes completion_proc output_modifier_proc prompt_proc auto_indent_proc pre_input_hook dig_perfect_match_proc ).each(&method(:attr_reader))
Instance Attribute Summary collapse
-
#config ⇒ Object
Returns the value of attribute config.
-
#key_stroke ⇒ Object
Returns the value of attribute key_stroke.
-
#last_incremental_search ⇒ Object
Returns the value of attribute last_incremental_search.
-
#line_editor ⇒ Object
Returns the value of attribute line_editor.
-
#output ⇒ Object
Returns the value of attribute output.
Instance Method Summary collapse
- #add_dialog_proc(name_sym, p, context = nil) ⇒ Object
- #ambiguous_width ⇒ Object
- #auto_indent_proc=(p) ⇒ Object
- #basic_quote_characters=(v) ⇒ Object
- #basic_word_break_characters=(v) ⇒ Object
- #completer_quote_characters=(v) ⇒ Object
- #completer_word_break_characters=(v) ⇒ Object
- #completion_append_character=(val) ⇒ Object
- #completion_case_fold ⇒ Object
- #completion_case_fold=(v) ⇒ Object
- #completion_proc=(p) ⇒ Object
- #completion_quote_character ⇒ Object
- #dialog_proc(name_sym) ⇒ Object
- #dig_perfect_match_proc=(p) ⇒ Object
- #emacs_editing_mode ⇒ Object
- #emacs_editing_mode? ⇒ Boolean
- #encoding ⇒ Object
- #filename_quote_characters=(v) ⇒ Object
- #get_screen_size ⇒ Object
-
#initialize {|_self| ... } ⇒ Core
constructor
A new instance of Core.
- #input=(val) ⇒ Object
- #io_gate ⇒ Object
- #output_modifier_proc=(p) ⇒ Object
- #pre_input_hook=(p) ⇒ Object
- #prompt_proc=(p) ⇒ Object
- #readline(prompt = '', add_hist = false) ⇒ Object
- #readmultiline(prompt = '', add_hist = false, &confirm_multiline_termination) ⇒ Object
- #special_prefixes=(v) ⇒ Object
- #vi_editing_mode ⇒ Object
- #vi_editing_mode? ⇒ Boolean
Constructor Details
#initialize {|_self| ... } ⇒ Core
Returns a new instance of Core.
67 68 69 70 71 72 73 |
# File 'lib/reline.rb', line 67 def initialize self.output = STDOUT @mutex = Mutex.new @dialog_proc_list = {} yield self @completion_quote_character = nil end |
Instance Attribute Details
#config ⇒ Object
Returns the value of attribute config.
56 57 58 |
# File 'lib/reline.rb', line 56 def config @config end |
#key_stroke ⇒ Object
Returns the value of attribute key_stroke.
57 58 59 |
# File 'lib/reline.rb', line 57 def key_stroke @key_stroke end |
#last_incremental_search ⇒ Object
Returns the value of attribute last_incremental_search.
59 60 61 |
# File 'lib/reline.rb', line 59 def last_incremental_search @last_incremental_search end |
#line_editor ⇒ Object
Returns the value of attribute line_editor.
58 59 60 |
# File 'lib/reline.rb', line 58 def line_editor @line_editor end |
#output ⇒ Object
Returns the value of attribute output.
60 61 62 |
# File 'lib/reline.rb', line 60 def output @output end |
Instance Method Details
#add_dialog_proc(name_sym, p, context = nil) ⇒ Object
161 162 163 164 165 166 167 168 169 |
# File 'lib/reline.rb', line 161 def add_dialog_proc(name_sym, p, context = nil) raise ArgumentError unless name_sym.instance_of?(Symbol) if p.nil? @dialog_proc_list.delete(name_sym) else raise ArgumentError unless p.respond_to?(:call) @dialog_proc_list[name_sym] = DialogProc.new(p, context) end end |
#ambiguous_width ⇒ Object
409 410 411 412 |
# File 'lib/reline.rb', line 409 def ambiguous_width may_req_ambiguous_char_width unless defined? @ambiguous_width @ambiguous_width end |
#auto_indent_proc=(p) ⇒ Object
146 147 148 149 |
# File 'lib/reline.rb', line 146 def auto_indent_proc=(p) raise ArgumentError unless p.respond_to?(:call) or p.nil? @auto_indent_proc = p end |
#basic_quote_characters=(v) ⇒ Object
103 104 105 |
# File 'lib/reline.rb', line 103 def basic_quote_characters=(v) @basic_quote_characters = v.encode(encoding) end |
#basic_word_break_characters=(v) ⇒ Object
95 96 97 |
# File 'lib/reline.rb', line 95 def basic_word_break_characters=(v) @basic_word_break_characters = v.encode(encoding) end |
#completer_quote_characters=(v) ⇒ Object
107 108 109 |
# File 'lib/reline.rb', line 107 def completer_quote_characters=(v) @completer_quote_characters = v.encode(encoding) end |
#completer_word_break_characters=(v) ⇒ Object
99 100 101 |
# File 'lib/reline.rb', line 99 def completer_word_break_characters=(v) @completer_word_break_characters = v.encode(encoding) end |
#completion_append_character=(val) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/reline.rb', line 83 def completion_append_character=(val) if val.nil? @completion_append_character = nil elsif val.size == 1 @completion_append_character = val.encode(encoding) elsif val.size > 1 @completion_append_character = val[0].encode(encoding) else @completion_append_character = nil end end |
#completion_case_fold ⇒ Object
123 124 125 |
# File 'lib/reline.rb', line 123 def completion_case_fold @config.completion_ignore_case end |
#completion_case_fold=(v) ⇒ Object
119 120 121 |
# File 'lib/reline.rb', line 119 def completion_case_fold=(v) @config.completion_ignore_case = v end |
#completion_proc=(p) ⇒ Object
131 132 133 134 |
# File 'lib/reline.rb', line 131 def completion_proc=(p) raise ArgumentError unless p.respond_to?(:call) or p.nil? @completion_proc = p end |
#completion_quote_character ⇒ Object
127 128 129 |
# File 'lib/reline.rb', line 127 def completion_quote_character @completion_quote_character end |
#dialog_proc(name_sym) ⇒ Object
171 172 173 |
# File 'lib/reline.rb', line 171 def dialog_proc(name_sym) @dialog_proc_list[name_sym] end |
#dig_perfect_match_proc=(p) ⇒ Object
155 156 157 158 |
# File 'lib/reline.rb', line 155 def dig_perfect_match_proc=(p) raise ArgumentError unless p.respond_to?(:call) or p.nil? @dig_perfect_match_proc = p end |
#emacs_editing_mode ⇒ Object
195 196 197 198 |
# File 'lib/reline.rb', line 195 def emacs_editing_mode config.editing_mode = :emacs nil end |
#emacs_editing_mode? ⇒ Boolean
204 205 206 |
# File 'lib/reline.rb', line 204 def emacs_editing_mode? config.editing_mode_is?(:emacs) end |
#encoding ⇒ Object
79 80 81 |
# File 'lib/reline.rb', line 79 def encoding io_gate.encoding end |
#filename_quote_characters=(v) ⇒ Object
111 112 113 |
# File 'lib/reline.rb', line 111 def filename_quote_characters=(v) @filename_quote_characters = v.encode(encoding) end |
#get_screen_size ⇒ Object
208 209 210 |
# File 'lib/reline.rb', line 208 def get_screen_size io_gate.get_screen_size end |
#input=(val) ⇒ Object
175 176 177 178 179 180 |
# File 'lib/reline.rb', line 175 def input=(val) raise TypeError unless val.respond_to?(:getc) or val.nil? if val.respond_to?(:getc) && io_gate.respond_to?(:input=) io_gate.input = val end end |
#output_modifier_proc=(p) ⇒ Object
136 137 138 139 |
# File 'lib/reline.rb', line 136 def output_modifier_proc=(p) raise ArgumentError unless p.respond_to?(:call) or p.nil? @output_modifier_proc = p end |
#pre_input_hook=(p) ⇒ Object
151 152 153 |
# File 'lib/reline.rb', line 151 def pre_input_hook=(p) @pre_input_hook = p end |
#prompt_proc=(p) ⇒ Object
141 142 143 144 |
# File 'lib/reline.rb', line 141 def prompt_proc=(p) raise ArgumentError unless p.respond_to?(:call) or p.nil? @prompt_proc = p end |
#readline(prompt = '', add_hist = false) ⇒ Object
277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 |
# File 'lib/reline.rb', line 277 def readline(prompt = '', add_hist = false) @mutex.synchronize do io_gate.with_raw_input do inner_readline(prompt, add_hist, false) end line = line_editor.line.dup line.taint if RUBY_VERSION < '2.7' if add_hist and line and line.chomp("\n").size > 0 Reline::HISTORY << line.chomp("\n") end line_editor.reset_line if line_editor.line.nil? line end end |
#readmultiline(prompt = '', add_hist = false, &confirm_multiline_termination) ⇒ Object
251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 |
# File 'lib/reline.rb', line 251 def readmultiline(prompt = '', add_hist = false, &confirm_multiline_termination) @mutex.synchronize do unless confirm_multiline_termination raise ArgumentError.new('#readmultiline needs block to confirm multiline termination') end io_gate.with_raw_input do inner_readline(prompt, add_hist, true, &confirm_multiline_termination) end whole_buffer = line_editor.whole_buffer.dup whole_buffer.taint if RUBY_VERSION < '2.7' if add_hist and whole_buffer and whole_buffer.chomp("\n").size > 0 Reline::HISTORY << whole_buffer end if line_editor.eof? line_editor.reset_line # Return nil if the input is aborted by C-d. nil else whole_buffer end end end |
#special_prefixes=(v) ⇒ Object
115 116 117 |
# File 'lib/reline.rb', line 115 def special_prefixes=(v) @special_prefixes = v.encode(encoding) end |
#vi_editing_mode ⇒ Object
190 191 192 193 |
# File 'lib/reline.rb', line 190 def vi_editing_mode config.editing_mode = :vi_insert nil end |
#vi_editing_mode? ⇒ Boolean
200 201 202 |
# File 'lib/reline.rb', line 200 def vi_editing_mode? config.editing_mode_is?(:vi_insert, :vi_command) end |