ClipMenuでは、ユーザーの作成したアクションを使って、テキスト形式のクリップボード履歴に対する文字列処理を行うことができます。ユーザーアクションの実行には、スクリプト言語のJavaScriptを使用します。
ClipMenuのJavaScript実行エンジンには、WebKitに含まれるJavaScriptCoreを利用しています。JavaScriptの動作仕様は、Safariを参考にしてください。なお、ClipMenuでは基本的に、コアJavaScript部分のみを使用します。
設置
ユーザー作成のJavaScriptファイルは、以下のフォルダに設置します。このフォルダが存在しない場合は、Finderから新規に作成してください。
/Users/<ユーザ名>/ライブラリ/Application Support/ClipMenu/script/actionユーザ名>
スクリプトファイルの拡張子は、".js" になります。これ以外の拡張子を持ったファイルは、無視されます。
actionフォルダ以下に存在するフォルダは、アクションメニューのサブメニューとして機能します。同じ種類のスクリプトファイルは、フォルダにまとめておくと便利です。
基本
定義済みの変数
履歴に対する処理は、以下の変数に対して関数を適用したり、メソッドを実行することによって行います。
-
clipText
選択した履歴に含まれる文字列が代入されています。
-
clip
選択した履歴のオブジェクトが代入されています。今のところ、RTF形式の文字属性の変更にのみ使用します。
-
ClipMenu
クラスメソッドで、ライブラリの読み込みなどを行う。
戻り値
文字列かclipオブジェクトを return 文で返すと、クリップボードへ送られます。
例) 文字列をそのまま返す
return clipText;
例) clipオブジェクトをそのまま返す
return clip;
例)アルファベットをすべて大文字に変える
var result = clipText.toUpperCase();
return result;
外部ライブラリの利用
複数のファイルで共通して使用する関数などは、ライブラリとして別ファイルに保存しておくと便利です。ClipMenuでは、指定したフォルダに置かれたスクリプトを、ライブラリとして読み込むことができます。読み込みには、ClipMenuオブジェクトの、require() メソッドを使用します。
例)inflection-jsを読み込む
ClipMenu.require('inflection');
require() メソッドの引数には、ライブラリスクリプトのファイル名を渡します。拡張子の".js"は、有っても無くても構いません。読み込みが成功したかどうかは、require() メソッドの戻り値を使ってチェックできます。ライブラリが見つかれば 1 を、見つからなければ 0 を返します。
例)require() メソッドの戻り値をチェック
var isExist = ClipMenu.require('inflection');
if (!isExist) {
throw new Error('Could not find the library');
}
ライブラリの読み込みが成功すると、ライブラリ内で定義された関数が利用可能になります。
例)inflection-jsで定義された、capitalize() メソッドを使用する
clipText.capitalize();
ライブラリフォルダには、アプリケーションバンドル内にある標準ライブラリフォルダと、ユーザーが設置するユーザーライブラリフォルダの二種類があります。ユーザーライブラリフォルダは、以下のパスに作成してください。
/Users/<ユーザ名>/ライブラリ/Application Support/ClipMenu/script/libユーザ名>
ライブラリの読み込みは、ユーザーライブラリフォルダが優先されます。こちらから検索した後、標準ライブラリフォルダの検索を行います。
ユーザー入力
prompt() メソッドを使用すれば、ユーザー入力を組み合わせた処理ができます。
例)履歴にあるURLと、入力したタイトルを組み合わせて、HTMLコードを作成
var input = prompt('タイトルを入力:');
return '<a href="' + clipText + '" title="' + input + '">' + input + '</a>';
文字属性の変更
プレーンテキストやRTF/RTFD形式の文字列に対して、色やフォントといった文字属性の変更を行えます。引数として渡すオブジェクトで、属性値を指定します。
メソッド
-
addStringAttributes( attributes )
文字属性を追加します。
-
setStringAttributes( attributes )
文字属性を上書きします。
指定可能な属性値:
-
色
文字色と背景色を、それぞれ16進数かHTMLカラーネームで指定します。
例) 文字色を青にする
var attributes = { 'color': { 'foreground': '#0000ff', }, } clip.setStringAttributes(attributes); return clip;
例) 文字色を青、背景色を黄にする
var attributes = { 'color': { 'foreground': 'blue', 'background': 'yellow', }, } clip.setStringAttributes(attributes); return clip;
-
フォント
フォントの名前と大きさを指定します。
例) フォントをLucida Grandeにする
var attributes = { 'font' : { 'name': 'Lucida Grande', }, } clip.setStringAttributes(attributes); return clip;
例) フォントをHelveticaの24ポイントで太字にする
var attributes = { 'font' : { 'name': 'Helvetica Bold', 'size': 24.0, }, } clip.setStringAttributes(attributes); return clip;
-
下線
下線のスタイル、パターン、単語の下だけに描画するかを指定します。
以下の値が設定可能です:
スタイル: none, single, thick, double
パターン: solid, dot, dash, dashdot, dashdotdot
単語の下のみ: true/false例) 標準的な下線
var attributes = { 'underline': { 'style': 'single', 'pattern': 'solid', }, } clip.setStringAttributes(attributes); return clip;
例) 二重の点線
var attributes = { 'underline': { 'style': 'double', 'pattern': 'dot', }, } clip.setStringAttributes(attributes); return clip;
例) 太い実線で、単語の下にだけ下線を引く
var attributes = { 'underline': { 'style': 'thick', 'pattern': 'solid', 'byWord': true, }, } clip.setStringAttributes(attributes); return clip;
その他
alert() 、 confirm() メソッドは動作しません。