有没有办法使用Redcarpet或Bluecloth,这样当它插入降价时它不会产生任何标题? 例如: #header 1 收益率: header 1 header 1 (preferred) 和: ##header 2 收益率: header 2 header 2 (preferred) 好吧,你可以在
例如:
#header 1
收益率:
header 1
header 1 (preferred)
和:
##header 2
收益率:
好吧,你可以在Markdown中转义字符:header 2
header 2 (preferred)
# header 1 \# header 1 ## header 2 \## header 2
…给:
header 1
# header 1
header 2
## header 2
如果您不想这样做,或者您正在解析其他人的Markdown并且没有选择,我建议您预先处理收到的Markdown以执行上述操作:
def pound_filter text text.gsub /^#/, '\#' end
使用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>
当然,因为HTML中的换行符实际上不会这样呈现 – 它将显示为一行:
# Hello ## World”
……你可能想要增加:
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>
这最后会显示为:
# Hello
## World
不幸的是,你最终会进入这样一个奇怪的领域,其中标题在引号内:
> ## Heading
……但我把它作为练习留给读者.