Jedit X で Markdown(とついでにPOD)

Markdownとは?

Markdownとは「軽量マークアップ言語の1つ」で、簡単な記法で書いたテキストをHTMLに変換してくれる仕組みです。Wikiや「はてな記法」みたいなものですね。

Markdown」というものがあることは知っていたのですが、githubの「README.md」がこの方式だったので、改めて記法などを調べてみた訳です。HTMLを埋め込めるなど、マニュアル等を作るのに使いやすそうですね。

既にいろんなCMSテキストエディタMarkdownに対応しているそうですが、愛用のテキストエディタJedit X」についての情報は見つけられなかったので、例のようにJedit Xのマクロ(=AppleScript)を作ってみました。

MarkdownSafariでプレビュー

Markdownのオリジナル版はPerlで実装されていて、以下でダウンロードできます。

http://daringfireball.net/projects/markdown/

まずはこれを入手して、「Markdown.pl」を Jedit X の「scripts」フォルダ(~/Library/Application Support/Jedit X/scripts/Markdown.pl)に入れておきます。

で、以下のようにAppleScriptを書きました。

tell document 1 of application "Jedit X"
    save
    set fPath to path as POSIX file
    set pPath to POSIX path of fPath
    set tmppath to pPath & ".preview.html"
    
    set existsflg to false
    tell application "Finder"
        set existsflg to exists file tmppath as POSIX file
    end tell
    
    if not existsflg then
        set scpt to "perl ~/Library/Application\\ Support/Jedit\\ X/scripts/Markdown.pl " & quoted form of pPath & " > " & quoted form of tmppath
        do shell script scpt
        
        tell application "Safari"
            activate
            open tmppath as POSIX file
        end tell
        
        delay 1
        do shell script "rm -f " & quoted form of tmppath
     end if
end tell

上記を「AppleScriptエディタ」にコピペして、「MarkdownSafariでプレビュー.scpt」とかの名前で保存、Jedit Xの「スクリプトウィンドウ」に放り込めば完成です。

元のファイル名に「.preview.html」を加えたファイルをテンポラリファイルとして作ってます。無闇に上書きしてしまうとまずいので、既に同名のファイルがある場合には何もしないようにしてあります。

Safariでプレビューしますが、他のブラウザがよければ、「tell application "Safari"」のくだりをお好きなブラウザに書き換えてもらえばよいですね。ちなみに、Chrome の場合は、

        tell application "Google Chrome"
            activate
            --     open tmppath as POSIX file
            open location "file://" & tmppath
        end tell

としないと開きませんでした。

ついでに POD も。PODをSafariでプレビュー

同じような軽量マークアップ言語の1つとして「POD = Plain Old Documentation」というPerlを書く人にはお馴染みの記法があります。これも同じようにできるなぁ、と思ったので作ってみました。

Mac OS X であればデフォルトで「pod2html」というコマンドが入っていますので、こちらはダウンロードとかする必要はありません。

tell document 1 of application "Jedit X"
    save
    set fPath to path as POSIX file
    set pPath to POSIX path of fPath
    set tmppath to pPath & ".preview.html"
    
    set existsflg to false
    tell application "Finder"
        set existsflg to exists file tmppath as POSIX file
    end tell
    
    if not existsflg then
        set scpt to "pod2html " & quoted form of pPath & " > " & quoted form of tmppath
        do shell script scpt
        
        tell application "Safari"
            activate
            open tmppath as POSIX file
        end tell
        
        delay 1
        do shell script "rm -f " & quoted form of tmppath
        do shell script "rm -f ./pod2htmd.tmp"
        do shell script "rm -f ./pod2htmi.tmp"
    end if
end tell

ちなみに、両方ともプレビューするだけなので出力したHTMLは消しちゃっていますが、出力するためのスクリプトも登録しておくと便利かもしれませんね。

Jedit X で ZenCoding

愛用のテキストエディタJedit X」でZen Codingができないものかと探ってみました。

ライブラリ探し

Jedit Xのマクロは AppleScriptでつくることができるのですが、さすがにAppleScript実装のZenCodingというものは無さそう。でも、AppleScriptは「do shell script」でコマンドを実行できるので、Perl やら Rubyで実装されたものがあれば、なんとかなるか、と思って見つけたのが以下です。

Zen Coding の Perl 実装書きました – OTCHY.NET

全ての機能に対応している訳ではないそうですが、よく使う記述には対応しているので、これで十分に満足できそうです。使わせていただきます。

実装してみる

上記サイトから SSSCoding.pm をダウンロードして、Perlのライブラリディレクトリ(Snow Leopardだと、/Library/perl/5.10.0/SSSCoding.pm 辺り)に保存します。で、以下のようにAppleScriptを書いてみました。

tell document 1 of application "Jedit X"
     set range to selected paragraph range
     set startP to loc of range
     set endP to startP + (len of range) - 1
     repeat with i from startP to endP
          set str to paragraph i
          set res to do shell script "perl -MSSSCoding -e 'chomp($ARGV[0]);print SSSCoding::expand($ARGV[0]);'" & " " & quoted form of str
          set paragraph i to res & (ASCII character 10)
     end repeat
end tell

#なんだか改行の処理がややこしくて美しくないですが・・・。

これをスクリプトファイル(.scpt)で保存して、Jedit Xの「スクリプトウィンドウ」に放りこめば完成です。好きなショートカットを割り振っておくと、より便利です。