Markdown,使块级HTML内的Markdown处理生效。

5

来自Daring Fireball的Markdown文档

请注意,在块级HTML标签内部不会处理Markdown格式语法。例如,您不能在HTML块内使用Markdown样式的强调

我想用

标签包装一些Markdown内容,并仍然使其处理该Markdown。是否有一种方法可以通过开关或其他方式实现这一点?

例如

<div>

* * *

The asterisks would still become an <hr/>

</div>

我正在使用RDiscount作为Markdown过滤器。非常感谢您的帮助。
2个回答

2

Maruku 支持 HTML 块内部的 Markdown。


非常感谢您的建议,我会尽快尝试并查看它是否有效。 - ian

1

我把积分给了Halst,因为他的答案是正确的,但是我在使用Maruku时遇到了几个问题,比如它会剥离Unicode并重新格式化现有的HTML,而我不希望它触及并引起问题。所以,我不得不自己解决这个问题,这就是我想出来的方法:

# encoding: UTF-8
module MarkdownFilters

  # This finds html tags with "markdown='1'" as an attribute, runs markdown over the contents, then removes the markdown attribute
  class InsideBlock
    require 'hpricot'


    def self.run( content, markdown_parser=nil )    
      if markdown_parser.nil?
        require 'rdiscount' 
        markdown_parser=RDiscount
      end
      doc = Hpricot(content) 

      (doc/"*[@markdown='1']").each do |ele|  
        ele.inner_html = markdown_parser.new(ele.inner_html).to_html
        ele.remove_attribute("markdown")
      end

      doc.to_s
    end # run

  end # class
end # module

我从Maruku那里窃取了使用“markdown ='1'”属性标记html的想法,因此可以与之互换。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接