Skip to content

Instantly share code, notes, and snippets.

@uchcode
Last active August 26, 2017 15:34
Show Gist options
  • Save uchcode/cd4b05e47e41a970614e9121dd1edb21 to your computer and use it in GitHub Desktop.
Save uchcode/cd4b05e47e41a970614e9121dd1edb21 to your computer and use it in GitHub Desktop.
マークダウンに書かれたコードを実行する

マークダウンに書かれたコードを実行する

マークダウンはコードを手軽に表現できる書類です。それからコードだけを出力するコマンドを用意するとドキュメントからコードを生成する事が可能です。従来はコードのコメントでドキュメントを生成しますが、その逆を実現してみようというお話です。

コマンドを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)がサンプルコードでもあります。

*ここまでの上記コードはマークダウンを変換したものではなくHTML埋め込みによる表示なのでmd2codeでは無視されます。

ここから先は実際に動作可能なコードとなります。


これはRubyのサンプルです。

puts 'hello ruby'

もう一度。

puts 'hello ruby (again)'

以上です。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment