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

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

RedCloth::TextileDoc是在这里重新开课。这意味着这个文件中的类和 inlib/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 方法中的第二个参数;第一个必须始终是self)。

于 2010-02-01T14:11:50.127 回答
-1

可能是在 Object 或 Kernel 模块中定义的。

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

于 2010-01-28T18:56:33.127 回答