【问题标题】:Why does Github Flavored Markup only add newlines for lines that start with [\w\<]?为什么 Github Flavored Markup 只为以 [\w\<] 开头的行添加换行符?
【发布时间】:2012-11-02 14:33:01
【问题描述】:

在我们的网站(针对高度非技术人员),我们让他们在发送电子邮件时使用 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

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

如果我解释正确,这只是为以单词字符或“

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

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

【问题讨论】:

    标签: github newline markdown github-flavored-markdown


    【解决方案1】:

    '

    【讨论】:

    • 我认为 '>' 更常用于引用。
    【解决方案2】:

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

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

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

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

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

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

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

    【讨论】:

    • + 表示+ 之前的一个或多个:c+cccccc ... 对于任何单个字符c\n+ 是“一个或多个换行符”——\n 是单个字符; (bla)+ 是 "bla" 或 "blabla" ...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 2017-09-27
    • 2020-11-15
    • 2011-11-22
    相关资源
    最近更新 更多