var PLUGIN_INFO = {NAME} enable to copy strings from a template (like CopyURL+) テンプレートから文字列のコピーを可能にします(CopyURL+みたいなもの) 2.0pre 2.0pre http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/copy.js teramako MPL 1.1/GPL 2.0/LGPL 2.1 0.7.1 || javascript <%TITLE%' }, { label: 'selanchor', value: '%SEL%' }, { label: 'htmlblockquote', value: '
%HTMLSEL%
' } { label: 'ASIN', value: 'copy ASIN code from Amazon', custom: function(){return content.document.getElementById('ASIN').value;} }, ]; EOM ||< label: template name which is command argument value: copy string the certain string is replace to ... map: key map (optional) custom: {function} or {Array} (optional) {function}: execute the function and copy return value, if specified. {Array}: replaced to the {value} by normal way at first. then replace words matched {Array}[0] in the replaced string to {Array}[1]. {Array}[0]: String or RegExp {Array}[1]: String or Function see http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:String:replace == Options == >|| liberator.globalVariables.copy_use_wedata = false; // false by default ||< true に設定すると wedata からテンプレートを読込みます。 >|| liberator.globalVariables.copy_wedata_include_custom = true; // false by default ||< custom が設定された wedata を読込みます。 SandBox でなく、window.eval を利用してオブジェクトする為、 セキュリティ上の理由で初期設定は false になっています。 true に設定する場合は、動作を理解したうえ自己責任でご利用ください。 >|| liberator.globalVariables.copy_wedata_exclude_labels = [ 'pathtraqnormalize', ]; ||< wedata から読込まない label のリストを定義します。 ]]>
; liberator.plugins.exCopy = (function(){ var excludeLabelsMap = {}; var copy_templates = []; if (!liberator.globalVariables.copy_templates){ liberator.globalVariables.copy_templates = [ { label: 'titleAndURL', value: '%TITLE%\n%URL%' }, { label: 'title', value: '%TITLE%' }, { label: 'anchor', value: '%TITLE%' }, { label: 'selanchor', value: '%SEL%' }, { label: 'htmlblockquote', value: '
%HTMLSEL%
' } ]; } copy_templates = liberator.globalVariables.copy_templates.map(function(t){ return { label: t.label, value: t.value, custom: t.custom, map: t.map } }); copy_templates.forEach(function(template){ if (typeof template.map == 'string') addUserMap(template.label, [template.map]); else if (template.map instanceof Array) addUserMap(template.label, template.map); }); const REPLACE_TABLE = { get TITLE () buffer.title, get URL () buffer.URL, get SEL () { var sel = ''; var win = new XPCNativeWrapper(window.content.window); var selection = win.getSelection(); if (selection.rangeCount < 1) return ''; for (var i=0, c=selection.rangeCount; i