以下方法存在于 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
。
这里发生了两件事。首先,此文件由Ragel预处理。但是对于这个问题,您可以放心地忽略这个事实并阅读该文件中奇怪的语法。专注于 Ruby 位。
二RedCloth::TextileDoc
是在这里重新开课。这意味着这个文件中的类和 inlib/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 方法中的第二个参数;第一个必须始终是self
)。
可能是在 Object 或 Kernel 模块中定义的。
编辑:不是。它在此文件http://github.com/jgarber/redcloth/blob/master/ext/redcloth_scan/redcloth_scan.c.rl的第 220 行定义