Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > ripper/filterライブラリ > Ripper::Filterクラス
クラスの継承リスト: Ripper::Filter < Object < Kernel < BasicObject
イベントドリブンスタイルで Ruby プログラムを加工するためのクラスです。
このクラスを継承して、必要なイベントに対応するメソッドを定義して使用し ます。
require 'ripper' require 'cgi' class Ruby2HTML < Ripper::Filter def on_default(event, tok, f) f << CGI.escapeHTML(tok) end def on_comment(tok, f) f << %Q[<span class="comment">#{CGI.escapeHTML(tok)}</span>] end def on_tstring_beg(tok, f) f << %Q[<span class="string">#{CGI.escapeHTML(tok)}] end def on_tstring_end(tok, f) f << %Q[#{CGI.escapeHTML(tok)}</span>] end end Ruby2HTML.new(ARGF).parse('')
Ruby プログラムを解析して、Ripper::SCANNER_EVENTS にあるスキャナ イベントを実行します。イベントはプログラムに書いた順番で実行されます。
上記の例では、parse メソッドに渡した空文字列を初期値として、イベントハ ンドラが ARGF で渡された Ruby プログラムを HTML にして返します。
new(src, filename = '-', lineno = 1) -> Ripper::Filter
[permalink][rdoc]Ripper::Filter オブジェクトを作成します。
column -> Integer | nil
[permalink][rdoc]現在のトークンの桁番号を 0 から始まる数値で返します。
このメソッドはイベントハンドラの中でのみ意味のある値を返します。イベン トハンドラの中で self.column を実行してください。
filename -> String
[permalink][rdoc]Ruby プログラムのファイル名を文字列で返します。
lineno -> Integer | nil
[permalink][rdoc]現在のトークンの行番号を 1 から始まる数値で返します。
このメソッドはイベントハンドラの中でのみ意味のある値を返します。イベン トハンドラの中で self.lineno を実行してください。
parse(init = nil) -> object
[permalink][rdoc]自身の持つ Ruby プログラムの解析を開始します。各種イベントハンドラで処 理を行った結果を返します。
引数 init を初期値としてイベントハンドラに渡されていきます。各種イベン トハンドラの戻り値は次のイベントハンドラに渡されます。 Enumerable#inject のように、最終的な結果を戻り値として返します。
[SEE_ALSO] Ripper::Filter#on_default, Ripper::Filter#on_XXX
on_XXX(token, data) -> object
[permalink][rdoc]各種スキャナイベントを実行します。
実際には on_XXX というメソッドは存在しません。「XXX」の部分を Ripper::SCANNER_EVENTS にあるスキャナイベントに読み替えてください。
オーバライドしなかった場合は on_default が実行されます。
このメソッドの戻り値は次のイベントハンドラの data 引数に渡されます。
[SEE_ALSO] Ripper::Filter#parse, Ripper::Filter#on_default, Ripper::SCANNER_EVENTS
on_default(event, token, data) -> object
[permalink][rdoc]イベントハンドラが未定義のイベントが実行された場合に実行されるイベント ハンドラです。
このメソッドの戻り値は次のイベントハンドラの data 引数に渡されます。 on_default をオーバライドしなかった場合は data 引数をそのまま返します。
[SEE_ALSO] Ripper::Filter#parse, Ripper::Filter#on_XXX