2008年12月01日

Copal2 で Markdown を使う方法

ブログで記事を書くとき、見出しや表やリストを作りたいときがある。Wiki記法を使ったことがあると、ブログでもそういう略記ができるマークアップ言語が使えるといいと思う。

実際、自分で設置したブログの場合にはそういう機能がオプションで用意されている場合がある。プラグインを自由に追加できるブログならば、マークアップ言語を記事に変換してくれるテキストフィルタのプラグインを組み込むだけで簡単に実現できる。

では、今この記事を書いている seesaaブログのようなホスティング型ブログを使っていて、自分で機能拡張ができないときはどうすればいいだろうか。

手っ取り早いのは、変換デモページを利用する方法だ。Markdownならば、PHP Markdown: Dingus。ここで変換された結果をコピペすればいい。でも、すべてをデモページに頼るのもいけないのでローカルでできる方法を考える。

PHPやPerlが動くローカルサーバーを起動させておくというのも手だ。上記デモページと似たようなページを作ってやればいい。でも日常的にローカルサーバーが稼働している環境でないかぎり、変換のためだけにサーバーを起動させるというのは牛刀割鶏だし、かえって遠回り。コマンドラインでスクリプトエンジンを直接利用すれば済むことだろう。

コードと、出力されるタグ、そしてどのように表示されるかのプレビュー、この三つを簡単に、WindowsXP上で確認できるアイデアを考えてみた。

必要なのは、copal2と、php.exe。それから、必要なマークアップ言語のスクリプト。そして、多少の手間。

copalは、スクリプト言語を便利に使うための統合環境。公式サイトは、Copal2これは Windows でスクリプトの開発をするとき重宝している。

copal は、Perl、Ruby などのスクリプト言語のプログラムを書くと、その結果を出力してくれる。ちょっと工夫をして、その記法の記述をスクリプトとして与えて、それを解釈させればいい。

WordPress のプラグインについて知識があったので、今回は PHP を使ったが、Perl や Ruby、Python も使えるので、それで記述されたマークアップ言語を使ってもできるはず。

それでは、具体的な作業。

準備

phpのインストール

今回は PHP で書かれたスクリプトを使うので、Windows 上で動く PHP 処理系をダウンロードしてくる。

PHP 公式サイトのダウンロードページから、Windows Binaries をとってくる。分かる人は ZIP でもいいけど、インストーラをダウンロードして、インストールする。

(追記08.12.2)他のスクリプトを書こうと思ってmbstring関数を使おうと思ったら、使えなかった。かなり悩んでインストーラ版には入っていないことが分かった。今回のMarkdownには必要ないけれど、今後PHPでいろいろスクリプトを書いていくならば、ZIP版をインストールした方がいい。そのときは、php.iniも必要に応じて修正する。定義ファイルに書くパスもインストールした場所に書き換える。

Copal2

Copal 2からダウンロード。一緒にPHP用の定義ファイルをダウンロードする。サイトに書いてあるインストール方法を読んで、自分のパソコンにインストールする。そして、インストールされたフォルダのdefsフォルダに、PHP用の定義ファイルを入れる。PHPのインストール場所が違っていれば、実行ファイルのパスExePathを書き換えておく。

copal にもスクリプトを記述するためのテキストエリアはあるけれど、これはちょっと使いにくいので外部エディタを登録する。詳しくは、Copal2オンラインヘルプ:外部エディタとの連携についてを参照。

Copal で1行何か書いた後、Ctrl+E を押すと、保存を促すダイアログが出てくる。ここで保存をすると、そのファイルを登録した外部エディタで開く。それ以後は、その外部エディタで編集する。外部エディタで保存すると、Copal のエディタに反映される。

Copal には他にも便利なオプションが用意されている。設定メニューの環境設定サブメニューの環境設定タブシートにあるホットキーや、実行メニューにあるオートリフレッシュなど。使い慣れたエディタと Copal でもそのファイルを開いておけば、エディタで書いて保存し、定義したホットキーで Copal をアクティブにして、スクリプト実行の F9 を使えば、マウスを触らなくても簡単に変換作業ができる。



他に必要な設定は、ファイルメニューのエンコード設定で、無難なUTF-8にしておく。エディタでもUTF-8で書くようにする。



PHPのテスト

copal と php がインストールされたので、うまく copal で pho スクリプトが動くか試してみる。copal の設定メニューの言語サブメニューを開いて、そこから php を選ぶ。そして、copal のスクリプトウィンドウに、次のコードを記入する。

<?php
print "Hello, World!";
?>

記入したら、F9キーをタイプしてみる。タブが自動的に切り替わって、Hello,World!と表示されたら、これでOK!

Markdown Extra の利用

Markdown Extraのインストール

いろいろなマークアップ言語があるけれど、今回はまず、PHP Markdown Extraを使ってみる。Markdown Extra は 代表的なマークアップ言語 Markdown に表の記法など拡張をおこなったもの。

PHP Markdownからダウンロードする。

Markdown Extra の特徴は、PHP Markdown Extraに詳しく解説されている。

解凍したファイルを、パス名にスペースの入らないところに配置する。例えば、

C:\textfilter

というフォルダを作って、ここに markdown.php を入れる。そして、このファイルを呼び出す次のスクリプトを、cp_markdownextra.php と名付けて、同じフォルダに保存する。

<?php
include_once('markdown.php');
$text = implode('',file($argv[1]));
$text = Markdown($text);
print $text;
?>

ブログ投稿などの自分の目的に合わせて細かな変更をするといい。次の例は Flock のブログエディタ用。改行を<BR>に変換してしまうので。

<?php
include_once('markdown.php');
$text = implode('',file($argv[1]));
$text = Markdown($text);
$flag = FALSE;
$lines = explode("\n",$text);
$text = "";
foreach( $lines as $line ) {
if ( strstr($line,"<pre><code>") )
$flag = TRUE;

if ( strstr($line,"</code></pre>") )
$flag = FALSE;

if ( $flag )
$line .= "\n";

$text .= $line;
}
print $text;
?>

そして、次の内容を markdownextra.def として保存し、copal の defsフォルダに保存する。

[Language]
Name=Markdown Extra
Ext=txt
[Environment]
ExePath=c:\Program Files\PHP\php.exe
Option=c:\textfilter\cp_markdownextra.php
LastFolder=c:\
TempFile=Copal.tmp

Option は cp_markdownextra.php へのパスになっているので、適宜書き換える。必要ならば他のパラメータも。

Markdown Extra のテスト

Markdown Extra で変換するためには、Copal の設定メニューの言語サブメニューで「Markdown Extra」を選択する。

そして、次の Script 領域に次のスクリプトを貼り付け、「スクリプトを実行」(F9)を押して、Result 領域が表示されれば、成功ということになる。

| First Header  | Second Header |
| ------------- | ------------- |
| Content Cell | Content Cell |
| Content Cell | Content Cell |

こうやってできあがった HTML タグを、ブログの HTMLソース用のテキストエリアにコピーし、投稿すればいい。

※ 投稿してみて、予期しない<BR>が余計に追加されていたので、修正して再投稿。



posted by takayan at 00:23 | Comment(2) | TrackBack(0) | プログラミング | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
>残念ながら、ブラウザへ出力(F8)がはたらかない。

すみません。以前PHP対応をしたときに直そうと思って忘れていました。Ver 2.84にて対応しましたのでお試しください。
Posted by Copal作者 at 2008年12月21日 01:11
この記事書いた後、直接、開発サイトに要望書くべきでした。
対応ありがとうございます。
Posted by takayan at 2008年12月23日 02:08
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]


この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。