如何将GitHub风格的Markdown转换成HTML?

7
我知道Github已经发布了Redcarpet gem,用于将Markdown转换为HTML,但据我所见,它不支持(或无法识别)Github风格的Markdown,例如:

javascript var x = 1;

请问是否有gem(或使用redcarpet的某种方法)来处理Github风格的语法,特别是我对语法高亮很感兴趣。

谢谢。

3个回答

4
现在最好使用github-markdown宝石。
GitHub::Markdown.render(content)

感谢您的评论,很高兴看到这个宝石可用并得到更新。 - codecraig

3
您可以使用Redcarpet将Markdown代码转换为HTML。这里有两个从Redcarpet项目测试中提取的示例。
def test_compat_api_knows_fenced_code_extension
  text = "```ruby\nx = 'foo'\n```"
  html = RedcarpetCompat.new(text, :fenced_code).to_html
  html_equal "<pre><code class=\"ruby\">x = 'foo'\n</code></pre>", html
end

def test_compat_api_ignores_gh_blockcode_extension
  text = "```ruby\nx = 'foo'\n```"
  html = RedcarpetCompat.new(text, :fenced_code, :gh_blockcode).to_html
  html_equal "<pre><code class=\"ruby\">x = 'foo'\n</code></pre>", html
end

我希望这个回答可以解决您的问题。

0
GitHub发布了github-markup gem,它可以将标记转换为HTML。您可以选择将其安装为gem包:
$ gem install github-markup

或者,如果你正在使用Ubuntu,可以使用apt命令进行安装:
$ sudo apt install ruby-github-markup

Github-markup 可以在 Ruby 程序和命令行中使用。

Ruby 程序使用

不幸的是,README 中展示如何使用 github-markup 的代码示例文档不完整。 然而,命令行源代码 是一个完整的工作示例,展示了如何在 Ruby 程序中使用 github-markup

#!/usr/bin/env ruby

$LOAD_PATH.unshift File.dirname(File.realpath(__FILE__)) + "/../lib"
require 'github/markup'

if ARGV.size < 1
  print "usage: #{File.basename($0)} FILE [ FILES ... ]\n"
  exit 1
end

sources = []

ARGV.each { |s|
  begin
    file = File.open( s, "r" )
    sources.push [ s, file ]
  rescue Exception => e
    $stderr.print "error: #{e.message}\n"
    exit 1
  ensure
  end
}

sources.each { |name, file|
  print GitHub::Markup.render( name, file.read )
  file.close
}

命令行使用

以下是在命令行中使用 github-markup 的示例:

$ github-markup README.md

将HTML输出复制到系统剪贴板

我通常在WSL上工作。这是一种方便的方法,可以将生成的HTML复制到剪贴板:

$ github-markup README.md | clip.exe

在一个通用的X11终端上,你可以使用xclip来实现同样的功能。
$ alias xclip='xclip -selection clipboard'
$ github-markup README.md | xclip

还有许多其他的Linux剪贴板工具可供选择,例如cb

从Ruby中执行外部命令

您也可以在Ruby程序中运行命令行可执行文件:

puts `github-markup README.md`.chomp

从Python中执行命令行

你也可以在Python程序中运行命令行可执行文件:

import os
print(os.system('github-markup README.md'))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接