0

在我们的网站(面向非技术人员)中,我们让他们在发送电子邮件时使用 Markdown 那样的话,他们会得到一些不错的东西,比如粗体、斜体等。然而,作为非技术人员,他们永远无法超越“添加两行以使换行符真正起作用”的怪癖。

主要出于这个原因,我们使用了Github Flavored Markdown的变体。

我们主要借用了这部分:

# in very clear cases, let newlines become <br /> tags
text.gsub!(/^[\w\<][^\n]*\n+/) do |x|
   x =~ /\n{2}/ ? x : (x.strip!; x << "  \n")
end

这很好用,但在某些情况下它不会添加换行符,我想关键是该评论的“在非常清楚的情况下”部分。

如果我正确解释它,这只是为以单词字符或'<'开头的行添加换行符。

有谁知道这是为什么?特别是,为什么'<'?

将两个空格添加到基本上任何内容(以空格、连字符、任何内容开头的行)会有什么害处?

4

2 回答 2

1

'<' 字符用于在行首引用消息。我想这就是原因。

于 2012-11-12T15:25:28.780 回答
1

这个问题的另一个答案是完全错误的。这和引用无关,markdown引用的字符是>.

 ^[\w\<][^\n]*\n+

让我们将上面的正则表达式分成几部分:

  • ^= 锚点字符串的开始。
  • [\w\<]匹配单词字符或单词边界的开头。 \<不是文字,而是 GNU 单词边界这里(做一个ctrl+ )f\<
  • [^\n]*匹配任意长度的非换行符
  • \n匹配一个新行。
  • +是,我相信,一个所有格量词。

我相信,但不是 100% 肯定,这只是用来设置x一行文本。然后,下一行完成了繁重的工作:

x =~ /\n{2}/ ? x : (x.strip!; x << "  \n")

这表示“如果x满足正则表达式\n{2}(即有两个换行符),则保持x原样。否则,剥离x并附加一个换行符。

于 2014-09-13T14:28:54.683 回答