Class: IRB::Context
| Relationships & Source Files | |
| Inherits: | Object |
| Defined in: | lib/irb/context.rb, lib/irb/ext/change-ws.rb, lib/irb/ext/history.rb, lib/irb/ext/save-history.rb, lib/irb/ext/tracer.rb, lib/irb/ext/use-loader.rb, lib/irb/ext/workspaces.rb |
Overview
A class that wraps the current state of the irb session, including the configuration of conf.
Constant Summary
-
IDNAME_IVARS =
Internal use only
# File 'lib/irb/context.rb', line 465["@prompt_mode"] -
NOPRINTING_IVARS =
Internal use only
# File 'lib/irb/context.rb', line 463["@last_value"] -
NO_INSPECTING_IVARS =
Internal use only
# File 'lib/irb/context.rb', line 464["@irb", "@io"]
Class Method Summary
-
.new(irb, workspace = nil, input_method = nil) ⇒ Context
constructor
Creates a new
::IRBcontext.
Instance Attribute Summary
-
#ap_name
rw
A copy of the default
IRB.conf[:AP_NAME]. -
#auto_indent_mode
rw
Can be either the default
IRB.conf[:AUTO_INDENT], or the mode set by #prompt_mode= -
#back_trace_limit
rw
The limit of backtrace lines displayed as top
nand tailn. -
#echo?
rw
Alias for #echo.
-
#echo_on_assignment?
rw
Alias for #echo_on_assignment.
-
#eval_history
rw
The command result history limit.
-
#eval_history=(no)
rw
Sets command result history limit.
- #file_input? ⇒ Boolean readonly
-
#history_file
rw
A copy of the default
IRB.conf[:HISTORY_FILE]. -
#history_file=(hist)
rw
Set
IRB.conf[:HISTORY_FILE]to the givenhist. -
#ignore_eof?
rw
Alias for #ignore_eof.
-
#ignore_sigint?
rw
Alias for #ignore_sigint.
-
#inspect? ⇒ Boolean
readonly
Whether #inspect_mode is set or not, see #inspect_mode= for more detail.
-
#inspect_mode
rw
A copy of the default
IRB.conf[:INSPECT_MODE]. -
#inspect_mode=(opt)
rw
Specifies the inspect mode with
opt: -
#io
rw
The current input method.
-
#irb
rw
Current irb session.
-
#irb_name
rw
Can be either name from
IRB.conf[:IRB_NAME], or the number of the current job set byJobManager, such asirb#2. - #irb_path rw
-
#last_value
readonly
The return value of the last statement evaluated.
-
#load_modules
rw
A copy of the default
IRB.conf[:LOAD_MODULES]. -
#newline_before_multiline_output?
rw
Alias for #newline_before_multiline_output.
-
#prompt_c
rw
::IRBprompt for continuated statement (e.g. immediately after anif). -
#prompt_i
rw
Standard IRB prompt.
-
#prompt_mode
rw
A copy of the default
IRB.conf[:PROMPT_MODE]. -
#prompt_mode=(mode)
rw
Sets the
modeof the prompt in this context. -
#prompt_n
rw
See IRB@Customizing+the+IRB+Prompt for more information.
-
#prompt_s
rw
::IRBprompt for continuated strings. -
#prompting? ⇒ Boolean
readonly
Whether #verbose? is
true, andinput_methodis eitherStdioInputMethodorReidlineInputMethodor ReadlineInputMethod, see #io for more information. -
#rc?
rw
Alias for #rc.
-
#return_format
rw
The format of the return statement, set by #prompt_mode= using the
:RETURNof themodepassed to set the current #prompt_mode. -
#save_history
rw
A copy of the default
IRB.conf[:SAVE_HISTORY]. -
#save_history=(val)
rw
Sets
IRB.conf[:SAVE_HISTORY]to the givenvaland calls #init_save_history with this context. -
#thread
readonly
The current thread in this context.
-
#use_colorize?
readonly
Alias for #use_colorize.
-
#use_loader
(also: #use_loader?)
rw
Returns whether #irb‘s own file reader method is used by
load/requireor not. -
#use_loader=(opt)
rw
Sets
IRB.conf[:USE_LOADER]. -
#use_loader?
rw
Alias for #use_loader.
-
#use_multiline?
readonly
Alias for #use_multiline.
-
#use_readline
readonly
Alias for #use_singleline.
-
#use_readline?
readonly
Alias for #use_singleline.
-
#use_reidline
readonly
Alias for #use_multiline.
-
#use_reidline?
readonly
Alias for #use_multiline.
-
#use_singleline?
readonly
Alias for #use_singleline.
-
#use_tracer=(opt)
rw
Sets whether or not to use the Tracer library when evaluating statements in this context.
-
#use_tracer?
rw
Alias for #use_tracer.
-
#verbose
rw
Whether verbose messages are displayed or not.
-
#verbose? ⇒ Boolean
rw
Returns whether messages are displayed or not.
-
#workspace
rw
WorkSpacein the current context. -
#workspace_home
readonly
The toplevel workspace, see #home_workspace
Instance Method Summary
- #__exit__
- #__inspect__
- #__to_s__
-
#_set_last_value(value)
Alias for #set_last_value.
-
#change_workspace(*_main)
Changes the current workspace to given object or binding.
-
#echo
(also: #echo?)
rw
Whether to echo the return value to output or not.
-
#echo_on_assignment
(also: #echo_on_assignment?)
rw
Whether to echo for assignment expressions.
-
#exit(ret = 0)
Exits the current session, see irb_exit
-
#home_workspace
Inherited from
TOPLEVEL_BINDING. -
#ignore_eof
(also: #ignore_eof?)
rw
Whether
^D(control-d) will be ignored or not. -
#ignore_sigint
(also: #ignore_sigint?)
rw
Whether
^C(control-c) will be ignored or not. -
#irb_level
Size of the current
WorkSpacestack. -
#main
The top-level workspace, see WorkSpace#main
-
#newline_before_multiline_output
(also: #newline_before_multiline_output?)
rw
Whether a newline is put before multiline output.
-
#pop_workspace
Removes the last element from the current #workspaces stack and returns it, or
nilif the current workspace stack is empty. -
#push_workspace(*_main)
Creates a new workspace with the given object or binding, and appends it onto the current #workspaces stack.
-
#rc
(also: #rc?)
rw
A copy of the default
IRB.conf[:RC]. -
#set_last_value(value)
(also: #_set_last_value)
Sets the return value from the last statement evaluated in this context to #last_value.
-
#to_s
Alias for #inspect.
-
#use_colorize
(also: #use_colorize?)
readonly
Whether colorization is enabled or not.
-
#use_multiline
(also: #use_multiline?, #use_reidline, #use_reidline?)
readonly
Whether multiline editor mode is enabled or not.
-
#use_singleline
(also: #use_singleline?, #use_readline, #use_readline?)
readonly
Whether singleline editor mode is enabled or not.
-
#use_tracer
(also: #use_tracer?)
rw
Whether Tracer is used when evaluating statements in this context.
-
#workspaces
WorkSpaces in the current stack.
- #evaluate(line, line_no, exception: nil) Internal use only
- #init_save_history Internal use only
- #inspect (also: #to_s) readonly Internal use only
- #inspect_last_value Internal use only
Constructor Details
.new(irb, workspace = nil, input_method = nil) ⇒ Context
Creates a new ::IRB context.
The optional input_method argument:
nil-
uses stdin or Reidline or Readline
String-
uses a File
other-
uses this as
InputMethod
# File 'lib/irb/context.rb', line 28
def initialize(irb, workspace = nil, input_method = nil) @irb = irb if workspace @workspace = workspace else @workspace = WorkSpace.new end @thread = Thread.current if defined? Thread # copy of default configuration @ap_name = IRB.conf[:AP_NAME] @rc = IRB.conf[:RC] @load_modules = IRB.conf[:LOAD_MODULES] if IRB.conf.has_key?(:USE_SINGLELINE) @use_singleline = IRB.conf[:USE_SINGLELINE] elsif IRB.conf.has_key?(:USE_READLINE) # backward compatibility @use_singleline = IRB.conf[:USE_READLINE] else @use_singleline = nil end if IRB.conf.has_key?(:USE_MULTILINE) @use_multiline = IRB.conf[:USE_MULTILINE] elsif IRB.conf.has_key?(:USE_REIDLINE) # backward compatibility @use_multiline = IRB.conf[:USE_REIDLINE] else @use_multiline = nil end @use_colorize = IRB.conf[:USE_COLORIZE] @verbose = IRB.conf[:VERBOSE] @io = nil self.inspect_mode = IRB.conf[:INSPECT_MODE] self.use_tracer = IRB.conf[:USE_TRACER] if IRB.conf[:USE_TRACER] self.use_loader = IRB.conf[:USE_LOADER] if IRB.conf[:USE_LOADER] self.eval_history = IRB.conf[:EVAL_HISTORY] if IRB.conf[:EVAL_HISTORY] @ignore_sigint = IRB.conf[:IGNORE_SIGINT] @ignore_eof = IRB.conf[:IGNORE_EOF] @back_trace_limit = IRB.conf[:BACK_TRACE_LIMIT] self.prompt_mode = IRB.conf[:PROMPT_MODE] if IRB.conf[:SINGLE_IRB] or !defined?(IRB::JobManager) @irb_name = IRB.conf[:IRB_NAME] else @irb_name = IRB.conf[:IRB_NAME]"#"IRB.JobManager.n_jobs.to_s end @irb_path = "(" + @irb_name + ")" case input_method when nil @io = nil case use_multiline? when nil if STDIN.tty? && IRB.conf[:PROMPT_MODE] != :INF_RUBY && !use_singleline? # Both of multiline mode and singleline mode aren't specified. @io = ReidlineInputMethod.new else @io = nil end when false @io = nil when true @io = ReidlineInputMethod.new end unless @io case use_singleline? when nil if (defined?(ReadlineInputMethod) && STDIN.tty? && IRB.conf[:PROMPT_MODE] != :INF_RUBY) @io = ReadlineInputMethod.new else @io = nil end when false @io = nil when true if defined?(ReadlineInputMethod) @io = ReadlineInputMethod.new else @io = nil end else @io = nil end end @io = StdioInputMethod.new unless @io when String @io = FileInputMethod.new(input_method) @irb_name = File.basename(input_method) @irb_path = input_method else @io = input_method end self.save_history = IRB.conf[:SAVE_HISTORY] if IRB.conf[:SAVE_HISTORY] @echo = IRB.conf[:ECHO] if @echo.nil? @echo = true end @echo_on_assignment = IRB.conf[:ECHO_ON_ASSIGNMENT] if @echo_on_assignment.nil? @echo_on_assignment = :truncate end @newline_before_multiline_output = IRB.conf[:NEWLINE_BEFORE_MULTILINE_OUTPUT] if @newline_before_multiline_output.nil? @newline_before_multiline_output = true end end
Instance Attribute Details
#ap_name (rw)
A copy of the default IRB.conf[:AP_NAME]
# File 'lib/irb/context.rb', line 164
attr_accessor :ap_name
#auto_indent_mode (rw)
Can be either the default IRB.conf[:AUTO_INDENT], or the mode set by #prompt_mode=
To disable auto-indentation in irb:
IRB.conf[:AUTO_INDENT] = false
or
irb_context.auto_indent_mode = false
or
IRB.CurrentContext.auto_indent_mode = false
See IRB@Configuration for more information.
# File 'lib/irb/context.rb', line 223
attr_accessor :auto_indent_mode
#back_trace_limit (rw)
The limit of backtrace lines displayed as top n and tail n.
The default value is 16.
Can also be set using the --back-trace-limit command line option.
See IRB@Command+line+options for more command line options.
# File 'lib/irb/context.rb', line 298
attr_accessor :back_trace_limit
#echo? (rw)
Alias for #echo.
# File 'lib/irb/context.rb', line 318
alias echo? echo
#echo_on_assignment? (rw)
Alias for #echo_on_assignment.
# File 'lib/irb/context.rb', line 319
alias echo_on_assignment? echo_on_assignment
#eval_history (rw)
The command result history limit. This method is not available until #eval_history= was called with non-nil value (directly or via setting IRB.conf[:EVAL_HISTORY] in .irbrc).
# File 'lib/irb/ext/history.rb', line 37
attr_reader :eval_history
#eval_history=(no) (rw)
Sets command result history limit. Default value is set from IRB.conf[:EVAL_HISTORY].
no is an Integer or nil.
Returns no of history items if greater than 0.
If no is 0, the number of history items is unlimited.
If no is nil, execution result history isn’t used (default).
# File 'lib/irb/ext/history.rb', line 51
def eval_history=(no) if no if defined?(@eval_history) && @eval_history @eval_history_values.size(no) else @eval_history_values = History.new(no) IRB.conf[:__TMP__EHV__] = @eval_history_values @workspace.evaluate(self, "__ = IRB.conf[:__TMP__EHV__]") IRB.conf.delete(:__TMP_EHV__) end else @eval_history_values = nil end @eval_history = no end
#file_input? ⇒ Boolean (readonly)
[ GitHub ]
# File 'lib/irb/context.rb', line 383
def file_input? @io.class == FileInputMethod end
#history_file (rw)
A copy of the default IRB.conf[:HISTORY_FILE]
#history_file=(hist) (rw)
Set IRB.conf[:HISTORY_FILE] to the given hist.
#ignore_eof? (rw)
Alias for #ignore_eof.
# File 'lib/irb/context.rb', line 317
alias ignore_eof? ignore_eof
#ignore_sigint? (rw)
Alias for #ignore_sigint.
# File 'lib/irb/context.rb', line 316
alias ignore_sigint? ignore_sigint
#inspect? ⇒ Boolean (readonly)
Whether #inspect_mode is set or not, see #inspect_mode= for more detail.
# File 'lib/irb/context.rb', line 377
def inspect? @inspect_mode.nil? or @inspect_mode end
#inspect_mode (rw)
A copy of the default IRB.conf[:INSPECT_MODE]
# File 'lib/irb/context.rb', line 189
attr_reader :inspect_mode
#inspect_mode=(opt) (rw)
Specifies the inspect mode with opt:
true-
display #inspect
false-
display #to_s
nil-
inspect mode in non-math mode, non-inspect mode in math mode
See Inspector for more information.
Can also be set using the --inspect and --noinspect command line options.
See IRB@Command+line+options for more command line options.
# File 'lib/irb/context.rb', line 400
def inspect_mode=(opt) if i = Inspector::INSPECTORS[opt] @inspect_mode = opt @inspect_method = i i.init else case opt when nil if Inspector.keys_with_inspector(Inspector::INSPECTORS[true]).include?(@inspect_mode) self.inspect_mode = false elsif Inspector.keys_with_inspector(Inspector::INSPECTORS[false]).include?(@inspect_mode) self.inspect_mode = true else puts "Can't switch inspect mode." return end when /^\s*\{.*\}\s*$/ begin inspector = eval "proc#{opt}" rescue Exception puts "Can't switch inspect mode(#{opt})." return end self.inspect_mode = inspector when Proc self.inspect_mode = IRB::Inspector(opt) when Inspector prefix = "usr%d" i = 1 while Inspector::INSPECTORS[format(prefix, i)]; i += 1; end @inspect_mode = format(prefix, i) @inspect_method = opt Inspector.def_inspector(format(prefix, i), @inspect_method) else puts "Can't switch inspect mode(#{opt})." return end end print "Switch to#{unless @inspect_mode; ' non';end} inspect mode.\n" if verbose? @inspect_mode end
#io (rw)
The current input method
Can be either StdioInputMethod, ReadlineInputMethod, ReidlineInputMethod, FileInputMethod or other specified when the context is created. See .new for more # information on input_method.
# File 'lib/irb/context.rb', line 159
attr_accessor :io
#irb (rw)
Current irb session
# File 'lib/irb/context.rb', line 162
attr_accessor :irb
#irb_name (rw)
Can be either name from IRB.conf[:IRB_NAME], or the number of the current job set by JobManager, such as irb#2
# File 'lib/irb/context.rb', line 171
attr_accessor :irb_name
#irb_path (rw)
[ GitHub ]# File 'lib/irb/context.rb', line 174
attr_accessor :irb_path
#last_value (readonly)
The return value of the last statement evaluated.
# File 'lib/irb/context.rb', line 349
attr_reader :last_value
#load_modules (rw)
A copy of the default IRB.conf[:LOAD_MODULES]
# File 'lib/irb/context.rb', line 168
attr_accessor :load_modules
#newline_before_multiline_output? (rw)
Alias for #newline_before_multiline_output.
# File 'lib/irb/context.rb', line 320
alias newline_before_multiline_output? newline_before_multiline_output
#prompt_c (rw)
::IRB prompt for continuated statement (e.g. immediately after an if)
See IRB@Customizing+the+IRB+Prompt for more information.
# File 'lib/irb/context.rb', line 204
attr_accessor :prompt_c
#prompt_i (rw)
Standard IRB prompt
See IRB@Customizing+the+IRB+Prompt for more information.
# File 'lib/irb/context.rb', line 196
attr_accessor :prompt_i
#prompt_mode (rw)
A copy of the default IRB.conf[:PROMPT_MODE]
# File 'lib/irb/context.rb', line 192
attr_reader :prompt_mode
#prompt_mode=(mode) (rw)
Sets the mode of the prompt in this context.
See IRB@Customizing+the+IRB+Prompt for more information.
# File 'lib/irb/context.rb', line 361
def prompt_mode=(mode) @prompt_mode = mode pconf = IRB.conf[:PROMPT][mode] @prompt_i = pconf[:PROMPT_I] @prompt_s = pconf[:PROMPT_S] @prompt_c = pconf[:PROMPT_C] @prompt_n = pconf[:PROMPT_N] @return_format = pconf[:RETURN] if ai = pconf.include?(:AUTO_INDENT) @auto_indent_mode = ai else @auto_indent_mode = IRB.conf[:AUTO_INDENT] end end
#prompt_n (rw)
See IRB@Customizing+the+IRB+Prompt for more information.
# File 'lib/irb/context.rb', line 206
attr_accessor :prompt_n
#prompt_s (rw)
::IRB prompt for continuated strings
See IRB@Customizing+the+IRB+Prompt for more information.
# File 'lib/irb/context.rb', line 200
attr_accessor :prompt_s
#prompting? ⇒ Boolean (readonly)
Whether #verbose? is true, and input_method is either StdioInputMethod or ReidlineInputMethod or ReadlineInputMethod, see #io for more information.
# File 'lib/irb/context.rb', line 342
def prompting? verbose? || (STDIN.tty? && @io.kind_of?(StdioInputMethod) || @io.kind_of?(ReidlineInputMethod) || (defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod))) end
#rc? (rw)
Alias for #rc.
# File 'lib/irb/context.rb', line 315
alias rc? rc
#return_format (rw)
The format of the return statement, set by #prompt_mode= using the :RETURN of the mode passed to set the current #prompt_mode.
# File 'lib/irb/context.rb', line 226
attr_accessor :return_format
#save_history (rw)
A copy of the default IRB.conf[:SAVE_HISTORY]
#save_history=(val) (rw)
Sets IRB.conf[:SAVE_HISTORY] to the given val and calls #init_save_history with this context.
Will store the number of val entries of history in the #history_file
Add the following to your .irbrc to change the number of history entries stored to 1000:
IRB.conf[:SAVE_HISTORY] = 1000
# File 'lib/irb/ext/save-history.rb', line 38
def save_history=(val) IRB.conf[:SAVE_HISTORY] = val if val main_context = IRB.conf[:MAIN_CONTEXT] main_context = self unless main_context main_context.init_save_history end end
#thread (readonly)
The current thread in this context
# File 'lib/irb/context.rb', line 153
attr_reader :thread
#use_colorize? (readonly)
Alias for #use_colorize.
# File 'lib/irb/context.rb', line 313
alias use_colorize? use_colorize
#use_loader (rw) Also known as: #use_loader?
Returns whether #irb‘s own file reader method is used by load/require or not.
This mode is globally affected (irb-wide).
#use_loader=(opt) (rw)
Sets IRB.conf[:USE_LOADER]
See #use_loader for more information.
# File 'lib/irb/ext/use-loader.rb', line 53
def use_loader=(opt) if IRB.conf[:USE_LOADER] != opt IRB.conf[:USE_LOADER] = opt if opt if !$".include?("irb/cmd/load") end (class<<@workspace.main;self;end).instance_eval { alias_method :load, :irb_load alias_method :require, :irb_require } else (class<<@workspace.main;self;end).instance_eval { alias_method :load, :__original__load__IRB_use_loader__ alias_method :require, :__original__require__IRB_use_loader__ } end end print "Switch to load/require#{unless use_loader; ' non';end} trace mode.\n" if verbose? opt end
#use_loader? (rw)
Alias for #use_loader.
# File 'lib/irb/ext/use-loader.rb', line 47
alias use_loader? use_loader
#use_multiline? (readonly)
Alias for #use_multiline.
# File 'lib/irb/context.rb', line 301
alias use_multiline? use_multiline
#use_readline (readonly)
Alias for #use_singleline.
# File 'lib/irb/context.rb', line 309
alias use_readline use_singleline
#use_readline? (readonly)
Alias for #use_singleline.
# File 'lib/irb/context.rb', line 311
alias use_readline? use_singleline
#use_reidline (readonly)
Alias for #use_multiline.
# File 'lib/irb/context.rb', line 305
alias use_reidline use_multiline
#use_reidline? (readonly)
Alias for #use_multiline.
# File 'lib/irb/context.rb', line 307
alias use_reidline? use_multiline
#use_singleline? (readonly)
Alias for #use_singleline.
# File 'lib/irb/context.rb', line 303
alias use_singleline? use_singleline
#use_tracer=(opt) (rw)
Sets whether or not to use the Tracer library when evaluating statements in this context.
See lib/tracer.rb for more information.
# File 'lib/irb/ext/tracer.rb', line 50
def use_tracer=(opt) if opt Tracer.set_get_line_procs(@irb_path) { |line_no, *rests| @io.line(line_no) } elsif !opt && @use_tracer Tracer.off end @use_tracer=opt end
#use_tracer? (rw)
Alias for #use_tracer.
# File 'lib/irb/ext/tracer.rb', line 44
alias use_tracer? use_tracer
#verbose (rw)
Whether verbose messages are displayed or not.
A copy of the default IRB.conf[:VERBOSE]
# File 'lib/irb/context.rb', line 289
attr_accessor :verbose
#verbose? ⇒ Boolean (rw)
Returns whether messages are displayed or not.
# File 'lib/irb/context.rb', line 323
def verbose? if @verbose.nil? if @io.kind_of?(ReidlineInputMethod) false elsif defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod) false elsif !STDIN.tty? or @io.kind_of?(FileInputMethod) true else false end else @verbose end end
#workspace (rw)
WorkSpace in the current context
# File 'lib/irb/context.rb', line 151
attr_accessor :workspace
#workspace_home (readonly)
The toplevel workspace, see #home_workspace
# File 'lib/irb/context.rb', line 149
attr_reader :workspace_home
Instance Method Details
#__exit__
[ GitHub ]# File 'lib/irb/context.rb', line 457
alias __exit__ exit
#__inspect__
[ GitHub ]# File 'lib/irb/context.rb', line 467
alias __inspect__ inspect
#__to_s__
[ GitHub ]# File 'lib/irb/context.rb', line 487
alias __to_s__ to_s
#_set_last_value(value)
Alias for #set_last_value.
# File 'lib/irb/ext/history.rb', line 20
alias _set_last_value set_last_value
#change_workspace(*_main)
Changes the current workspace to given object or binding.
If the optional argument is omitted, the workspace will be #home_workspace which is inherited from TOPLEVEL_BINDING or the main object, IRB.conf[:MAIN_CONTEXT] when irb was initialized.
See WorkSpace.new for more information.
# File 'lib/irb/ext/change-ws.rb', line 32
def change_workspace(*_main) if _main.empty? @workspace = home_workspace return main end @workspace = WorkSpace.new(_main[0]) if !(class<<main;ancestors;end).include?(ExtendCommandBundle) main.extend ExtendCommandBundle end end
#echo (rw) Also known as: #echo?
Whether to echo the return value to output or not.
Uses IRB.conf[:ECHO] if available, or defaults to true.
puts "hello"
# hello
#=> nil
IRB.CurrentContext.echo = false
puts "omg"
# omg
# File 'lib/irb/context.rb', line 251
attr_accessor :echo
#echo_on_assignment (rw) Also known as: #echo_on_assignment?
Whether to echo for assignment expressions
If set to false, the value of assignment will not be shown.
If set to true, the value of assignment will be shown.
If set to :truncate, the value of assignment will be shown and truncated.
It defaults to :truncate.
a = "omg"
#=> omg
a = "omg" * 10
#=> omgomgomgomgomgomgomg...
IRB.CurrentContext.echo_on_assignment = false
a = "omg"
IRB.CurrentContext.echo_on_assignment = true
a = "omg"
#=> omgomgomgomgomgomgomgomgomgomg
# File 'lib/irb/context.rb', line 271
attr_accessor :echo_on_assignment
#evaluate(line, line_no, exception: nil)
# File 'lib/irb/context.rb', line 443
def evaluate(line, line_no, exception: nil) # :nodoc: @line_no = line_no if exception line_no -= 1 line = "begin ::Kernel.raise _; rescue _.class\n#{line}\n""end" @workspace.local_variable_set(:_, exception) end set_last_value(@workspace.evaluate(self, line, irb_path, line_no)) end
#exit(ret = 0)
Exits the current session, see IRB.irb_exit
#home_workspace
Inherited from TOPLEVEL_BINDING.
# File 'lib/irb/ext/change-ws.rb', line 17
def home_workspace if defined? @home_workspace @home_workspace else @home_workspace = @workspace end end
#ignore_eof (rw) Also known as: #ignore_eof?
Whether ^D (control-d) will be ignored or not.
If set to false, ^D will quit irb.
# File 'lib/irb/context.rb', line 240
attr_accessor :ignore_eof
#ignore_sigint (rw) Also known as: #ignore_sigint?
Whether ^C (control-c) will be ignored or not.
If set to false, ^C will quit irb.
If set to true,
-
during input: cancel input then return to top level.
-
during execute: abandon current execution.
# File 'lib/irb/context.rb', line 236
attr_accessor :ignore_sigint
#init_save_history
# File 'lib/irb/ext/save-history.rb', line 17
def init_save_history# :nodoc: unless (class<<@io;self;end).include?(HistorySavingAbility) @io.extend(HistorySavingAbility) end end
#inspect (readonly) Also known as: #to_s
# File 'lib/irb/context.rb', line 468
def inspect # :nodoc: array = [] for ivar in instance_variables.sort{|e1, e2| e1 <=> e2} ivar = ivar.to_s name = ivar.sub(/^@(.*)$/, '\1') val = instance_eval(ivar) case ivar when *NOPRINTING_IVARS array.push format("conf.%s=%s", name, "...") when *NO_INSPECTING_IVARS array.push format("conf.%s=%s", name, val.to_s) when *IDNAME_IVARS array.push format("conf.%s=:%s", name, val.id2name) else array.push format("conf.%s=%s", name, val.inspect) end end array.join("\n") end
#inspect_last_value
# File 'lib/irb/context.rb', line 453
def inspect_last_value # :nodoc: @inspect_method.inspect_value(@last_value) end
#irb_level
Size of the current WorkSpace stack
# File 'lib/irb/ext/workspaces.rb', line 17
def irb_level workspace_stack.size end
#main
The top-level workspace, see WorkSpace#main
# File 'lib/irb/context.rb', line 144
def main @workspace.main end
#newline_before_multiline_output (rw) Also known as: #newline_before_multiline_output?
Whether a newline is put before multiline output.
Uses IRB.conf[:NEWLINE_BEFORE_MULTILINE_OUTPUT] if available, or defaults to true.
"abc\ndef"
#=>
abc
def
IRB.CurrentContext.newline_before_multiline_output = false
"abc\ndef"
#=> abc
def
# File 'lib/irb/context.rb', line 285
attr_accessor :newline_before_multiline_output
#pop_workspace
Removes the last element from the current #workspaces stack and returns it, or nil if the current workspace stack is empty.
Also, see #push_workspace.
# File 'lib/irb/ext/workspaces.rb', line 58
def pop_workspace if workspaces.empty? print "workspace stack empty\n" return end @workspace = workspaces.pop end
#push_workspace(*_main)
Creates a new workspace with the given object or binding, and appends it onto the current #workspaces stack.
See #change_workspace and WorkSpace.new for more information.
# File 'lib/irb/ext/workspaces.rb', line 35
def push_workspace(*_main) if _main.empty? if workspaces.empty? print "No other workspace\n" return nil end ws = workspaces.pop workspaces.push @workspace @workspace = ws return workspaces end workspaces.push @workspace @workspace = WorkSpace.new(@workspace.binding, _main[0]) if !(class<<main;ancestors;end).include?(ExtendCommandBundle) main.extend ExtendCommandBundle end end
#rc (rw) Also known as: #rc?
A copy of the default IRB.conf[:RC]
# File 'lib/irb/context.rb', line 166
attr_accessor :rc
#set_last_value(value) Also known as: #_set_last_value
Sets the return value from the last statement evaluated in this context to #last_value.
See additional method definition at file lib/irb/context.rb line 353.
# File 'lib/irb/ext/history.rb', line 22
def set_last_value(value) @last_value = value @workspace.local_variable_set :_, value end
#to_s
Alias for #inspect.
# File 'lib/irb/context.rb', line 488
alias to_s inspect
#use_colorize (readonly) Also known as: #use_colorize?
Whether colorization is enabled or not.
A copy of the default IRB.conf[:USE_COLORIZE]
# File 'lib/irb/context.rb', line 187
attr_reader :use_colorize
#use_multiline (readonly) Also known as: #use_multiline?, #use_reidline, #use_reidline?
Whether multiline editor mode is enabled or not.
A copy of the default IRB.conf[:USE_MULTILINE]
# File 'lib/irb/context.rb', line 179
attr_reader :use_multiline
#use_singleline (readonly) Also known as: #use_singleline?, #use_readline, #use_readline?
Whether singleline editor mode is enabled or not.
A copy of the default IRB.conf[:USE_SINGLELINE]
# File 'lib/irb/context.rb', line 183
attr_reader :use_singleline
#use_tracer (rw) Also known as: #use_tracer?
Whether Tracer is used when evaluating statements in this context.
See lib/tracer.rb for more information.
# File 'lib/irb/ext/tracer.rb', line 43
attr_reader :use_tracer
#workspaces
WorkSpaces in the current stack
# File 'lib/irb/ext/workspaces.rb', line 22
def workspaces if defined? @workspaces @workspaces else @workspaces = [] end end