0

簡単なもの - ブログ投稿のテキストを (たとえば) 3 番目の段落で切り詰めるには? そして、画像をレンダリングしないように明示的に伝えますか?

私はところでマークダウンを使用しています。これは、単純なコードを使用し、純粋なルビーで外部の宝石を使用せずに「エレガントな」方法で実行できますか?

そうでない場合、どのように実装するのが最善ですか?

4

1 に答える 1

3

段落を切り捨てるには、次のようなものが機能するはずです。

def truncate_by_paragraph(text, num=3)
  # since I'm not sure if the text will have \r, \n or both I'm swapping
  # all \r characters for \n, then splitting at the newlines and removing
  # any blank characters from the array
  array = text.gsub("\r", "\n").split("\n").reject { |i| i == "" }
  array.take(num).join("\n") + ".." # only 2 dots since sentence will already have 1
end

画像を削除するには、次の操作を実行できます。

def remove_images(text)
  text.gsub(/<img([^>])+/, "")
end

それからあなたはすることができます

truncate_by_paragraph(@text) # will return first 3 paragraphs
truncate_by_paragraph(@text, 5) # will return first 5 paragraphs
remove_images(truncate_by_paragraph(@text)) # 3 paragraphs + no images

後のフォーマットによってはjoin、最初のメソッドの をに変更して、 join("\n\n")2 倍の間隔を取得することができます。

また、テキストの最後に本当に必要な場合は...、3 番目の段落にドットがあるかどうか、またはすでに 3 があるかどうかをテストすることをお勧めします。

于 2013-04-16T16:47:40.200 に答える