Module: Multirb

Defined in:
lib/multirb.rb,
lib/multirb/version.rb

Constant Summary collapse

ALL_VERSIONS =
%w{1.8.7 1.9.2 1.9.3 2.0.0 jruby}
DEFAULT_VERSIONS =
%w{1.8.7 1.9.3 2.0.0}
RBENV_INSTALLED_VERSIONS =
`rbenv versions`.split("\n").map { |version| version.delete('*').strip.split.first }
VERSION =
"0.0.5"

Instance Method Summary collapse

Instance Method Details

#create_and_save_code(lines) ⇒ Object



58
59
60
61
62
63
# File 'lib/multirb.rb', line 58

def create_and_save_code(lines)
  f = Tempfile.new('multirb')
  f.puts create_code(lines)
  f.close
  f
end

#create_code(lines) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/multirb.rb', line 39

def create_code(lines)
  %{# encoding: utf-8
    ARRAY = ['a', 'b', 'c']
    HASH = { :name => "Jenny", :age => 40, :gender => :female, :hobbies => %w{chess cycling baking} }
    ARRAY2 = [1,2,3]
    STRING = "Hello"
    STRING2 = "çé"
    STRING3 = "ウabcé"
    o = begin
      "\e[32m" + eval(<<-'CODEHERE'
        #{lines.join("\n")}
      CODEHERE
      ).inspect + "\e[0m"
    rescue Exception => e
      "\e[31m!! \#{e.class}: \#{e.message}\e[0m"
    end
    print o}
end

#determine_versions(lines, defaults = DEFAULT_VERSIONS) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/multirb.rb', line 27

def determine_versions(lines, defaults = DEFAULT_VERSIONS)
  defaults = DEFAULT_VERSIONS if defaults.empty?
  case lines.last
  when /\#\s?all$/
    ALL_VERSIONS
  when /\#\s?([^"']+)$/
    [*$1.strip.split(',').map(&:strip)]
  else
    defaults
  end
end

#read_linesObject



13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/multirb.rb', line 13

def read_lines
  lines = []
  begin
    print "\e[0m"
    line = Readline::readline("> ")
    return nil if line.nil?
    Readline::HISTORY << line
    line.chomp!
    lines << line
    exit if line =~ /^exit$/i
  end while line =~ /\s+$/
  lines
end

#run_code(*args) ⇒ Object



65
66
67
68
69
70
71
72
73
74
# File 'lib/multirb.rb', line 65

def run_code(*args)
  case installed_ruby_version_manager
  when :rvm
    run_rvm(*args)
  when :rbenv
    run_rbenv(*args)
  when :none
    raise "You don't have either RVM or RBENV installed"
  end
end