var PLUGIN_INFO =
%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 のリストを定義します。
]]>
%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); }); // used when argument is none //const defaultValue = templates[0].label; commands.addUserCommand(['copy'],'Copy to clipboard', function(args){ liberator.plugins.exCopy.copy(args.string, args.bang); },{ completer: function(context, args){ if (args.bang){ completion.javascript(context); return; } context.title = ['Template','Value']; var templates = copy_templates.map(function(template) [template.label, liberator.modules.util.escapeString(template.value, '"')] ); if (!context.filter){ context.completions = templates; return; } var candidates = []; var filter = context.filter.toLowerCase(); context.completions = templates.filter(function(template) template[0].toLowerCase().indexOf(filter) == 0); }, bang: true }, true ); function addUserMap(label, map){ mappings.addUserMap([modes.NORMAL,modes.VISUAL], map, label, function(){ liberator.plugins.exCopy.copy(label); }, { rhs: label } ); } function getCopyTemplate(label){ var ret = null; copy_templates.some(function(template) template.label == label ? (ret = template) && true : false); return ret; } function replaceVariable(str){ if (!str) return ''; var win = new XPCNativeWrapper(window.content.window); var sel = '', htmlsel = ''; var selection = win.getSelection(); function replacer(value){ //{{{ switch(value){ case '%TITLE%': return buffer.title; case '%URL%': return buffer.URL; case '%SEL%': if (sel) return sel; else if (selection.rangeCount < 1) return ''; for (var i=0, c=selection.rangeCount; i