minad/evaluator

View on GitHub
bin/evaluator

Summary

Maintainability
Test Coverage
#!/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