PopClipの拡張機能をカスタマイズしてみよう!PopClipの拡張機能「HTML Encode」でダブルクオーテションを変換しないようにする

WordPress のテーマ開発、ブログの執筆作業を効率化する方法のまとめでもご紹介している「PopClip」ですが、拡張機能を使用する事で、さまざまな用途に用いる事のできる、1 回使うと離れられない便利ツールです。

上記記事でもご紹介している通り、弊サイトでも WordPress の投稿記事内での<pre>タグ内に記述する文字列を HTML エンティティに変換する際に使用しているのですが、一点問題がありました。それは、デフォルトで「ダブルクオテーション」もエスケープしてしまうこと。「ダブルクオテーション」は、HTML の属性内では&quot;に変換する必要があるのですが、それ以外の平文においてはとくに変換する必要がありません。

また、「ダブルクオテーション」を HTML エンティティに変換することにより、不必要な問題を抱えることにもなりかねません。たとえば、Broken Link Checker — WordPress Pluginsで、URL のリンクチェックを行っている場合に、<pre>タグの中身もチェックするようにしているのですが、href属性の値の前後に付ける「ダブルクオーテション」まで HTML エンティティに変換されてしまい、URL に&が付与されていると勘違いされてしまうことがありました。

そこで、今回はこの拡張機能「HTML Encode」を少しだけ改修し、ダブルクオテーションは変換の対象に含めないようにしたいと思います。

PopClip
PopClip

「HTML Encode」でダブルクオーテションを変換しない

「HTML Encode」をダウンロードし、インストールする前に、少し細工します。

拡張機能「HTML Encode」のダウンロード

拡張機能は以下の URL からダウンロード可能です。「HTML Encode」をダウンロードしてください。

https://pilotmoon.com/popclip/extensions/

拡張機能「HTML Encode」の修正

ダウンロードした拡張機能の拡張子は「popclipextz」ですが、拡張子を「zip」に変更します。

拡張子を「zip」に変更したら、解凍します。

拡張子が「popclipext」のファイルが解凍されます。

右クリックして、「パッケージの内容を表示」をクリックします。

拡張機能に含まれるリソースの一覧が表示されます。ファイルの内容を以下の通り修正します。

htmldecode.php

<?php
mb_internal_encoding("UTF-8");
$input=getenv('POPCLIP_TEXT');
echo html_entity_decode($input, ENT_COMPAT | ENT_HTML401, 'UTF-8');
?>

ENT_COMPATENT_NOQUOTESに変更します。

<?php
mb_internal_encoding("UTF-8");
$input=getenv('POPCLIP_TEXT');
echo html_entity_decode($input, ENT_NOQUOTES | ENT_HTML401, 'UTF-8');
?>

htmlencode.php

<?php
mb_internal_encoding("UTF-8");
$input=getenv('POPCLIP_TEXT');
echo htmlentities($input, ENT_COMPAT | ENT_HTML401, 'UTF-8');
?>

ENT_COMPATENT_NOQUOTESに変更します。

<?php
mb_internal_encoding("UTF-8");
$input=getenv('POPCLIP_TEXT');
echo htmlentities($input, ENT_NOQUOTES | ENT_HTML401, 'UTF-8');
?>

Config.plist

 <key>Extension Identifier</key>
 <string>com.pilotmoon.popclip.extension.htmlencode</string>

com.pilotmoonを任意の文字列に変更します。com.exampleなどでも良いです。com.pilotmoonは、PopClip の公式サイトで署名された拡張機能にのみ付与できます。改修した場合は、署名された内容とハッシュ値が異なるため同一の Identifier(識別子)を使用する事はできません。

 <key>Extension Identifier</key>
 <string>xyz.ottan.popclip.extension.htmlencode</string>

拡張機能「HTML Encode」のインストール

Finder で 1 つ前の画面に戻ります。拡張子が「popclipext」のファイルをダブルクリックします。

署名されていない旨の警告ダイアログが表示されます。「インストール」をクリックしてください。以上で、インストールは完了です。

まとめ

PopClip の拡張機能の作り方については、別途またまとめたいと思いますが、雰囲気だけでも伝わったのではないでしょうか。いろいろカスタマイズしてみてくださいね。

comments powered by Disqus