こんにちは、めのんです!

今日は久々に「PHPプログラマーのためのC講座」以外の話題です。
日々こうやってブログを書いていて「ソースコードを貼るのが面倒だなあ」と感じていました。

ソースコードを貼るときはHighlighting Code BlockというWordPressのプラグインを使っているんですけど、単純にコピペするだけではうまくいかなくて不便な思いをしていました。

もしかしたらClassic Editor(しかも「ビジュアル」ではなく「テキスト」)を使っているからかもしれませんね。

どっちにしても、この面倒さを放置するのはよくないので簡単なツールを作ってみました。
自分で使うだけなので本当に手抜きでエラーチェックもまったくやっていません。

使用した言語はPHPです。
といってもWebサーバーは不要でコマンドラインツールです。

もしかしたらこんなツールでもPHPをコマンドラインで使う参考になるかもしれませんので公開することにしました。

以下がそのソースコードです。

<?php
/// @file   hcb.php
/// @brief  Highlighting Code Block変換ツール
$lang_opt = 'plane';

// コマンドライン引数の解析
foreach (getopt('x:') as $key => $value)
{
  if ($key === 'x')
    $lang = $value; //
}

// 言語テーブル
// 現状では必要最小限の言語のみ対応
$languages = [
  'c' => 'C',
  'php' => 'PHP',
  'bash' => 'Bash',
  'plane' => 'Plane Text',
];
$data_lang = $languages[$lang];

// 標準入力からの読み込み
$contents = file_get_contents('php://stdin');

// 実体参照符号に変換
$contents = str_replace([ '&', '<', '>' ], [ '&amp;', '&lt;', '&gt;' ], $contents);

// 標準出力への書き込み
echo <<<EOT
<div class="hcb_wrap">
<pre class="prism line-numbers lang-$lang" data-lang="$data_lang"><code>$contents</code></pre>
</div>
EOT;

使い方は簡単です。
標準入力から元のソースコードを入力すると、標準出力にHighlighting Code Blockに対応したHTMLコードが出力されます。
それをWordPressのエディタにコピペすればOKです。

デフォルトではPlane Textになっていますので、言語を指定する場合は「-x」オプションを使ってください。
PHPなら「-x php」、Cなら「-x c」とすればOKです。
たとえばこんな感じです。

php hcb.php -x php < sample.php

こんなのでよければ自由に使っていただいてかまいませんが、私は何の保証もしませんし、使用した結果に責任も負いませんので、その点だけはご了承ください。

それでは今回はこのあたりで。