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 519["@prompt_mode"] -
NOPRINTING_IVARS =
Internal use only
# File 'lib/irb/context.rb', line 517["@last_value"] -
NO_INSPECTING_IVARS =
Internal use only
# File 'lib/irb/context.rb', line 518["@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. -
#command_aliases
rw
User-defined
::IRBcommand aliases. -
#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.
-
#extra_doc_dirs
rw
Specify the installation locations of the ri file to be displayed in the document dialog.
- #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. -
#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 eitherStdioInputMethodorRelineInputMethodor 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_autocomplete?
readonly
Alias for #use_autocomplete.
-
#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_reline
readonly
Alias for #use_multiline.
-
#use_reline?
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.
-
#symbol_alias?(command) ⇒ Boolean
Return true if it’s aliased from the argument and it’s not an identifier.
-
#to_s
Alias for #inspect.
-
#transform_args?(command) ⇒ Boolean
Return true if the command supports transforming args.
-
#use_autocomplete
(also: #use_autocomplete?)
readonly
Whether colorization is enabled or not.
-
#use_multiline
(also: #use_multiline?, #use_reline, #use_reline?)
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
- #local_variables 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 Reline 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 # 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_RELINE) # backward compatibility warn <<~MSG.strip USE_RELINE is deprecated, please use USE_MULTILINE instead. MSG @use_multiline = IRB.conf[:USE_RELINE] elsif IRB.conf.has_key?(:USE_REIDLINE) warn <<~MSG.strip USE_REIDLINE is deprecated, please use USE_MULTILINE instead. MSG @use_multiline = IRB.conf[:USE_REIDLINE] else @use_multiline = nil end @use_autocomplete = IRB.conf[:USE_AUTOCOMPLETE] @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 = RelineInputMethod.new else @io = nil end when false @io = nil when true @io = RelineInputMethod.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 '-' @io = FileInputMethod.new($stdin) @irb_name = '-' @irb_path = '-' 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] @extra_doc_dirs = IRB.conf[:EXTRA_DOC_DIRS] @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 @command_aliases = IRB.conf[:COMMAND_ALIASES] end
Instance Attribute Details
#ap_name (rw)
A copy of the default IRB.conf[:AP_NAME]
# File 'lib/irb/context.rb', line 180
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 239
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 332
attr_accessor :back_trace_limit
#command_aliases (rw)
User-defined ::IRB command aliases
# File 'lib/irb/context.rb', line 335
attr_accessor :command_aliases
#echo? (rw)
Alias for #echo.
# File 'lib/irb/context.rb', line 355
alias echo? echo
#echo_on_assignment? (rw)
Alias for #echo_on_assignment.
# File 'lib/irb/context.rb', line 356
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
#extra_doc_dirs (rw)
Specify the installation locations of the ri file to be displayed in the document dialog.
# File 'lib/irb/context.rb', line 259
attr_accessor :extra_doc_dirs
#file_input? ⇒ Boolean (readonly)
[ GitHub ]
# File 'lib/irb/context.rb', line 421
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 354
alias ignore_eof? ignore_eof
#ignore_sigint? (rw)
Alias for #ignore_sigint.
# File 'lib/irb/context.rb', line 353
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 415
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 205
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 438
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, RelineInputMethod, FileInputMethod or other specified when the context is created. See .new for more # information on input_method.
# File 'lib/irb/context.rb', line 175
attr_accessor :io
#irb (rw)
Current irb session.
# File 'lib/irb/context.rb', line 178
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 187
attr_accessor :irb_name
#irb_path (rw)
[ GitHub ]# File 'lib/irb/context.rb', line 190
attr_accessor :irb_path
#last_value (readonly)
The return value of the last statement evaluated.
# File 'lib/irb/context.rb', line 386
attr_reader :last_value
#load_modules (rw)
A copy of the default IRB.conf[:LOAD_MODULES]
# File 'lib/irb/context.rb', line 184
attr_accessor :load_modules
#newline_before_multiline_output? (rw)
Alias for #newline_before_multiline_output.
# File 'lib/irb/context.rb', line 357
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 220
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 212
attr_accessor :prompt_i
#prompt_mode (rw)
A copy of the default IRB.conf[:PROMPT_MODE]
# File 'lib/irb/context.rb', line 208
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 398
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] @return_format = "%s\n" if @return_format == nil 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 222
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 216
attr_accessor :prompt_s
#prompting? ⇒ Boolean (readonly)
Whether #verbose? is true, and input_method is either StdioInputMethod or RelineInputMethod or ReadlineInputMethod, see #io for more information.
# File 'lib/irb/context.rb', line 379
def prompting? verbose? || (STDIN.tty? && @io.kind_of?(StdioInputMethod) || @io.kind_of?(RelineInputMethod) || (defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod))) end
#rc? (rw)
Alias for #rc.
# File 'lib/irb/context.rb', line 352
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 242
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 169
attr_reader :thread
#use_autocomplete? (readonly)
Alias for #use_autocomplete.
# File 'lib/irb/context.rb', line 350
alias use_autocomplete? use_autocomplete
#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 338
alias use_multiline? use_multiline
#use_readline (readonly)
Alias for #use_singleline.
# File 'lib/irb/context.rb', line 346
alias use_readline use_singleline
#use_readline? (readonly)
Alias for #use_singleline.
# File 'lib/irb/context.rb', line 348
alias use_readline? use_singleline
#use_reline (readonly)
Alias for #use_multiline.
# File 'lib/irb/context.rb', line 342
alias use_reline use_multiline
#use_reline? (readonly)
Alias for #use_multiline.
# File 'lib/irb/context.rb', line 344
alias use_reline? use_multiline
#use_singleline? (readonly)
Alias for #use_singleline.
# File 'lib/irb/context.rb', line 340
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 323
attr_accessor :verbose
#verbose? ⇒ Boolean (rw)
Returns whether messages are displayed or not.
# File 'lib/irb/context.rb', line 360
def verbose? if @verbose.nil? if @io.kind_of?(RelineInputMethod) 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 167
attr_accessor :workspace
#workspace_home (readonly)
The toplevel workspace, see #home_workspace
# File 'lib/irb/context.rb', line 165
attr_reader :workspace_home
Instance Method Details
#__exit__
[ GitHub ]# File 'lib/irb/context.rb', line 509
alias __exit__ exit
#__inspect__
[ GitHub ]# File 'lib/irb/context.rb', line 521
alias __inspect__ inspect
#__to_s__
[ GitHub ]# File 'lib/irb/context.rb', line 541
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 270
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" * 10
#=> omgomgomgomgomgomgomgomgomgomg
To set the behaviour of showing on assignment in irb:
IRB.conf[:ECHO_ON_ASSIGNMENT] = :truncate or true or false
or
irb_context.echo_on_assignment = :truncate or true or false
or
IRB.CurrentContext.echo_on_assignment = :truncate or true or false
# File 'lib/irb/context.rb', line 305
attr_accessor :echo_on_assignment
#evaluate(line, line_no, exception: nil)
# File 'lib/irb/context.rb', line 481
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 # Transform a non-identifier alias (@, $) or keywords (next, break) command, args = line.split(/\s/, 2) if original = command_aliases[command.to_sym] line = line.gsub(/\A#{Regexp.escape(command)}/, original.to_s) command = original end # Hook command-specific transformation command_class = ExtendCommandBundle.load_command(command) if command_class&.respond_to?(:transform_args) line = "#{command} #{command_class.transform_args(args)}" 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 256
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 252
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 522
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 505
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
#local_variables
# File 'lib/irb/context.rb', line 544
def local_variables # :nodoc: workspace.binding.local_variables end
#main
The top-level workspace, see WorkSpace#main
# File 'lib/irb/context.rb', line 160
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 319
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 182
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 390.
# File 'lib/irb/ext/history.rb', line 22
def set_last_value(value) @last_value = value @workspace.local_variable_set :_, value end
#symbol_alias?(command) ⇒ Boolean
Return true if it’s aliased from the argument and it’s not an identifier.
# File 'lib/irb/context.rb', line 549
def symbol_alias?(command) return nil if command.match?(/\A\w+\z/) command_aliases.key?(command.to_sym) end
#to_s
Alias for #inspect.
# File 'lib/irb/context.rb', line 542
alias to_s inspect
#transform_args?(command) ⇒ Boolean
Return true if the command supports transforming args
# File 'lib/irb/context.rb', line 555
def transform_args?(command) command = command_aliases.fetch(command.to_sym, command) ExtendCommandBundle.load_command(command)&.respond_to?(:transform_args) end
#use_autocomplete (readonly) Also known as: #use_autocomplete?
Whether colorization is enabled or not.
A copy of the default IRB.conf[:USE_AUTOCOMPLETE]
# File 'lib/irb/context.rb', line 203
attr_reader :use_autocomplete
#use_multiline (readonly) Also known as: #use_multiline?, #use_reline, #use_reline?
Whether multiline editor mode is enabled or not.
A copy of the default IRB.conf[:USE_MULTILINE]
# File 'lib/irb/context.rb', line 195
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 199
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