首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带Sinatra的RDiscount :generate_toc

带Sinatra的RDiscount :generate_toc
EN

Stack Overflow用户
提问于 2012-06-10 08:48:26
回答 2查看 386关注 0票数 2

因此,我让sinatra使用Rdiscount设置来呈现一个具有HAML布局的markdown文件。这些都可以用,但是我想让RDiscount根据我的haml文件中的头文件生成一个目录。我尝试过在sinatra配置中设置它。

代码语言:javascript
复制
set :markdown, :generate_toc => true

但这似乎并不管用。

当我像这样呈现markdown时,我也尝试过这样做:

代码语言:javascript
复制
markdown :PAGENAMEHERE, :layout => :'layouts/PAGENAMEHERE', :generate_toc => true

这也不起作用。

这有可能吗?如果是,我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-25 04:05:50

虽然@three的答案对我帮助很大,但我想展示一个更通用的解决方案:

代码语言:javascript
复制
class MDWithTOC < ::Tilt::RDiscountTemplate
  def flags
    [:generate_toc]
  end
end

Tilt.register MDWithTOC, 'md'

在这里,我们覆盖了RDiscount倾斜模板处理程序的标志方法,并将其正则化为md格式的处理程序。

现在您可以像往常一样使用md帮助器,它将生成目录。

票数 0
EN

Stack Overflow用户

发布于 2012-06-16 20:21:21

这应该是可行的:

代码语言:javascript
复制
get '/' do
  text = File.read('README.md')
  markdown = RDiscount.new(text, :generate_toc)
  body = markdown.to_html
  haml :home, :layout => true, :locals => {:body => body}
end

您可以直接通过RDiscount创建主体,并将其作为普通HTML包含在您的HAML布局中。无论是什么阻止了toc的创建,都应该以本机的方式工作。我通过https://github.com/mjijackson/markdown/blob/master/app.rb找到了解决方案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10965644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档