2012-11-02 24 views
0

在我們的網站(其目標是高度非技術人員),我們讓他們在發送電子郵件時使用Markdown。這樣一來,他們就可以得到像大膽,傾斜等好東西。然而,由於非技術性,他們永遠無法超越「增加兩條線來使換行符真正起作用」的怪癖。爲什麼Github Flavored Markup只爲以[ w <]開頭的行添加換行符?

由於這個原因,我們主要使用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 

這個效果很好,但在某些情況下,它不會添加新的線,我想關鍵是在「非常清楚的情況下」該評論的一部分。

如果我正確解釋它,這只是爲以單詞字符或'<'開始的行添加換行符。

有誰知道這是爲什麼?特別是,爲什麼'<'?

將兩個空格添加到基本上任何東西(以空格,連字符,任何東西開始的行)會有什麼樣的危害?

回答

1

'<'字符用於在行的開頭引用消息。我想這就是原因。

+0

我覺得'>'更經常用於引用。 –

1

這個問題的其他答案是相當錯誤的。這與引用無關,而降價引用的字符是>

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

讓我們打破上述正則表達式分成幾部分:字符串

  • ^ =錨開始。
  • [\w\<]匹配單詞字符或單詞邊界的開始。 \<不是是文字,而是GNU字邊界。參見here(做一個ctrl + f對於\<)。
  • [^\n]*匹配任何長度的非換行符
  • \n匹配新行。
  • +是,我相信,佔有量詞。

我相信,但我不是100%確定的,這只是用於將x設置爲一行文本。然後,繁重的工作與下一行完成:

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

這是說「如果x滿足正則表達式\n{2}(即有兩個換行符),離開x原樣,否則,剝離x和追加。換行符

+0

「+」表示「+」之前的任意一個或多個:「c +」是「c」或「cc」或「ccc」......用於任何單個字符「c」; '\ n +'是「一個或多個換行符」 - 「\ n」是單個字符; '(bla)+'是「bla」或「blabla」... – denis

相關問題