簡単なもの - ブログ投稿のテキストを (たとえば) 3 番目の段落で切り詰めるには? そして、画像をレンダリングしないように明示的に伝えますか?
私はところでマークダウンを使用しています。これは、単純なコードを使用し、純粋なルビーで外部の宝石を使用せずに「エレガントな」方法で実行できますか?
そうでない場合、どのように実装するのが最善ですか?
簡単なもの - ブログ投稿のテキストを (たとえば) 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 があるかどうかをテストすることをお勧めします。