はじめに
ビーガンに拒否的な反応1をみせる人はときおり、すでに答えの出ている古臭い疑問を繰り返し口にします。
疑問に思うのであればそれを調べる方法はいくらでもあるのに、無知な自分のままでいることを選択する気持ちはよくわかりません。せっかく問いが手に入ったのに、そのままにしておくなんて勿体ない2。
執筆の時間計測に使いたいので、早速導入しました。テキストを開いたときの文字数取得とストップウォッチを止めたときの文字数取得し、増えた文字数をカウントするにはどうしたらいいでしょうか……? id:rainlittle
CotEditor の「環境設定」を開き、「ウィンドウ」の設定で「ステータスバー表示」のところから「文字数」にチェックを入れます。
それで、ステータスバーに現在の書類の文字数が表示されますので、それを自分でメモするのではダメでしょうかね。
CotEditor スクリプトは、編集中のテキスト全部をもらうディティクティブがあり、PHP には md_strlen()
があるので、それが使えるでしょうね。
前回の記事を参照ください。
以下の PHP スクリプトを、上記のように好みのファイル名で保存していただき、実行権を与えて、CotEditor のスクリプトフォルダに格納してください。
UTF-8 で保存してください。
実行権を忘れないでくださいね。
#!/usr/bin/php -q <?php // %%%{CotEditorXInput=AllText}%%% $doc = file_get_contents('php://stdin'); file_put_contents( $_SERVER['HOME'] . '/Documents/com.hatenablog.saponote.StopWatchWithCharCount.txt' , microtime(true) . "\t" . mb_strlen($doc) );
#!/usr/bin/php -q <?php // %%%{CotEditorXInput=AllText}%%% // %%%{CotEditorXOutput=NewDocument}%%% $doc = file_get_contents('php://stdin'); $start_info = file_get_contents($_SERVER['HOME'] . '/Documents/com.hatenablog.saponote.StopWatchWithCharCount.txt', false); $tmp = explode("\t", $start_info); $start_time = $tmp[0]; $start_strlen = $tmp[1]; $lap_time = microtime(true) - $start_time; $inc = mb_strlen($doc) - $start_strlen; list($sec, $millisec) = explode('.', $lap_time . ''); $m = floor($sec / 60); $s = $sec % 60; echo str_pad($m, 2, 0, STR_PAD_LEFT) . ':' . str_pad($s, 2, 0, STR_PAD_LEFT) . '.' . substr($millisec, 0, 3) . "\n" . $inc . " 文字増えました。\n";
動作を確認したサポンテの Mac では PHP のバージョンは 7.3.11、CotEditor のバージョンは 4.0.8(471) でした。