想在博客程序中用 markdown,琢磨半天。 看了 railscasts #272 Markdown with Redcarpet 看了篇博文Markdown 与 Redcarpet 简介 当然也看了redcarpet
上面看起来挺简单的。但再看 ruby-china 的源码,马上崩溃了……
#lib/markdown.rb,这个为什么这么多东西,为什么要放 lib 呢? #/lib/tasks/markdown_body.rake这个看不懂耶……什么时候用? #application_helper.rb这个能明白 #topics_helper.rb才是我的大问题,format_topic_body 到底用在哪里了?我没找到啊! 前面的帖子会说
<%= markdown(@article.content) %>
或者
class Blog < ActiveRecord::Base
before_save :fill_html_content
#将markup的content转换为html并写入字段
def fill_html_content
self.html_content = Klog::Markdown.render(self.content)
end
end
但我没找到 ruby-china 里怎么发生的这一切啊…… 也没有别的一个完整的例子……
我的理解是:
额,没想明白…… 哇哇哇哇哇哇……我哭……
难道我要一辈子都呆在新手区吗?
之前可能把事情想复杂了,我现在的理解是,照常保存,然后在 show.html.erb 中,使用了 markdown 格式的字段,就用 Redcarpet 转换为 html 就好了。
def markdown(text)
renderer = Redcarpet::Render::HTML.new(filter_html:true, hard_wrap:true)
markdown = Redcarpet::Markdown.new(renderer, fenced_code_blocks:true, autolink:true,space_after_headers:true,tables:true)
syntax_highlighter(markdown.render(text)).html_safe
end
def syntax_highlighter(html)
doc = Nokogiri::HTML(html)
doc.search("//pre[@lang]").each do |pre|
pre.replace Albino.colorize(pre.text.rstrip, pre[:lang])
end
doc.to_s
end