1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Change encoding from EUC-JP to UTF-8. [Feature #5128]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33181 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
shyouhei 2011-09-04 12:22:46 +00:00
parent a17fd731c9
commit 60c8455253
13 changed files with 1545 additions and 1386 deletions

View file

@ -1,51 +1,51 @@
$BK\%W%m%0%i%`$O%U%j!<%=%U%H%&%'%"$G$9!%(B2-clause BSDL 本プログラムはフリーソフトウェアです.2-clause BSDL
$B$^$?$O0J2<$K<($9>r7o$GK\%W%m%0%i%`$r:FG[I[$G$-$^$9(B または以下に示す条件で本プログラムを再配布できます
2-clause BSDL$B$K$D$$$F$O(BBSDL$B%U%!%$%k$r;2>H$7$F2<$5$$!%(B 2-clause BSDLについてはBSDLファイルを参照して下さい
1. $BJ#@=$O@)8B$J$/<+M3$G$9!%(B 1. 複製は制限なく自由です.
2. $B0J2<$N>r7o$N$$$:$l$+$rK~$?$9;~$KK\%W%m%0%i%`$N%=!<%9$r(B 2. 以下の条件のいずれかを満たす時に本プログラムのソースを
$B<+M3$KJQ99$G$-$^$9!%(B 自由に変更できます.
(a) $B%M%C%H%K%e!<%:$K%]%9%H$7$?$j!$:n<T$KJQ99$rAwIU$9$k(B (a) ネットニューズにポストしたり,作者に変更を送付する
$B$J$I$NJ}K!$G!$JQ99$r8x3+$9$k!%(B などの方法で,変更を公開する.
(b) $BJQ99$7$?K\%W%m%0%i%`$r<+J,$N=jB0$9$kAH?%FbIt$@$1$G(B (b) 変更した本プログラムを自分の所属する組織内部だけで
$B;H$&!%(B 使う.
(c) $BJQ99E@$rL@<($7$?$&$(!$%=%U%H%&%'%"$NL>A0$rJQ99$9$k!%(B (c) 変更点を明示したうえ,ソフトウェアの名前を変更する.
$B$=$N%=%U%H%&%'%"$rG[I[$9$k;~$K$OJQ99A0$NK\%W%m%0%i(B そのソフトウェアを配布する時には変更前の本プログラ
$B%`$bF1;~$KG[I[$9$k!%$^$?$OJQ99A0$NK\%W%m%0%i%`$N%=!<(B ムも同時に配布する.または変更前の本プログラムのソー
$B%9$NF~<jK!$rL@<($9$k!%(B スの入手法を明示する.
(d) $B$=$NB>$NJQ99>r7o$r:n<T$H9g0U$9$k!%(B (d) その他の変更条件を作者と合意する.
3. $B0J2<$N>r7o$N$$$:$l$+$rK~$?$9;~$KK\%W%m%0%i%`$r%3%s%Q%$(B 3. 以下の条件のいずれかを満たす時に本プログラムをコンパイ
$B%k$7$?%*%V%8%'%/%H%3!<%I$d<B9T7A<0$G$bG[I[$G$-$^$9!%(B ルしたオブジェクトコードや実行形式でも配布できます.
(a) $B%P%$%J%j$r<u$1<h$C$??M$,%=!<%9$rF~<j$G$-$k$h$&$K!$(B (a) バイナリを受け取った人がソースを入手できるように,
$B%=!<%9$NF~<jK!$rL@<($9$k!%(B ソースの入手法を明示する.
(b) $B5!3#2DFI$J%=!<%9%3!<%I$rE:IU$9$k!%(B (b) 機械可読なソースコードを添付する.
(c) $BJQ99$r9T$C$?%P%$%J%j$OL>A0$rJQ99$7$?$&$(!$%*%j%8%J(B (c) 変更を行ったバイナリは名前を変更したうえ,オリジナ
$B%k$N%=!<%9%3!<%I$NF~<jK!$rL@<($9$k!%(B ルのソースコードの入手法を明示する.
(d) $B$=$NB>$NG[I[>r7o$r:n<T$H9g0U$9$k!%(B (d) その他の配布条件を作者と合意する.
4. $BB>$N%W%m%0%i%`$X$N0zMQ$O$$$+$J$kL\E*$G$"$l<+M3$G$9!%$?(B 4. 他のプログラムへの引用はいかなる目的であれ自由です.た
$B$@$7!$K\%W%m%0%i%`$K4^$^$l$kB>$N:n<T$K$h$k%3!<%I$O!$$=(B だし,本プログラムに含まれる他の作者によるコードは,そ
$B$l$>$l$N:n<T$N0U8~$K$h$k@)8B$,2C$($i$l$k>l9g$,$"$j$^$9!%(B れぞれの作者の意向による制限が加えられる場合があります.
$B$=$l$i%U%!%$%k$N0lMw$H$=$l$>$l$NG[I[>r7o$J$I$KIU$$$F$O(B それらファイルの一覧とそれぞれの配布条件などに付いては
LEGAL$B%U%!%$%k$r;2>H$7$F$/$@$5$$!%(B LEGALファイルを参照してください.
5. $BK\%W%m%0%i%`$X$NF~NO$H$J$k%9%/%j%W%H$*$h$S!$K\%W%m%0%i(B 5. 本プログラムへの入力となるスクリプトおよび,本プログラ
$B%`$+$i$N=PNO$N8"Mx$OK\%W%m%0%i%`$N:n<T$G$O$J$/!$$=$l$>(B ムからの出力の権利は本プログラムの作者ではなく,それぞ
$B$l$NF~=PNO$r@8@.$7$??M$KB0$7$^$9!%$^$?!$K\%W%m%0%i%`$K(B れの入出力を生成した人に属します.また,本プログラムに
$BAH$_9~$^$l$k$?$a$N3HD%%i%$%V%i%j$K$D$$$F$bF1MM$G$9!%(B 組み込まれるための拡張ライブラリについても同様です.
6. $BK\%W%m%0%i%`$OL5J]>Z$G$9!%:n<T$OK\%W%m%0%i%`$r%5%]!<%H(B 6. 本プログラムは無保証です.作者は本プログラムをサポート
$B$9$k0U;V$O$"$j$^$9$,!$%W%m%0%i%`<+?H$N%P%0$"$k$$$OK\%W(B する意志はありますが,プログラム自身のバグあるいは本プ
$B%m%0%i%`$N<B9T$J$I$+$iH/@8$9$k$$$+$J$kB;32$KBP$7$F$b@U(B ログラムの実行などから発生するいかなる損害に対しても責
$BG$$r;}$A$^$;$s!%(B 任を持ちません.

View file

@ -1,3 +1,7 @@
Sun Sep 4 21:19:19 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
* Change encoding from EUC-JP to UTF-8. [Feature #5128]
Sun Sep 4 00:47:39 2011 Kazuki Tsujimoto <kazuki@callcc.net> Sun Sep 4 00:47:39 2011 Kazuki Tsujimoto <kazuki@callcc.net>
* test/ruby/test_fiber.rb (TestFiber#test_no_valid_cfp): * test/ruby/test_fiber.rb (TestFiber#test_no_valid_cfp):

File diff suppressed because it is too large Load diff

200
README.ja
View file

@ -1,123 +1,137 @@
* Rubyとは * Rubyとは
Rubyはシンプルかつ強力なオブジェクト指向スクリプト言語です Rubyはシンプルかつ強力なオブジェクト指向スクリプト言語です
Rubyは最初から純粋なオブジェクト指向言語として設計されていま Rubyは最初から純粋なオブジェクト指向言語として設計されていま
すから,オブジェクト指向プログラミングを手軽に行う事が出来ま すから,オブジェクト指向プログラミングを手軽に行う事が出来ま
す.もちろん通常の手続き型のプログラミングも可能です. す.もちろん通常の手続き型のプログラミングも可能です.
Rubyはテキスト処理関係の能力などに優れPerlと同じくらい強力 Rubyはテキスト処理関係の能力などに優れPerlと同じくらい強力
です.さらにシンプルな文法と,例外処理やイテレータなどの機構 です.さらにシンプルな文法と,例外処理やイテレータなどの機構
によって,より分かりやすいプログラミングが出来ます. によって,より分かりやすいプログラミングが出来ます.
* Rubyの特長 * Rubyの特長
+ シンプルな文法 + シンプルな文法
+ 普通のオブジェクト指向機能(クラス,メソッドコールなど) + 普通のオブジェクト指向機能(クラス,メソッドコールなど)
+ 特殊なオブジェクト指向機能(Mixin, 特異メソッドなど) + 特殊なオブジェクト指向機能(Mixin, 特異メソッドなど)
+ 演算子オーバーロード + 演算子オーバーロード
+ 例外処理機能 + 例外処理機能
+ イテレータとクロージャ + イテレータとクロージャ
+ ガーベージコレクタ + ガーベージコレクタ
+ ダイナミックローディング (アーキテクチャによる) + ダイナミックローディング (アーキテクチャによる)
+ 移植性が高い多くのUnix-like/POSIX互換プラットフォーム上で + 移植性が高い多くのUnix-like/POSIX互換プラットフォーム上で
動くだけでなくWindows Mac OS XBeOSなどの上でも動く 動くだけでなくWindows Mac OS XBeOSなどの上でも動く
cf. http://redmine.ruby-lang.org/wiki/ruby-19/SupportedPlatformsJa cf. http://redmine.ruby-lang.org/wiki/ruby-19/SupportedPlatformsJa
* 入手法 * 入手法
** FTPで ** FTPで
以下の場所においてあります. 以下の場所においてあります.
ftp://ftp.ruby-lang.org/pub/ruby/ ftp://ftp.ruby-lang.org/pub/ruby/
** Subversionで ** Subversionで
開発先端のソースコードは次のコマンドで取得できます. 開発先端のソースコードは次のコマンドで取得できます.
$ svn co http://svn.ruby-lang.org/repos/ruby/trunk/ ruby $ svn co http://svn.ruby-lang.org/repos/ruby/trunk/ ruby
他に開発中のブランチの一覧は次のコマンドで見られます. 他に開発中のブランチの一覧は次のコマンドで見られます.
$ svn ls http://svn.ruby-lang.org/repos/ruby/branches/ $ svn ls http://svn.ruby-lang.org/repos/ruby/branches/
* ホームページ * ホームページ
RubyのホームページのURLは RubyのホームページのURLは
http://www.ruby-lang.org/ http://www.ruby-lang.org/
です. です.
* メーリングリスト * メーリングリスト
Rubyのメーリングリストがあります。参加希望の方は Rubyのメーリングリストがあります。参加希望の方は
ruby-list-ctl@ruby-lang.org ruby-list-ctl@ruby-lang.org
まで本文に まで本文に
subscribe YourFirstName YourFamilyName subscribe YourFirstName YourFamilyName
<<<<<<< HEAD
と書いて送って下さい。 と書いて送って下さい。
=======
Ruby開発者向けメーリングリストもあります。こちらではrubyのバ と書いて送って下さい。
グ、将来の仕様拡張など実装上の問題について議論されています。 >>>>>>> Change encoding from EUC-JP to UTF-8. [Feature #5128]
参加希望の方は
Ruby開発者向けメーリングリストもあります。こちらではrubyのバ
グ、将来の仕様拡張など実装上の問題について議論されています。
参加希望の方は
ruby-dev-ctl@ruby-lang.org ruby-dev-ctl@ruby-lang.org
までruby-listと同様の方法でメールしてください。 <<<<<<< HEAD
までruby-listと同様の方法でメールしてください。
Ruby拡張モジュールについて話し合うruby-extメーリングリストと Ruby拡張モジュールについて話し合うruby-extメーリングリストと
数学関係の話題について話し合うruby-mathメーリングリストと 数学関係の話題について話し合うruby-mathメーリングリストと
英語で話し合うruby-talkメーリングリストもあります。参加方法 英語で話し合うruby-talkメーリングリストもあります。参加方法
はどれも同じです。 はどれも同じです。
=======
までruby-listと同様の方法でメールしてください。
Ruby拡張モジュールについて話し合うruby-extメーリングリストと
数学関係の話題について話し合うruby-mathメーリングリストと
英語で話し合うruby-talkメーリングリストもあります。参加方法
はどれも同じです。
>>>>>>> Change encoding from EUC-JP to UTF-8. [Feature #5128]
* コンパイル・インストール * コンパイル・インストール
以下の手順で行ってください. 以下の手順で行ってください.
1. もしconfigureファイルが見つからない、もしくは 1. もしconfigureファイルが見つからない、もしくは
configure.inより古いようなら、autoconfを実行して configure.inより古いようなら、autoconfを実行して
新しくconfigureを生成する 新しくconfigureを生成する
2. configureを実行してMakefileなどを生成する 2. configureを実行してMakefileなどを生成する
環境によってはデフォルトのCコンパイラ用オプションが付き 環境によってはデフォルトのCコンパイラ用オプションが付き
ますconfigureオプションで optflags=.. warnflags=.. 等 ますconfigureオプションで optflags=.. warnflags=.. 等
で上書きできます. で上書きできます.
3. (必要ならば)defines.hを編集する 3. (必要ならば)defines.hを編集する
多分,必要無いと思います. 多分,必要無いと思います.
4. (必要ならば)ext/Setupに静的にリンクする拡張モジュールを 4. (必要ならば)ext/Setupに静的にリンクする拡張モジュールを
指定する 指定する
ext/Setupに記述したモジュールは静的にリンクされます ext/Setupに記述したモジュールは静的にリンクされます
ダイナミックローディングをサポートしていないアーキテク ダイナミックローディングをサポートしていないアーキテク
チャではSetupの1行目の「option nodynamic」という行のコ チャではSetupの1行目の「option nodynamic」という行のコ
メントを外す必要があります.また,このアーキテクチャで メントを外す必要があります.また,このアーキテクチャで
拡張モジュールを利用するためには,あらかじめ静的にリン 拡張モジュールを利用するためには,あらかじめ静的にリン
クしておく必要があります. クしておく必要があります.
5. makeを実行してコンパイルする 5. makeを実行してコンパイルする
6. make testでテストを行う 6. make testでテストを行う
「test succeeded」と表示されれば成功ですただしテスト 「test succeeded」と表示されれば成功ですただしテスト
に成功しても完璧だと保証されている訳ではありません. に成功しても完璧だと保証されている訳ではありません.
7. make install 7. make install
以下のディレクトリを作って,そこにファイルをインストー 以下のディレクトリを作って,そこにファイルをインストー
ルします. ルします.
* ${DESTDIR}${prefix}/bin * ${DESTDIR}${prefix}/bin
* ${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY} * ${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}
@ -136,48 +150,48 @@ Ruby
* ${DESTDIR}${prefix}/share/man/man1 * ${DESTDIR}${prefix}/share/man/man1
* ${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system * ${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system
RubyのAPIバージョンが`x.y.z'であれば,((|${MAJOR}|))は RubyのAPIバージョンが`x.y.z'であれば,((|${MAJOR}|))は
`x'で,((|${MINOR}|))は`y'((|${TEENY}|))は`z'です. `x'で,((|${MINOR}|))は`y'((|${TEENY}|))は`z'です.
注意: APIバージョンのteenyはRubyプログラムのバージョ 注意: APIバージョンのteenyはRubyプログラムのバージョ
ンとは異なることがあります. ンとは異なることがあります.
rootで作業する必要があるかもしれません rootで作業する必要があるかもしれません
もし,コンパイル時にエラーが発生した場合にはエラーのログとマ もし,コンパイル時にエラーが発生した場合にはエラーのログとマ
シンOSの種類を含むできるだけ詳しいレポートを作者に送ってく シンOSの種類を含むできるだけ詳しいレポートを作者に送ってく
ださると他の方のためにもなります. ださると他の方のためにもなります.
* 移植 * 移植
UNIXであればconfigureがほとんどの差異を吸収してくれるはずで UNIXであればconfigureがほとんどの差異を吸収してくれるはずで
すが,思わぬ見落としがあった場合(あるに違いない),作者にその すが,思わぬ見落としがあった場合(あるに違いない),作者にその
ことをレポートすれば,解決できるかも知れません. ことをレポートすれば,解決できるかも知れません.
アーキテクチャにもっとも依存するのはGC部ですRubyのGCは対象 アーキテクチャにもっとも依存するのはGC部ですRubyのGCは対象
のアーキテクチャがsetjmp()またはgetcontext()によって全てのレ のアーキテクチャがsetjmp()またはgetcontext()によって全てのレ
ジスタをjmp_bufやucontext_tに格納することとjmp_bufや ジスタをjmp_bufやucontext_tに格納することとjmp_bufや
ucontext_tとスタックが32bitアラインメントされていることを仮定 ucontext_tとスタックが32bitアラインメントされていることを仮定
しています.特に前者が成立しない場合の対応は非常に困難でしょ しています.特に前者が成立しない場合の対応は非常に困難でしょ
後者の解決は比較的簡単でgc.cでスタックをマークしている 後者の解決は比較的簡単でgc.cでスタックをマークしている
部分にアラインメントのバイト数だけずらしてマークするコードを 部分にアラインメントのバイト数だけずらしてマークするコードを
追加するだけで済みます「defined(__mc68000__)」で括られてい 追加するだけで済みます「defined(__mc68000__)」で括られてい
る部分を参考にしてください. る部分を参考にしてください.
レジスタウィンドウを持つCPUではレジスタウィンドウをスタッ レジスタウィンドウを持つCPUではレジスタウィンドウをスタッ
クにフラッシュするアセンブラコードを追加する必要があるかも知 クにフラッシュするアセンブラコードを追加する必要があるかも知
れません. れません.
* 配布条件 * 配布条件
COPYING.jaファイルを参照してください。 COPYING.jaファイルを参照してください。
* 著者 * 著者
コメント,バグレポートその他は matz@netlab.jp まで. コメント,バグレポートその他は matz@netlab.jp まで.
------------------------------------------------------- -------------------------------------------------------
created at: Thu Aug 3 11:57:36 JST 1995 created at: Thu Aug 3 11:57:36 JST 1995
Local variables: Local variables:

View file

@ -1,75 +1,75 @@
# etc.rd.ja - -*- mode: rd; coding: euc-jp; -*- created at: Fri Jul 14 00:47:15 JST 1995 # etc.rd.ja - -*- mode: rd; coding: euc-jp; -*- created at: Fri Jul 14 00:47:15 JST 1995
=begin =begin
= Etc(モジュール) = Etc(モジュール)
実行しているOSからの情報を得るためのモジュールクラスにインクルード 実行しているOSからの情報を得るためのモジュールクラスにインクルード
して使うこともできる. して使うこともできる.
== Module Function == Module Function
--- getlogin --- getlogin
自分のlogin名を返すこれが失敗した場合はgetpwuid()を用いると 自分のlogin名を返すこれが失敗した場合はgetpwuid()を用いると
良い. 良い.
--- getpwnam(name) --- getpwnam(name)
/etc/passwdファイル(あるいはDBMファイルやNISデータベース)を検 /etc/passwdファイル(あるいはDBMファイルやNISデータベース)を検
索しnameの名前を持つpasswdエントリを返す戻り値はpasswd構造 索しnameの名前を持つpasswdエントリを返す戻り値はpasswd構造
体で以下のメンバを持つ. 体で以下のメンバを持つ.
struct passwd struct passwd
name # ユーザ名(文字列) name # ユーザ名(文字列)
passwd # パスワード(文字列) passwd # パスワード(文字列)
uid # ユーザID(整数) uid # ユーザID(整数)
gid # グループID(整数) gid # グループID(整数)
gecos # gecosフィールド(文字列) gecos # gecosフィールド(文字列)
dir # ホームディレクトリ(文字列) dir # ホームディレクトリ(文字列)
shell # ログインシェル(文字列) shell # ログインシェル(文字列)
# 以降のメンバはシステムによっては提供されない. # 以降のメンバはシステムによっては提供されない.
change # パスワード変更時間(整数) change # パスワード変更時間(整数)
quota # クォータ(整数) quota # クォータ(整数)
age # エージ(整数) age # エージ(整数)
class # ユーザアクセスクラス(文字列) class # ユーザアクセスクラス(文字列)
comment # コメント(文字列) comment # コメント(文字列)
expire # アカウント有効期限(整数) expire # アカウント有効期限(整数)
end end
詳細はgetpwnam(3)を参照のこと. 詳細はgetpwnam(3)を参照のこと.
--- getpwuid([uid]) --- getpwuid([uid])
uidをユーザIDとするpasswdエントリを返す戻り値はgetpwnam()と uidをユーザIDとするpasswdエントリを返す戻り値はgetpwnam()と
同様である引数を省略した場合にはgetuid()の値を用いる.詳細は 同様である引数を省略した場合にはgetuid()の値を用いる.詳細は
getpwuid(3)を参照のこと. getpwuid(3)を参照のこと.
--- getgrgid(gid) --- getgrgid(gid)
/etc/groupファイル(あるいは…getpwnam参照)を検索しgidをグルー /etc/groupファイル(あるいは…getpwnam参照)を検索しgidをグルー
プIDとするグループエントリを返す戻り値はgroup構造体で以下の プIDとするグループエントリを返す戻り値はgroup構造体で以下の
メンバを持つ. メンバを持つ.
struct group struct group
name # グループ名(文字列) name # グループ名(文字列)
passwd # グループのパスワード(文字列) passwd # グループのパスワード(文字列)
gid # グループID(整数) gid # グループID(整数)
mem # グループメンバ名の配列 mem # グループメンバ名の配列
end end
詳細はgetgrgid(3)を参照のこと. 詳細はgetgrgid(3)を参照のこと.
--- getgrnam(name) --- getgrnam(name)
nameという名前のグループエントリを返す戻り値はgetgrgid()と同 nameという名前のグループエントリを返す戻り値はgetgrgid()と同
様である詳細はgetgrnam(3)を参照. 様である詳細はgetgrnam(3)を参照.
--- group --- group
全てのグループエントリを順にアクセスするためのイテレータ. 全てのグループエントリを順にアクセスするためのイテレータ.
--- passwd --- passwd
全てのpasswdエントリを順にアクセスするためのイテレータ 全てのpasswdエントリを順にアクセスするためのイテレータ
=end =end

View file

@ -5,11 +5,11 @@
=begin =begin
= Forwardable = Forwardable
クラスに対しメソッドの委譲機能を定義します. クラスに対しメソッドの委譲機能を定義します.
== 使い方 == 使い方
クラスに対してextendして使います. クラスに対してextendして使います.
class Foo class Foo
extend Forwardable extend Forwardable
@ -23,58 +23,58 @@
f.gets f.gets
f.content_at(1) f.content_at(1)
== メソッド == メソッド
--- Forwardable#def_instance_delegators(accessor, *methods) --- Forwardable#def_instance_delegators(accessor, *methods)
((|methods|))で渡されたメソッドのリストを((|accessorに|))委譲する ((|methods|))で渡されたメソッドのリストを((|accessorに|))委譲する
ようにします. ようにします.
--- Forwardable#def_instance_delegator(accessor, method, ali = method) --- Forwardable#def_instance_delegator(accessor, method, ali = method)
((||method|))で渡されたメソッドを((|accessor|))に委譲するようにし ((||method|))で渡されたメソッドを((|accessor|))に委譲するようにし
ます. ((|ali|))が引数として渡されたときは, メソッド((|ali|))が呼ば ます. ((|ali|))が引数として渡されたときは, メソッド((|ali|))が呼ば
れたときには, ((|accessor|))に対し((|method|))を呼び出します. れたときには, ((|accessor|))に対し((|method|))を呼び出します.
--- Forwardable#def_delegators(accessor, *methods) --- Forwardable#def_delegators(accessor, *methods)
((|Forwardable#def_instance_delegators|))の別名です. ((|Forwardable#def_instance_delegators|))の別名です.
--- Forwardable#def_delegator(accessor, method, ali = method) --- Forwardable#def_delegator(accessor, method, ali = method)
((|Forwardable#def_instance_delegator|))の別名です. ((|Forwardable#def_instance_delegator|))の別名です.
= SingleForwardable = SingleForwardable
オブジェクトに対し, メソッドの委譲機能を定義します. オブジェクトに対し, メソッドの委譲機能を定義します.
== 使い方 == 使い方
オブジェクトに対して((|extend|))して使います. オブジェクトに対して((|extend|))して使います.
g = Goo.new g = Goo.new
g.extend SingleForwardable g.extend SingleForwardable
g.def_delegator("@out", :puts) g.def_delegator("@out", :puts)
g.puts ... g.puts ...
== メソッド == メソッド
--- SingleForwardable#def_singleton_delegators(accessor, *methods) --- SingleForwardable#def_singleton_delegators(accessor, *methods)
((|methods|))で渡されたメソッドのリストを((|accessor|))に委譲する ((|methods|))で渡されたメソッドのリストを((|accessor|))に委譲する
ようにします. ようにします.
--- SingleForwardable#def_singleton_delegator(accessor, method, ali = method) --- SingleForwardable#def_singleton_delegator(accessor, method, ali = method)
((|method|))で渡されたメソッドを((|accessor|))に委譲するようにしま ((|method|))で渡されたメソッドを((|accessor|))に委譲するようにしま
す. ((|ali|))が引数として渡されたときは, メソッド((|ali|))が呼ばれ す. ((|ali|))が引数として渡されたときは, メソッド((|ali|))が呼ばれ
たときには, ((|accessor|))に対し((|method|))を呼び出します. たときには, ((|accessor|))に対し((|method|))を呼び出します.
--- SingleForwardable#def_delegators(accessor, *methods) --- SingleForwardable#def_delegators(accessor, *methods)
((|SingleForwardable#def_singleton_delegators|))の別名です. ((|SingleForwardable#def_singleton_delegators|))の別名です.
--- SingleForwardable#def_delegator(accessor, method, ali = method) --- SingleForwardable#def_delegator(accessor, method, ali = method)
((|SingleForwardable#def_singleton_delegator|))の別名です. ((|SingleForwardable#def_singleton_delegator|))の別名です.
=end =end

View file

@ -1,70 +1,70 @@
irb関連おまけコマンドとライブラリ irb関連おまけコマンドとライブラリ
$Release Version: 0.7.1 $ $Release Version: 0.7.1 $
$Revision$ $Revision$
by Keiju ISHITSUKA(Nihon Rational Co.,Ltd.) by Keiju ISHITSUKA(Nihon Rational Co.,Ltd.)
=begin =begin
:コマンド: :コマンド:
* rtags -- ruby tags command * rtags -- ruby tags command
:関数ライブラリ: :関数ライブラリ:
* xmp -- irb version of gotoken xmp-function * xmp -- irb version of gotoken xmp-function
:クラスライブラリ: :クラスライブラリ:
* frame.rb -- frame tracer * frame.rb -- frame tracer
* completion.rb -- irb completor * completion.rb -- irb completor
= rtags = rtags
rtagsはemacs及びvi用の, TAGファイルをつくるコマンドです. rtagsはemacs及びvi用の, TAGファイルをつくるコマンドです.
== 使い方 == 使い方
rtags [-vi] file.... rtags [-vi] file....
カレントディレクトリにemacs用のTAGSファイルができます. -viオプションを カレントディレクトリにemacs用のTAGSファイルができます. -viオプションを
つけた時にはvi用のtagsファイルを作成します. つけた時にはvi用のtagsファイルを作成します.
emacsの場合, 通常のetags.elがそのまま使えます. 検索可能なのは, emacsの場合, 通常のetags.elがそのまま使えます. 検索可能なのは,
* クラス * クラス
* メソッド * メソッド
* 特異メソッド * 特異メソッド
* alias * alias
* attrで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る) * attrで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る)
* attr_XXXで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る) * attr_XXXで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る)
です. です.
Cなどで使っているのと違うのは, コンプリーションに関する部分で, Cなどで使っているのと違うのは, コンプリーションに関する部分で,
関数名は, 関数名は,
関数名( 関数名(
クラスは, クラスは,
::クラス名::....::クラス名 ::クラス名::....::クラス名
メソッドは, メソッドは,
::クラス名::....::クラス名#メソッド名 ::クラス名::....::クラス名#メソッド名
特異メソッド(クラスメソッド)は 特異メソッド(クラスメソッド)は
::クラス名::....::クラス名.メソッド名 ::クラス名::....::クラス名.メソッド名
でコンプリーションを行なうところです. でコンプリーションを行なうところです.
= xmp.rb = xmp.rb
ごとけんxmpの上位互換バージョンです. ただ, 非常に重いのでごとけんxmpで ごとけんxmpの上位互換バージョンです. ただ, 非常に重いのでごとけんxmpで
は対応できない時に, 使用すると良いでしょう. は対応できない時に, 使用すると良いでしょう.
== 使い方 == 使い方
=== 関数として使う. === 関数として使う.
require "irb/xmp" require "irb/xmp"
xmp <<END xmp <<END
@ -77,10 +77,10 @@ C
foo foo
==>1 ==>1
=== XMPインスタンスを用いる. === XMPインスタンスを用いる.
この場合は, XMPがコンテキスト情報を持つので, 変数の値などを保持してい この場合は, XMPがコンテキスト情報を持つので, 変数の値などを保持してい
ます. ます.
require "irb/xmp" require "irb/xmp"
xmp = XMP.new xmp = XMP.new
@ -99,50 +99,50 @@ C
foo foo
==>1 ==>1
== コンテキストに関して == コンテキストに関して
XMPメソッド群のコンテキストは, 呼び出す前のコンテキストで評価されます. XMPメソッド群のコンテキストは, 呼び出す前のコンテキストで評価されます.
明示的にコンテキストを指定するとそのコンテキストで評価します. 明示的にコンテキストを指定するとそのコンテキストで評価します.
例: 例:
xmp "foo", an_binding xmp "foo", an_binding
:注: :注:
マルチスレッドには対応していません. マルチスレッドには対応していません.
= frame.rb = frame.rb
現在実行中のフレーム情報を取り扱うためのクラスです. 現在実行中のフレーム情報を取り扱うためのクラスです.
* IRB::Frame.top(n = 0) * IRB::Frame.top(n = 0)
上からn番目のコンテキストを取り出します. nは0が最上位になります. 上からn番目のコンテキストを取り出します. nは0が最上位になります.
* IRB::Frame.bottom(n = 0) * IRB::Frame.bottom(n = 0)
下からn番目のコンテキストを取り出します. nは0が最下位になります. 下からn番目のコンテキストを取り出します. nは0が最下位になります.
* IRB::Frame.sender * IRB::Frame.sender
センダになっているオブジェクトを取り出します. センダとは, そのメソッ センダになっているオブジェクトを取り出します. センダとは, そのメソッ
ドを呼び出した側のselfのことです. ドを呼び出した側のselfのことです.
:注: :注:
set_trace_funcを用いてRubyの実行をトレースしています. マルチスレッドに set_trace_funcを用いてRubyの実行をトレースしています. マルチスレッドに
は対応していません. は対応していません.
= completion.rb = completion.rb
irbのcompletion機能を提供するものです. irbのcompletion機能を提供するものです.
== 使い方 == 使い方
% irb -r irb/completion % irb -r irb/completion
とするか, ~/.irbrc 中に とするか, ~/.irbrc 中に
require "irb/completion" require "irb/completion"
を入れてください. irb実行中に require "irb/completion" してもよいです. を入れてください. irb実行中に require "irb/completion" してもよいです.
irb実行中に (TAB) を押すとコンプレーションします. irb実行中に (TAB) を押すとコンプレーションします.
トップレベルで(TAB)を押すとすべての構文要素, クラス, メソッドの候補がで トップレベルで(TAB)を押すとすべての構文要素, クラス, メソッドの候補がで
ます. 候補が唯一ならば完全に補完します. ます. 候補が唯一ならば完全に補完します.
irb(main):001:0> in irb(main):001:0> in
in inspect instance_eval in inspect instance_eval
@ -153,8 +153,8 @@ irb
irb(main):002:0> foo = Object.new irb(main):002:0> foo = Object.new
#<Object:0x4027146c> #<Object:0x4027146c>
((|変数名.|))の後に(TAB)を押すと, そのオブジェクトのメソッド一覧がでま ((|変数名.|))の後に(TAB)を押すと, そのオブジェクトのメソッド一覧がでま
す. す.
irb(main):003:0> foo. irb(main):003:0> foo.
foo.== foo.frozen? foo.protected_methods foo.== foo.frozen? foo.protected_methods

View file

@ -3,23 +3,23 @@ irb -- interactive ruby
$Revision$ $Revision$
by Keiju ISHITSUKA(keiju@ruby-lang.org) by Keiju ISHITSUKA(keiju@ruby-lang.org)
=begin =begin
= irbとは? = irbとは?
irbはinteractive rubyの略です. rubyの式を標準入力から簡単に入力/実行する irbはinteractive rubyの略です. rubyの式を標準入力から簡単に入力/実行する
ためのツールです. ためのツールです.
= 起動 = 起動
% irb % irb
で行ないます. で行ないます.
= 使い方 = 使い方
irbの使い方は, Rubyさえ知っていればいたって簡単です. 基本的には irb と irbの使い方は, Rubyさえ知っていればいたって簡単です. 基本的には irb と
いうコマンドを実行するだけです. irbを実行すると, 以下のようなプロンプ いうコマンドを実行するだけです. irbを実行すると, 以下のようなプロンプ
トが表れてきます. 後は, rubyの式を入れて下さい. 式が完結した時点で実行 トが表れてきます. 後は, rubyの式を入れて下さい. 式が完結した時点で実行
されます. されます.
dim% irb dim% irb
irb(main):001:0> 1+2 irb(main):001:0> 1+2
@ -32,55 +32,55 @@ irb
nil nil
irb(main):007:0> irb(main):007:0>
また, irbはReadlineモジュールにも対応しています. Readlineモジュールが また, irbはReadlineモジュールにも対応しています. Readlineモジュールが
インストールされている時には, それを使うのが標準の動作になります. インストールされている時には, それを使うのが標準の動作になります.
= コマンドオプション = コマンドオプション
irb.rb [options] file_name opts irb.rb [options] file_name opts
options: options:
-f ~/.irbrc を読み込まない. -f ~/.irbrc を読み込まない.
-m bcモード(分数, 行列の計算ができる) -m bcモード(分数, 行列の計算ができる)
-d $DEBUG をtrueにする(ruby -d と同じ) -d $DEBUG をtrueにする(ruby -d と同じ)
-Kc ruby -Kcと同じ -Kc ruby -Kcと同じ
-r load-module ruby -r と同じ. -r load-module ruby -r と同じ.
--verbose これから実行する行を表示する(デフォルト) --verbose これから実行する行を表示する(デフォルト)
--noverbose これから実行する行を表示しない --noverbose これから実行する行を表示しない
--echo 実行結果を表示する(デフォルト) --echo 実行結果を表示する(デフォルト)
--noecho 実行結果を表示しない --noecho 実行結果を表示しない
--inspect 結果出力にinspectを用いる(bcモード以外はデフォルト). --inspect 結果出力にinspectを用いる(bcモード以外はデフォルト).
--noinspect 結果出力にinspectを用いない. --noinspect 結果出力にinspectを用いない.
--readline readlineライブラリを利用する. --readline readlineライブラリを利用する.
--noreadline readlineライブラリを利用しない. デフォルトの動作は, --noreadline readlineライブラリを利用しない. デフォルトの動作は,
inf-ruby-mode以外でreadlineライブラリを利用しよう inf-ruby-mode以外でreadlineライブラリを利用しよう
とする. とする.
--prompt prompt-mode --prompt prompt-mode
--prompt-mode prompt-mode --prompt-mode prompt-mode
プロンプトモードを切替えます. 現在定義されているプ プロンプトモードを切替えます. 現在定義されているプ
ロンプトモードは, default, simple, xmp, inf-rubyが ロンプトモードは, default, simple, xmp, inf-rubyが
用意されています. デフォルトはdefaultプロンプトモー 用意されています. デフォルトはdefaultプロンプトモー
ドになっています. ドになっています.
--inf-ruby-mode emacsのinf-ruby-mode用のプロンプト表示を行なう. 特 --inf-ruby-mode emacsのinf-ruby-mode用のプロンプト表示を行なう. 特
に指定がない限り, readlineライブラリは使わなくなる. に指定がない限り, readlineライブラリは使わなくなる.
--simple-prompt --simple-prompt
非常にシンプルなプロンプトを用いるモードです. 非常にシンプルなプロンプトを用いるモードです.
--noprompt プロンプト表示を行なわない. --noprompt プロンプト表示を行なわない.
--tracer コマンド実行時にトレースを行なう. --tracer コマンド実行時にトレースを行なう.
--back-trace-limit n --back-trace-limit n
バックトレース表示をバックトレースの頭から n, 後ろ バックトレース表示をバックトレースの頭から n, 後ろ
からnだけ行なう. デフォルトは16 からnだけ行なう. デフォルトは16
--irb_debug n irbのデバッグデバッグレベルをnに設定する(利用しな --irb_debug n irbのデバッグデバッグレベルをnに設定する(利用しな
い方が無難でしょう). い方が無難でしょう).
-v, --version irbのバージョンを表示する -v, --version irbのバージョンを表示する
= コンフィギュレーション = コンフィギュレーション
irb起動時に``~/.irbrc''を読み込みます. もし存在しない場合は, irb起動時に``~/.irbrc''を読み込みます. もし存在しない場合は,
``.irbrc'', ``irb.rc'', ``_irbrc'', ``$irbrc''の順にloadを試みます. ``.irbrc'', ``irb.rc'', ``_irbrc'', ``$irbrc''の順にloadを試みます.
オプションを設定する代わりに, 以下のコマンドでもデフォルトの動作を設定 オプションを設定する代わりに, 以下のコマンドでもデフォルトの動作を設定
できます. できます.
IRB.conf[:IRB_NAME]="irb" IRB.conf[:IRB_NAME]="irb"
IRB.conf[:MATH_MODE]=false IRB.conf[:MATH_MODE]=false
@ -101,43 +101,43 @@ irb
IRB.conf[:DEBUG_LEVEL]=0 IRB.conf[:DEBUG_LEVEL]=0
IRB.conf[:VERBOSE]=true IRB.conf[:VERBOSE]=true
== プロンプトの設定 == プロンプトの設定
プロンプトをカスタマイズしたい時には, プロンプトをカスタマイズしたい時には,
IRB.conf[:PROMPT] IRB.conf[:PROMPT]
を用います. 例えば, .irbrcの中で下のような式を記述します: を用います. 例えば, .irbrcの中で下のような式を記述します:
IRB.conf[:PROMPT][:MY_PROMPT] = { # プロンプトモードの名前 IRB.conf[:PROMPT][:MY_PROMPT] = { # プロンプトモードの名前
:PROMPT_I => nil, # 通常のプロンプト :PROMPT_I => nil, # 通常のプロンプト
:PROMPT_N => nil, # 継続行のプロンプト :PROMPT_N => nil, # 継続行のプロンプト
:PROMPT_S => nil, # 文字列などの継続行のプロンプト :PROMPT_S => nil, # 文字列などの継続行のプロンプト
:PROMPT_C => nil, # 式が継続している時のプロンプト :PROMPT_C => nil, # 式が継続している時のプロンプト
:RETURN => " ==>%s\n" # リターン時のプロンプト :RETURN => " ==>%s\n" # リターン時のプロンプト
} }
プロンプトモードを指定したい時には, プロンプトモードを指定したい時には,
irb --prompt my-prompt irb --prompt my-prompt
でそのプロンプトモードで起動されます. または, .irbrcに下式を記述しても でそのプロンプトモードで起動されます. または, .irbrcに下式を記述しても
OKです. OKです.
IRB.conf[:PROMPT_MODE] = :MY_PROMPT IRB.conf[:PROMPT_MODE] = :MY_PROMPT
PROMPT_I, PROMPT_N, PROMPT_S, PROMPT_Cは, フォーマットを指定します. PROMPT_I, PROMPT_N, PROMPT_S, PROMPT_Cは, フォーマットを指定します.
%N 起動しているコマンド名が出力される. %N 起動しているコマンド名が出力される.
%m mainオブジェクト(self)がto_sで出力される. %m mainオブジェクト(self)がto_sで出力される.
%M mainオブジェクト(self)がinspectされて出力される. %M mainオブジェクト(self)がinspectされて出力される.
%l 文字列中のタイプを表す(", ', /, ], `]'は%wの中の時) %l 文字列中のタイプを表す(", ', /, ], `]'は%wの中の時)
%NNi インデントのレベルを表す. NNは数字が入りprintfの%NNdと同じ. 省 %NNi インデントのレベルを表す. NNは数字が入りprintfの%NNdと同じ. 省
略可能 略可能
%NNn 行番号を表します. %NNn 行番号を表します.
%% % %% %
例えば, デフォルトのプロンプトモードは: 例えば, デフォルトのプロンプトモードは:
IRB.conf[:PROMPT_MODE][:DEFAULT] = { IRB.conf[:PROMPT_MODE][:DEFAULT] = {
:PROMPT_I => "%N(%m):%03n:%i> ", :PROMPT_I => "%N(%m):%03n:%i> ",
@ -147,175 +147,175 @@ PROMPT_I, PROMPT_N, PROMPT_S, PROMPT_C
:RETURN => "%s\n" :RETURN => "%s\n"
} }
となっています. となっています.
RETURNは, 現在のところprintf形式です. 将来仕様が変わるかも知れません. RETURNは, 現在のところprintf形式です. 将来仕様が変わるかも知れません.
== サブirbの設定 == サブirbの設定
コマンドラインオプションおよびIRB.confは(サブ)irb起動時のデフォルトの コマンドラインオプションおよびIRB.confは(サブ)irb起動時のデフォルトの
設定を決めるもので, `5. コマンド'にあるconfで個別の(サブ)irbの設定がで 設定を決めるもので, `5. コマンド'にあるconfで個別の(サブ)irbの設定がで
きるようになっています. きるようになっています.
IRB.conf[:IRB_RC]にprocが設定されていると, サブirbを起動する時にその IRB.conf[:IRB_RC]にprocが設定されていると, サブirbを起動する時にその
procをirbのコンテキストを引数として呼び出します. これによって個別のサ procをirbのコンテキストを引数として呼び出します. これによって個別のサ
ブirbごとに設定を変えることができるようになります. ブirbごとに設定を変えることができるようになります.
= コマンド = コマンド
irb拡張コマンドは, 簡単な名前と頭に`irb_'をつけた名前と両方定義されて irb拡張コマンドは, 簡単な名前と頭に`irb_'をつけた名前と両方定義されて
います. これは, 簡単な名前がoverrideされた時のためです. います. これは, 簡単な名前がoverrideされた時のためです.
--- exit, quit, irb_exit --- exit, quit, irb_exit
終了する. 終了する.
サブirbの場合, そのサブirbを終了する. サブirbの場合, そのサブirbを終了する.
--- conf, irb_context --- conf, irb_context
irbの現在の設定を表示する. 設定の変更は, confにメッセージを送るこ irbの現在の設定を表示する. 設定の変更は, confにメッセージを送るこ
とによって行なえる. とによって行なえる.
--- conf.eval_history = N --- conf.eval_history = N
実行結果のヒストリ機能の設定. 実行結果のヒストリ機能の設定.
nnは整数かnilで nn>0 であればその数だけヒストリにためる。nn==0の時は nnは整数かnilで nn>0 であればその数だけヒストリにためる。nn==0の時は
無制限に記憶する、nilだとヒストリ機能はやめる(デフォルト). 無制限に記憶する、nilだとヒストリ機能はやめる(デフォルト).
--- Conf.back_trace_limit --- Conf.back_trace_limit
バックトレース表示をバックトレースの頭からn, 後ろからnだけ行なう. バックトレース表示をバックトレースの頭からn, 後ろからnだけ行なう.
デフォルトは16 デフォルトは16
--- conf.debug_level = N --- conf.debug_level = N
irb用のデバッグレベルの設定 irb用のデバッグレベルの設定
--- conf.ignore_eof = true/false --- conf.ignore_eof = true/false
^Dが入力された時の動作を設定する. trueの時は^Dを無視する, falseの ^Dが入力された時の動作を設定する. trueの時は^Dを無視する, falseの
時はirbを終了する. 時はirbを終了する.
--- conf.ignore_sigint= true/false --- conf.ignore_sigint= true/false
^Cが入力された時の動作を設定する. false時は, irbを終了する. trueの ^Cが入力された時の動作を設定する. false時は, irbを終了する. trueの
時の動作は以下のようになる: 時の動作は以下のようになる:
入力中: これまで入力したものをキャンセルしトップレベルに戻る. 入力中: これまで入力したものをキャンセルしトップレベルに戻る.
実行中: 実行を中止する. 実行中: 実行を中止する.
--- conf.inf_ruby_mode = true/false --- conf.inf_ruby_mode = true/false
inf-ruby-mode用のプロンプト表示を行なう. デフォルトはfalse. inf-ruby-mode用のプロンプト表示を行なう. デフォルトはfalse.
--- conf.inspect_mode = true/false/nil --- conf.inspect_mode = true/false/nil
インスペクトモードを設定する. インスペクトモードを設定する.
true: インスペクトして表示する. true: インスペクトして表示する.
false: 通常のprintで表示する. false: 通常のprintで表示する.
nil: 通常モードであれば, inspect modeとなり, mathモードの時は, non nil: 通常モードであれば, inspect modeとなり, mathモードの時は, non
inspect modeとなる. inspect modeとなる.
--- conf.math_mode --- conf.math_mode
参照のみ. bcモード(分数, 行列の計算ができます)かどうか? 参照のみ. bcモード(分数, 行列の計算ができます)かどうか?
--- conf.use_loader = true/false --- conf.use_loader = true/false
load/require時にirbのfile読み込み機能を用いるモードのスイッチ(デフォ load/require時にirbのfile読み込み機能を用いるモードのスイッチ(デフォ
ルトは用いない). このモードはIRB全体に反映される. ルトは用いない). このモードはIRB全体に反映される.
--- conf.prompt_c --- conf.prompt_c
ifの直後など, 行が継続している時のプロンプト. ifの直後など, 行が継続している時のプロンプト.
--- conf.prompt_i --- conf.prompt_i
通常のプロンプト. 通常のプロンプト.
--- conf.prompt_s --- conf.prompt_s
文字列中などを表すプロンプト. 文字列中などを表すプロンプト.
--- conf.rc --- conf.rc
~/.irbrcを読み込んだかどうか? ~/.irbrcを読み込んだかどうか?
--- conf.use_prompt = true/false --- conf.use_prompt = true/false
プロンプト表示するかどうか? デフォルトではプロンプトを表示する. プロンプト表示するかどうか? デフォルトではプロンプトを表示する.
--- conf.use_readline = true/false/nil --- conf.use_readline = true/false/nil
readlineを使うかどうか? readlineを使うかどうか?
true: readlineを使う. true: readlineを使う.
false: readlineを使わない. false: readlineを使わない.
nil: (デフォルト)inf-ruby-mode以外でreadlineライブラリを利用しよ nil: (デフォルト)inf-ruby-mode以外でreadlineライブラリを利用しよ
うとする. うとする.
# #
#--- conf.verbose=T/F #--- conf.verbose=T/F
# irbからいろいろなメッセージを出力するか? # irbからいろいろなメッセージを出力するか?
--- cws, chws, irb_cws, irb_chws, irb_change_workspace [obj] --- cws, chws, irb_cws, irb_chws, irb_change_workspace [obj]
objをselfとする. objが省略されたときは, home workspace, すなわち objをselfとする. objが省略されたときは, home workspace, すなわち
irbを起動したときのmain objectをselfとする. irbを起動したときのmain objectをselfとする.
--- pushws, irb_pushws, irb_push_workspace [obj] --- pushws, irb_pushws, irb_push_workspace [obj]
UNIXシェルコマンドのpushdと同様. UNIXシェルコマンドのpushdと同様.
--- popws, irb_popws, irb_pop_workspace --- popws, irb_popws, irb_pop_workspace
UNIXシェルコマンドのpopdと同様. UNIXシェルコマンドのpopdと同様.
--- irb [obj] --- irb [obj]
サブirbを立ちあげる. objが指定された時は, そのobjをselfとする. サブirbを立ちあげる. objが指定された時は, そのobjをselfとする.
--- jobs, irb_jobs --- jobs, irb_jobs
サブirbのリスト サブirbのリスト
--- fg n, irb_fg n --- fg n, irb_fg n
指定したサブirbにスイッチする. nは, 次のものを指定する. 指定したサブirbにスイッチする. nは, 次のものを指定する.
irb番号 irb番号
スレッド スレッド
irbオブジェクト irbオブジェクト
self(irb objで起動した時のobj) self(irb objで起動した時のobj)
--- kill n, irb_kill n --- kill n, irb_kill n
サブirbをkillする. nはfgと同じ. サブirbをkillする. nはfgと同じ.
--- source, irb_source path --- source, irb_source path
UNIXシェルコマンドのsourceと似ている. 現在の環境上でpath内のスクリ UNIXシェルコマンドのsourceと似ている. 現在の環境上でpath内のスクリ
プトを評価する. プトを評価する.
--- irb_load path, prev --- irb_load path, prev
Rubyのloadのirb版. Rubyのloadのirb版.
= システム変数 = システム変数
--- _ --- _
前の計算の実行結果を覚えている(ローカル変数). 前の計算の実行結果を覚えている(ローカル変数).
--- __ --- __
実行結果の履歴を覚えている. 実行結果の履歴を覚えている.
__[line_no]で、その行で実行した結果を得ることができる. line_noが負の __[line_no]で、その行で実行した結果を得ることができる. line_noが負の
時には、最新の結果から-line_no前の結果を得ることができる. 時には、最新の結果から-line_no前の結果を得ることができる.
= 使用例 = 使用例
以下のような感じです. 以下のような感じです.
dim% ruby irb.rb dim% ruby irb.rb
irb(main):001:0> irb # サブirbの立ちあげ irb(main):001:0> irb # サブirbの立ちあげ
irb#1(main):001:0> jobs # サブirbのリスト irb#1(main):001:0> jobs # サブirbのリスト
#0->irb on main (#<Thread:0x400fb7e4> : stop) #0->irb on main (#<Thread:0x400fb7e4> : stop)
#1->irb#1 on main (#<Thread:0x40125d64> : running) #1->irb#1 on main (#<Thread:0x40125d64> : running)
nil nil
irb#1(main):002:0> fg 0 # jobのスイッチ irb#1(main):002:0> fg 0 # jobのスイッチ
nil nil
irb(main):002:0> class Foo;end irb(main):002:0> class Foo;end
nil nil
irb(main):003:0> irb Foo # Fooをコンテキストしてirb irb(main):003:0> irb Foo # Fooをコンテキストしてirb
# 立ちあげ # 立ちあげ
irb#2(Foo):001:0> def foo # Foo#fooの定義 irb#2(Foo):001:0> def foo # Foo#fooの定義
irb#2(Foo):002:1> print 1 irb#2(Foo):002:1> print 1
irb#2(Foo):003:1> end irb#2(Foo):003:1> end
nil nil
irb#2(Foo):004:0> fg 0 # jobをスイッチ irb#2(Foo):004:0> fg 0 # jobをスイッチ
nil nil
irb(main):004:0> jobs # jobのリスト irb(main):004:0> jobs # jobのリスト
#0->irb on main (#<Thread:0x400fb7e4> : running) #0->irb on main (#<Thread:0x400fb7e4> : running)
#1->irb#1 on main (#<Thread:0x40125d64> : stop) #1->irb#1 on main (#<Thread:0x40125d64> : stop)
#2->irb#2 on Foo (#<Thread:0x4011d54c> : stop) #2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
nil nil
irb(main):005:0> Foo.instance_methods # Foo#fooがちゃんと定義さ irb(main):005:0> Foo.instance_methods # Foo#fooがちゃんと定義さ
# れている # れている
["foo"] ["foo"]
irb(main):006:0> fg 2 # jobをスイッチ irb(main):006:0> fg 2 # jobをスイッチ
nil nil
irb#2(Foo):005:0> def bar # Foo#barを定義 irb#2(Foo):005:0> def bar # Foo#barを定義
irb#2(Foo):006:1> print "bar" irb#2(Foo):006:1> print "bar"
irb#2(Foo):007:1> end irb#2(Foo):007:1> end
nil nil
@ -325,36 +325,36 @@ irb
nil nil
irb(main):007:0> f = Foo.new irb(main):007:0> f = Foo.new
#<Foo:0x4010af3c> #<Foo:0x4010af3c>
irb(main):008:0> irb f # Fooのインスタンスでirbを irb(main):008:0> irb f # Fooのインスタンスでirbを
# 立ちあげる. # 立ちあげる.
irb#3(#<Foo:0x4010af3c>):001:0> jobs irb#3(#<Foo:0x4010af3c>):001:0> jobs
#0->irb on main (#<Thread:0x400fb7e4> : stop) #0->irb on main (#<Thread:0x400fb7e4> : stop)
#1->irb#1 on main (#<Thread:0x40125d64> : stop) #1->irb#1 on main (#<Thread:0x40125d64> : stop)
#2->irb#2 on Foo (#<Thread:0x4011d54c> : stop) #2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
#3->irb#3 on #<Foo:0x4010af3c> (#<Thread:0x4010a1e0> : running) #3->irb#3 on #<Foo:0x4010af3c> (#<Thread:0x4010a1e0> : running)
nil nil
irb#3(#<Foo:0x4010af3c>):002:0> foo # f.fooの実行 irb#3(#<Foo:0x4010af3c>):002:0> foo # f.fooの実行
nil nil
irb#3(#<Foo:0x4010af3c>):003:0> bar # f.barの実行 irb#3(#<Foo:0x4010af3c>):003:0> bar # f.barの実行
barnil barnil
irb#3(#<Foo:0x4010af3c>):004:0> kill 1, 2, 3# jobのkill irb#3(#<Foo:0x4010af3c>):004:0> kill 1, 2, 3# jobのkill
nil nil
irb(main):009:0> jobs irb(main):009:0> jobs
#0->irb on main (#<Thread:0x400fb7e4> : running) #0->irb on main (#<Thread:0x400fb7e4> : running)
nil nil
irb(main):010:0> exit # 終了 irb(main):010:0> exit # 終了
dim% dim%
= 使用上の制限 = 使用上の制限
irbは, 評価できる時点(式が閉じた時点)での逐次実行を行ないます. したがっ irbは, 評価できる時点(式が閉じた時点)での逐次実行を行ないます. したがっ
て, rubyを直接使った時と, 若干異なる動作を行なう場合があります. て, rubyを直接使った時と, 若干異なる動作を行なう場合があります.
現在明らかになっている問題点を説明します. 現在明らかになっている問題点を説明します.
== ローカル変数の宣言 == ローカル変数の宣言
rubyでは, 以下のプログラムはエラーになります. rubyでは, 以下のプログラムはエラーになります.
eval "foo = 0" eval "foo = 0"
foo foo
@ -363,24 +363,24 @@ ruby
--- ---
NameError NameError
ところが, irbを用いると ところが, irbを用いると
>> eval "foo = 0" >> eval "foo = 0"
=> 0 => 0
>> foo >> foo
=> 0 => 0
となり, エラーを起こしません. これは, rubyが最初にスクリプト全体をコン となり, エラーを起こしません. これは, rubyが最初にスクリプト全体をコン
パイルしてローカル変数を決定するからです. それに対し, irbは実行可能に パイルしてローカル変数を決定するからです. それに対し, irbは実行可能に
なる(式が閉じる)と自動的に評価しているからです. 上記の例では, なる(式が閉じる)と自動的に評価しているからです. 上記の例では,
evel "foo = 0" evel "foo = 0"
を行なった時点で評価を行ない, その時点で変数が定義されるため, 次式で を行なった時点で評価を行ない, その時点で変数が定義されるため, 次式で
変数fooは定義されているからです. 変数fooは定義されているからです.
このようなrubyとirbの動作の違いを解決したい場合は, begin...endで括って このようなrubyとirbの動作の違いを解決したい場合は, begin...endで括って
バッチ的に実行して下さい: バッチ的に実行して下さい:
>> begin >> begin
?> eval "foo = 0" ?> eval "foo = 0"
@ -390,14 +390,14 @@ ruby
(irb):3 (irb):3
(irb_local_binding):1:in `eval' (irb_local_binding):1:in `eval'
== ヒアドキュメント == ヒアドキュメント
現在のところヒアドキュメントの実装は不完全です. 現在のところヒアドキュメントの実装は不完全です.
== シンボル == シンボル
シンボルであるかどうかの判断を間違えることがあります. 具体的には式が完了 シンボルであるかどうかの判断を間違えることがあります. 具体的には式が完了
しているのに継続行と見なすことがあります. しているのに継続行と見なすことがあります.
=end =end

View file

@ -1,21 +1,21 @@
README for expect README for expect
by A. Ito, 28 October, 1998 by A. Ito, 28 October, 1998
Expectライブラリはtcl の expect パッケージと似たような機能を Expectライブラリはtcl の expect パッケージと似たような機能を
IOクラスに追加します IOクラスに追加します
追加されるメソッドの使い方は次の通りです. 追加されるメソッドの使い方は次の通りです.
IO#expect(pattern,timeout=9999999) IO#expect(pattern,timeout=9999999)
pattern は String か Regexp のインスタンスtimeout は Fixnum pattern は String か Regexp のインスタンスtimeout は Fixnum
のインスタンスですtimeout は省略できます. のインスタンスですtimeout は省略できます.
このメソッドがブロックなしで呼ばれた場合,まずレシーバである このメソッドがブロックなしで呼ばれた場合,まずレシーバである
IOオブジェクトから pattern にマッチするパターンが読みこまれる IOオブジェクトから pattern にマッチするパターンが読みこまれる
まで待ちます.パターンが得られたら,そのパターンに関する配列を まで待ちます.パターンが得られたら,そのパターンに関する配列を
返します配列の最初の要素はpattern にマッチするまでに読みこ 返します配列の最初の要素はpattern にマッチするまでに読みこ
まれた内容の文字列です2番目以降の要素はpattern の正規表現 まれた内容の文字列です2番目以降の要素はpattern の正規表現
の中にアンカーがあった場合に,そのアンカーにマッチする部分です. の中にアンカーがあった場合に,そのアンカーにマッチする部分です.
もしタイムアウトが起きた場合はこのメソッドはnilを返します もしタイムアウトが起きた場合はこのメソッドはnilを返します
このメソッドがブロック付きで呼ばれた場合には,マッチした要素の このメソッドがブロック付きで呼ばれた場合には,マッチした要素の
配列がブロック引数として渡され,ブロックが評価されます. 配列がブロック引数として渡され,ブロックが評価されます.

View file

@ -1,76 +1,76 @@
pty 拡張モジュール version 0.3 by A.ito pty 拡張モジュール version 0.3 by A.ito
1. はじめに 1. はじめに
この拡張モジュールは仮想tty (pty) を通して適当なコマンドを この拡張モジュールは仮想tty (pty) を通して適当なコマンドを
実行する機能を ruby に提供します. 実行する機能を ruby に提供します.
2. インストール 2. インストール
次のようにしてインストールしてください. 次のようにしてインストールしてください.
(1) ruby extconf.rb (1) ruby extconf.rb
を実行すると Makefile が生成されます. を実行すると Makefile が生成されます.
(2) make; make install を実行してください. (2) make; make install を実行してください.
3. 何ができるか 3. 何ができるか
この拡張モジュールはPTY というモジュールを定義します.その中 この拡張モジュールはPTY というモジュールを定義します.その中
には,次のようなモジュール関数が含まれています. には,次のようなモジュール関数が含まれています.
getpty(command) getpty(command)
spawn(command) spawn(command)
この関数は仮想ttyを確保し指定されたコマンドをその仮想tty この関数は仮想ttyを確保し指定されたコマンドをその仮想tty
の向こうで実行し配列を返します戻り値は3つの要素からなる の向こうで実行し配列を返します戻り値は3つの要素からなる
配列です最初の要素は仮想ttyから読み出すためのIOオブジェクト 配列です最初の要素は仮想ttyから読み出すためのIOオブジェクト
2番目は書きこむためのIOオブジェクト3番目は子プロセスのプロ 2番目は書きこむためのIOオブジェクト3番目は子プロセスのプロ
セスIDですこの関数がイテレータとして呼ばれた場合これらの セスIDですこの関数がイテレータとして呼ばれた場合これらの
要素はブロックパラメータとして渡され関数自体はnilを返します 要素はブロックパラメータとして渡され関数自体はnilを返します
子プロセスが終了したり停止した場合には,例外が発生します.この関 子プロセスが終了したり停止した場合には,例外が発生します.この関
数がブロックパラメータ付きで呼ばれた場合には,そのブロックの中で 数がブロックパラメータ付きで呼ばれた場合には,そのブロックの中で
のみ例外が発生します.子プロセスをモニターしているスレッドはブロッ のみ例外が発生します.子プロセスをモニターしているスレッドはブロッ
クを抜けるときに終了します. クを抜けるときに終了します.
protect_signal protect_signal
reset_signal reset_signal
廃止予定です. 廃止予定です.
PTY.open PTY.open
仮想ttyを確保しマスター側に対応するIOオブジェクトとスレーブ側に 仮想ttyを確保しマスター側に対応するIOオブジェクトとスレーブ側に
対応するFileオブジェクトの配列を返しますブロック付きで呼び出さ 対応するFileオブジェクトの配列を返しますブロック付きで呼び出さ
れた場合は,これらの要素はブロックパラメータとして渡され,ブロッ れた場合は,これらの要素はブロックパラメータとして渡され,ブロッ
クから返された結果を返しますまた、このマスターIOとスレーブFile クから返された結果を返しますまた、このマスターIOとスレーブFile
は、ブロックを抜けるときにクローズ済みでなければクローズされます. は、ブロックを抜けるときにクローズ済みでなければクローズされます.
PTY.check(pid[, raise=false]) PTY.check(pid[, raise=false])
pidで指定された子プロセスの状態をチェックし実行中であればnilを pidで指定された子プロセスの状態をチェックし実行中であればnilを
返します.終了しているか停止している場合、第二引数が偽であれば、 返します.終了しているか停止している場合、第二引数が偽であれば、
対応するProcess::Statusオブジェクトを返します。真であれば 対応するProcess::Statusオブジェクトを返します。真であれば
PTY::ChildExited例外が発生します PTY::ChildExited例外が発生します
4. 利用について 4. 利用について
伊藤彰則が著作権を保有します. 伊藤彰則が著作権を保有します.
ソースプログラムまたはドキュメントに元の著作権表示が改変されずに ソースプログラムまたはドキュメントに元の著作権表示が改変されずに
表示されている場合に限り,誰でも,このソフトウェアを無償かつ著作 表示されている場合に限り,誰でも,このソフトウェアを無償かつ著作
権者に無断で利用・配布・改変できます.利用目的は限定されていませ 権者に無断で利用・配布・改変できます.利用目的は限定されていませ
ん. ん.
このプログラムの利用・配布その他このプログラムに関係する行為によ このプログラムの利用・配布その他このプログラムに関係する行為によ
って生じたいかなる損害に対しても,作者は一切責任を負いません. って生じたいかなる損害に対しても,作者は一切責任を負いません.
5. バグ報告等 5. バグ報告等
バグレポートは歓迎します. バグレポートは歓迎します.
aito@ei5sun.yz.yamagata-u.ac.jp aito@ei5sun.yz.yamagata-u.ac.jp
まで電子メールでバグレポートをお送りください. まで電子メールでバグレポートをお送りください.

View file

@ -66,7 +66,7 @@
symbol/string differences. (Patch supplied by Edwin Pratomo) symbol/string differences. (Patch supplied by Edwin Pratomo)
* Fixed bug with rules involving multiple source (Patch supplied by * Fixed bug with rules involving multiple source (Patch supplied by
Emanuel Indermühle) Emanuel Indermle)
* Switched from getoptlong to optparse (patches supplied by Edwin * Switched from getoptlong to optparse (patches supplied by Edwin
Pratomo) Pratomo)

View file

@ -5,142 +5,142 @@
=begin =begin
= 目的 = 目的
ruby上でsh/cshのようにコマンドの実行及びフィルタリングを手軽に行う. ruby上でsh/cshのようにコマンドの実行及びフィルタリングを手軽に行う.
sh/cshの制御文はrubyの機能を用いて実現する. sh/cshの制御文はrubyの機能を用いて実現する.
= 主なクラス一覧 = 主なクラス一覧
== Shell == Shell
Shellオブジェクトはカレントディレクトリを持ち, コマンド実行はそこからの Shellオブジェクトはカレントディレクトリを持ち, コマンド実行はそこからの
相対パスになります. 相対パスになります.
--- Shell#cwd --- Shell#cwd
--- Shell#dir --- Shell#dir
--- Shell#getwd --- Shell#getwd
--- Shell#pwd --- Shell#pwd
カレントディレクトリを返す。 カレントディレクトリを返す。
--- Shell#system_path --- Shell#system_path
コマンドサーチパスの配列を返す。 コマンドサーチパスの配列を返す。
--- Shell#umask --- Shell#umask
umaskを返す。 umaskを返す。
== Filter == Filter
コマンドの実行結果はすべてFilterとしてかえります. Enumerableをincludeし コマンドの実行結果はすべてFilterとしてかえります. Enumerableをincludeし
ています. ています.
= 主なメソッド一覧 = 主なメソッド一覧
== コマンド定義 == コマンド定義
OS上のコマンドを実行するにはまず, Shellのメソッドとして定義します. OS上のコマンドを実行するにはまず, Shellのメソッドとして定義します.
注) コマンドを定義しなくとも直接実行できるShell#systemコマンドもあります. 注) コマンドを定義しなくとも直接実行できるShell#systemコマンドもあります.
--- Shell.def_system_command(command, path = command) --- Shell.def_system_command(command, path = command)
Shellのメソッドとしてcommandを登録します. Shellのメソッドとしてcommandを登録します.
例) 例)
Shell.def_system_command "ls" Shell.def_system_command "ls"
ls を定義 ls を定義
Shell.def_system_command "sys_sort", "sort" Shell.def_system_command "sys_sort", "sort"
sortコマンドをsys_sortとして定義 sortコマンドをsys_sortとして定義
--- Shell.undef_system_command(command) --- Shell.undef_system_command(command)
commandを削除します. commandを削除します.
--- Shell.alias_command(ali, command, *opts) {...} --- Shell.alias_command(ali, command, *opts) {...}
commandのaliasをします. commandのaliasをします.
例) 例)
Shell.alias_command "lsC", "ls", "-CBF", "--show-control-chars" Shell.alias_command "lsC", "ls", "-CBF", "--show-control-chars"
Shell.alias_command("lsC", "ls"){|*opts| ["-CBF", "--show-control-chars", *opts]} Shell.alias_command("lsC", "ls"){|*opts| ["-CBF", "--show-control-chars", *opts]}
--- Shell.unalias_command(ali) --- Shell.unalias_command(ali)
commandのaliasを削除します. commandのaliasを削除します.
--- Shell.install_system_commands(pre = "sys_") --- Shell.install_system_commands(pre = "sys_")
system_path上にある全ての実行可能ファイルをShellに定義する. メソッ system_path上にある全ての実行可能ファイルをShellに定義する. メソッ
ド名は元のファイル名の頭にpreをつけたものとなる. ド名は元のファイル名の頭にpreをつけたものとなる.
== 生成 == 生成
--- Shell.new --- Shell.new
プロセスのカレントディレクトリをカレントディレクトリとするShellオ プロセスのカレントディレクトリをカレントディレクトリとするShellオ
ブジェクトを生成します. ブジェクトを生成します.
--- Shell.cd(path) --- Shell.cd(path)
pathをカレントディレクトリとするShellオブジェクトを生成します. pathをカレントディレクトリとするShellオブジェクトを生成します.
== プロセス管理 == プロセス管理
--- Shell#jobs --- Shell#jobs
スケジューリングされているjobの一覧を返す. スケジューリングされているjobの一覧を返す.
--- Shell#kill sig, job --- Shell#kill sig, job
jobにシグナルsigを送る jobにシグナルsigを送る
== カレントディレクトリ操作 == カレントディレクトリ操作
--- Shell#cd(path, &block) --- Shell#cd(path, &block)
--- Shell#chdir --- Shell#chdir
カレントディレクトリをpathにする. イテレータとして呼ばれたときには カレントディレクトリをpathにする. イテレータとして呼ばれたときには
ブロック実行中のみカレントディレクトリを変更する. ブロック実行中のみカレントディレクトリを変更する.
--- Shell#pushd(path = nil, &block) --- Shell#pushd(path = nil, &block)
--- Shell#pushdir --- Shell#pushdir
カレントディレクトリをディレクトリスタックにつみ, カレントディレク カレントディレクトリをディレクトリスタックにつみ, カレントディレク
トリをpathにする. pathが省略されたときには, カレントディレクトリと トリをpathにする. pathが省略されたときには, カレントディレクトリと
ディレクトリスタックのトップを交換する. イテレータとして呼ばれたと ディレクトリスタックのトップを交換する. イテレータとして呼ばれたと
きには, ブロック実行中のみpushdする. きには, ブロック実行中のみpushdする.
--- Shell#popd --- Shell#popd
--- Shell#popdir --- Shell#popdir
ディレクトリスタックからポップし, それをカレントディレクトリにする. ディレクトリスタックからポップし, それをカレントディレクトリにする.
== ファイル/ディレクトリ操作 == ファイル/ディレクトリ操作
--- Shell#foreach(path = nil, &block) --- Shell#foreach(path = nil, &block)
pathがファイルなら, File#foreach pathがファイルなら, File#foreach
pathがディレクトリなら, Dir#foreach pathがディレクトリなら, Dir#foreach
--- Shell#open(path, mode) --- Shell#open(path, mode)
pathがファイルなら, File#open pathがファイルなら, File#open
pathがディレクトリなら, Dir#open pathがディレクトリなら, Dir#open
--- Shell#unlink(path) --- Shell#unlink(path)
pathがファイルなら, File#unlink pathがファイルなら, File#unlink
pathがディレクトリなら, Dir#unlink pathがディレクトリなら, Dir#unlink
--- Shell#test(command, file1, file2) --- Shell#test(command, file1, file2)
--- Shell#[command, file1, file2] --- Shell#[command, file1, file2]
ファイルテスト関数testと同じ. ファイルテスト関数testと同じ.
例) 例)
sh[?e, "foo"] sh[?e, "foo"]
sh[:e, "foo"] sh[:e, "foo"]
sh["e", "foo"] sh["e", "foo"]
@ -149,75 +149,75 @@ OS
--- Shell#mkdir(*path) --- Shell#mkdir(*path)
Dir.mkdirと同じ(複数可) Dir.mkdirと同じ(複数可)
--- Shell#rmdir(*path) --- Shell#rmdir(*path)
Dir.rmdirと同じ(複数可) Dir.rmdirと同じ(複数可)
== コマンド実行 == コマンド実行
--- System#system(command, *opts) --- System#system(command, *opts)
commandを実行する. commandを実行する.
例) 例)
print sh.system("ls", "-l") print sh.system("ls", "-l")
sh.system("ls", "-l") | sh.head > STDOUT sh.system("ls", "-l") | sh.head > STDOUT
--- System#rehash --- System#rehash
リハッシュする リハッシュする
--- Shell#transact &block --- Shell#transact &block
ブロック中ではshellをselfとして実行する. ブロック中ではshellをselfとして実行する.
例) 例)
sh.transact{system("ls", "-l") | head > STDOUT} sh.transact{system("ls", "-l") | head > STDOUT}
--- Shell#out(dev = STDOUT, &block) --- Shell#out(dev = STDOUT, &block)
transactを呼び出しその結果をdevに出力する. transactを呼び出しその結果をdevに出力する.
== 内部コマンド == 内部コマンド
--- Shell#echo(*strings) --- Shell#echo(*strings)
--- Shell#cat(*files) --- Shell#cat(*files)
--- Shell#glob(patten) --- Shell#glob(patten)
--- Shell#tee(file) --- Shell#tee(file)
これらは実行すると, それらを内容とするFilterオブジェクトを返します. これらは実行すると, それらを内容とするFilterオブジェクトを返します.
--- Filter#each &block --- Filter#each &block
フィルタの一行ずつをblockに渡す. フィルタの一行ずつをblockに渡す.
--- Filter#<(src) --- Filter#<(src)
srcをフィルタの入力とする. srcが, 文字列ならばファイルを, IOであれ srcをフィルタの入力とする. srcが, 文字列ならばファイルを, IOであれ
ばそれをそのまま入力とする. ばそれをそのまま入力とする.
--- Filter#>(to) --- Filter#>(to)
srcをフィルタの出力とする. toが, 文字列ならばファイルに, IOであれ srcをフィルタの出力とする. toが, 文字列ならばファイルに, IOであれ
ばそれをそのまま出力とする. ばそれをそのまま出力とする.
--- Filter#>>(to) --- Filter#>>(to)
srcをフィルタに追加する. toが, 文字列ならばファイルに, IOであれば srcをフィルタに追加する. toが, 文字列ならばファイルに, IOであれば
それをそのまま出力とする. それをそのまま出力とする.
--- Filter#|(filter) --- Filter#|(filter)
パイプ結合 パイプ結合
--- Filter#+(filter) --- Filter#+(filter)
filter1 + filter2 は filter1の出力の後, filter2の出力を行う. filter1 + filter2 は filter1の出力の後, filter2の出力を行う.
--- Filter#to_a --- Filter#to_a
--- Filter#to_s --- Filter#to_s
== 組込みコマンド == 組込みコマンド
--- Shell#atime(file) --- Shell#atime(file)
--- Shell#basename(file, *opt) --- Shell#basename(file, *opt)
@ -239,7 +239,7 @@ OS
--- Shell#truncate(file, length) --- Shell#truncate(file, length)
--- Shell#utime(atime, mtime, *file) --- Shell#utime(atime, mtime, *file)
これらはFileクラスにある同名のクラスメソッドと同じです. これらはFileクラスにある同名のクラスメソッドと同じです.
--- Shell#blockdev?(file) --- Shell#blockdev?(file)
--- Shell#chardev?(file) --- Shell#chardev?(file)
@ -263,7 +263,7 @@ OS
--- Shell#writable_real?(file) --- Shell#writable_real?(file)
--- Shell#zero?(file) --- Shell#zero?(file)
これらはFileTestクラスにある同名のクラスメソッドと同じです. これらはFileTestクラスにある同名のクラスメソッドと同じです.
--- Shell#syscopy(filename_from, filename_to) --- Shell#syscopy(filename_from, filename_to)
--- Shell#copy(filename_from, filename_to) --- Shell#copy(filename_from, filename_to)
@ -273,9 +273,9 @@ OS
--- Shell#makedirs(*filenames) --- Shell#makedirs(*filenames)
--- Shell#install(filename_from, filename_to, mode) --- Shell#install(filename_from, filename_to, mode)
これらはFileToolsクラスにある同名のクラスメソッドと同じです. これらはFileToolsクラスにある同名のクラスメソッドと同じです.
その他, 以下のものがエイリアスされています. その他, 以下のものがエイリアスされています.
--- Shell#cmp <- Shell#compare --- Shell#cmp <- Shell#compare
--- Shell#mv <- Shell#move --- Shell#mv <- Shell#move
@ -283,7 +283,7 @@ OS
--- Shell#rm_f <- Shell#safe_unlink --- Shell#rm_f <- Shell#safe_unlink
--- Shell#mkpath <- Shell#makedirs --- Shell#mkpath <- Shell#makedirs
= サンプル = サンプル
== ex1 == ex1

194
insns.def
View file

@ -47,7 +47,7 @@ nop
/** /**
@c variable @c variable
@e get local variable value (which is pointed by idx). @e get local variable value (which is pointed by idx).
@j idx @j idx
*/ */
DEFINE_INSN DEFINE_INSN
getlocal getlocal
@ -61,7 +61,7 @@ getlocal
/** /**
@c variable @c variable
@e set local variable value (which is pointed by idx) as val. @e set local variable value (which is pointed by idx) as val.
@j idx val @j idx val
*/ */
DEFINE_INSN DEFINE_INSN
setlocal setlocal
@ -75,7 +75,7 @@ setlocal
/** /**
@c variable @c variable
@e get special local variable ($~, $_, ..) value. @e get special local variable ($~, $_, ..) value.
@j $~, $_, ... @j $~, $_, ...
*/ */
DEFINE_INSN DEFINE_INSN
getspecial getspecial
@ -89,7 +89,7 @@ getspecial
/** /**
@c variable @c variable
@e set special local variable ($~, $_, ...) value as obj. @e set special local variable ($~, $_, ...) value as obj.
@j $~, $_, ... @j $~, $_, ...
*/ */
DEFINE_INSN DEFINE_INSN
setspecial setspecial
@ -104,8 +104,8 @@ setspecial
@c variable @c variable
@e get block local variable(which is pointed by idx and level). @e get block local variable(which is pointed by idx and level).
level means nest level of block, and specify how above this variable. level means nest level of block, and specify how above this variable.
@j level, idx @j level, idx
level level
*/ */
DEFINE_INSN DEFINE_INSN
getdynamic getdynamic
@ -125,8 +125,8 @@ getdynamic
@c variable @c variable
@e set block local variable(which is pointed by 'idx') as val. @e set block local variable(which is pointed by 'idx') as val.
level means nest level of block, and specify how above this variable. level means nest level of block, and specify how above this variable.
@j level, idx val @j level, idx val
level level
*/ */
DEFINE_INSN DEFINE_INSN
setdynamic setdynamic
@ -146,7 +146,7 @@ setdynamic
@c variable @c variable
@e get instance variable id of obj. @e get instance variable id of obj.
if is_local is not 0, search as class local variable. if is_local is not 0, search as class local variable.
@j self id @j self id
*/ */
DEFINE_INSN DEFINE_INSN
getinstancevariable getinstancevariable
@ -161,7 +161,7 @@ getinstancevariable
@c variable @c variable
@e set instance variable id of obj as val. @e set instance variable id of obj as val.
if is_local is not 0, search as class local variable. if is_local is not 0, search as class local variable.
@j self id val @j self id val
*/ */
DEFINE_INSN DEFINE_INSN
setinstancevariable setinstancevariable
@ -175,7 +175,7 @@ setinstancevariable
/** /**
@c variable @c variable
@e get class variable id of klass as val. @e get class variable id of klass as val.
@j id @j id
*/ */
DEFINE_INSN DEFINE_INSN
getclassvariable getclassvariable
@ -190,7 +190,7 @@ getclassvariable
/** /**
@c variable @c variable
@e set class variable id of klass as val. @e set class variable id of klass as val.
@j klass id val @j klass id val
*/ */
DEFINE_INSN DEFINE_INSN
setclassvariable setclassvariable
@ -209,10 +209,10 @@ setclassvariable
are searched in current scope. if klass is Qfalse, constant as are searched in current scope. if klass is Qfalse, constant as
top level constant. otherwise, get constant under klass top level constant. otherwise, get constant under klass
class or module. class or module.
@j id @j id
klass Qnil klass Qnil
Qfalse Qfalse
klass klass
*/ */
DEFINE_INSN DEFINE_INSN
getconstant getconstant
@ -231,10 +231,10 @@ getconstant
top level constant. otherwise, set constant under klass top level constant. otherwise, set constant under klass
class or module. class or module.
@j id val @j id val
klass Qfalse id klass Qfalse id
Qnil Qnil
klass klass
*/ */
DEFINE_INSN DEFINE_INSN
setconstant setconstant
@ -250,7 +250,7 @@ setconstant
/** /**
@c variable @c variable
@e get global variable id. @e get global variable id.
@j id @j id
*/ */
DEFINE_INSN DEFINE_INSN
getglobal getglobal
@ -264,7 +264,7 @@ getglobal
/** /**
@c variable @c variable
@e set global variable id as val. @e set global variable id as val.
@j id @j id
*/ */
DEFINE_INSN DEFINE_INSN
setglobal setglobal
@ -283,7 +283,7 @@ setglobal
/** /**
@c put @c put
@e put nil to stack. @e put nil to stack.
@j nil @j nil
*/ */
DEFINE_INSN DEFINE_INSN
putnil putnil
@ -297,7 +297,7 @@ putnil
/** /**
@c put @c put
@e put self. @e put self.
@j self @j self
*/ */
DEFINE_INSN DEFINE_INSN
putself putself
@ -312,7 +312,7 @@ putself
@c put @c put
@e put some object. @e put some object.
i.e. Fixnum, true, false, nil, and so on. i.e. Fixnum, true, false, nil, and so on.
@j val @j val
i.e. Fixnum, true, false, nil, and so on. i.e. Fixnum, true, false, nil, and so on.
*/ */
DEFINE_INSN DEFINE_INSN
@ -327,8 +327,8 @@ putobject
/** /**
@c put @c put
@e put special object. "value_type" is for expansion. @e put special object. "value_type" is for expansion.
@j val @j val
value_type value_type
*/ */
DEFINE_INSN DEFINE_INSN
putspecialobject putspecialobject
@ -370,7 +370,7 @@ putiseq
/** /**
@c put @c put
@e put string val. string will be copied. @e put string val. string will be copied.
@j @j
*/ */
DEFINE_INSN DEFINE_INSN
putstring putstring
@ -384,7 +384,7 @@ putstring
/** /**
@c put @c put
@e put concatenate strings @e put concatenate strings
@j n @j n
*/ */
DEFINE_INSN DEFINE_INSN
concatstrings concatstrings
@ -405,7 +405,7 @@ concatstrings
/** /**
@c put @c put
@e to_str @e to_str
@j to_str @j to_str
*/ */
DEFINE_INSN DEFINE_INSN
tostring tostring
@ -419,8 +419,8 @@ tostring
/** /**
@c put @c put
@e to Regexp @e to Regexp
@j str @j str
opt opt
*/ */
DEFINE_INSN DEFINE_INSN
toregexp toregexp
@ -442,7 +442,7 @@ toregexp
/** /**
@c put @c put
@e put new array. @e put new array.
@j num @j num
*/ */
DEFINE_INSN DEFINE_INSN
newarray newarray
@ -457,7 +457,7 @@ newarray
/** /**
@c put @c put
@e dup array @e dup array
@j ary dup @j ary dup
*/ */
DEFINE_INSN DEFINE_INSN
duparray duparray
@ -471,13 +471,13 @@ duparray
/** /**
@c put @c put
@e expand array to num objects. @e expand array to num objects.
@j @j
num以下ならば nil num以上なら num以下ならば nil num以上なら
num以上の要素は切り捨てる num以上の要素は切り捨てる
num - 1 nil num - 1 nil
flag flag
flag: 0x01 - flag: 0x01 -
flag: 0x02 - postarg flag: 0x02 - postarg
flag: 0x04 - reverse? flag: 0x04 - reverse?
*/ */
DEFINE_INSN DEFINE_INSN
@ -492,7 +492,7 @@ expandarray
/** /**
@c put @c put
@e concat two arrays @e concat two arrays
@j ary1, ary2 @j ary1, ary2
*/ */
DEFINE_INSN DEFINE_INSN
concatarray concatarray
@ -521,7 +521,7 @@ concatarray
/** /**
@c put @c put
@e splat array @e splat array
@j ary to_a @j ary to_a
*/ */
DEFINE_INSN DEFINE_INSN
splatarray splatarray
@ -539,7 +539,7 @@ splatarray
/** /**
@c put @c put
@e check value is included in ary @e check value is included in ary
@j ary obj case/when @j ary obj case/when
*/ */
DEFINE_INSN DEFINE_INSN
checkincludearray checkincludearray
@ -579,8 +579,8 @@ checkincludearray
/** /**
@c put @c put
@e put new Hash. @e put new Hash.
@j n @j n
n 2 n 2
*/ */
DEFINE_INSN DEFINE_INSN
newhash newhash
@ -602,7 +602,7 @@ newhash
/** /**
@c put @c put
@e put new Range object.(Range.new(low, high, flag)) @e put new Range object.(Range.new(low, high, flag))
@j Range.new(low, high, flag) @j Range.new(low, high, flag)
*/ */
DEFINE_INSN DEFINE_INSN
newrange newrange
@ -620,7 +620,7 @@ newrange
/** /**
@c stack @c stack
@e pop from stack. @e pop from stack.
@j @j
*/ */
DEFINE_INSN DEFINE_INSN
pop pop
@ -635,7 +635,7 @@ pop
/** /**
@c stack @c stack
@e duplicate stack top. @e duplicate stack top.
@j @j
*/ */
DEFINE_INSN DEFINE_INSN
dup dup
@ -649,7 +649,7 @@ dup
/** /**
@c stack @c stack
@e duplicate stack top n elements @e duplicate stack top n elements
@j n @j n
*/ */
DEFINE_INSN DEFINE_INSN
dupn dupn
@ -669,7 +669,7 @@ dupn
/** /**
@c stack @c stack
@e swap top 2 vals @e swap top 2 vals
@j 2 @j 2
*/ */
DEFINE_INSN DEFINE_INSN
swap swap
@ -683,7 +683,7 @@ swap
/** /**
@c stack @c stack
@e for stack caching. @e for stack caching.
@j 調 @j 調
*/ */
DEFINE_INSN DEFINE_INSN
reput reput
@ -697,7 +697,7 @@ reput
/** /**
@c stack @c stack
@e get nth stack value from stack top @e get nth stack value from stack top
@j n @j n
*/ */
DEFINE_INSN DEFINE_INSN
topn topn
@ -711,7 +711,7 @@ topn
/** /**
@c stack @c stack
@e set Nth stack entry to stack top @e set Nth stack entry to stack top
@j n @j n
*/ */
DEFINE_INSN DEFINE_INSN
setn setn
@ -725,7 +725,7 @@ setn
/** /**
@c stack @c stack
@e empt current stack @e empt current stack
@j current stack @j current stack
*/ */
DEFINE_INSN DEFINE_INSN
adjuststack adjuststack
@ -744,7 +744,7 @@ adjuststack
/** /**
@c setting @c setting
@e defined? @e defined?
@j defined? @j defined?
*/ */
DEFINE_INSN DEFINE_INSN
defined defined
@ -862,7 +862,7 @@ defined
/** /**
@c setting @c setting
@e trace @e trace
@j trace @j trace
*/ */
DEFINE_INSN DEFINE_INSN
trace trace
@ -884,9 +884,9 @@ trace
@e @e
enter class definition scope. if super is Qfalse, and clsas enter class definition scope. if super is Qfalse, and clsas
"klass" is defined, it's redefine. otherwise, define "klass" class. "klass" is defined, it's redefine. otherwise, define "klass" class.
@j @j
super Qfalse klassクラスが定義されていれば再定義である super Qfalse klassクラスが定義されていれば再定義である
klass klass
*/ */
DEFINE_INSN DEFINE_INSN
defineclass defineclass
@ -986,7 +986,7 @@ defineclass
/** /**
@c method/iterator @c method/iterator
@e obj.send(id, args..) # args.size => num @e obj.send(id, args..) # args.size => num
@j @j
obj.send(id, args..) # args.size => num obj.send(id, args..) # args.size => num
flag & VM_CALL_ARGS_SPLAT_BIT != 0 -> splat last arg flag & VM_CALL_ARGS_SPLAT_BIT != 0 -> splat last arg
flag & VM_CALL_ARGS_BLOCKARG_BIT != 0 -> Proc as Block flag & VM_CALL_ARGS_BLOCKARG_BIT != 0 -> Proc as Block
@ -1018,9 +1018,9 @@ send
/** /**
@c method/iterator @c method/iterator
@e super(args) # args.size => num @e super(args) # args.size => num
@j super @j super
super(args) # args.size => num super(args) # args.size => num
flag send flag send
*/ */
DEFINE_INSN DEFINE_INSN
invokesuper invokesuper
@ -1054,7 +1054,7 @@ invokesuper
/** /**
@c method/iterator @c method/iterator
@e yield(args) # args.size => num, flag shows expand argument or not @e yield(args) # args.size => num, flag shows expand argument or not
@j yield @j yield
yield(args) # args.size => num yield(args) # args.size => num
*/ */
DEFINE_INSN DEFINE_INSN
@ -1073,7 +1073,7 @@ invokeblock
/** /**
@c method/iterator @c method/iterator
@e return from this scope. @e return from this scope.
@j @j
*/ */
DEFINE_INSN DEFINE_INSN
leave leave
@ -1096,7 +1096,7 @@ leave
/** /**
@c method/iterator @c method/iterator
@e return from this vm loop @e return from this vm loop
@j VM loop @j VM loop
*/ */
DEFINE_INSN DEFINE_INSN
finish finish
@ -1119,7 +1119,7 @@ finish
/** /**
@c exception @c exception
@e longjump @e longjump
@j @j
*/ */
DEFINE_INSN DEFINE_INSN
throw throw
@ -1140,7 +1140,7 @@ throw
/** /**
@c jump @c jump
@e set PC to (PC + dst). @e set PC to (PC + dst).
@j PC (PC + dst) @j PC (PC + dst)
*/ */
DEFINE_INSN DEFINE_INSN
jump jump
@ -1155,7 +1155,7 @@ jump
/** /**
@c jump @c jump
@e if val is not false or nil, set PC to (PC + dst). @e if val is not false or nil, set PC to (PC + dst).
@j val false nil PC (PC + dst) @j val false nil PC (PC + dst)
*/ */
DEFINE_INSN DEFINE_INSN
branchif branchif
@ -1172,7 +1172,7 @@ branchif
/** /**
@c jump @c jump
@e if val is false or nil, set PC to (PC + dst). @e if val is false or nil, set PC to (PC + dst).
@j val false nil PC (PC + dst) @j val false nil PC (PC + dst)
*/ */
DEFINE_INSN DEFINE_INSN
branchunless branchunless
@ -1194,7 +1194,7 @@ branchunless
/** /**
@c optimize @c optimize
@e inline cache @e inline cache
@j dst @j dst
*/ */
DEFINE_INSN DEFINE_INSN
getinlinecache getinlinecache
@ -1215,7 +1215,7 @@ getinlinecache
/** /**
@c optimize @c optimize
@e inline cache (once) @e inline cache (once)
@j once @j once
*/ */
DEFINE_INSN DEFINE_INSN
onceinlinecache onceinlinecache
@ -1244,7 +1244,7 @@ onceinlinecache
/** /**
@c optimize @c optimize
@e set inline cache @e set inline cache
@j @j
*/ */
DEFINE_INSN DEFINE_INSN
setinlinecache setinlinecache
@ -1263,7 +1263,7 @@ setinlinecache
/** /**
@c optimize @c optimize
@e case dispatcher @e case dispatcher
@j case @j case
*/ */
DEFINE_INSN DEFINE_INSN
opt_case_dispatch opt_case_dispatch
@ -1304,7 +1304,7 @@ opt_case_dispatch
/** /**
@c optimize @c optimize
@e check environment @e check environment
@j @j
*/ */
DEFINE_INSN DEFINE_INSN
opt_checkenv opt_checkenv
@ -1326,7 +1326,7 @@ opt_checkenv
/** /**
@c optimize @c optimize
@e optimized X+Y. @e optimized X+Y.
@j X+Y @j X+Y
*/ */
DEFINE_INSN DEFINE_INSN
opt_plus opt_plus
@ -1402,7 +1402,7 @@ opt_plus
/** /**
@c optimize @c optimize
@e optimized X-Y. @e optimized X-Y.
@j X-Y @j X-Y
*/ */
DEFINE_INSN DEFINE_INSN
opt_minus opt_minus
@ -1451,7 +1451,7 @@ opt_minus
/** /**
@c optimize @c optimize
@e optimized X*Y. @e optimized X*Y.
@j X*Y @j X*Y
*/ */
DEFINE_INSN DEFINE_INSN
opt_mult opt_mult
@ -1505,7 +1505,7 @@ opt_mult
/** /**
@c optimize @c optimize
@e optimized X/Y. @e optimized X/Y.
@j X/Y @j X/Y
*/ */
DEFINE_INSN DEFINE_INSN
opt_div opt_div
@ -1569,7 +1569,7 @@ opt_div
/** /**
@c optimize @c optimize
@e optimized X%Y. @e optimized X%Y.
@j X%Y @j X%Y
*/ */
DEFINE_INSN DEFINE_INSN
opt_mod opt_mod
@ -1648,7 +1648,7 @@ opt_mod
/** /**
@c optimize @c optimize
@e optimized X==Y. @e optimized X==Y.
@j X==Y @j X==Y
*/ */
DEFINE_INSN DEFINE_INSN
opt_eq opt_eq
@ -1669,7 +1669,7 @@ opt_eq
/** /**
@c optimize @c optimize
@e optimized X!=Y. @e optimized X!=Y.
@j X!=Y @j X!=Y
*/ */
DEFINE_INSN DEFINE_INSN
opt_neq opt_neq
@ -1700,7 +1700,7 @@ opt_neq
/** /**
@c optimize @c optimize
@e optimized X<Y. @e optimized X<Y.
@j X<Y @j X<Y
*/ */
DEFINE_INSN DEFINE_INSN
opt_lt opt_lt
@ -1750,7 +1750,7 @@ opt_lt
/** /**
@c optimize @c optimize
@e optimized X<=Y. @e optimized X<=Y.
@j X<=Y @j X<=Y
*/ */
DEFINE_INSN DEFINE_INSN
opt_le opt_le
@ -1780,7 +1780,7 @@ opt_le
/** /**
@c optimize @c optimize
@e optimized X>Y. @e optimized X>Y.
@j X>Y @j X>Y
*/ */
DEFINE_INSN DEFINE_INSN
opt_gt opt_gt
@ -1830,7 +1830,7 @@ opt_gt
/** /**
@c optimize @c optimize
@e optimized X>=Y. @e optimized X>=Y.
@j X>=Y @j X>=Y
*/ */
DEFINE_INSN DEFINE_INSN
opt_ge opt_ge
@ -1859,7 +1859,7 @@ opt_ge
/** /**
@c optimize @c optimize
@e << @e <<
@j X<<Y @j X<<Y
*/ */
DEFINE_INSN DEFINE_INSN
opt_ltlt opt_ltlt
@ -1893,7 +1893,7 @@ opt_ltlt
/** /**
@c optimize @c optimize
@e [] @e []
@j recv[obj] @j recv[obj]
*/ */
DEFINE_INSN DEFINE_INSN
opt_aref opt_aref
@ -1923,7 +1923,7 @@ opt_aref
/** /**
@c optimize @c optimize
@e recv[obj] = set @e recv[obj] = set
@j recv[obj] = set @j recv[obj] = set
*/ */
DEFINE_INSN DEFINE_INSN
opt_aset opt_aset
@ -1956,7 +1956,7 @@ opt_aset
/** /**
@c optimize @c optimize
@e optimized length @e optimized length
@j recv.length() @j recv.length()
*/ */
DEFINE_INSN DEFINE_INSN
opt_length opt_length
@ -1991,7 +1991,7 @@ opt_length
/** /**
@c optimize @c optimize
@e optimized size @e optimized size
@j recv.size() @j recv.size()
*/ */
DEFINE_INSN DEFINE_INSN
opt_size opt_size
@ -2026,7 +2026,7 @@ opt_size
/** /**
@c optimize @c optimize
@e optimized succ @e optimized succ
@j recv.succ() @j recv.succ()
*/ */
DEFINE_INSN DEFINE_INSN
opt_succ opt_succ
@ -2073,7 +2073,7 @@ opt_succ
/** /**
@c optimize @c optimize
@e optimized not @e optimized not
@j recv.!() @j recv.!()
*/ */
DEFINE_INSN DEFINE_INSN
opt_not opt_not
@ -2097,7 +2097,7 @@ opt_not
/** /**
@c optimize @c optimize
@e optimized regexp match @e optimized regexp match
@j @j
*/ */
DEFINE_INSN DEFINE_INSN
opt_regexpmatch1 opt_regexpmatch1
@ -2111,7 +2111,7 @@ opt_regexpmatch1
/** /**
@c optimize @c optimize
@e optimized regexp match 2 @e optimized regexp match 2
@j 2 @j 2
*/ */
DEFINE_INSN DEFINE_INSN
opt_regexpmatch2 opt_regexpmatch2
@ -2130,7 +2130,7 @@ opt_regexpmatch2
/** /**
@c optimize @c optimize
@e call native compiled method @e call native compiled method
@j @j
*/ */
DEFINE_INSN DEFINE_INSN
opt_call_c_function opt_call_c_function
@ -2167,7 +2167,7 @@ bitblt
/** /**
@c joke @c joke
@e The Answer to Life, the Universe, and Everything @e The Answer to Life, the Universe, and Everything
@j @j
*/ */
DEFINE_INSN DEFINE_INSN
answer answer