Class: Bio::Shell::Irb

Inherits:
Object show all
Defined in:
lib/bio/shell/irb.rb

Instance Method Summary collapse

Constructor Details

#initializeIrb

Returns a new instance of Irb.



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/bio/shell/irb.rb', line 15

def initialize
  require 'irb'
  begin
    require 'irb/completion'
    Bio::Shell.cache[:readline] = true
  rescue LoadError
    Bio::Shell.cache[:readline] = false
  end
  IRB.setup(nil)
  setup_irb
  start_irb
end

Instance Method Details

#setup_irbObject



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/bio/shell/irb.rb', line 58

def setup_irb
  # set application name
  IRB.conf[:AP_NAME] = 'bioruby'

  # change prompt for bioruby
  $_ = Bio::Shell.colors
  IRB.conf[:PROMPT][:BIORUBY_COLOR] = {
    :PROMPT_I => "bio#{$_[:ruby]}ruby#{$_[:none]}> ",
    :PROMPT_S => "bio#{$_[:ruby]}ruby#{$_[:none]}%l ",
    :PROMPT_C => "bio#{$_[:ruby]}ruby#{$_[:none]}+ ",
    :RETURN   => "  ==> %s\n"
  }
  IRB.conf[:PROMPT][:BIORUBY] = {
    :PROMPT_I => "bioruby> ",
    :PROMPT_S => "bioruby%l ",
    :PROMPT_C => "bioruby+ ",
    :RETURN   => "  ==> %s\n"
  }
  if Bio::Shell.config[:color]
    IRB.conf[:PROMPT_MODE] = :BIORUBY_COLOR
  else
    IRB.conf[:PROMPT_MODE] = :BIORUBY
  end

  # echo mode (uncomment to off by default)
  #IRB.conf[:ECHO] = Bio::Shell.config[:echo] || false

  # irb/input-method.rb >= v1.5 (not in 1.8.2)
  #IRB.conf[:SAVE_HISTORY] = 100000

  # not nicely works
  #IRB.conf[:AUTO_INDENT] = true
end

#start_irbObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/bio/shell/irb.rb', line 28

def start_irb
  Bio::Shell.cache[:irb] = IRB::Irb.new

  # needed for method completion
  IRB.conf[:MAIN_CONTEXT] = Bio::Shell.cache[:irb].context

  # store binding for evaluation
  Bio::Shell.cache[:binding] = IRB.conf[:MAIN_CONTEXT].workspace.binding

  # overwrite gets to store history with time stamp
  io = IRB.conf[:MAIN_CONTEXT].io
  io.class.class_eval do
    alias_method :irb_original_gets, :gets
  end

  def io.gets
    line = irb_original_gets
    if line
      Bio::Shell.store_history(line)
    end
    return line
  end

  if File.exists?("./config/boot.rb")
    require "./config/boot"
    require "./config/environment"
    #require 'commands/console'
  end
end