A class that wraps the current state of the irb session, including the configuration of IRB.conf.
- #
- C
- D
- E
- F
- H
- I
- M
- N
- P
- S
- U
- V
- W
NOPRINTING_IVARS | = | ["@last_value"] |
NO_INSPECTING_IVARS | = | ["@irb", "@io"] |
IDNAME_IVARS | = | ["@prompt_mode"] |
[RW] | ap_name | A copy of the default |
[RW] | auto_indent_mode | Can be either the default To enable auto-indentation in irb:
or
or
See Configuration at IRB for more information. |
[RW] | back_trace_limit | The limit of backtrace lines displayed as top The default value is 16. Can also be set using the See Command line options at IRB for more command line options. |
[R] | debug_level | The debug level of irb See debug_level= for more information. |
[RW] | echo | Whether to echo the return value to output or not. Uses IRB.conf if available, or
defaults to
|
[RW] | echo? | Whether to echo the return value to output or not. Uses IRB.conf if available, or
defaults to
|
[R] | eval_history | The command result history limit. |
[RW] | ignore_eof | Whether If set to |
[RW] | ignore_eof? | Whether If set to |
[RW] | ignore_sigint | Whether If set to If set to
|
[RW] | ignore_sigint? | Whether If set to If set to
|
[R] | inspect_mode | A copy of the default |
[RW] | io | The current input method Can be either StdioInputMethod, ReadlineInputMethod, FileInputMethod or other specified when the
context is created. See ::new for
more information on |
[RW] | irb | Current irb session |
[RW] | irb_name | Can be either name from |
[RW] | irb_path | Can be either the irb_name
surrounded by parenthesis, or the |
[R] | last_value | The return value of the last statement evaluated. |
[RW] | load_modules | A copy of the default |
[R] | math? | Returns whether bc mode is enabled. See math_mode= |
[R] | math_mode | Returns whether bc mode is enabled. See math_mode= |
[RW] | prompt_c | IRB prompt for continuated statement (e.g. immediately after an
See IRB for more information. |
[RW] | prompt_i | Standard IRB prompt See IRB for more information. |
[R] | prompt_mode | A copy of the default |
[RW] | prompt_n | See Customizing the IRB Prompt at IRB for more information. |
[RW] | prompt_s | IRB prompt for continuated strings See IRB for more information. |
[RW] | rc | A copy of the default |
[RW] | rc? | A copy of the default |
[RW] | return_format | The format of the return statement, set by prompt_mode= using the
|
[R] | thread | The current thread in this context |
[R] | use_readline | Whether A copy of the default See use_readline= for more information. |
[R] | use_readline? | Whether A copy of the default See use_readline= for more information. |
[R] | use_tracer | Whether Tracer is used when evaluating statements in this context. See |
[R] | use_tracer? | Whether Tracer is used when evaluating statements in this context. See |
[RW] | verbose | Whether verbose messages are displayed or not. A copy of the default |
[RW] | workspace | WorkSpace in the current context |
[R] | workspace_home | The toplevel workspace, see home_workspace |
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 25 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 # @irb_level = 0 # 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.math_mode = IRB.conf[:MATH_MODE] if IRB.conf[:MATH_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
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 IRB::WorkSpace.new for more information.
Whether or not debug mode is enabled, see debug_level=.
Sets the debug level of irb
Can also be set using the --irb_debug
command line option.
See Command line options at IRB for more command line options.
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
A copy of the default IRB.conf[:HISTORY_FILE]
Inherited from TOPLEVEL_BINDING
.
Whether inspect_mode is set or not, see inspect_mode= for more detail.
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 IRB::Inspector for more information.
Can also be set using the --inspect
and
--noinspect
command line options.
See Command line options at IRB for more command line options.
# File lib/irb/context.rb, line 309 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
The top-level workspace, see IRB::WorkSpace#main
Sets bc mode, which loads lib/mathn.rb
so fractions or matrix
are available.
Also available as the -m
command line option.
See Command line options at IRB and the unix manpage bc(1)
for
more information.
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.
Sets the mode
of the prompt in this context.
See Customizing the IRB Prompt at IRB for more information.
# File lib/irb/context.rb, line 270 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
Whether verbose? is
true
, and input_method
is either StdioInputMethod or ReadlineInputMethod, see io for more information.
Creates a new workspace with the given object or binding, and appends it onto the current workspaces stack.
See #change_workspace and IRB::WorkSpace.new for more information.
# File lib/irb/ext/workspaces.rb, line 34 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
A copy of the default IRB.conf[:SAVE_HISTORY]
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
Sets the return value from the last statement evaluated in this context to last_value.
Returns whether irb
's own file reader method is used by
load
/require
or not.
This mode is globally affected (irb-wide).
Sets IRB.conf
See use_loader for more information.
# File lib/irb/ext/use-loader.rb, line 49 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
Obsolete method.
Can be set using the --noreadline
and --readline
command line options.
See Command line options at IRB for more command line options.
Sets whether or not to use the Tracer library when evaluating statements in this context.
See lib/tracer.rb
for more information.
Returns whether messages are displayed or not.