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

Rename *.jp to *.ja, since jp is a region code and ja is a language

code.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_6@1629 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
knu 2001-07-19 05:44:26 +00:00
parent 5a5175ca98
commit f943351e1f
19 changed files with 15 additions and 2643 deletions

View file

@ -1,51 +0,0 @@
$BK\%W%m%0%i%`$O%U%j!<%=%U%H%&%'%"$G$9!%(BGPL(the GNU General
Public License)$B$^$?$O0J2<$K<($9>r7o$GK\%W%m%0%i%`$r:FG[I[$G(B
$B$-$^$9!%(BGPL$B$K$D$$$F$O(BGPL$B%U%!%$%k$r;2>H$7$F2<$5$$!%(B
1. $BJ#@=$O@)8B$J$/<+M3$G$9!%(B
2. $B0J2<$N>r7o$N$$$:$l$+$rK~$?$9;~$KK\%W%m%0%i%`$N%=!<%9$r(B
$B<+M3$KJQ99$G$-$^$9!%(B
(a) $B%M%C%H%K%e!<%:$K%]%9%H$7$?$j!$:n<T$KJQ99$rAwIU$9$k(B
$B$J$I$NJ}K!$G!$JQ99$r8x3+$9$k!%(B
(b) $BJQ99$7$?K\%W%m%0%i%`$r<+J,$N=jB0$9$kAH?%FbIt$@$1$G(B
$B;H$&!%(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
(d) $B$=$NB>$NJQ99>r7o$r:n<T$H9g0U$9$k!%(B
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
(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
(b) $B5!3#2DFI$J%=!<%9%3!<%I$rE:IU$9$k!%(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
(d) $B$=$NB>$NG[I[>r7o$r:n<T$H9g0U$9$k!%(B
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
$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
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
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

View file

@ -1,5 +1,5 @@
COPYING
COPYING.jp
COPYING.ja
ChangeLog
GPL
LEGAL
@ -7,9 +7,9 @@ LGPL
MANIFEST
Makefile.in
README
README.jp
README.ja
README.EXT
README.EXT.jp
README.EXT.ja
ToDo
array.c
bignum.c
@ -82,15 +82,15 @@ djgpp/mkver.sed
cygwin/GNUmakefile.in
doc/NEWS
doc/forwardable.rd
doc/forwardable.rd.jp
doc/irb/irb-tools.rd.jp
doc/forwardable.rd.ja
doc/irb/irb-tools.rd.ja
doc/irb/irb.rd
doc/irb/irb.rd.jp
doc/irb/irb.rd.ja
doc/net/http.rd.ja
doc/net/pop.rd.ja
doc/net/smtp.rd.ja
doc/shell.rd
doc/shell.rd.jp
doc/shell.rd.ja
ext/Setup
ext/Setup.dj
ext/Setup.emx

File diff suppressed because it is too large Load diff

153
README.jp
View file

@ -1,153 +0,0 @@
* Rubyとは
Rubyはシンプルかつ強力なオブジェクト指向スクリプト言語です
Rubyは最初から純粋なオブジェクト指向言語として設計されていま
すから,オブジェクト指向プログラミングを手軽に行う事が出来ま
す.もちろん通常の手続き型のプログラミングも可能です.
Rubyはテキスト処理関係の能力などに優れPerlと同じくらい強力
です.さらにシンプルな文法と,例外処理やイテレータなどの機構
によって,より分かりやすいプログラミングが出来ます.
* Rubyの特長
+ シンプルな文法
+ 普通のオブジェクト指向機能(クラス,メソッドコールなど)
+ 特殊なオブジェクト指向機能(Mixin, 特異メソッドなど)
+ 演算子オーバーロード
+ 例外処理機能
+ イテレータとクロージャ
+ ガーベージコレクタ
+ ダイナミックローディング (アーキテクチャによる)
+ 移植性が高い多くのUNIX上で動くだけでなくDOSやWindows
MacBeOSなどの上でも動く
* 入手法
** ftpで
以下の場所においてあります.
ftp://ftp.ruby-lang.org/pub/ruby/
** CVSで
$ cvs -d :pserver:anonymous@cvs.ruby-lang.org:/src login
(Logging in to anonymous@cvs.ruby-lang.org)
CVS password: anonymous
$ cvs -z4 -d :pserver:anonymous@cvs.ruby-lang.org:src checkout ruby
* ホームページ
RubyのホームページのURLは
http://www.ruby-lang.org/
です.
* メーリングリスト
Rubyのメーリングリストがあります。参加希望の方は
ruby-list-ctl@ruby-lang.org
まで本文に
subscribe YourFirstName YourFamilyName
と書いて送って下さい。
Ruby開発者向けメーリングリストもあります。こちらではrubyのバ
グ、将来の仕様拡張など実装上の問題について議論されています。
参加希望の方は
ruby-dev-ctl@ruby-lang.org
までruby-listと同様の方法でメールしてください。
Ruby拡張モジュールについて話し合うruby-extメーリングリストと
数学関係の話題について話し合うruby-mathメーリングリストと
英語で話し合うruby-talkメーリングリストもあります。参加方法
はどれも同じです。
* コンパイル・インストール
以下の手順で行ってください.
1. もしconfigureファイルが見つからない、もしくは
configure.inより古いようなら、autoconfを実行して
新しくconfigureを生成する
2. configureを実行してMakefileなどを生成する
3. (必要ならば)defines.hを編集する
多分,必要無いと思います.
4. (必要ならば)ext/Setupに静的にリンクする拡張モジュールを
指定する
ext/Setupに記述したモジュールは静的にリンクされます
ダイナミックローディングをサポートしていないアーキテク
チャではSetupの1行目の「option nodynamic」という行のコ
メントを外す必要があります.また,このアーキテクチャで
拡張モジュールを利用するためには,あらかじめ静的にリン
クしておく必要があります.
5. makeを実行してコンパイルする
6. make testでテストを行う
「test succeeded」と表示されれば成功ですただしテスト
に成功しても完璧だと保証されている訳ではありません.
7. make install
rootで作業する必要があるかもしれません
もし,コンパイル時にエラーが発生した場合にはエラーのログとマ
シンOSの種類を含むできるだけ詳しいレポートを作者に送ってく
ださると他の方のためにもなります.
* 移植
UNIXであればconfigureがほとんどの差異を吸収してくれるはずで
すが,思わぬ見落としがあった場合(あるに違いない),作者にその
ことをレポートすれば,解決できるかも知れません.
アーキテクチャにもっとも依存するのはGC部ですRubyのGCは対象
のアーキテクチャがsetjmp()によって全てのレジスタを jmp_bufに
格納することとjmp_bufとスタックが32bitアラインメントされて
いることを仮定しています.特に前者が成立しない場合の対応は非
常に困難でしょう後者の解決は比較的簡単でgc.cでスタックを
マークしている部分にアラインメントのバイト数だけずらしてマー
クするコードを追加するだけで済みます「defined(THINK_C)」で
括られている部分を参考にしてください
# 実際にはRubyはThink Cではコンパイルできません
レジスタウィンドウを持つCPUではレジスタウィンドウをスタッ
クにフラッシュするアセンブラコードを追加する必要があるかも知
れません.
* 配布条件
COPYING.jpファイルを参照してください。
* 著者
コメント,バグレポートその他は matz@zetabits.com まで.
-------------------------------------------------------
created at: Thu Aug 3 11:57:36 JST 1995
Local variables:
mode: indented-text
end:

View file

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

View file

@ -1,185 +0,0 @@
irb関連おまけコマンドとライブラリ
$Release Version: 0.7.1 $
$Revision$
$Date$
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 [-vi] file....
カレントディレクトリにemacs用のTAGSファイルができます. -viオプションを
つけた時にはvi用のtagsファイルを作成します.
emacsの場合, 通常のetags.elがそのまま使えます. 検索可能なのは,
* クラス
* メソッド
* 特異メソッド
* alias
* attrで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る)
* attr_XXXで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る)
です.
Cなどで使っているのと違うのは, コンプリーションに関する部分で,
関数名は,
関数名(
クラスは,
::クラス名::....::クラス名
メソッドは,
::クラス名::....::クラス名#メソッド名
特異メソッド(クラスメソッド)は
::クラス名::....::クラス名.メソッド名
でコンプリーションを行なうところです.
= xmp.rb
ごとけんxmpの上位互換バージョンです. ただ, 非常に重いのでごとけんxmpで
は対応できない時に, 使用すると良いでしょう.
== 使い方
=== 関数として使う.
require "irb/xmp"
xmp <<END
foo = 1
foo
END
---
foo = 1
==>1
foo
==>1
=== XMPインスタンスを用いる.
この場合は, XMPがコンテキスト情報を持つので, 変数の値などを保持してい
ます.
require "irb/xmp"
xmp = XMP.new
xmp.puts <<END
foo = 1
foo
END
xmp.puts <<END
foo
END
===
foo = 1
==>1
foo
==>1
foo
==>1
== コンテキストに関して
XMPメソッド群のコンテキストは, 呼び出す前のコンテキストで評価されます.
明示的にコンテキストを指定するとそのコンテキストで評価します.
例:
xmp "foo", an_binding
:注:
マルチスレッドには対応していません.
= frame.rb
現在実行中のフレーム情報を取り扱うためのクラスです.
* IRB::Frame.top(n = 0)
上からn番目のコンテキストを取り出します. nは0が最上位になります.
* IRB::Frame.bottom(n = 0)
下からn番目のコンテキストを取り出します. nは0が最下位になります.
* IRB::Frame.sender
センダになっているオブジェクトを取り出します. センダとは, そのメソッ
ドを呼び出した側のselfのことです.
:注:
set_trace_funcを用いてRubyの実行をトレースしています. マルチスレッドに
は対応していません.
= completion.rb
irbのcompletion機能を提供するものです.
== 使い方
% irb -r irb/completion
とするか, ~/.irbrc 中に
require "irb/completion"
を入れてください. irb実行中に require "irb/completion" してもよいです.
irb実行中に (TAB) を押すとコンプレーションします.
トップレベルで(TAB)を押すとすべての構文要素, クラス, メソッドの候補がで
ます. 候補が唯一ならば完全に補完します.
irb(main):001:0> in
in inspect instance_eval
include install_alias_method instance_of?
initialize install_aliases instance_variables
irb(main):001:0> inspect
"main"
irb(main):002:0> foo = Object.new
#<Object:0x4027146c>
((|変数名.|))の後に(TAB)を押すと, そのオブジェクトのメソッド一覧がでま
す.
irb(main):003:0> foo.
foo.== foo.frozen? foo.protected_methods
foo.=== foo.hash foo.public_methods
foo.=~ foo.id foo.respond_to?
foo.__id__ foo.inspect foo.send
foo.__send__ foo.instance_eval foo.singleton_methods
foo.class foo.instance_of? foo.taint
foo.clone foo.instance_variables foo.tainted?
foo.display foo.is_a? foo.to_a
foo.dup foo.kind_of? foo.to_s
foo.eql? foo.method foo.type
foo.equal? foo.methods foo.untaint
foo.extend foo.nil?
foo.freeze foo.private_methods
=end
% Begin Emacs Environment
% Local Variables:
% mode: text
% comment-column: 0
% comment-start: "%"
% comment-end: "\n"
% End:
%

View file

@ -1,391 +0,0 @@
irb -- interactive ruby
$Release Version: 0.6 $
$Revision$
$Date$
by Keiju ISHITSUKA(keiju@ishitsuka.com)
=begin
= irbとは?
irbはinteractive rubyの略です. rubyの式を標準入力から簡単に入力/実行す
るためのツールです.
= 起動
% ruby -r irb -e0
% irb
のいずれかで行ないます. 前者の場合irbへのオプション指定は, 以下のように
なります.
% ruby -r irb -e0 -- -v
= 使い方
irbの使い方は, Rubyさえ知っていればいたって簡単です. 基本的には irb と
いうコマンドを実行するだけです. irbを実行すると, 以下のようなプロンプ
トが表れてきます. 後は, rubyの式を入れて下さい. 式が完結した時点で実行
されます.
dim% irb
irb(main):001:0> 1+2
3
irb(main):002:0> class Foo
irb(main):003:1> def foo
irb(main):004:2> print 1
irb(main):005:2> end
irb(main):006:1> end
nil
irb(main):007:0>
また, irbはReadlineモジュールにも対応しています. Readlineモジュールが
インストールされている時には, それを使うのが標準の動作になります.
= コマンドオプション
irb.rb [options] file_name opts
options:
-f ~/.irbrc を読み込まない.
-m bcモード(分数, 行列の計算ができる)
-d $DEBUG をtrueにする(ruby -d と同じ)
-r load-module ruby -r と同じ.
--inspect 結果出力にinspectを用いる(bcモード以外はデフォルト).
--noinspect 結果出力にinspectを用いない.
--readline readlineライブラリを利用する.
--noreadline readlineライブラリを利用しない. デフォルトの動作は,
inf-reuby-mode以外でreadlineライブラリを利用しよう
とする.
--prompt prompt-mode
--prompt-mode prompt-mode
プロンプトモードを切替えます. 現在定義されているプ
ロンプトモードは, default, simple, xmp, inf-rubyが
用意されています. デフォルトはdefaultプロンプトモー
ドになっています.
--inf-ruby-mode emacsのinf-ruby-mode用のプロンプト表示を行なう. 特
に指定がない限り, readlineライブラリは使わなくなる.
--simple-prompt
非常にシンプルなプロンプトを用いるモードです.
--noprompt プロンプト表示を行なわない.
--tracer コマンド実行時にトレースを行なう.
--back-trace-limit n
バックトレース表示をバックトレースの頭から n, 後ろ
からnだけ行なう. デフォルトは16
--irb_debug n irbのデバッグデバッグレベルをnに設定する(利用しな
い方が無難でしょう).
-v, --version irbのバージョンを表示する
= コンフィギュレーション
irb起動時に``~/.irbrc''を読み込みます. もし存在しない場合は,
``.irbrc'', ``irb.rc'', ``_irbrc'', ``$irbrc''の順にloadを試みます.
オプションを設定する代わりに, 以下のコマンドでもデフォルトの動作を設定
できます.
IRB.conf[:IRB_NAME]="irb"
IRB.conf[:MATH_MODE]=false
IRB.conf[:USE_TRACER]=false
IRB.conf[:USE_LOADER]=false
IRB.conf[:IGNORE_SIGINT]=true
IRB.conf[:IGNORE_EOF]=false
IRB.conf[:INSPECT_MODE]=nil
IRB.conf[:IRB_RC] = nil
IRB.conf[:BACK_TRACE_LIMIT]=16
IRB.conf[:USE_LOADER] = false
IRB.conf[:USE_READLINE] = nil
IRB.conf[:USE_TRACER] = false
IRB.conf[:IGNORE_SIGINT] = true
IRB.conf[:IGNORE_EOF] = false
IRB.conf[:PROMPT_MODE] = :DEFALUT
IRB.conf[:PROMPT] = {...}
IRB.conf[:DEBUG_LEVEL]=0
IRB.conf[:VERBOSE]=true
== プロンプトの設定
プロンプトをカスタマイズしたい時には,
IRB.conf[:PROMPT]
を用います. 例えば, .irbrcの中で下のような式を記述します:
IRB.conf[:PROMPT][:MY_PROMPT] = { # プロンプトモードの名前
:PROMPT_I => nil, # 通常のプロンプト
:PROMPT_S => nil, # 文字列などの継続行のプロンプト
:PROMPT_C => nil, # 式が継続している時のプロンプト
:RETURN => " ==>%s\n" # リターン時のプロンプト
}
プロンプトモードを指定したい時には,
irb --prompt my-prompt
でそのプロンプトモードで起動されます. または, .irbrcに下式を記述しても
OKです.
IRB.conf[:PROMPT_MODE] = :MY_PROMPT
PROMPT_I, PROMPT_S, PROMPT_Cは, フォーマットを指定します.
%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> ",
:PROMPT_S => "%N(%m):%03n:%i%l ",
:PROMPT_C => "%N(%m):%03n:%i* ",
:RETURN => "%s\n"
}
となっています.
RETURNは, 現在のところprintf形式です. 将来仕様が変わるかも知れません.
== サブirbの設定
コマンドラインオプションおよびIRB.confは(サブ)irb起動時のデフォルトの
設定を決めるもので, `5. コマンド'にあるconfで個別の(サブ)irbの設定がで
きるようになっています.
IRB.conf[:IRB_RC]にprocが設定されていると, サブirbを起動する時にその
procをirbのコンテキストを引数として呼び出します. これによって個別のサ
ブirbごとに設定を変えることができるようになります.
= コマンド
irb拡張コマンドは, 簡単な名前と頭に`irb_'をつけた名前と両方定義されて
います. これは, 簡単な名前がoverrideされた時のためです.
--- exit, quit, irb_exit
終了する.
サブirbの場合, そのサブirbを終了する.
cbしている場合, そのバインディングのモードを終了する.
--- conf, irb_context
irbの現在の設定を表示する. 設定の変更は, confにメッセージを送るこ
とによって行なえる.
--- conf.back_trace_limit
バックトレース表示をバックトレースの頭からn, 後ろからnだけ行なう.
デフォルトは16
--- conf.debug_level = N
irb用のデバッグレベルの設定
--- conf.ignore_eof = true/false
^Dが入力された時の動作を設定する. trueの時は^Dを無視する, falseの
時はirbを終了する.
--- conf.ignore_sigint= true/false
^Cが入力された時の動作を設定する. false時は, irbを終了する. trueの
時の動作は以下のようになる:
入力中: これまで入力したものをキャンセルしトップレベルに戻る.
実行中: 実行を中止する.
--- conf.inf_ruby_mode = true/false
inf-ruby-mode用のプロンプト表示を行なう. デフォルトはfalse.
--- conf.inspect_mode = true/false/nil
インスペクトモードを設定する.
true: インスペクトして表示する.
false: 通常のprintで表示する.
nil: 通常モードであれば, inspect modeとなり, mathモードの時は, non
inspect modeとなる.
--- conf.irb_level
参照のみ. irbが何段cbしているか?
--- conf.math_mode
参照のみ. bcモード(分数, 行列の計算ができます)かどうか?
--- conf.use_loader = true/false
load/require時にirbのfile読み込み機能を用いるモードのスイッチ(デフォ
ルトは用いない). このモードはIRB全体に反映される.
--- conf.prompt_c
ifの直後など, 行が継続している時のプロンプト.
--- conf.prompt_i
通常のプロンプト.
--- conf.prompt_s
文字列中などを表すプロンプト.
--- conf.rc
~/.irbrcを読み込んだかどうか?
--- conf.use_prompt = true/false
プロンプト表示するかどうか? デフォルトではプロンプトを表示する.
--- conf.use_readline = true/false/nil
readlineを使うかどうか?
true: readlineを使う.
false: readlineを使わない.
nil: (デフォルト)inf-reuby-mode以外でreadlineライブラリを利用しよ
うとする.
--- conf.verbose=T/F
irbからいろいろなメッセージを出力するか?
--- cb, irb_change_binding [obj]
ローカル変数のスコープが違う新たなbindingに移る. objが指定された
時は, そのobjをselfとする.
--- irb [obj]
サブirbを立ちあげる. objが指定された時は, そのobjをselfとする.
--- jobs, irb_jobs
サブirbのリスト
--- fg n, irb_fg n
指定したサブirbにスイッチする. nは, 次のものを指定する.
irb番号
スレッド
irbオブジェクト
self(irb objで起動した時のobj)
--- kill n, irb_kill n
サブirbをkillする. nはfgと同じ.
= システム変数
_ 前の計算の実行結果を覚えている(ローカル変数).
= 使用例
以下のような感じです.
dim% ruby irb.rb
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のスイッチ
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#2(Foo):002:1> print 1
irb#2(Foo):003:1> end
nil
irb#2(Foo):004:0> fg 0 # jobをスイッチ
nil
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がちゃんと定義さ
# れている
["foo"]
irb(main):006:0> fg 2 # jobをスイッチ
nil
irb#2(Foo):005:0> def bar # Foo#barを定義
irb#2(Foo):006:1> print "bar"
irb#2(Foo):007:1> end
nil
irb#2(Foo):010:0> Foo.instance_methods
["bar", "foo"]
irb#2(Foo):011:0> fg 0
nil
irb(main):007:0> f = Foo.new
#<Foo:0x4010af3c>
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の実行
nil
irb#3(#<Foo:0x4010af3c>):003:0> bar # f.barの実行
barnil
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 # 終了
dim%
= 使用上の制限
irbは, 評価できる時点(式が閉じた時点)での逐次実行を行ないます. したがっ
て, rubyを直接使った時と, 若干異なる動作を行なう場合があります.
現在明らかになっている問題点を説明します.
== ローカル変数の宣言
rubyでは, 以下のプログラムはエラーになります.
eval "foo = 0"
foo
--
-:2: undefined local variable or method `foo' for #<Object:0x40283118> (NameError)
---
NameError
ところが, irbを用いると
>> eval "foo = 0"
=> 0
>> foo
=> 0
となり, エラーを起こしません. これは, rubyが最初にスクリプト全体をコン
パイルしてローカル変数を決定するからです. それに対し, irbは実行可能に
なる(式が閉じる)と自動的に評価しているからです. 上記の例では,
evel "foo = 0"
を行なった時点で評価を行ない, その時点で変数が定義されるため, 次式で
変数fooは定義されているからです.
このようなrubyとirbの動作の違いを解決したい場合は, begin...endで括って
バッチ的に実行して下さい:
>> begin
?> eval "foo = 0"
>> foo
>> end
NameError: undefined local variable or method `foo' for #<Object:0x4013d0f0>
(irb):3
(irb_local_binding):1:in `eval'
== ヒアドキュメント
現在のところヒアドキュメントの実装は不完全です.
== シンボル
シンボルであるかどうかの判断を間違えることがあります. 具体的には式が完了
しているのに継続行と見なすことがあります.
=end
% Begin Emacs Environment
% Local Variables:
% mode: text
% comment-column: 0
% comment-start: "%"
% comment-end: "\n"
% End:
%

View file

@ -1,336 +0,0 @@
-- shell.rb
$Release Version: 0.6.0 $
$Revision$
$Date$
by Keiju ISHITSUKA(keiju@ishitsuka.com)
=begin
= 目的
ruby上でsh/cshのようにコマンドの実行及びフィルタリングを手軽に行う.
sh/cshの制御文はrubyの機能を用いて実現する.
= 主なクラス一覧
== Shell
Shellオブジェクトはカレントディレクトリを持ち, コマンド実行はそこからの
相対パスになります.
--- Shell#cwd
--- Shell#dir
--- Shell#getwd
--- Shell#pwd
カレントディレクトリを返す。
--- Shell#system_path
コマンドサーチパスの配列を返す。
--- Shell#umask
umaskを返す。
== Filter
コマンドの実行結果はすべてFilterとしてかえります. Enumerableをincludeし
ています.
= 主なメソッド一覧
== コマンド定義
OS上のコマンドを実行するにはまず, Shellのメソッドとして定義します.
注) コマンドを定義しなくとも直接実行できるShell#systemコマンドもあります.
--- Shell.def_system_command(command, path = command)
Shellのメソッドとしてcommandを登録します.
例)
Shell.def_system_command "ls"
ls を定義
Shell.def_system_command "sys_sort", "sort"
sortコマンドをsys_sortとして定義
--- Shell.undef_system_command(command)
commandを削除します.
--- Shell.alias_command(ali, command, *opts) {...}
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を削除します.
--- Shell.install_system_commands(pre = "sys_")
system_path上にある全ての実行可能ファイルをShellに定義する. メソッ
ド名は元のファイル名の頭にpreをつけたものとなる.
== 生成
--- Shell.new
プロセスのカレントディレクトリをカレントディレクトリとするShellオ
ブジェクトを生成します.
--- Shell.cd(path)
pathをカレントディレクトリとするShellオブジェクトを生成します.
== プロセス管理
--- Shell#jobs
スケジューリングされているjobの一覧を返す.
--- Shell#kill sig, job
jobにシグナルsigを送る
== カレントディレクトリ操作
--- Shell#cd(path, &block)
--- Shell#chdir
カレントディレクトリをpathにする. イテレータとして呼ばれたときには
ブロック実行中のみカレントディレクトリを変更する.
--- Shell#pushd(path = nil, &block)
--- Shell#pushdir
カレントディレクトリをディレクトリスタックにつみ, カレントディレク
トリをpathにする. pathが省略されたときには, カレントディレクトリと
ディレクトリスタックのトップを交換する. イテレータとして呼ばれたと
きには, ブロック実行中のみpushdする.
--- Shell#popd
--- Shell#popdir
ディレクトリスタックからポップし, それをカレントディレクトリにする.
== ファイル/ディレクトリ操作
--- Shell#foreach(path = nil, &block)
pathがファイルなら, File#foreach
pathがディレクトリなら, Dir#foreach
--- Shell#open(path, mode)
pathがファイルなら, File#open
pathがディレクトリなら, Dir#open
--- Shell#unlink(path)
pathがファイルなら, File#unlink
pathがディレクトリなら, Dir#unlink
--- Shell#test(command, file1, file2)
--- Shell#[command, file1, file2]
ファイルテスト関数testと同じ.
例)
sh[?e, "foo"]
sh[:e, "foo"]
sh["e", "foo"]
sh[:exists?, "foo"]
sh["exists?", "foo"]
--- Shell#mkdir(*path)
Dir.mkdirと同じ(複数可)
--- Shell#rmdir(*path)
Dir.rmdirと同じ(複数可)
== コマンド実行
--- System#system(command, *opts)
commandを実行する.
例)
print sh.system("ls", "-l")
sh.system("ls", "-l") | sh.head > STDOUT
--- System#rehash
リハッシュする
--- Shell#transact &block
ブロック中ではshellをselfとして実行する.
例)
sh.transact{system("ls", "-l") | head > STDOUT}
--- Shell#out(dev = STDOUT, &block)
transactを呼び出しその結果をdevに出力する.
== 内部コマンド
--- Shell#echo(*strings)
--- Shell#cat(*files)
--- Shell#glob(patten)
--- Shell#tee(file)
これらは実行すると, それらを内容とするFilterオブジェクトを返します.
--- Filter#each &block
フィルタの一行ずつをblockに渡す.
--- Filter#<(src)
srcをフィルタの入力とする. srcが, 文字列ならばファイルを, IOであれ
ばそれをそのまま入力とする.
--- Filter#>(to)
srcをフィルタの出力とする. toが, 文字列ならばファイルに, IOであれ
ばそれをそのまま出力とする.
--- Filter#>>(to)
srcをフィルタに追加する. toが, 文字列ならばファイルに, IOであれば
それをそのまま出力とする.
--- Filter#|(filter)
パイプ結合
--- Filter#+(filter)
filter1 + filter2 は filter1の出力の後, filter2の出力を行う.
--- Filter#to_a
--- Filter#to_s
== 組込みコマンド
--- Shell#atime(file)
--- Shell#basename(file, *opt)
--- Shell#chmod(mode, *files)
--- Shell#chown(owner, group, *file)
--- Shell#ctime(file)
--- Shell#delete(*file)
--- Shell#dirname(file)
--- Shell#ftype(file)
--- Shell#join(*file)
--- Shell#link(file_from, file_to)
--- Shell#lstat(file)
--- Shell#mtime(file)
--- Shell#readlink(file)
--- Shell#rename(file_from, file_to)
--- Shell#split(file)
--- Shell#stat(file)
--- Shell#symlink(file_from, file_to)
--- Shell#truncate(file, length)
--- Shell#utime(atime, mtime, *file)
これらはFileクラスにある同名のクラスメソッドと同じです.
--- Shell#blockdev?(file)
--- Shell#chardev?(file)
--- Shell#directory?(file)
--- Shell#executable?(file)
--- Shell#executable_real?(file)
--- Shell#exist?(file)/Shell#exists?(file)
--- Shell#file?(file)
--- Shell#grpowned?(file)
--- Shell#owned?(file)
--- Shell#pipe?(file)
--- Shell#readable?(file)
--- Shell#readable_real?(file)
--- Shell#setgid?(file)
--- Shell#setuid?(file)
--- Shell#size(file)/Shell#size?(file)
--- Shell#socket?(file)
--- Shell#sticky?(file)
--- Shell#symlink?(file)
--- Shell#writable?(file)
--- Shell#writable_real?(file)
--- Shell#zero?(file)
これらはFileTestクラスにある同名のクラスメソッドと同じです.
--- Shell#syscopy(filename_from, filename_to)
--- Shell#copy(filename_from, filename_to)
--- Shell#move(filename_from, filename_to)
--- Shell#compare(filename_from, filename_to)
--- Shell#safe_unlink(*filenames)
--- Shell#makedirs(*filenames)
--- Shell#install(filename_from, filename_to, mode)
これらはFileToolsクラスにある同名のクラスメソッドと同じです.
その他, 以下のものがエイリアスされています.
--- Shell#cmp <- Shell#compare
--- Shell#mv <- Shell#move
--- Shell#cp <- Shell#copy
--- Shell#rm_f <- Shell#safe_unlink
--- Shell#mkpath <- Shell#makedirs
= サンプル
== ex1
sh = Shell.cd("/tmp")
sh.mkdir "shell-test-1" unless sh.exists?("shell-test-1")
sh.cd("shell-test-1")
for dir in ["dir1", "dir3", "dir5"]
if !sh.exists?(dir)
sh.mkdir dir
sh.cd(dir) do
f = sh.open("tmpFile", "w")
f.print "TEST\n"
f.close
end
print sh.pwd
end
end
== ex2
sh = Shell.cd("/tmp")
sh.transact do
mkdir "shell-test-1" unless exists?("shell-test-1")
cd("shell-test-1")
for dir in ["dir1", "dir3", "dir5"]
if !exists?(dir)
mkdir dir
cd(dir) do
f = open("tmpFile", "w")
f.print "TEST\n"
f.close
end
print pwd
end
end
end
== ex3
sh.cat("/etc/printcap") | sh.tee("tee1") > "tee2"
(sh.cat < "/etc/printcap") | sh.tee("tee11") > "tee12"
sh.cat("/etc/printcap") | sh.tee("tee1") >> "tee2"
(sh.cat < "/etc/printcap") | sh.tee("tee11") >> "tee12"
== ex4
print sh.cat("/etc/passwd").head.collect{|l| l =~ /keiju/}
=end

View file

@ -1,6 +1,6 @@
MANIFEST
etc.c
etc.txt
etc.txt.jp
etc.txt.ja
depend
extconf.rb

View file

@ -1,4 +1,4 @@
.\" etc.doc - -*- Indented-Text -*- created at: Fri Jul 14 00:47:15 JST 1995
.\" etc.txt - -*- Indented-Text -*- created at: Fri Jul 14 00:47:15 JST 1995
** Etc(Module)

View file

@ -1,72 +0,0 @@
.\" etc.doc - -*- Indented-Text -*- created at: Fri Jul 14 00:47:15 JST 1995
** Etc(モジュール)
/etcディレクトリ以下の情報を得るためのモジュールクラスにインクルード
して使うこともできる.
Module Function:
getlogin
自分のlogin名を返すこれが失敗した場合はgetpwuid()を用いると
良い.
getpwnam(name)
/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 # アカウント有効期限(整数)
end
詳細はgetpwnam(3)を参照のこと.
getpwuid([uid])
uidをユーザIDとするpasswdエントリを返す戻り値はgetpwnam()と
同様である引数を省略した場合にはgetuid()の値を用いる.詳細は
getpwuid(3)を参照のこと.
getgrgid(gid)
/etc/groupファイル(あるいは…getpwnam参照)を検索しgidをグルー
プIDとするグループエントリを返す戻り値はgroup構造体で以下の
メンバを持つ.
struct group
name # グループ名(文字列)
passwd # グループのパスワード(文字列)
gid # グループID(整数)
mem # グループメンバ名の配列
end
詳細はgetgrgid(3)を参照のこと.
getgrnam(name)
nameという名前のグループエントリを返す戻り値はgetgrgid()と同
様である詳細はgetgrnam(3)を参照.
group
全てのグループエントリを順にアクセスするためのイテレータ.
passwd
全てのpasswdエントリを順にアクセスするためのイテレータ

View file

@ -2,7 +2,7 @@ MANIFEST
depend
extconf.rb
md5.txt
md5.txt.jp
md5.txt.ja
md5.h
md5c.c
md5init.c

View file

@ -1,4 +1,4 @@
.\" md5.doc - -*- Indented-Text -*- created at: Fri Aug 2 12:01:27 JST 1996
.\" md5.txt - -*- Indented-Text -*- created at: Fri Aug 2 12:01:27 JST 1996
** MD5(Class)

View file

@ -1,4 +1,4 @@
.\" md5.doc - -*- Indented-Text -*- created at: Fri Aug 2 12:01:27 JST 1996
.\" md5.txt.ja - -*- Indented-Text -*- created at: Fri Aug 2 12:01:27 JST 1996
** MD5(クラス)

View file

@ -1,8 +1,8 @@
MANIFEST
README
README.expect
README.expect.jp
README.jp
README.expect.ja
README.ja
depend
expect_sample.rb
extconf.rb

View file

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

View file

@ -1,89 +0,0 @@
pty 拡張モジュール version 0.3 by A.ito
1. はじめに
この拡張モジュールは仮想tty (pty) を通して適当なコマンドを
実行する機能を ruby に提供します.
2. インストール
次のようにしてインストールしてください.
(1) ruby extconf.rb
を実行すると Makefile が生成されます.
(2) make; make install を実行してください.
3. 何ができるか
この拡張モジュールはPTY というモジュールを定義します.その中
には,次のようなモジュール関数が含まれています.
getpty(command)
spawn(command)
この関数は仮想ttyを確保し指定されたコマンドをその仮想tty
の向こうで実行し配列を返します戻り値は3つの要素からなる
配列です最初の要素は仮想ttyから読み出すためのIOオブジェクト
2番目は書きこむためのIOオブジェクト3番目は子プロセスのプロ
セスIDですこの関数がイテレータとして呼ばれた場合これらの
要素はブロックパラメータとして渡され関数自体はnilを返します
この関数によって作られたサブプロセスが動いている間,子プロセス
の状態を監視するために SIGCHLD シグナルを捕捉します.子プロセス
が終了したり停止した場合には,例外が発生します.この間,すべての
SIGCHLD が PTY モジュールのシグナルハンドラに捕捉されるので,
サブプロセスを生成する他の関数(system() とか IO.popen()など)を
使うと,予期しない例外が発生することがあります.これを防ぐため
には下記のprotect_signal()を参照してください.
この関数がブロックパラメータ付きで呼ばれた場合には,そのブロック
の中でのみ SIGCHLD が捕捉されます.したがって,ブロックパラメータ
として渡されたIOオブジェクトをブロックの外に持ち出して使うの
は勧められません.
protect_signal
この関数はイテレータです.ここで指定されたブロックの中では,
子プロセスが終了しても例外を発生しません.この関数を使うことで,
PTYの子プロセスが動いている間でもsystem()や IO.popen()などの
関数を安全に使うことができます.例えば,
PTY.spawn("command_foo") do |r,w|
...
...
PTY.protect_signal do
system "some other commands"
end
...
end
このような記述により,"some other commands" が終了したときに
例外が発生するのを防げます.
reset_signal
PTY の子プロセスが動いていても,そのプロセスの終了時に例外が発生
しないようにします.
4. 利用について
伊藤彰則が著作権を保有します.
ソースプログラムまたはドキュメントに元の著作権表示が改変されずに
表示されている場合に限り,誰でも,このソフトウェアを無償かつ著作
権者に無断で利用・配布・改変できます.利用目的は限定されていませ
ん.
このプログラムの利用・配布その他このプログラムに関係する行為によ
って生じたいかなる損害に対しても,作者は一切責任を負いません.
5. バグ報告等
バグレポートは歓迎します.
aito@ei5sun.yz.yamagata-u.ac.jp
まで電子メールでバグレポートをお送りください.

View file

@ -1,5 +1,6 @@
MANIFEST
README
README.ja
depend
extconf.rb
readline.c

View file

@ -1,63 +0,0 @@
GNU Readline Libraryを利用するための拡張モジュールです。
require "readline"
include Readline
line = readline("Prompt> ", true)
のように使用してください。
[Readline]
<モジュール関数>
readline(prompt, add_history=nil)
一行入力を読み込みます。
add_historyがtrueの場合、ヒストリに読み込んだ文字列を追加します。
<クラスメソッド>
completion_proc = proc
補完時の動作を決定するProcオブジェクトを指定します。
procは引数に入力文字列を取り、候補文字列の配列を返すように
してください。
completion_proc
補完時の動作を決定するProcオブジェクトを返します。
completion_case_fold = case_fold
補完時に大文字小文字を区別しない場合、trueを指定します。
completion_case_fold
補完時に大文字小文字を区別しない場合、trueを返します。
completion_append_character = char
補完時に付加される文字を文字列で指定します。先頭の一文字が
設定され、空文字列 ("") または nil を指定すると何も付加
されなくなります。
completion_append_character
補完時に付加される文字を文字列で返します。デフォルトは
空白 (" ") です。
vi_editing_mode
VIモードになります。
emacs_editing_mode
Emacsモードになります。
<クラス定数>
HISTORY
ヒストリに対する操作はこの定数を通して行ってください。
配列と同じように扱えるようになっています。