マークダウンはコードを手軽に表現できる書類です。それからコードだけを出力するコマンドを用意するとドキュメントからコードを生成する事が可能です。従来はコードのコメントでドキュメントを生成しますが、その逆を実現してみようというお話です。
コマンドをmd2code
と名付けてRubyで実装してみました。ソースを以下に示します。とても簡単な内容なのでRuby以外の使用環境に適した言語で実装できるかと思います。
md2code
#!/usr/bin/env ruby
if ARGV.length == 0 || ARGV[0] == '-h' || ARGV[0] == '--help'
STDERR.puts 'usage: md2code markdownfile'
exit 1
end
begin
ARGV.each do |arg|
File.read(arg).scan(/(```+)(.*?\n)(.*?)(\1\n)/m){puts $3}
end
rescue => e
STDERR.puts 'md2code: ' + e.message
end
使用例
$> md2code md2code-doc.rb.md | ruby
マークダウン書類の```
で囲まれたコードが抽出されて標準出力、Rubyへと渡されて実行されます。
このドキュメント自体(md2code-doc.rb.md
)がmd2code
のサンプルコードでもあります。
*ここまでの上記コードはマークダウンを変換したものではなくHTML埋め込みによる表示なのでmd2code
では無視されます。
ここから先は実際に動作可能なコードとなります。
これはRubyのサンプルです。
puts 'hello ruby'
もう一度。
puts 'hello ruby (again)'
以上です。