ClipMenuでは、ユーザーの作成したアクションを使って、テキスト形式のクリップボード履歴に対する文字列処理を行うことができます。ユーザーアクションの実行には、スクリプト言語のJavaScriptを使用します。

ClipMenuのJavaScript実行エンジンには、WebKitに含まれるJavaScriptCoreを利用しています。JavaScriptの動作仕様は、Safariを参考にしてください。なお、ClipMenuでは基本的に、コアJavaScript部分のみを使用します。

設置

ユーザー作成のJavaScriptファイルは、以下のフォルダに設置します。このフォルダが存在しない場合は、Finderから新規に作成してください。

/Users/<ユーザ名>/ライブラリ/Application Support/ClipMenu/script/action

scriptフォルダ

スクリプトファイルの拡張子は、".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;
                

    フォントをLucida Grandeにする

    例) フォントをHelveticaの24ポイントで太字にする

      var attributes = {
                      'font' : {
                          'name': 'Helvetica Bold',
                          'size': 24.0,
                      },
                  }
                  clip.setStringAttributes(attributes);
                  return clip;
                

    フォントをHelveticaの24ポイントで太字にする

  • 下線

    下線のスタイル、パターン、単語の下だけに描画するかを指定します。

    以下の値が設定可能です:

    スタイル: 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() メソッドは動作しません。

貢献者

ClipMenuの開発を助けて頂いた皆さんに感謝します。

謝辞…

利用者の声

"Excellent. This is the best clipboard history tool I've seen so far." by mfichtner at iusethis

続きを読む…

スクリーンショット