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
Родитель a17fd731c9
Коммит 60c8455253
13 изменённых файлов: 1545 добавлений и 1386 удалений

Просмотреть файл

@ -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. 本プログラムは無保証です.作者は本プログラムをサポート
する意志はありますが,プログラム自身のバグあるいは本プ
ログラムの実行などから発生するいかなる損害に対しても責
任を持ちません.

Просмотреть файл

@ -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):

Разница между файлами не показана из-за своего большого размера Загрузить разницу

200
README.ja
Просмотреть файл

@ -1,123 +1,137 @@
* Rubyとは
* Rubyとは
Rubyはシンプルかつ強力なオブジェクト指向スクリプト言語です
Rubyは最初から純粋なオブジェクト指向言語として設計されていま
すから,オブジェクト指向プログラミングを手軽に行う事が出来ま
す.もちろん通常の手続き型のプログラミングも可能です.
Rubyはシンプルかつ強力なオブジェクト指向スクリプト言語です
Rubyは最初から純粋なオブジェクト指向言語として設計されていま
すから,オブジェクト指向プログラミングを手軽に行う事が出来ま
す.もちろん通常の手続き型のプログラミングも可能です.
Rubyはテキスト処理関係の能力などに優れPerlと同じくらい強力
です.さらにシンプルな文法と,例外処理やイテレータなどの機構
によって,より分かりやすいプログラミングが出来ます.
Rubyはテキスト処理関係の能力などに優れPerlと同じくらい強力
です.さらにシンプルな文法と,例外処理やイテレータなどの機構
によって,より分かりやすいプログラミングが出来ます.
* Rubyの特長
* Rubyの特長
+ シンプルな文法
+ 普通のオブジェクト指向機能(クラス,メソッドコールなど)
+ 特殊なオブジェクト指向機能(Mixin, 特異メソッドなど)
+ 演算子オーバーロード
+ 例外処理機能
+ イテレータとクロージャ
+ ガーベージコレクタ
+ ダイナミックローディング (アーキテクチャによる)
+ 移植性が高い多くのUnix-like/POSIX互換プラットフォーム上で
動くだけでなくWindows Mac OS XBeOSなどの上でも動く
+ シンプルな文法
+ 普通のオブジェクト指向機能(クラス,メソッドコールなど)
+ 特殊なオブジェクト指向機能(Mixin, 特異メソッドなど)
+ 演算子オーバーロード
+ 例外処理機能
+ イテレータとクロージャ
+ ガーベージコレクタ
+ ダイナミックローディング (アーキテクチャによる)
+ 移植性が高い多くのUnix-like/POSIX互換プラットフォーム上で
動くだけでなくWindows Mac OS XBeOSなどの上でも動く
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
と書いて送って下さい。
と書いて送って下さい。
=======
Ruby開発者向けメーリングリストもあります。こちらではrubyのバ
グ、将来の仕様拡張など実装上の問題について議論されています。
参加希望の方は
と書いて送って下さい。
>>>>>>> Change encoding from EUC-JP to UTF-8. [Feature #5128]
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:

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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を返します
このメソッドがブロック付きで呼ばれた場合には,マッチした要素の
配列がブロック引数として渡され,ブロックが評価されます.

Просмотреть файл

@ -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
まで電子メールでバグレポートをお送りください.
まで電子メールでバグレポートをお送りください.

Просмотреть файл

@ -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)

Просмотреть файл

@ -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
Просмотреть файл

@ -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