1998-01-16 15:13:05 +03:00
|
|
|
line = ''
|
2002-12-19 23:42:50 +03:00
|
|
|
indent = 0
|
2007-04-16 17:53:09 +04:00
|
|
|
$stdout.sync = true
|
1998-01-16 15:13:05 +03:00
|
|
|
print "ruby> "
|
2002-12-19 23:42:50 +03:00
|
|
|
loop do
|
1998-01-16 15:13:05 +03:00
|
|
|
l = gets
|
2002-12-19 23:42:50 +03:00
|
|
|
if l.nil?
|
|
|
|
break if line.empty?
|
1998-01-16 15:13:05 +03:00
|
|
|
else
|
2002-12-19 23:42:50 +03:00
|
|
|
line += l
|
1998-01-16 15:13:05 +03:00
|
|
|
if l =~ /,\s*$/
|
|
|
|
print "ruby| "
|
|
|
|
next
|
|
|
|
end
|
2000-03-23 11:37:35 +03:00
|
|
|
if l =~ /^\s*(class|module|def|if|unless|case|while|until|for|begin)\b[^_]/
|
1998-01-16 15:13:05 +03:00
|
|
|
indent += 1
|
|
|
|
end
|
|
|
|
if l =~ /^\s*end\b[^_]/
|
|
|
|
indent -= 1
|
|
|
|
end
|
|
|
|
if l =~ /\{\s*(\|.*\|)?\s*$/
|
|
|
|
indent += 1
|
|
|
|
end
|
|
|
|
if l =~ /^\s*\}/
|
|
|
|
indent -= 1
|
|
|
|
end
|
|
|
|
if indent > 0
|
|
|
|
print "ruby| "
|
|
|
|
next
|
|
|
|
end
|
|
|
|
end
|
|
|
|
begin
|
|
|
|
print eval(line).inspect, "\n"
|
2000-02-08 11:54:01 +03:00
|
|
|
rescue ScriptError, StandardError
|
2002-12-19 23:42:50 +03:00
|
|
|
printf "ERR: %s\n", $! || 'exception raised'
|
1998-01-16 15:13:05 +03:00
|
|
|
end
|
2002-12-19 23:42:50 +03:00
|
|
|
break if l.nil?
|
1998-01-16 15:13:05 +03:00
|
|
|
line = ''
|
|
|
|
print "ruby> "
|
|
|
|
end
|
|
|
|
print "\n"
|