IRB モジュールの定義の次は、Irb クラスが定義されている。
Irb クラスの構成は次のようになっている。 class Irb @context --- read only, Context クラスのオブジェクト @signal_status --- 初期値は :IN_IRB シンボル @scanner --- read/write, RubyLex クラスのオブジェクト initialize(workspace = nil, input_method = nil, output_method = nil) eval_input suspend_name(path = nil, name = nil) suspend_workspace(workspace) suspend_input_method(input_method) suspend_context(context) signal_handle signal_status(status) prompt(prompt, ltype, indent, line_no) output_value inspect @CONF.inspect ---- @CONF は IRB モジュールで定義されている end わりにシンプルな構成だ。 インスタンス変数のうち、@context は、irb のカスタマイズに関係していると思われるし、@singnal_status はプロセスのシグナル関係だろう。目的のスキャナー/パーサに関係しているのは、@scanner のようで、これは、Rubylex クラスのオブジェクトだ。 インスタンス・メソッドの initialize はコンストラクタ。eval_input はコマンドラインからの入力処理。この eval_input を追いかけていけばスキャナに到達できるような気がする。先頭に susupend のついているメソッドは、現在の動作環境の一時退避をするためのメソッドではないだろうか。prompt はプロンプトの設定。output_valu, inspect, @CONF.inspect はデータを出力するときの処理をしているのだろう。 大きなプログラムを組んだことがないので、ファイル分割は面倒くさいと思っていたが、こういう風にトップダウンにソースを追いかけていくと、個々のソースの意味が把握しやすくなるので結構便利なものだと思った。
by tnomura9
| 2008-03-31 07:18
| Ruby
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||