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
$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
または以下に示す条件で本プログラムを再配布できます
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
$B<+M3$KJQ99$G$-$^$9!%(B
2. 以下の条件のいずれかを満たす時に本プログラムのソースを
自由に変更できます.
(a) $B%M%C%H%K%e!<%:$K%]%9%H$7$?$j!$:n<T$KJQ99$rAwIU$9$k(B
$B$J$I$NJ}K!$G!$JQ99$r8x3+$9$k!%(B
(a) ネットニューズにポストしたり,作者に変更を送付する
などの方法で,変更を公開する.
(b) $BJQ99$7$?K\%W%m%0%i%`$r<+J,$N=jB0$9$kAH?%FbIt$@$1$G(B
$B;H$&!%(B
(b) 変更した本プログラムを自分の所属する組織内部だけで
使う.
(c) $BJQ99E@$rL@<($7$?$&$(!$%=%U%H%&%'%"$NL>A0$rJQ99$9$k!%(B
$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
(c) 変更点を明示したうえ,ソフトウェアの名前を変更する.
そのソフトウェアを配布する時には変更前の本プログラ
ムも同時に配布する.または変更前の本プログラムのソー
スの入手法を明示する.
(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
$B%k$7$?%*%V%8%'%/%H%3!<%I$d<B9T7A<0$G$bG[I[$G$-$^$9!%(B
3. 以下の条件のいずれかを満たす時に本プログラムをコンパイ
ルしたオブジェクトコードや実行形式でも配布できます.
(a) $B%P%$%J%j$r<u$1<h$C$??M$,%=!<%9$rF~<j$G$-$k$h$&$K!$(B
$B%=!<%9$NF~<jK!$rL@<($9$k!%(B
(a) バイナリを受け取った人がソースを入手できるように,
ソースの入手法を明示する.
(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
$B%k$N%=!<%9%3!<%I$NF~<jK!$rL@<($9$k!%(B
(c) 変更を行ったバイナリは名前を変更したうえ,オリジナ
ルのソースコードの入手法を明示する.
(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
$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
4. 他のプログラムへの引用はいかなる目的であれ自由です.た
だし,本プログラムに含まれる他の作者によるコードは,そ
れぞれの作者の意向による制限が加えられる場合があります.
$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
$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
5. 本プログラムへの入力となるスクリプトおよび,本プログラ
ムからの出力の権利は本プログラムの作者ではなく,それぞ
れの入出力を生成した人に属します.また,本プログラムに
組み込まれるための拡張ライブラリについても同様です.
6. $BK\%W%m%0%i%`$OL5J]>Z$G$9!%:n<T$OK\%W%m%0%i%`$r%5%]!<%H(B
$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
6. 本プログラムは無保証です.作者は本プログラムをサポート
する意志はありますが,プログラム自身のバグあるいは本プ
ログラムの実行などから発生するいかなる損害に対しても責
任を持ちません.

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>
* 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, 特異メソッドなど)
+ 演算子オーバーロード
+ 例外処理機能
+ イテレータとクロージャ
+ ガーベージコレクタ
+ ダイナミックローディング (アーキテクチャによる)
+ 移植性が高い.多くのUnix-like/POSIX互換プラットフォーム上で
動くだけでなく,Windows, Mac OS X,BeOSなどの上でも動く
+ シンプルな文法
+ 普通のオブジェクト指向機能(クラス,メソッドコールなど)
+ 特殊なオブジェクト指向機能(Mixin, 特異メソッドなど)
+ 演算子オーバーロード
+ 例外処理機能
+ イテレータとクロージャ
+ ガーベージコレクタ
+ ダイナミックローディング (アーキテクチャによる)
+ 移植性が高い.多くのUnix-like/POSIX互換プラットフォーム上で
動くだけでなく,Windows, Mac OS X,BeOSなどの上でも動く
cf. http://redmine.ruby-lang.org/wiki/ruby-19/SupportedPlatformsJa
* 入手法
* 入手法
** FTPで
** FTPで
以下の場所においてあります.
以下の場所においてあります.
ftp://ftp.ruby-lang.org/pub/ruby/
** Subversionで
** Subversionで
開発先端のソースコードは次のコマンドで取得できます.
開発先端のソースコードは次のコマンドで取得できます.
$ svn co http://svn.ruby-lang.org/repos/ruby/trunk/ ruby
他に開発中のブランチの一覧は次のコマンドで見られます.
他に開発中のブランチの一覧は次のコマンドで見られます.
$ svn ls http://svn.ruby-lang.org/repos/ruby/branches/
* ホームページ
* ホームページ
RubyのホームページのURLは
RubyのホームページのURLは
http://www.ruby-lang.org/
です.
です.
* メーリングリスト
* メーリングリスト
Rubyのメーリングリストがあります。参加希望の方は
Rubyのメーリングリストがあります。参加希望の方は
ruby-list-ctl@ruby-lang.org
まで本文に
まで本文に
subscribe YourFirstName YourFamilyName
<<<<<<< HEAD
と書いて送って下さい。
と書いて送って下さい。
=======
と書いて送って下さい。
>>>>>>> Change encoding from EUC-JP to UTF-8. [Feature #5128]
Ruby開発者向けメーリングリストもあります。こちらではrubyのバ
グ、将来の仕様拡張など実装上の問題について議論されています。
参加希望の方は
Ruby開発者向けメーリングリストもあります。こちらではrubyのバ
グ、将来の仕様拡張など実装上の問題について議論されています。
参加希望の方は
ruby-dev-ctl@ruby-lang.org
までruby-listと同様の方法でメールしてください。
<<<<<<< HEAD
までruby-listと同様の方法でメールしてください。
Ruby拡張モジュールについて話し合うruby-extメーリングリストと
数学関係の話題について話し合うruby-mathメーリングリストと
英語で話し合うruby-talkメーリングリストもあります。参加方法
はどれも同じです。
Ruby拡張モジュールについて話し合うruby-extメーリングリストと
数学関係の話題について話し合うruby-mathメーリングリストと
英語で話し合うruby-talkメーリングリストもあります。参加方法
はどれも同じです。
=======
までruby-listと同様の方法でメールしてください。
Ruby拡張モジュールについて話し合うruby-extメーリングリストと
数学関係の話題について話し合うruby-mathメーリングリストと
英語で話し合うruby-talkメーリングリストもあります。参加方法
はどれも同じです。
>>>>>>> Change encoding from EUC-JP to UTF-8. [Feature #5128]
* コンパイル・インストール
* コンパイル・インストール
以下の手順で行ってください.
以下の手順で行ってください.
1. もしconfigureファイルが見つからない、もしくは
configure.inより古いようなら、autoconfを実行して
新しくconfigureを生成する
1. もしconfigureファイルが見つからない、もしくは
configure.inより古いようなら、autoconfを実行して
新しくconfigureを生成する
2. configureを実行してMakefileなどを生成する
2. configureを実行してMakefileなどを生成する
環境によってはデフォルトのCコンパイラ用オプションが付き
ます.configureオプションで optflags=.. warnflags=.. 等
で上書きできます.
環境によってはデフォルトのCコンパイラ用オプションが付き
ます.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
以下のディレクトリを作って,そこにファイルをインストー
ルします.
以下のディレクトリを作って,そこにファイルをインストー
ルします.
* ${DESTDIR}${prefix}/bin
* ${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}
@ -136,48 +150,48 @@ Ruby
* ${DESTDIR}${prefix}/share/man/man1
* ${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system
RubyのAPIバージョンが`x.y.z'であれば,((|${MAJOR}|))は
`x'で,((|${MINOR}|))は`y',((|${TEENY}|))は`z'です.
RubyのAPIバージョンが`x.y.z'であれば,((|${MAJOR}|))は
`x'で,((|${MINOR}|))は`y',((|${TEENY}|))は`z'です.
注意: APIバージョンのteenyは,Rubyプログラムのバージョ
ンとは異なることがあります.
注意: APIバージョンのteenyは,Rubyプログラムのバージョ
ンとは異なることがあります.
rootで作業する必要があるかもしれません.
rootで作業する必要があるかもしれません.
もし,コンパイル時にエラーが発生した場合にはエラーのログとマ
シン,OSの種類を含むできるだけ詳しいレポートを作者に送ってく
ださると他の方のためにもなります.
もし,コンパイル時にエラーが発生した場合にはエラーのログとマ
シン,OSの種類を含むできるだけ詳しいレポートを作者に送ってく
ださると他の方のためにもなります.
* 移植
* 移植
UNIXであればconfigureがほとんどの差異を吸収してくれるはずで
すが,思わぬ見落としがあった場合(あるに違いない),作者にその
ことをレポートすれば,解決できるかも知れません.
UNIXであればconfigureがほとんどの差異を吸収してくれるはずで
すが,思わぬ見落としがあった場合(あるに違いない),作者にその
ことをレポートすれば,解決できるかも知れません.
アーキテクチャにもっとも依存するのはGC部です.RubyのGCは対象
のアーキテクチャがsetjmp()またはgetcontext()によって全てのレ
ジスタをjmp_bufやucontext_tに格納することと,jmp_bufや
ucontext_tとスタックが32bitアラインメントされていることを仮定
しています.特に前者が成立しない場合の対応は非常に困難でしょ
う.後者の解決は比較的簡単で,gc.cでスタックをマークしている
部分にアラインメントのバイト数だけずらしてマークするコードを
追加するだけで済みます.「defined(__mc68000__)」で括られてい
る部分を参考にしてください.
アーキテクチャにもっとも依存するのはGC部です.RubyのGCは対象
のアーキテクチャがsetjmp()またはgetcontext()によって全てのレ
ジスタをjmp_bufやucontext_tに格納することと,jmp_bufや
ucontext_tとスタックが32bitアラインメントされていることを仮定
しています.特に前者が成立しない場合の対応は非常に困難でしょ
う.後者の解決は比較的簡単で,gc.cでスタックをマークしている
部分にアラインメントのバイト数だけずらしてマークするコードを
追加するだけで済みます.「defined(__mc68000__)」で括られてい
る部分を参考にしてください.
レジスタウィンドウを持つCPUでは,レジスタウィンドウをスタッ
クにフラッシュするアセンブラコードを追加する必要があるかも知
れません.
レジスタウィンドウを持つCPUでは,レジスタウィンドウをスタッ
クにフラッシュするアセンブラコードを追加する必要があるかも知
れません.
* 配布条件
* 配布条件
COPYING.jaファイルを参照してください。
COPYING.jaファイルを参照してください。
* 著者
* 著者
コメント,バグレポートその他は matz@netlab.jp まで.
コメント,バグレポートその他は matz@netlab.jp まで.
-------------------------------------------------------
created at: Thu Aug 3 11:57:36 JST 1995
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
=begin
= Etc(モジュール)
= Etc(モジュール)
実行しているOSからの情報を得るためのモジュール.クラスにインクルード
して使うこともできる.
実行しているOSからの情報を得るためのモジュール.クラスにインクルード
して使うこともできる.
== Module Function
--- getlogin
自分のlogin名を返す.これが失敗した場合はgetpwuid()を用いると
良い.
自分のlogin名を返す.これが失敗した場合はgetpwuid()を用いると
良い.
--- getpwnam(name)
/etc/passwdファイル(あるいはDBMファイルやNISデータベース)を検
索し,nameの名前を持つpasswdエントリを返す.戻り値はpasswd構造
体で以下のメンバを持つ.
/etc/passwdファイル(あるいはDBMファイルやNISデータベース)を検
索し,nameの名前を持つpasswdエントリを返す.戻り値はpasswd構造
体で以下のメンバを持つ.
struct passwd
name # ユーザ名(文字列)
passwd # パスワード(文字列)
uid # ユーザID(整数)
gid # グループID(整数)
gecos # gecosフィールド(文字列)
dir # ホームディレクトリ(文字列)
shell # ログインシェル(文字列)
# 以降のメンバはシステムによっては提供されない.
change # パスワード変更時間(整数)
quota # クォータ(整数)
age # エージ(整数)
class # ユーザアクセスクラス(文字列)
comment # コメント(文字列)
expire # アカウント有効期限(整数)
name # ユーザ名(文字列)
passwd # パスワード(文字列)
uid # ユーザID(整数)
gid # グループID(整数)
gecos # gecosフィールド(文字列)
dir # ホームディレクトリ(文字列)
shell # ログインシェル(文字列)
# 以降のメンバはシステムによっては提供されない.
change # パスワード変更時間(整数)
quota # クォータ(整数)
age # エージ(整数)
class # ユーザアクセスクラス(文字列)
comment # コメント(文字列)
expire # アカウント有効期限(整数)
end
詳細はgetpwnam(3)を参照のこと.
詳細はgetpwnam(3)を参照のこと.
--- getpwuid([uid])
uidをユーザIDとするpasswdエントリを返す.戻り値はgetpwnam()と
同様である.引数を省略した場合にはgetuid()の値を用いる.詳細は
getpwuid(3)を参照のこと.
uidをユーザIDとするpasswdエントリを返す.戻り値はgetpwnam()と
同様である.引数を省略した場合にはgetuid()の値を用いる.詳細は
getpwuid(3)を参照のこと.
--- getgrgid(gid)
/etc/groupファイル(あるいは…getpwnam参照)を検索し,gidをグルー
プIDとするグループエントリを返す.戻り値はgroup構造体で以下の
メンバを持つ.
/etc/groupファイル(あるいは…getpwnam参照)を検索し,gidをグルー
プIDとするグループエントリを返す.戻り値はgroup構造体で以下の
メンバを持つ.
struct group
name # グループ名(文字列)
passwd # グループのパスワード(文字列)
gid # グループID(整数)
mem # グループメンバ名の配列
name # グループ名(文字列)
passwd # グループのパスワード(文字列)
gid # グループID(整数)
mem # グループメンバ名の配列
end
詳細はgetgrgid(3)を参照のこと.
詳細はgetgrgid(3)を参照のこと.
--- getgrnam(name)
nameという名前のグループエントリを返す.戻り値はgetgrgid()と同
様である.詳細はgetgrnam(3)を参照.
nameという名前のグループエントリを返す.戻り値はgetgrgid()と同
様である.詳細はgetgrnam(3)を参照.
--- group
全てのグループエントリを順にアクセスするためのイテレータ.
全てのグループエントリを順にアクセスするためのイテレータ.
--- passwd
全てのpasswdエントリを順にアクセスするためのイテレータ.
全てのpasswdエントリを順にアクセスするためのイテレータ.
=end

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

194
insns.def
View file

@ -47,7 +47,7 @@ nop
/**
@c variable
@e get local variable value (which is pointed by idx).
@j idx で指定されたローカル変数をスタックに置く。
@j idx で指定されたローカル変数をスタックに置く。
*/
DEFINE_INSN
getlocal
@ -61,7 +61,7 @@ getlocal
/**
@c variable
@e set local variable value (which is pointed by idx) as val.
@j idx で指定されたローカル変数を val に設定する。
@j idx で指定されたローカル変数を val に設定する。
*/
DEFINE_INSN
setlocal
@ -75,7 +75,7 @@ setlocal
/**
@c variable
@e get special local variable ($~, $_, ..) value.
@j 特殊なローカル変数($~, $_, ...)の値を得る。
@j 特殊なローカル変数($~, $_, ...)の値を得る。
*/
DEFINE_INSN
getspecial
@ -89,7 +89,7 @@ getspecial
/**
@c variable
@e set special local variable ($~, $_, ...) value as obj.
@j 特別なローカル変数($~, $_, ...)の値を設定する。
@j 特別なローカル変数($~, $_, ...)の値を設定する。
*/
DEFINE_INSN
setspecial
@ -104,8 +104,8 @@ setspecial
@c variable
@e get block local variable(which is pointed by idx and level).
level means nest level of block, and specify how above this variable.
@j level, idx で指定されたブロックローカル変数の値をスタックに置く。
level はブロックのネストレベルで、何段上かを示す。
@j level, idx で指定されたブロックローカル変数の値をスタックに置く。
level はブロックのネストレベルで、何段上かを示す。
*/
DEFINE_INSN
getdynamic
@ -125,8 +125,8 @@ getdynamic
@c variable
@e set block local variable(which is pointed by 'idx') as val.
level means nest level of block, and specify how above this variable.
@j level, idx で指定されたブロックローカル変数の値を val にする。
level はブロックのネストレベルで、何段上かを示す。
@j level, idx で指定されたブロックローカル変数の値を val にする。
level はブロックのネストレベルで、何段上かを示す。
*/
DEFINE_INSN
setdynamic
@ -146,7 +146,7 @@ setdynamic
@c variable
@e get instance variable id of obj.
if is_local is not 0, search as class local variable.
@j self のインスタンス変数 id の値を得る。
@j self のインスタンス変数 id の値を得る。
*/
DEFINE_INSN
getinstancevariable
@ -161,7 +161,7 @@ getinstancevariable
@c variable
@e set instance variable id of obj as val.
if is_local is not 0, search as class local variable.
@j self のインスタンス変数 id を val にする。
@j self のインスタンス変数 id を val にする。
*/
DEFINE_INSN
setinstancevariable
@ -175,7 +175,7 @@ setinstancevariable
/**
@c variable
@e get class variable id of klass as val.
@j 現在のスコープのクラス変数 id の値を得る。
@j 現在のスコープのクラス変数 id の値を得る。
*/
DEFINE_INSN
getclassvariable
@ -190,7 +190,7 @@ getclassvariable
/**
@c variable
@e set class variable id of klass as val.
@j klass のクラス変数 id を val にする。
@j klass のクラス変数 id を val にする。
*/
DEFINE_INSN
setclassvariable
@ -209,10 +209,10 @@ setclassvariable
are searched in current scope. if klass is Qfalse, constant as
top level constant. otherwise, get constant under klass
class or module.
@j 定数 id の値を得る。
klass が Qnil なら、そのスコープで得られる定数の値を得る。
Qfalse なら、トップレベルスコープを得る。
それ以外なら、klass クラスの下の定数を得る。
@j 定数 id の値を得る。
klass が Qnil なら、そのスコープで得られる定数の値を得る。
Qfalse なら、トップレベルスコープを得る。
それ以外なら、klass クラスの下の定数を得る。
*/
DEFINE_INSN
getconstant
@ -231,10 +231,10 @@ getconstant
top level constant. otherwise, set constant under klass
class or module.
@j 定数 id の値を val にする。
klass が Qfalse なら、そのスコープで得られる定数 id の値を設定する。
Qnil なら、トップレベルスコープの値を設定する。
それ以外なら、klass クラスの下の定数を設定する。
@j 定数 id の値を val にする。
klass が Qfalse なら、そのスコープで得られる定数 id の値を設定する。
Qnil なら、トップレベルスコープの値を設定する。
それ以外なら、klass クラスの下の定数を設定する。
*/
DEFINE_INSN
setconstant
@ -250,7 +250,7 @@ setconstant
/**
@c variable
@e get global variable id.
@j グローバル変数 id の値を得る。
@j グローバル変数 id の値を得る。
*/
DEFINE_INSN
getglobal
@ -264,7 +264,7 @@ getglobal
/**
@c variable
@e set global variable id as val.
@j グローバル変数 id の値を設定する。
@j グローバル変数 id の値を設定する。
*/
DEFINE_INSN
setglobal
@ -283,7 +283,7 @@ setglobal
/**
@c put
@e put nil to stack.
@j スタックに nil をプッシュする。
@j スタックに nil をプッシュする。
*/
DEFINE_INSN
putnil
@ -297,7 +297,7 @@ putnil
/**
@c put
@e put self.
@j スタックに self をプッシュする。
@j スタックに self をプッシュする。
*/
DEFINE_INSN
putself
@ -312,7 +312,7 @@ putself
@c put
@e put some object.
i.e. Fixnum, true, false, nil, and so on.
@j オブジェクト val をスタックにプッシュする。
@j オブジェクト val をスタックにプッシュする。
i.e. Fixnum, true, false, nil, and so on.
*/
DEFINE_INSN
@ -327,8 +327,8 @@ putobject
/**
@c put
@e put special object. "value_type" is for expansion.
@j 特別なオブジェクト val をスタックにプッシュする。
オブジェクトの種類は value_type による.
@j 特別なオブジェクト val をスタックにプッシュする。
オブジェクトの種類は value_type による.
*/
DEFINE_INSN
putspecialobject
@ -370,7 +370,7 @@ putiseq
/**
@c put
@e put string val. string will be copied.
@j 文字列をコピーしてスタックにプッシュする。
@j 文字列をコピーしてスタックにプッシュする。
*/
DEFINE_INSN
putstring
@ -384,7 +384,7 @@ putstring
/**
@c put
@e put concatenate strings
@j スタックトップの文字列を n 個連結し,結果をスタックにプッシュする。
@j スタックトップの文字列を n 個連結し,結果をスタックにプッシュする。
*/
DEFINE_INSN
concatstrings
@ -405,7 +405,7 @@ concatstrings
/**
@c put
@e to_str
@j to_str の結果をスタックにプッシュする。
@j to_str の結果をスタックにプッシュする。
*/
DEFINE_INSN
tostring
@ -419,8 +419,8 @@ tostring
/**
@c put
@e to Regexp
@j 文字列 str を正規表現にコンパイルしてスタックにプッシュする。
コンパイル時,opt を正規表現のオプションとする。
@j 文字列 str を正規表現にコンパイルしてスタックにプッシュする。
コンパイル時,opt を正規表現のオプションとする。
*/
DEFINE_INSN
toregexp
@ -442,7 +442,7 @@ toregexp
/**
@c put
@e put new array.
@j 新しい配列をスタック上の num 個の値で初期化して生成しプッシュする。
@j 新しい配列をスタック上の num 個の値で初期化して生成しプッシュする。
*/
DEFINE_INSN
newarray
@ -457,7 +457,7 @@ newarray
/**
@c put
@e dup array
@j 配列 ary を dup してスタックにプッシュする。
@j 配列 ary を dup してスタックにプッシュする。
*/
DEFINE_INSN
duparray
@ -471,13 +471,13 @@ duparray
/**
@c put
@e expand array to num objects.
@j スタックトップのオブジェクトが配列であれば、それを展開する。
配列オブジェクトの要素数が num以下ならば、代わりに nil を積む。num以上なら、
num以上の要素は切り捨てる。
配列オブジェクトでなければ、num - 1 個の nil を積む。
もし flag が真なら、残り要素の配列を積む
flag: 0x01 - 最後を配列に
flag: 0x02 - postarg 用
@j スタックトップのオブジェクトが配列であれば、それを展開する。
配列オブジェクトの要素数が num以下ならば、代わりに nil を積む。num以上なら、
num以上の要素は切り捨てる。
配列オブジェクトでなければ、num - 1 個の nil を積む。
もし flag が真なら、残り要素の配列を積む
flag: 0x01 - 最後を配列に
flag: 0x02 - postarg 用
flag: 0x04 - reverse?
*/
DEFINE_INSN
@ -492,7 +492,7 @@ expandarray
/**
@c put
@e concat two arrays
@j 二つの配列 ary1, ary2 を連結しスタックへプッシュする。
@j 二つの配列 ary1, ary2 を連結しスタックへプッシュする。
*/
DEFINE_INSN
concatarray
@ -521,7 +521,7 @@ concatarray
/**
@c put
@e splat array
@j 配列 ary に対して to_a を呼び出す。
@j 配列 ary に対して to_a を呼び出す。
*/
DEFINE_INSN
splatarray
@ -539,7 +539,7 @@ splatarray
/**
@c put
@e check value is included in ary
@j 配列 ary に要素 obj が入っているかどうかチェック。case/when で利用する。
@j 配列 ary に要素 obj が入っているかどうかチェック。case/when で利用する。
*/
DEFINE_INSN
checkincludearray
@ -579,8 +579,8 @@ checkincludearray
/**
@c put
@e put new Hash.
@j 新しいハッシュをスタックトップの n 個を初期値として生成する。
n はキーと値のペアなので 2 の倍数でなければならない。
@j 新しいハッシュをスタックトップの n 個を初期値として生成する。
n はキーと値のペアなので 2 の倍数でなければならない。
*/
DEFINE_INSN
newhash
@ -602,7 +602,7 @@ newhash
/**
@c put
@e put new Range object.(Range.new(low, high, flag))
@j Range.new(low, high, flag) のようなオブジェクトを生成しスタックにプッシュする。
@j Range.new(low, high, flag) のようなオブジェクトを生成しスタックにプッシュする。
*/
DEFINE_INSN
newrange
@ -620,7 +620,7 @@ newrange
/**
@c stack
@e pop from stack.
@j スタックから一つポップする。
@j スタックから一つポップする。
*/
DEFINE_INSN
pop
@ -635,7 +635,7 @@ pop
/**
@c stack
@e duplicate stack top.
@j スタックトップをコピーしてスタックにプッシュする。
@j スタックトップをコピーしてスタックにプッシュする。
*/
DEFINE_INSN
dup
@ -649,7 +649,7 @@ dup
/**
@c stack
@e duplicate stack top n elements
@j スタックトップの n 個をコピーしてスタックにプッシュする。
@j スタックトップの n 個をコピーしてスタックにプッシュする。
*/
DEFINE_INSN
dupn
@ -669,7 +669,7 @@ dupn
/**
@c stack
@e swap top 2 vals
@j スタックトップの 2 つの値を交換する。
@j スタックトップの 2 つの値を交換する。
*/
DEFINE_INSN
swap
@ -683,7 +683,7 @@ swap
/**
@c stack
@e for stack caching.
@j スタックキャッシングの状態を調整するために必要な命令。
@j スタックキャッシングの状態を調整するために必要な命令。
*/
DEFINE_INSN
reput
@ -697,7 +697,7 @@ reput
/**
@c stack
@e get nth stack value from stack top
@j スタックトップから n 個目をスタックにプッシュする。
@j スタックトップから n 個目をスタックにプッシュする。
*/
DEFINE_INSN
topn
@ -711,7 +711,7 @@ topn
/**
@c stack
@e set Nth stack entry to stack top
@j スタックトップの値を n 個目のスタックにコピー
@j スタックトップの値を n 個目のスタックにコピー
*/
DEFINE_INSN
setn
@ -725,7 +725,7 @@ setn
/**
@c stack
@e empt current stack
@j current stack を空にする。
@j current stack を空にする。
*/
DEFINE_INSN
adjuststack
@ -744,7 +744,7 @@ adjuststack
/**
@c setting
@e defined?
@j defined? を行う。
@j defined? を行う。
*/
DEFINE_INSN
defined
@ -862,7 +862,7 @@ defined
/**
@c setting
@e trace
@j trace 用の命令。
@j trace 用の命令。
*/
DEFINE_INSN
trace
@ -884,9 +884,9 @@ trace
@e
enter class definition scope. if super is Qfalse, and clsas
"klass" is defined, it's redefine. otherwise, define "klass" class.
@j クラス定義スコープへ移行する。
もし super が Qfalse で klassクラスが定義されていれば再定義である。
そうでなければ、klass クラスを定義する。
@j クラス定義スコープへ移行する。
もし super が Qfalse で klassクラスが定義されていれば再定義である。
そうでなければ、klass クラスを定義する。
*/
DEFINE_INSN
defineclass
@ -986,7 +986,7 @@ defineclass
/**
@c method/iterator
@e obj.send(id, args..) # args.size => num
@j メソッド呼び出しを行う。
@j メソッド呼び出しを行う。
obj.send(id, args..) # args.size => num
flag & VM_CALL_ARGS_SPLAT_BIT != 0 -> splat last arg
flag & VM_CALL_ARGS_BLOCKARG_BIT != 0 -> Proc as Block
@ -1018,9 +1018,9 @@ send
/**
@c method/iterator
@e super(args) # args.size => num
@j super を実行する。
@j super を実行する。
super(args) # args.size => num
flag 等オペランドの意味は send と同じ。
flag 等オペランドの意味は send と同じ。
*/
DEFINE_INSN
invokesuper
@ -1054,7 +1054,7 @@ invokesuper
/**
@c method/iterator
@e yield(args) # args.size => num, flag shows expand argument or not
@j yield を実行する。
@j yield を実行する。
yield(args) # args.size => num
*/
DEFINE_INSN
@ -1073,7 +1073,7 @@ invokeblock
/**
@c method/iterator
@e return from this scope.
@j このスコープから抜ける。
@j このスコープから抜ける。
*/
DEFINE_INSN
leave
@ -1096,7 +1096,7 @@ leave
/**
@c method/iterator
@e return from this vm loop
@j VM loop から抜ける。
@j VM loop から抜ける。
*/
DEFINE_INSN
finish
@ -1119,7 +1119,7 @@ finish
/**
@c exception
@e longjump
@j 大域ジャンプを行う。
@j 大域ジャンプを行う。
*/
DEFINE_INSN
throw
@ -1140,7 +1140,7 @@ throw
/**
@c jump
@e set PC to (PC + dst).
@j PC を (PC + dst) にする。
@j PC を (PC + dst) にする。
*/
DEFINE_INSN
jump
@ -1155,7 +1155,7 @@ jump
/**
@c jump
@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
branchif
@ -1172,7 +1172,7 @@ branchif
/**
@c jump
@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
branchunless
@ -1194,7 +1194,7 @@ branchunless
/**
@c optimize
@e inline cache
@j インラインキャッシュが有効なら、値をスタックにプッシュして dst へジャンプする。
@j インラインキャッシュが有効なら、値をスタックにプッシュして dst へジャンプする。
*/
DEFINE_INSN
getinlinecache
@ -1215,7 +1215,7 @@ getinlinecache
/**
@c optimize
@e inline cache (once)
@j once を実現する。
@j once を実現する。
*/
DEFINE_INSN
onceinlinecache
@ -1244,7 +1244,7 @@ onceinlinecache
/**
@c optimize
@e set inline cache
@j インラインキャッシュの値を設定する。
@j インラインキャッシュの値を設定する。
*/
DEFINE_INSN
setinlinecache
@ -1263,7 +1263,7 @@ setinlinecache
/**
@c optimize
@e case dispatcher
@j case 文で、可能なら表引きでジャンプする。
@j case 文で、可能なら表引きでジャンプする。
*/
DEFINE_INSN
opt_case_dispatch
@ -1304,7 +1304,7 @@ opt_case_dispatch
/**
@c optimize
@e check environment
@j 将来の拡張用。
@j 将来の拡張用。
*/
DEFINE_INSN
opt_checkenv
@ -1326,7 +1326,7 @@ opt_checkenv
/**
@c optimize
@e optimized X+Y.
@j 最適化された X+Y。
@j 最適化された X+Y。
*/
DEFINE_INSN
opt_plus
@ -1402,7 +1402,7 @@ opt_plus
/**
@c optimize
@e optimized X-Y.
@j 最適化された X-Y。
@j 最適化された X-Y。
*/
DEFINE_INSN
opt_minus
@ -1451,7 +1451,7 @@ opt_minus
/**
@c optimize
@e optimized X*Y.
@j 最適化された X*Y。
@j 最適化された X*Y。
*/
DEFINE_INSN
opt_mult
@ -1505,7 +1505,7 @@ opt_mult
/**
@c optimize
@e optimized X/Y.
@j 最適化された X/Y。
@j 最適化された X/Y。
*/
DEFINE_INSN
opt_div
@ -1569,7 +1569,7 @@ opt_div
/**
@c optimize
@e optimized X%Y.
@j 最適化された X%Y。
@j 最適化された X%Y。
*/
DEFINE_INSN
opt_mod
@ -1648,7 +1648,7 @@ opt_mod
/**
@c optimize
@e optimized X==Y.
@j 最適化された X==Y。
@j 最適化された X==Y。
*/
DEFINE_INSN
opt_eq
@ -1669,7 +1669,7 @@ opt_eq
/**
@c optimize
@e optimized X!=Y.
@j 最適化された X!=Y。
@j 最適化された X!=Y。
*/
DEFINE_INSN
opt_neq
@ -1700,7 +1700,7 @@ opt_neq
/**
@c optimize
@e optimized X<Y.
@j 最適化された X<Y。
@j 最適化された X<Y。
*/
DEFINE_INSN
opt_lt
@ -1750,7 +1750,7 @@ opt_lt
/**
@c optimize
@e optimized X<=Y.
@j 最適化された X<=Y。
@j 最適化された X<=Y。
*/
DEFINE_INSN
opt_le
@ -1780,7 +1780,7 @@ opt_le
/**
@c optimize
@e optimized X>Y.
@j 最適化された X>Y。
@j 最適化された X>Y。
*/
DEFINE_INSN
opt_gt
@ -1830,7 +1830,7 @@ opt_gt
/**
@c optimize
@e optimized X>=Y.
@j 最適化された X>=Y。
@j 最適化された X>=Y。
*/
DEFINE_INSN
opt_ge
@ -1859,7 +1859,7 @@ opt_ge
/**
@c optimize
@e <<
@j 最適化された X<<Y。
@j 最適化された X<<Y。
*/
DEFINE_INSN
opt_ltlt
@ -1893,7 +1893,7 @@ opt_ltlt
/**
@c optimize
@e []
@j 最適化された recv[obj]。
@j 最適化された recv[obj]。
*/
DEFINE_INSN
opt_aref
@ -1923,7 +1923,7 @@ opt_aref
/**
@c optimize
@e recv[obj] = set
@j 最適化された recv[obj] = set。
@j 最適化された recv[obj] = set。
*/
DEFINE_INSN
opt_aset
@ -1956,7 +1956,7 @@ opt_aset
/**
@c optimize
@e optimized length
@j 最適化された recv.length()。
@j 最適化された recv.length()。
*/
DEFINE_INSN
opt_length
@ -1991,7 +1991,7 @@ opt_length
/**
@c optimize
@e optimized size
@j 最適化された recv.size()。
@j 最適化された recv.size()。
*/
DEFINE_INSN
opt_size
@ -2026,7 +2026,7 @@ opt_size
/**
@c optimize
@e optimized succ
@j 最適化された recv.succ()。
@j 最適化された recv.succ()。
*/
DEFINE_INSN
opt_succ
@ -2073,7 +2073,7 @@ opt_succ
/**
@c optimize
@e optimized not
@j 最適化された recv.!()。
@j 最適化された recv.!()。
*/
DEFINE_INSN
opt_not
@ -2097,7 +2097,7 @@ opt_not
/**
@c optimize
@e optimized regexp match
@j 最適化された正規表現マッチ。
@j 最適化された正規表現マッチ。
*/
DEFINE_INSN
opt_regexpmatch1
@ -2111,7 +2111,7 @@ opt_regexpmatch1
/**
@c optimize
@e optimized regexp match 2
@j 最適化された正規表現マッチ 2
@j 最適化された正規表現マッチ 2
*/
DEFINE_INSN
opt_regexpmatch2
@ -2130,7 +2130,7 @@ opt_regexpmatch2
/**
@c optimize
@e call native compiled method
@j ネイティブコンパイルしたメソッドを起動。
@j ネイティブコンパイルしたメソッドを起動。
*/
DEFINE_INSN
opt_call_c_function
@ -2167,7 +2167,7 @@ bitblt
/**
@c joke
@e The Answer to Life, the Universe, and Everything
@j 人生、宇宙、すべての答え。
@j 人生、宇宙、すべての答え。
*/
DEFINE_INSN
answer