开发者

What does this construction mean, in Ruby?

开发者 https://www.devze.com 2022-12-18 14:20 出处:网络
The method below exists in the Redcloth gem. My question is: what does the construction "to(RedCloth::Formatters::HTML)" mean? "to" isn\'t a method in the class, nor in the supercl

The method below exists in the Redcloth gem.

My question is: what does the construction "to(RedCloth::Formatters::HTML)" mean? "to" isn't a method in the class, nor in the superclass (which i开发者_开发技巧s String class).

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


When you search the entire RedCloth source for def to, besides finding a couple of methods that start with to, you'll also find the exact method to in ext/redcloth_scan/redcloth_scan.rb.rl.

There's two things that happen here. First, this file is preprocessed by Ragel. But for this question, you may safely ignore this fact and read past the weird syntax in that file. Focus on the Ruby bits.

Second, the class RedCloth::TextileDoc is reopend here. That means the class in this file and in lib/redcloth/textile_doc.rb are the same. So the to instance method will be available to the piece of code you quoted.


Yes, it's defined at in http://github.com/jgarber/redcloth/blob/master/ext/redcloth_scan/redcloth_scan.c.rl at line 200 and attached to the class at 221.

to(RedCloth::Formatters::HTML) is just calling the #to method and passing in the class of the formatter (the second argument in the redcloth_to C method; the first must always be self).


Could be it's defined on Object or in Kernel module.

EDIT: it's not. It's defined on line 220 of this file http://github.com/jgarber/redcloth/blob/master/ext/redcloth_scan/redcloth_scan.c.rl

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号