4

以下のメソッドは、Redcloth gem に存在します。

私の質問は次のとおりです: 構造 " to(RedCloth::Formatters::HTML)" はどういう意味ですか? 「to」はクラスのメソッドでも、スーパークラス (String クラス) のメソッドでもありません。

def to_html( *rules )
  apply_rules(rules)
  to(RedCloth::Formatters::HTML)
end
4

3 に答える 3

7

RedClothソース全体でを検索するdef toと、で始まるメソッドがいくつかto見つかるだけでなく、正確なメソッドもに見つかりtoますext/redcloth_scan/redcloth_scan.rb.rl

ここで起こることが2つあります。まず、このファイルはRagelによって前処理されます。しかし、この質問については、この事実を無視して、そのファイルの奇妙な構文を読み過ぎてもかまいません。Rubyビットに焦点を当てます。

次に、クラスRedCloth::TextileDocはここで再開されます。つまり、このファイルとのクラスlib/redcloth/textile_doc.rbは同じです。したがって、toインスタンスメソッドは、引用したコードで使用できます。

于 2010-01-28T18:56:58.477 に答える
0

はい、 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)。

于 2010-02-01T14:11:50.127 に答える
-1

オブジェクトまたはカーネルモジュールで定義されている可能性があります。

編集:そうではありません。このファイルの220行目で定義されていますhttp://github.com/jgarber/redcloth/blob/master/ext/redcloth_scan/redcloth_scan.c.rl

于 2010-01-28T18:56:33.127 に答える