在Ruby中,这种结构意味着什么?

时间:2010-01-28 18:42:22

标签: ruby redcloth

以下方法存在于Redcloth gem中。

我的问题是:构造“to(RedCloth :: Formatters :: HTML)”是什么意思? “to”不是类中的方法,也不是超类中的方法(它是String类)。

干杯。基督教。

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

3 个答案:

答案 0 :(得分:7)

当您搜索整个RedCloth来源def to时,除了找到一些以to开头的方法外,您还会在to中找到确切的方法ext/redcloth_scan/redcloth_scan.rb.rl }。

这里发生了两件事。首先,此文件由Ragel预处理。但对于这个问题,你可以放心地忽略这个事实并阅读该文件中的奇怪语法。专注于Ruby位。

其次,课程RedCloth::TextileDoc 重新开启。这意味着此文件和lib/redcloth/textile_doc.rb中的类是相同的。因此,to实例方法可用于您引用的代码段。

答案 1 :(得分: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方法中的第二个参数;第一个必须始终为self)。

答案 2 :(得分:-1)

可以在Object或内核模块中定义。

编辑:不是。它在此文件的第220行http://github.com/jgarber/redcloth/blob/master/ext/redcloth_scan/redcloth_scan.c.rl

上定义