1

サイトでマークダウンを使用しており、ニュース記事の簡単な解析を行いたいと考えています。

マークダウンを解析してすべての引用符とリンクを取得し、ドキュメントの残りの部分とは別に強調表示するにはどうすればよいですか

たとえば、ドキュメント内の最初の引用符 ( > ) を解析して、ドキュメント内のどこで発生しても先頭にプッシュできるようにしたいと考えています。(記事の特定の部分を強調するために、多くのニュース サイトが行うことと同様です。) ただし、本文のブロック引用を解除します。したがって、それは 2 回発生します (1 回目はハイライト表示で常に上部に表示され、次に通常はドキュメント内で発生します)。

4

2 に答える 2

2

マークダウンが HTML に変換されるときに、レンダリング時にこれを実行しようとしていると仮定します。あなたを正しい方向に向けるために、これについてあなたができる1つの方法は、

  1. マークダウンを HTML に変換する
  2. HTMLをNokogiriに渡す
  3. 最初<blockquote>の を取得してコピーし、Nokogiri ノード ツリーのトップに挿入します。

結果は、最初の の複製になり<blockquote>ます。

Redcarpet 2は、Markdown を HTML に変換するための優れた gem です。Nokogiriは、HTML の解析に最適です。

必要に応じてサンプル コードを書くこともできますが、両方の gem のドキュメントは完全であり、このタスクはドキュメント内の例の一部をつなぎ合わせるだけで十分です。これは、少なくともそれを行う方法についてのあなたの質問に答えます。

編集

必要に応じて、これは jQuery の行でも実行できます。

$('article').prepend($($('article blockquote').get(0)).clone())

<article>ページ上の記事のDOM 要素を指定して、最初の を取得し<blockquote>、それを複製して、<article>.

于 2012-08-11T18:06:36.367 に答える
1

wiki マークアップ (つまり、ruby のwikicloth ) には、リンク、カテゴリ、および参照を解析する場合と同様の実装があることを知っています。ブロック引用符についてはよくわかりませんが、より適している可能性があります。

何かのようなもの:

data = "[[ this ]] is a [[ link ]] and another [http://www.google.com Google].  This is a <ref>reference</ref>, but this is a [[Category:Test]].  This is in another [[de:Sprache]]"

wiki = WikiCloth::Parser.new(:data => data)
wiki.to_html

puts "Internal Links: #{wiki.internal_links.size}"
puts "External Links: #{wiki.external_links.size}"
puts "References:     #{wiki.references.size}"
puts "Categories:     #{wiki.categories.size} [#{wiki.categories.join(",")}]"
puts "Languages:      #{wiki.languages.size} [#{wiki.languages.keys.join(",")}]"

マークダウンに使用できるそのようなパーサーは見たことがありません。redcarpet を使用し、HTML に変換してから Nokogiri を使用するのは少し複雑に思えます。

于 2012-08-12T12:13:26.800 に答える