Ruby:如何从Markdown生成HTML,如GitHub或BitBucket?

时间:2018-02-20 12:42:55

标签: ruby markdown redcarpet readme

在GitHub或BitBucket中每个存储库的主页面上,它以非常漂亮的格式显示Readme.md。

有没有办法与红宝石做同样的事情?我已经发现了一些像Redcarpet这样的宝石,但它看起来并不漂亮。我已经关注了Redcarpet this instructions

编辑: 在我尝试Github's markup ruby gem之后,同样的事情正在发生。 显示的是: enter image description here 我想要的是这个: enter image description here

而且我确定它不仅缺少css,因为经过3次反引号(```)后,我写了jsonbash这样的语法,并在第一张图片中它是写的。

EDIT2:

这段代码:

  renderer = Redcarpet::Render::HTML.new(prettify: true)
  markdown = Redcarpet::Markdown.new(renderer, fenced_code_blocks: true)
  html = markdown.render(source_text)
  '<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>'+html

生成这个: enter image description here

2 个答案:

答案 0 :(得分:0)

Github提供了自己的ruby gem:https://github.com/github/markup。 您只需要安装正确的依赖项,就可以了。

答案 1 :(得分:0)

您需要启用一些非标准功能。

分区代码块

受防护的代码块是非标准的,默认情况下不会在大多数Markdown解析器上启用(一些较旧的代码块根本不支持它们)。根据Redcarpet的docs,您要启用fenced_code_blocks扩展程序:

  
      
  • :fenced_code_blocks:解析围栏代码块,PHP-Markdown样式。用3个或更多~或反引号分隔的块将被视为代码,无需缩进。可以在代码块的开始栅栏的末尾添加可选的语言名称。
  •   

语法突出显示

大多数Markdown解析器不会对代码块进行语法高亮显示。而那些总是这样做的人。即便如此,您仍然需要提供自己的CSS样式才能正确设置代码块样式。事实证明,Redcarpet确实包含对prettify渲染器的HTML选项的支持:

  
      
  • :prettify:为Google代码美化添加了<code>代码的漂亮印刷版。
  •   

您需要从google-code-prettify项目中获取Javascript和CSS以包含在您的网页中。

解决方案

最后你需要这样的东西:

renderer = Redcarpet::Render::HTML.new(prettify: true)
markdown = Redcarpet::Markdown.new(renderer, fenced_code_blocks: true)
html = markdown.render(source_text)