#!/usr/bin/env ruby
$: << File.dirname(__FILE__) + '/../lib'
require 'catcon'
debug = !!ARGV.delete('--debug')
opts = {
:debug => debug
}
Instance = Catcon.new(opts)
def e(code)
Instance.eval code
rescue => err
puts "Error: #{err.message}"
end
if file = ARGV.first
e File.read(file)
else
require 'readline'
puts "Catcon REPL, CTRL+C or type 'quit' to quit"
loop do
line = Readline::readline('>> ')
opens = line.count('[')
closes = line.count(']')
until opens == closes
s = ''
(opens - closes).times { s << ' ' }
line << "\n" << Readline::readline(s + '>> ')
opens = line.count('[')
closes = line.count(']')
end
break if line == "quit"
Readline::HISTORY.push(line)
puts "=> #{e(line).inspect}"
end
end