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 474["@prompt_mode"]
- 
    NOPRINTING_IVARS =
    Internal use only
    
 # File 'lib/irb/context.rb', line 472["@last_value"]
- 
    NO_INSPECTING_IVARS =
    Internal use only
    
 # File 'lib/irb/context.rb', line 473["@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. 
- 
    
      #omit_on_assignment?  
    
    rw
    Alias for #omit_on_assignment. 
- 
    
      #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. 
- 
    
      #omit_on_assignment  
      (also: #omit_on_assignment?)
    
    rw
    Whether to omit echo for assignment expressions. 
- 
    
      #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 = true
  end
  @omit_on_assignment = IRB.conf[:OMIT_ON_ASSIGNMENT]
  if @omit_on_assignment.nil?
    @omit_on_assignment = true
  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 169
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] = falseor
irb_context.auto_indent_mode = falseor
IRB.CurrentContext.auto_indent_mode = falseSee IRB@Configuration for more information.
# File 'lib/irb/context.rb', line 228
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 306
attr_accessor :back_trace_limit
#echo? (rw)
Alias for #echo.
# File 'lib/irb/context.rb', line 326
alias echo? echo
#echo_on_assignment? (rw)
Alias for #echo_on_assignment.
# File 'lib/irb/context.rb', line 327
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 392
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 325
alias ignore_eof? ignore_eof
#ignore_sigint? (rw)
Alias for #ignore_sigint.
# File 'lib/irb/context.rb', line 324
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 386
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 194
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 409
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 164
attr_accessor :io
#irb (rw)
Current irb session
# File 'lib/irb/context.rb', line 167
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 176
attr_accessor :irb_name
#irb_path (rw)
[ GitHub ]# File 'lib/irb/context.rb', line 179
attr_accessor :irb_path
#last_value (readonly)
The return value of the last statement evaluated.
# File 'lib/irb/context.rb', line 358
attr_reader :last_value
#load_modules (rw)
A copy of the default IRB.conf[:LOAD_MODULES]
# File 'lib/irb/context.rb', line 173
attr_accessor :load_modules
#newline_before_multiline_output? (rw)
Alias for #newline_before_multiline_output.
# File 'lib/irb/context.rb', line 329
alias newline_before_multiline_output? newline_before_multiline_output
#omit_on_assignment? (rw)
Alias for #omit_on_assignment.
# File 'lib/irb/context.rb', line 328
alias omit_on_assignment? omit_on_assignment
#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 209
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 201
attr_accessor :prompt_i
#prompt_mode (rw)
A copy of the default IRB.conf[:PROMPT_MODE]
# File 'lib/irb/context.rb', line 197
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 370
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 211
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 205
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 351
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 323
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 231
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 158
attr_reader :thread
#use_colorize? (readonly)
Alias for #use_colorize.
# File 'lib/irb/context.rb', line 321
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 309
alias use_multiline? use_multiline
#use_readline (readonly)
Alias for #use_singleline.
# File 'lib/irb/context.rb', line 317
alias use_readline use_singleline
#use_readline? (readonly)
Alias for #use_singleline.
# File 'lib/irb/context.rb', line 319
alias use_readline? use_singleline
#use_reidline (readonly)
Alias for #use_multiline.
# File 'lib/irb/context.rb', line 313
alias use_reidline use_multiline
#use_reidline? (readonly)
Alias for #use_multiline.
# File 'lib/irb/context.rb', line 315
alias use_reidline? use_multiline
#use_singleline? (readonly)
Alias for #use_singleline.
# File 'lib/irb/context.rb', line 311
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 297
attr_accessor :verbose
    #verbose?  ⇒ Boolean  (rw)
  
Returns whether messages are displayed or not.
# File 'lib/irb/context.rb', line 332
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 156
attr_accessor :workspace
#workspace_home (readonly)
The toplevel workspace, see #home_workspace
# File 'lib/irb/context.rb', line 154
attr_reader :workspace_home
Instance Method Details
#__exit__
[ GitHub ]# File 'lib/irb/context.rb', line 466
alias __exit__ exit
#__inspect__
[ GitHub ]# File 'lib/irb/context.rb', line 476
alias __inspect__ inspect
#__to_s__
[ GitHub ]# File 'lib/irb/context.rb', line 496
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 256
attr_accessor :echo
#echo_on_assignment (rw) Also known as: #echo_on_assignment?
Whether to echo for assignment expressions
Uses IRB.conf[:ECHO_ON_ASSIGNMENT] if available, or defaults to true.
a = "omg"
#=> omg
IRB.CurrentContext.echo_on_assignment = false
a = "omg"# File 'lib/irb/context.rb', line 265
attr_accessor :echo_on_assignment
#evaluate(line, line_no, exception: nil)
# File 'lib/irb/context.rb', line 452
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 245
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 241
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 477
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 462
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 149
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 293
attr_accessor :newline_before_multiline_output
#omit_on_assignment (rw) Also known as: #omit_on_assignment?
Whether to omit echo for assignment expressions
Uses IRB.conf[:OMIT_ON_ASSIGNMENT] if available, or defaults to true.
a = [1] * 10
#=> [1, 1, 1, 1, 1, 1, 1, 1, ...
[1] * 10
#=> [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
IRB.CurrentContext.omit_on_assignment = false
a = [1] * 10
#=> [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[1] * 10
#=> [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]# File 'lib/irb/context.rb', line 279
attr_accessor :omit_on_assignment
#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 171
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 362.
# 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 497
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 192
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 184
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 188
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