それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

マークダウン記法を快適にプレビューしながら編集(osx)

マークダウン便利ですね―、パパっとしたメモがHTMLに変換されて便利です。

マークダウンの自動プレビューを作った

(マークダウン)

こんな感じ。

マークダウンはプレビューが不便だった

マークダウンはドキュメント生成が楽なのに、プレビューするととたんに面倒になります。
Finderのプレビューエリアをつかってプレビューしてた。

面倒だから監視スクリプト書いた

マークダウンをメインで使いたいので、監視スクリプトと自動プレビューを作った。
こういうのがパパっと作れるのでOSXは本当に好き。
(IEでコレやろうと思うと大変ですよね。。。)

自動プレビューできるRubyスクリプト

必要なgems
gem install rb-kqueue
起動
ruby markdown_watcher.rb  m_sample
Rubyファイル
#!/usr/bin/env ruby

require 'rb-kqueue'
##引数処理
f_name = ARGV.shift
puts "usage:\n #{__FILE__} FILE \n  "             if     f_name.nil?
puts "error\n file '#{f_name}' does not exits.\n" unless File.exist? f_name
##ファイル名処理
html_name =  f_name.gsub(/\..+$/, "")+".html"
f_name = File.realpath f_name
html_name = File.expand_path( html_name,File.dirname(f_name),  )


##メインループ
loop{
	queue = KQueue::Queue.new
	[:write,:rename].each{|e|
	queue.watch_file(f_name, :write) { 	
		puts " #{f_name} was changed!(#{e})" 
		sleep 0.2
		Thread.start{
			`/usr/local/bin/markdown '#{f_name}' > '#{html_name}'`
			`open -g -a Safari  '#{html_name}'`
		}
	}
	}
	queue.watch_file(f_name, :revoke) {
		puts " #{f_name} was revoked ";
		exit;
	} 

	##vim 対策
	[:delete].each{|e| 
	queue.watch_file(f_name, e) { 

		puts " #{f_name} was #{e}d ";
		sleep 0.4
		queue.stop #削除されたら監視ループを止める
	} 
	}
	queue.run
}

とっても楽ですね

マークダウンが自動プレビューされるのでウインドウを左右に出せば終わりなので楽です。

Automator見ながら使えるの探してて、openコマンドSafariで同じファイルを再度OpenすればSafariリロードされた。それに気づいた瞬間に、これだ!と思いましたよ

コレが出来ないなら、Windowを探すか、WebView使うか、WebSocketでリロード掛けないとと思ってたからね。Openコマンド便利ですね―

応用可能です。

ファイルをプレビューはopen コマンドだけでするので、CSSやHTMLでも応用可能ですです。