人気ブログランキング | 話題のタグを見る

mrb

nano を使った Ruby のインタラクティブな環境を作ってみたくなったので mrb (micro interactive ruby) を作ってみた。Readlineライブラリは標準ではインストールされていないので、Synaptic で libreadline-ruby1.9 をインストールする必要がある。下の mrb を ~/bin ディレクトリに入れて、chmod +x mrb で実行可能にしておく。

起動は、端末のコマンドプロンプトから mrb と入力する。一行のプログラムなら入力して Enter キーを押すと実行されて戻り値が表示される。複数行のプログラムの場合は :e コマンドで nano を起動する。プログラムを編集した後、:r コマンドでプログラムを実行する。実行されたプログラムが関数の定義であれば、定義された関数を mrb のコマンドラインで実行できる。

実行例
$ mrb
mrb> 1 + 2
3
mrb> :e

def fact(n)
  in n == 0
    1
  else
    n * fact(n-1)
  end
end

mrb> :r
nil
mrb> fact(5)
120

プログラム名:mrb
下のプログラムで、xxxxxx は実際のユーザのアカウントに、eval のeは半角に置き換えてください。

#!/usr/bin/ruby
require "readline"
include Readline

def edit
  system "nano /home/xxxxxx/bin/sandbox"
end

def run
  IO.read("/home/xxxxxx/bin/sandbox")
end

loop do
  begin
    line = readline("mrb> ", true)
    case line
    when ":e"
      edit
      line = ""
    when ":r"
      line = run
    end
    p eval(line, TOPLEVEL_BINDING)
  rescue SyntaxError, LoadError, StandardError
    STDERR.puts "Warning: #$!"
  end
end
by tnomura9 | 2009-12-04 22:30 | NetWalker | Comments(0)
<< NetWalker でアイディア整理 nano >>