class Fir::Evaluater
Attributes
error[R]
output[R]
Public Class Methods
new(output, error)
click to toggle source
# File lib/fir/evaluater.rb, line 13 def initialize(output, error) @output = output @error = error end
Public Instance Methods
perform(state)
click to toggle source
# File lib/fir/evaluater.rb, line 18 def perform(state) return unless state.executable? begin write_result(eval(state.lines.join("\n"), state.repl_binding, 'fir')) rescue Exception => e write_error(e) ensure output.syswrite(line_prompt) end end
Private Instance Methods
backtrace(exception)
click to toggle source
# File lib/fir/evaluater.rb, line 45 def backtrace(exception) exception .backtrace .take_while { |line| line !~ %r{/fir/\S+\.rb} } .join("\n ") end
exception_output(exception)
click to toggle source
# File lib/fir/evaluater.rb, line 41 def exception_output(exception) "#{exception.class}: #{exception.message}\n #{backtrace(exception)}" end
write_error(result)
click to toggle source
# File lib/fir/evaluater.rb, line 36 def write_error(result) error.syswrite(exception_output(result)) output.syswrite(next_line(1)) end
write_result(result)
click to toggle source
# File lib/fir/evaluater.rb, line 31 def write_result(result) output.syswrite(result.inspect) output.syswrite(next_line(1)) end