以下のメソッドは、Redcloth gem に存在します。
私の質問は次のとおりです: 構造 " to(RedCloth::Formatters::HTML)
" はどういう意味ですか? 「to」はクラスのメソッドでも、スーパークラス (String クラス) のメソッドでもありません。
def to_html( *rules )
apply_rules(rules)
to(RedCloth::Formatters::HTML)
end
RedClothソース全体でを検索するdef to
と、で始まるメソッドがいくつかto
見つかるだけでなく、正確なメソッドもに見つかりto
ますext/redcloth_scan/redcloth_scan.rb.rl
。
ここで起こることが2つあります。まず、このファイルはRagelによって前処理されます。しかし、この質問については、この事実を無視して、そのファイルの奇妙な構文を読み過ぎてもかまいません。Rubyビットに焦点を当てます。
次に、クラスRedCloth::TextileDoc
はここで再開されます。つまり、このファイルとのクラスlib/redcloth/textile_doc.rb
は同じです。したがって、to
インスタンスメソッドは、引用したコードで使用できます。
はい、 http: //github.com/jgarber/redcloth/blob/master/ext/redcloth_scan/redcloth_scan.c.rlの200行で定義され、221のクラスにアタッチされています。
to(RedCloth::Formatters::HTML)
#toメソッドを呼び出して、フォーマッターのクラスを渡すだけです(redcloth_to Cメソッドの2番目の引数。最初の引数は常にでなければなりませんself
)。
オブジェクトまたはカーネルモジュールで定義されている可能性があります。
編集:そうではありません。このファイルの220行目で定義されていますhttp://github.com/jgarber/redcloth/blob/master/ext/redcloth_scan/redcloth_scan.c.rl