bin/evaluator
#!/usr/bin/env ruby
$:.unshift File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
require 'evaluator'
require 'readline'
def process(line, vars, quiet = false)
exit if line == 'exit' || line == 'quit'
if line =~ /^(\w+)\s*:=?\s*(.*)$/
vars[$1] = Evaluator($2, vars)
else
Evaluator(line, vars)
end
rescue Exception => ex
quiet ? nil : ex.message
end
vars = {}
File.read(File.expand_path(File.join(File.dirname(__FILE__), '..', 'evaluator.constants'))).split("\n").each { |line| process(line, vars, true) }
loop do
line = Readline::readline('> ')
if !line
puts
break
end
Readline::HISTORY.push(line)
puts process(line, vars)
end