summaryrefslogtreecommitdiffstats
path: root/sample/eval.rb
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-01-16 12:13:05 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-01-16 12:13:05 +0000
commit99d0354e89aefdb6373dbeb22506216b8790a0bd (patch)
treeb3c086e437cab449f90ba637710daed0ddfec4c4 /sample/eval.rb
parent502e7547b5c274c51365d11fdfe0e69ee9aa5a52 (diff)
downloadruby-99d0354e89aefdb6373dbeb22506216b8790a0bd.tar.gz
ruby-99d0354e89aefdb6373dbeb22506216b8790a0bd.tar.xz
ruby-99d0354e89aefdb6373dbeb22506216b8790a0bd.zip
Initial revision
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'sample/eval.rb')
-rw-r--r--sample/eval.rb42
1 files changed, 42 insertions, 0 deletions
diff --git a/sample/eval.rb b/sample/eval.rb
new file mode 100644
index 000000000..216bf8ca3
--- /dev/null
+++ b/sample/eval.rb
@@ -0,0 +1,42 @@
+line = ''
+indent=0
+$stdout.sync = TRUE
+print "ruby> "
+while TRUE
+ l = gets
+ unless l
+ break if line == ''
+ else
+ line = line + l
+ if l =~ /,\s*$/
+ print "ruby| "
+ next
+ end
+ if l =~ /^\s*(class|module|def|if|case|while|for|begin)\b[^_]/
+ 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"
+ rescue
+ $! = 'exception raised' unless $!
+ print "ERR: ", $!, "\n"
+ end
+ break if not l
+ line = ''
+ print "ruby> "
+end
+print "\n"