我知道Github已经发布了Redcarpet gem,用于将Markdown转换为HTML,但据我所见,它不支持(或无法识别)Github风格的Markdown,例如:
javascript
var x = 1;
请问是否有gem(或使用redcarpet的某种方法)来处理Github风格的语法,特别是我对语法高亮很感兴趣。
谢谢。
GitHub::Markdown.render(content)
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
github-markup
gem,它可以将标记转换为HTML。您可以选择将其安装为gem包:$ gem install github-markup
apt
命令进行安装:$ sudo apt install ruby-github-markup
Github-markup
可以在 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
我通常在WSL上工作。这是一种方便的方法,可以将生成的HTML复制到剪贴板:
$ github-markup README.md | clip.exe
xclip
来实现同样的功能。$ alias xclip='xclip -selection clipboard'
$ github-markup README.md | xclip
还有许多其他的Linux剪贴板工具可供选择,例如cb。
您也可以在Ruby程序中运行命令行可执行文件:
puts `github-markup README.md`.chomp
你也可以在Python程序中运行命令行可执行文件:
import os
print(os.system('github-markup README.md'))