Firefox AddonであるVimperatorの解説(主に開発視点)

FrontPage > pluginList > copy.js
Namecopy.js
Descriptionテンプレートから文字列のコピーを可能にします(CopyURL+みたなもの)
Authorteramako
Downloadhttp://svn.coderepos.org/share/lang/javascript/vim...



コマンド

:copy {CopyString}

引数の文字列を一定のルールに基づいて変換した後クリップボードへコピーします。
引数文字列がテンプレートの名前である場合、そのテンプレートが使用されます。
一定のルール
変換前文字変換後
%TITLE%開いているページのタイトル
%URL%開いているページのURL
%SEL%選択中の文字列
%HTMLSEL%%SEL%と似ているがHTMLまでコピー

ここまではCopyURL+と似ているが、
テンプレート内にcustomメンバーが存在し
  • functionオブジェクトであった場合、その関数の実行結果をコピー(:copy! に似ている)
  • 配列であった場合、一定のルールを施した後、1番目の要素を2番目へreplaceした結果をコピー
実行コマンドコピーされる文字列
:copy %TITLE%開いているページタイトルのコピー
:copy title:copy %TITLE%と同じ(デフォルト'''{label: 'title',value: '%TITLE%'}'''のままであれば)
:copy titleAndURLページのタイトルとURLを改行(\n)で区切ってコピー
:copy foobar"foobar"がコピーされる(テンプレートに存在しなければ)

:copy! {expr}

引数{expr}をevalした結果をコピーする。
エラーが発生した場合は、そのエラー内容をコピーする。
実行コマンドコピーされる文字列
:copy! buffer.URLbuffer.URLをevalした結果(開いているページのURL)をコピー
:copy! Application.extensions.all.map(function(e) e.name).join('\n')インストールしているAddonの名前一覧を改行区切りでコピー

テンプレートの書き方

デフォルトの定義は
liberator.globalVariables.copy_templates = [
  { label: 'titleAndURL',    value: '%TITLE%\n%URL%' },
  { label: 'title',          value: '%TITLE%' },
  { label: 'anchor',         value: '<a href="%URL%">%TITLE%</a>' },
  { label: 'selanchor',      value: '<a href="%URL%" title="%TITLE%">%SEL%</a>' },
  { label: 'htmlblockquote', value: '<blockquote cite="%URL%" title="%TITLE%">%HTMLSEL%</blockquote>' }
];
となっている。まぁJavaScriptが読めなくても何となくやっていることは分かるだろう。

各キーの説明

label
名前。コマンドに渡す引数となる文字列となる
value
クリップボードにコピーする内容。または、説明(custom使用時)
map
ショートカットとなるキーバインド(マップ) (省略可)
custom
関数または配列を定義(省略可) 詳細はカスタムfunction

カスタマイズ方法

カスタマイズするには $HOME/.vimperatorrc に
js <<EOF
liberator.globalVariables.copy_templates = [
  { label: 'titleAndURL',    value: '%TITLE%\n%URL%' },
  { label: 'title',          value: '%TITLE%' },
];
EOF
というように、js <<EOFEOFで囲って追加してください。

カスタムfunction

{
  label: 'ASIN',
  value: 'copy ASIN code from Amazon',
  custom: function() content.document.getElementById('ASIN').value
},
とcustomという項を加えるとAmazonのページからASINコードをコピーできます。
概要cusom区内容
AmazonのページからASINコードを得るfunction() content.document.getElementById('ASIN').value
tDiaryのmy.rb用書式ぽっぺん日記@karashi.org(2008-06-24)
TinyURLから現在ページの短縮URLをコピーcopy.js で tinyURL を取得する - vimpな日々

JavaScriptからのアクセス

echoや''js'コマンドからいくつか操作可能です。

テンプレートの追加

// plugins.exCopy.add("label値", "value値", custom値, "map値");
plugins.exCopy.add(
  "livedoorWikiAnchor",
  "[%TITLE%>%URL%]");

テンプレートの取得

ラベル名を指定するとそのテンプレートのオブジェクトを返します。
plugins.exCopy.get("titleAndURL");

テンプレートからコピー

ラベル名を指定するとそのテンプレートに従い、クリップボードへコピーします。
plugins.exCopy.copy("titleAndURL")
タグ

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

メニューバー






どなたでも編集できます