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:
parent
a17fd731c9
commit
60c8455253
13 changed files with 1545 additions and 1386 deletions
72
COPYING.ja
72
COPYING.ja
|
|
@ -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
|
任を持ちません.
|
||||||
|
|
|
||||||
|
|
@ -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):
|
||||||
|
|
|
||||||
1617
README.EXT.ja
1617
README.EXT.ja
File diff suppressed because it is too large
Load diff
200
README.ja
200
README.ja
|
|
@ -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 X,BeOSなどの上でも動く
|
動くだけでなく,Windows, Mac OS X,BeOSなどの上でも動く
|
||||||
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:
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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を返します.
|
||||||
このメソッドがブロック付きで呼ばれた場合には,マッチした要素の
|
このメソッドがブロック付きで呼ばれた場合には,マッチした要素の
|
||||||
配列がブロック引数として渡され,ブロックが評価されます.
|
配列がブロック引数として渡され,ブロックが評価されます.
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
まで電子メールでバグレポートをお送りください.
|
まで電子メールでバグレポートをお送りください.
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
150
doc/shell.rd.ja
150
doc/shell.rd.ja
|
|
@ -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
194
insns.def
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue