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 400["@prompt_mode"]
-
NOPRINTING_IVARS =
Internal use only
# File 'lib/irb/context.rb', line 398["@last_value"]
-
NO_INSPECTING_IVARS =
Internal use only
# File 'lib/irb/context.rb', line 399["@irb", "@io"]
Class Method Summary
-
.new(irb, workspace = nil, input_method = nil, output_method = nil) ⇒ Context
constructor
Creates a new
::IRB
context.
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
n
and tailn
. -
#debug? ⇒ Boolean
readonly
Whether or not debug mode is enabled, see #debug_level=.
-
#debug_level
rw
The debug level of irb.
-
#debug_level=(value)
rw
Sets the debug level of irb.
-
#echo?
rw
Alias for #echo.
-
#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]
. -
#prompt_c
rw
::IRB
prompt 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
mode
of the prompt in this context. -
#prompt_n
rw
See IRB@Customizing+the+IRB+Prompt for more information.
-
#prompt_s
rw
::IRB
prompt for continuated strings. -
#prompting? ⇒ Boolean
readonly
Whether #verbose? is
true
, andinput_method
is eitherStdioInputMethod
or 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
:RETURN
of themode
passed 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 givenval
and calls #init_save_history with this context. -
#thread
readonly
The current thread in this context.
-
#use_loader
(also: #use_loader?)
rw
Returns whether #irb‘s own file reader method is used by
load
/require
or not. -
#use_loader=(opt)
rw
Sets IRB.conf.
-
#use_loader?
rw
Alias for #use_loader.
-
#use_readline=(opt)
rw
Obsolete method.
-
#use_readline?
rw
Alias for #use_readline.
-
#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
WorkSpace
in 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.
-
#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
WorkSpace
stack. -
#main
The top-level workspace, see WorkSpace#main
-
#pop_workspace
Removes the last element from the current #workspaces stack and returns it, or
nil
if 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_readline
(also: #use_readline?)
rw
Whether
Readline
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, output_method = nil) ⇒ Context
Creates a new ::IRB
context.
The optional input_method
argument:
nil
-
uses stdin 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, output_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] @use_readline = IRB.conf[:USE_READLINE] @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 case use_readline? when nil if (defined?(ReadlineInputMethod) && STDIN.tty? && IRB.conf[:PROMPT_MODE] != :INF_RUBY) @io = ReadlineInputMethod.new else @io = StdioInputMethod.new end when false @io = StdioInputMethod.new when true if defined?(ReadlineInputMethod) @io = ReadlineInputMethod.new else @io = StdioInputMethod.new end end 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] if output_method @output_method = output_method else @output_method = StdioOutputMethod.new end @echo = IRB.conf[:ECHO] if @echo.nil? @echo = true end self.debug_level = IRB.conf[:DEBUG_LEVEL] end
Instance Attribute Details
#ap_name (rw)
A copy of the default IRB.conf[:AP_NAME]
# File 'lib/irb/context.rb', line 128
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 enable auto-indentation in irb:
IRB.conf[:AUTO_INDENT] = true
or
irb_context.auto_indent_mode = true
or
IRB.CurrentContext.auto_indent_mode = true
See IRB@Configuration for more information.
# File 'lib/irb/context.rb', line 181
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 226
attr_accessor :back_trace_limit
#debug? ⇒ Boolean
(readonly)
Whether or not debug mode is enabled, see #debug_level=.
# File 'lib/irb/context.rb', line 375
def debug? @debug_level > 0 end
#debug_level (rw)
The debug level of irb
See #debug_level= for more information.
# File 'lib/irb/context.rb', line 217
attr_reader :debug_level
#debug_level=(value) (rw)
Sets the debug level of irb
Can also be set using the --irb_debug
command line option.
See IRB@Command+line+options for more command line options.
# File 'lib/irb/context.rb', line 369
def debug_level=(value) @debug_level = value RubyLex.debug_level = value end
#echo? (rw)
Alias for #echo.
# File 'lib/irb/context.rb', line 234
alias echo? echo
#eval_history (rw)
The command result history limit.
# File 'lib/irb/ext/history.rb', line 34
attr_reader :eval_history
#eval_history=(no) (rw)
Sets command result history limit.
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 44
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 293
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 233
alias ignore_eof? ignore_eof
#ignore_sigint? (rw)
Alias for #ignore_sigint.
# File 'lib/irb/context.rb', line 232
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 287
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 147
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 310
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, FileInputMethod
or other specified when the context is created. See .new for more information on input_method
.
# File 'lib/irb/context.rb', line 123
attr_accessor :io
#irb (rw)
Current irb session
# File 'lib/irb/context.rb', line 126
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 135
attr_accessor :irb_name
#irb_path (rw)
[ GitHub ]# File 'lib/irb/context.rb', line 138
attr_accessor :irb_path
#last_value (readonly)
The return value of the last statement evaluated.
# File 'lib/irb/context.rb', line 259
attr_reader :last_value
#load_modules (rw)
A copy of the default IRB.conf[:LOAD_MODULES]
# File 'lib/irb/context.rb', line 132
attr_accessor :load_modules
#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 162
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 154
attr_accessor :prompt_i
#prompt_mode (rw)
A copy of the default IRB.conf[:PROMPT_MODE]
# File 'lib/irb/context.rb', line 150
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 271
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 164
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 158
attr_accessor :prompt_s
#prompting? ⇒ Boolean
(readonly)
Whether #verbose? is true
, and input_method
is either StdioInputMethod
or ReadlineInputMethod, see #io for more information.
# File 'lib/irb/context.rb', line 253
def prompting? verbose? || (STDIN.tty? && @io.kind_of?(StdioInputMethod) || (defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod))) end
#rc? (rw)
Alias for #rc.
# File 'lib/irb/context.rb', line 231
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 184
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 40
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 117
attr_reader :thread
#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
See #use_loader for more information.
# File 'lib/irb/ext/use-loader.rb', line 50
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 45
alias use_loader? use_loader
#use_readline=(opt) (rw)
Obsolete method.
Can be set using the --noreadline
and --readline
command line options.
See IRB@Command+line+options for more command line options.
# File 'lib/irb/context.rb', line 359
def use_readline=(opt) print "This method is obsolete." print "Do nothing." end
#use_readline? (rw)
Alias for #use_readline.
# File 'lib/irb/context.rb', line 229
alias use_readline? use_readline
#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 37
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 31
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 213
attr_accessor :verbose
#verbose? ⇒ Boolean
(rw)
Returns whether messages are displayed or not.
# File 'lib/irb/context.rb', line 237
def verbose? if @verbose.nil? if 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 115
attr_accessor :workspace
#workspace_home (readonly)
The toplevel workspace, see #home_workspace
# File 'lib/irb/context.rb', line 113
attr_reader :workspace_home
Instance Method Details
#__exit__
[ GitHub ]# File 'lib/irb/context.rb', line 392
alias __exit__ exit
#__inspect__
[ GitHub ]# File 'lib/irb/context.rb', line 402
alias __inspect__ inspect
#__to_s__
[ GitHub ]# File 'lib/irb/context.rb', line 422
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 if available, or defaults to true
.
puts "hello"
# hello
#=> nil
IRB.CurrentContext.echo = false
puts "omg"
# omg
# File 'lib/irb/context.rb', line 209
attr_accessor :echo
#evaluate(line, line_no, exception: nil)
# File 'lib/irb/context.rb', line 379
def evaluate(line, line_no, exception: nil) # :nodoc: @line_no = line_no if exception line = "begin ::Kernel.raise _; rescue _.class; #{line}; 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 198
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 194
attr_accessor :ignore_sigint
#init_save_history
# File 'lib/irb/ext/save-history.rb', line 19
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 403
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 388
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 108
def main @workspace.main end
#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 130
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 263.
# 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 423
alias to_s inspect
#use_readline (rw) Also known as: #use_readline?
Whether Readline
is enabled or not.
A copy of the default IRB.conf[:USE_READLINE]
See #use_readline= for more information.
# File 'lib/irb/context.rb', line 145
attr_reader :use_readline
#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 30
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