在降价中对块引用进行简单的格式化/解析



我在我的网站上使用了markdown,我想对新闻文章进行一些简单的解析。

如何解析 markdown 以提取所有块引用和链接,以便我可以将它们与文档的其余部分分开突出显示

例如,我想解析文档中的第一个块引用(>),这样无论它出现在文档中的哪个位置,我都可以将其推到顶部。 (类似于许多新闻网站所做的,突出文章的某些部分。但随后将其取消阻止为主体引用。 因此,它发生了两次(一次在顶部突出显示,然后通常在文档中发生)。

我假设您正在尝试在渲染时执行此操作,当降价将转换为 HTML 时。为了给你指出正确的方向,你可以这样做的一种方法是

  1. 将降价转换为 HTML
  2. 将 HTML 传递给 Nokogiri
  3. 抓住第一个<blockquote>,复制它,并将其注入Nokogiri节点树的顶部

结果将是第一个<blockquote>的副本。

Redcarpet 2是将Markdown转换为HTML的绝佳宝石。Nokogiri 是 HTML 解析的最佳选择。

如有必要,我可以编写示例代码,但是这两个 gem 的文档都很详尽,而且这项任务很简单,只需从文档中的示例拼凑出一些位。这至少回答了你关于如何去做的问题。

编辑

根据需要,这也可以通过一行jQuery来完成。

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

给定页面上文章的<article> DOM 元素,抓取第一个<blockquote>,克隆它,然后将其附加到<article>的顶部。

我知道维基标记(即 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(",")}]"

我还没有看到任何这样的解析器可用于降价。 使用红地毯,转换为HTML,然后使用Nokogiri似乎有点复杂。

相关内容

  • 没有找到相关文章

最新更新