Class: IRuby::PlainBackend

Inherits:
Object
  • Object
show all
Includes:
History
Defined in:
lib/iruby/backend.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializePlainBackend

Returns a new instance of PlainBackend.



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/iruby/backend.rb', line 43

def initialize
  require 'irb'
  require 'irb/completion'
  IRB.setup(nil)
  @main = TOPLEVEL_BINDING.eval("self").dup
  init_main_object(@main)
  @workspace = IRB::WorkSpace.new(@main)
  @irb = IRB::Irb.new(@workspace)
  @eval_path = @irb.context.irb_path
  IRB.conf[:MAIN_CONTEXT] = @irb.context
  @completor = IRB::RegexpCompletor.new if defined? IRB::RegexpCompletor # IRB::VERSION >= 1.8.2
end

Instance Attribute Details

#eval_pathObject (readonly)

Returns the value of attribute eval_path.



40
41
42
# File 'lib/iruby/backend.rb', line 40

def eval_path
  @eval_path
end

Instance Method Details

#complete(code) ⇒ Object



71
72
73
74
75
76
77
78
# File 'lib/iruby/backend.rb', line 71

def complete(code)
  if @completor
    # preposing and postposing never used, so they are empty, pass only target as code
    @completor.completion_candidates('', code, '', bind: @workspace.binding)
  else
    IRB::InputCompletor::CompletionProc.call(code)
  end
end

#eval(code, store_history) ⇒ Object



60
61
62
63
# File 'lib/iruby/backend.rb', line 60

def eval(code, store_history)
  @irb.context.evaluate(parse_code(code), 0)
  @irb.context.last_value unless IRuby.silent_assignment && assignment_expression?(code)
end

#eval_bindingObject



56
57
58
# File 'lib/iruby/backend.rb', line 56

def eval_binding
  @workspace.binding
end

#parse_code(code) ⇒ Object



65
66
67
68
69
# File 'lib/iruby/backend.rb', line 65

def parse_code(code)
  return code if Gem::Version.new(IRB::VERSION) < Gem::Version.new('1.13.0')
  return @irb.parse_input(code) if @irb.respond_to?(:parse_input)
  return @irb.build_statement(code) if @irb.respond_to?(:build_statement)
end