【发布时间】:2010-10-25 02:38:30
【问题描述】:
我正在使用 CodeRay 进行语法高亮显示,但我遇到了这个正则表达式的问题。文本将如下所示:
<pre><code>:::ruby
def say_hello
puts 'hello!'
end
</code></pre>
这部分::::ruby 将告诉 CodeRay 代码块应该被解释为哪种语言(但它必须是可选的)。所以这是我目前所拥有的:
def coderay(text)
text.gsub(/\<pre\>\<code\>(.+?)\<\/code\>\<\/pre\>/m) do
CodeRay.scan($2, $3).div()
end
end
$2 包含我正在格式化的代码(包括说明将其格式化为哪种语言的行),但我需要提取第一行以便我可以将其作为第二个参数传递给 scan() 或如果找不到该语言行,则将其传递给默认参数。我该怎么做?
【问题讨论】:
-
您使用的是 Ruby 1.8 还是 1.9?
-
任一。有什么不同吗?
-
Ruby 1.9 中的 RE 支持命名组。此外,您只是希望 Ruby 成为默认语言,还是希望以更复杂的方式来确定将代码解释为哪种语言?