0

私たちのサイト (非常に非技術的な人々を対象としています) では、メールを送信するときに Markdown を使用できるようにしています。そうすれば、太字やイタリック体などの素敵なものが得られます。ただし、非技術的であるため、「改行を実際に機能させるために2行追加する」という癖を乗り越えることはできません.

その主な理由として、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

これはうまく機能しますが、場合によっては改行が追加されません。その鍵は、そのコメントの「非常に明確な場合」の部分にあると思います。

私が正しく解釈すると、これは、単語文字または「<」で始まる行に改行を追加するだけです。

それがなぜなのか誰か知っていますか?特に、なぜ「<」なのか?

本質的に何か (スペース、ハイフンなどで始まる行) に 2 つのスペースを追加するだけで何が害になるでしょうか?

4

2 に答える 2

1

この質問に対するもう 1 つの答えは、かなり間違っています。これは引用とは関係なく、マークダウン引用の文字は>.

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

上記の正規表現を部分に分けてみましょう。

  • ^= 文字列のアンカー開始。
  • [\w\<]単語文字または単語境界の開始に一致します。 \<はリテラルではなく、GNU ワードの境界です。こちらを参照してください( にctrl+fを付け\<ます)。
  • [^\n]*任意の長さの非改行文字に一致
  • \n改行に一致します。
  • +私は、所有量指定子だと思います。

100% 確実ではありませんが、これは単純xにテキスト行に設定するために使用されると思います。次に、重い作業は次の行で行われます。

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

これはx、「正規表現を満たす\n{2}(つまり、改行が 2 つある) 場合はそのままにxしておきます。それ以外の場合はx、改行文字を削除して追加します。

于 2014-09-13T14:28:54.683 に答える
1

「<」文字は、メッセージを引用するために行頭で使用されます。それが理由だと思います。

于 2012-11-12T15:25:28.780 に答える