[#4754] Now,I am starting ruby. — mamoru@... (Mamoru Matushita)

先日、初めて投稿したつもりだったのですが間違えて

14 messages 1997/10/02

[#4891] mixin - singleton method inheritance, const etc... — shugo@... (Shugo Maeda)

前田です。

13 messages 1997/10/10

[#5000] ruby 1.0-971015 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

14 messages 1997/10/15

[#5056] RubyでOODB — hisanori@...

松尾です。

20 messages 1997/10/20
[#5057] Re: RubyでOODB — matz@... (Yukihiro Matsumoto) 1997/10/20

まつもと ゆきひろです

[#5065] Re: RubyでOODB — hisanori@... 1997/10/20

松尾です。

[#5066] Re: RubyでOODB — matz@... (Yukihiro Matsumoto) 1997/10/20

まつもと ゆきひろです

[ruby-list:4759] Re: rbc.rb

From: shugo@... (MAEDA Shugo)
Date: 1997-10-02 18:25:05 UTC
List: ruby-list #4759
前田です。

In message "[ruby-list:4741] rbc.rb"
Keiju ISHITSUKA <keiju@bc.mbn.or.jp> wrote:

|2. いつかは, readline.rbを取り込みたいなと思っています. 手元に
|   readline.cがないので...

readlineを使えるようにしてみました。

例外を表示する部分は、

	$! = RuntimeError.new("exception raised") unless $!
	print $!.type ": ", $!, "\n"

のように例外クラスが表示された方がうれしいような気がします。
それと$INSPECTはデフォルトでTRUEの方が使いやすいかなと。

# やっぱりこういうシェルがあるとちょっと試したい時に便利ですね。

-- 
前田 修吾

--- rbc.rb.orig	Fri Oct  3 02:49:47 1997
+++ rbc.rb	Fri Oct  3 03:10:21 1997
@@ -18,6 +18,11 @@
 
 #$DEBUG = TRUE
 
+begin
+  require "readline"
+rescue
+end
+
 class BC__
   RCS_ID='-$Header: /home/keiju/var/src/var.lib/header/RCS/ruby-mode,v 1.1 1997/08/08 00:57:08 keiju Exp keiju $-'
   
@@ -38,10 +43,25 @@
     @indent = 0
     @lex_state = EXPR_BEG
     
-    printf PROMPTi, @indent
+    if $".include? "readline.so" and io == $stdin
+      @readline_proc = Proc.new {
+	if str = Readline.readline(@prompt, TRUE)
+	  str + "\n"
+	else
+	  str
+	end
+      }
+    else
+      @readline_proc = Proc.new {
+	print @prompt
+	io.gets
+      }      
+    end
+    
+    @prompt = format(PROMPTi, @indent)
     loop do
       @continue = FALSE
-      l = io.gets
+      l = @readline_proc.call
       print l if $ECHO
 
       unless l
@@ -52,13 +72,13 @@
 	lex(l) if l != "\n"
 	print @quoted.inspect, "\n" if $DEBUG
 	if @ltype
-	  printf PROMPTs, @indent, @ltype
+	  @prompt = format(PROMPTs, @indent, @ltype)
 	  next
 	elsif @continue
-	  printf PROMPTe, @indent
+	  @prompt = format(PROMPTe, @indent)
 	  next
 	elsif @indent > 0
-	  printf PROMPTi, @indent
+	  @prompt = format(PROMPTi, @indent)
 	  next
 	end
       end
@@ -76,7 +96,7 @@
       break if not l
       line = ''
       indent = 0
-      printf PROMPTi, indent
+      @prompt = format(PROMPTi, indent)
     end
     print "\n"
   end

In This Thread