Cyr*_*rus 3 markdown ruby-on-rails bluecloth redcarpet
有没有办法使用Redcarpet或Bluecloth,这样当它插入降价时它不会产生任何标题?
例如:
#header 1
Run Code Online (Sandbox Code Playgroud)
收益率:
标题1
标题1(首选)
和:
##header 2
Run Code Online (Sandbox Code Playgroud)
收益率:
标题2
标题2(首选)
好吧,你可以在Markdown中转义字符:
# header 1
\# header 1
## header 2
\## header 2
Run Code Online (Sandbox Code Playgroud)
...给:
标题1
#header 1
标题2
##标题2
如果您不想这样做,或者您正在解析其他人的Markdown并且没有选择,我建议您预先处理收到的Markdown以执行上述操作:
def pound_filter text
text.gsub /^#/, '\#'
end
Run Code Online (Sandbox Code Playgroud)
使用Redcarpet,您可以验证它是否有效:
text = <<-END
# Hello
## World
END
Markdown.new(text.to_html)
# => <h1>Hello</h1>
#
# <h2>World</h2>
Markdown.new(pound_filter text).to_html
# => <p># Hello
# ## World</p>
Run Code Online (Sandbox Code Playgroud)
当然,因为HTML中的换行符实际上不会这样呈现 - 它将显示为一行:
# 你好,世界"
......你可能想要增加:
def pound_filter text
text.gsub( /((\A^)|([^\A]^))#/ ) {|match| "\n" == match[0] ? "\n\n\\#" : '\#' }
end
pound_filter text
# => \# Hello
#
# \## World
Markdown.new(pound_filter text).to_html
# => <p>\# Hello</p>
#
# <p>\## World</p>
Run Code Online (Sandbox Code Playgroud)
这最后会显示为:
# 你好
##世界
不幸的是,你最终会进入这样一个奇怪的领域,其中标题在引号内:
> ## Heading
Run Code Online (Sandbox Code Playgroud)
......但我把它作为练习留给读者.