// ==VimperatorPlugin== // @name Kawase // @description-ja 外国為替換算 // @license Creative Commons 2.1 (Attribution + Share Alike) // @version 1.0 // @author anekos (anekos@snca.net) // ==/VimperatorPlugin== // // Usage-ja: // 引数書式 // :kawase[!] <金額> [<ソース> [<ターゲット>]] // ソースをターゲットに換算します。 // "!" 指定でクリップボードにコピーされます。 // // Exsample: // :kawase 30000 JPY THB (function () { const defaultSource = liberator.globalVariables.umihara_default_source || 'USD'; const defaultTarget = liberator.globalVariables.umihara_default_target || 'JPY'; const re = /(\d+:\d+)<\/td>([\d,]+\.[\d,]+)<\/td>([\d,]+\.[\d,]+)<\/b><\/td><\/tr><\/table><\/div>/; const ContryCodes = [ ['USD', '\u30a2\u30e1\u30ea\u30ab\u30c9\u30eb'], ['GBP', '\u30a4\u30ae\u30ea\u30b9 \u30dd\u30f3\u30c9'], ['INR', '\u30a4\u30f3\u30c9 \u30eb\u30d4\u30fc'], ['IDR', '\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2 \u30eb\u30d4\u30a2'], ['ECS', '\u30a8\u30af\u30a2\u30c9\u30eb \u30b9\u30af\u30ec'], ['EGP', '\u30a8\u30b8\u30d7\u30c8 \u30dd\u30f3\u30c9'], ['AUD', '\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2 \u30c9\u30eb'], ['CAD', '\u30ab\u30ca\u30c0 \u30c9\u30eb'], ['KRW', '\u97d3\u56fd \u30a6\u30a9\u30f3'], ['KWD', '\u30af\u30a6\u30a7\u30fc\u30c8 \u30c7\u30a3\u30ca\u30fc\u30eb'], ['COP', '\u30b3\u30ed\u30f3\u30d3\u30a2 \u30da\u30bd'], ['SAR', '\u30b5\u30a6\u30b8 \u30ea\u30a2\u30eb'], ['SGD', '\u30b7\u30f3\u30ac\u30dd\u30fc\u30eb \u30c9\u30eb'], ['CHF', '\u30b9\u30a4\u30b9 \u30d5\u30e9\u30f3'], ['SEK', '\u30b9\u30a6\u30a7\u30fc\u30c7\u30f3 \u30af\u30ed\u30fc\u30ca'], ['THB', '\u30bf\u30a4 \u30d0\u30fc\u30c4'], ['TWD', '\u53f0\u6e7e \u30c9\u30eb'], ['CNY', '\u4e2d\u56fd \u5143'], ['CLP', '\u30c1\u30ea \u30da\u30bd'], ['DKK', '\u30c7\u30f3\u30de\u30fc\u30af \u30af\u30ed\u30fc\u30cd'], ['TRY', '\u30c8\u30eb\u30b3 \u30ea\u30e9'], ['JPY', '\u65e5\u672c \u5186'], ['NZD', '\u30cb\u30e5\u30fc\u30b8\u30fc\u30e9\u30f3\u30c9 \u30c9\u30eb'], ['NOK', '\u30ce\u30eb\u30a6\u30a7\u30fc \u30af\u30ed\u30fc\u30cd'], ['PYG', '\u30d1\u30e9\u30b0\u30a2\u30a4 \u30b0\u30a1\u30e9\u30cb'], ['PHP', '\u30d5\u30a3\u30ea\u30d4\u30f3 \u30da\u30bd'], ['BRL', '\u30d6\u30e9\u30b8\u30eb \u30ea\u30a2\u30eb'], ['VEF', '\u30d9\u30cd\u30ba\u30a8\u30e9 \u30dc\u30ea\u30d0\u30eb\u30fb\u30d5\u30a8\u30eb\u30c6'], ['PEN', '\u30da\u30eb\u30fc \u30bd\u30eb'], ['HKD', '\u9999\u6e2f \u30c9\u30eb'], ['MYR', '\u30de\u30ec\u30fc\u30b7\u30a2 \u30ea\u30f3\u30ae'], ['ZAR', '\u5357\u30a2\u30d5\u30ea\u30ab \u30e9\u30f3\u30c9'], ['MXN', '\u30e1\u30ad\u30b7\u30b3 \u30da\u30bd'], ['AED', 'UAE \u30c0\u30fc\u30cf\u30e0'], ['EUR', '\u6b27\u5dde \u30e6\u30fc\u30ed'], ['JOD', '\u30e8\u30eb\u30c0\u30f3 \u30c7\u30a3\u30ca\u30fc\u30eb'], ['RON', '\u30eb\u30fc\u30de\u30cb\u30a2 \u30ec\u30a6'], ['LBP', '\u30ec\u30d0\u30ce\u30f3 \u30dd\u30f3\u30c9'], ['RUB', '\u30ed\u30b7\u30a2\u30f3 \u30eb\u30fc\u30d6\u30eb'], ]; function kawase (value, clipboard, from, to) { [from, to] = [from || defaultSource, to || defaultTarget].map(function (it) it.toUpperCase()); let url = 'http://quote.yahoo.co.jp/m5?a=' + value + '&s=' + from + '&t=' + to; var req = new XMLHttpRequest(); req.open('GET', url); req.onreadystatechange = function (aEvt) { if (req.readyState == 4 && req.status == 200) { let m = req.responseText.match(re); if (m) { let text = from + ' -> ' + to + '\n ' + from + ': ' + value + '\n ' + to + ': ' + m[3] + '\n rate: ' + m[2] + '\n time: ' + m[1]; liberator.echo(text); if (clipboard) liberator.modules.util.copyToClipboard(text); } else { //liberator.open(url); liberator.echoerr('parse error'); } } }; req.send(null); } let extra = { argCount: '+', bang: true, completer: function (context, args) { let last = context.contextList.slice(-1)[0]; context.title = ['Country Code', 'Country Name']; context.advance(last.offset - last.caret); context.completions = ContryCodes; } }; //commands.removeUserCommand('kawase'); commands.addUserCommand( ['kawase'], 'Umihara Kawase Meow', function (args) { let [value, from, to] = args; value = eval(value); kawase(value, args.bang, from, to); }, extra, true ); })(); d='n27' href='#n27'>27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
/**
 * shuppoppo.js
 *
 * 元ネタ:
 * JavaScriptでSLを走らせる「SL.JS」を作りました ::: creazy photograph
 * http://creazy.net/2008/02/sl_js.html
 *
 * VARIABLES:
 * let g:sl_speed = "100"
 * let g:sl_pitch = "15"
 * let g:sl_fg_color = "#FFFFFF"
 * let g:sl_bg_color = "#000000"
 *
 * OPTION
 * set [no]slbeep
 */
//:js (function(){echo('\n\n\n\n\n\n\n\n\n\n\n\n\n',true);var f=$('liberator-multiline-output');var d=f.contentDocument,s=d.createElement('script');s.src="http://labs.creazy.net/sl/bookmarklet.js";d.body.appendChild(s);})()

liberator.plugins.sl = (function(){
// COMMAND
liberator.commands.addUserCommand(['sl'],'キータイプを矯正します。',
	function(){
		sl();
	},{},true);
// OPTION
liberator.options.add(['slbeep'],'beepをSLに変更します','boolean',false);

var f = document.getElementById('liberator-multiline-output');
var d = f.contentDocument;
var data = [ // {{{
	'var sl_steam=[];' ,
	'sl_steam[0]="                      (@@) (  ) (@)  ( )  @@    ()    @     O     @     O      @<br>                 (   )<br>             (@@@@)<br>          (    )<br><br>        (@@@)<br>";' ,
	'sl_steam[1]="                      (  ) (@@) ( )  (@)  ()    @@    O     @     O     @      O<br>                 (@@@)<br>             (    )<br>          (@@@@)<br><br>        (   )<br>";',
	'var sl_body' ,
	'	="      ====        ________                ___________ <br>"' ,
	'	+"  _D _|  |_______/        \\__I_I_____===__|_________| <br>"',
	'	+"   |(_)---  |   H\\________/ |   |        =|___ ___|      _________________         <br>"',
	'	+"   /     |  |   H  |  |     |   |         ||_| |_||     _|                \\_____A  <br>"',
	'	+"  |      |  |   H  |__--------------------| [___] |   =|                        |  <br>"',
	'	+"  | ________|___H__/__|_____/[][]~\\_______|       |   -|                        |  <br>"',
	'	+"  |/ |   |-----------I_____I [][] []  D   |=======|____|________________________|_ <br>";',
	'var sl_wheels = [];',
	'sl_wheels[0]' ,
	'	="__/ =| o |=-O=====O=====O=====O \\ ____Y___________|__|__________________________|_ <br>"' ,
	'	+" |/-=|___|=    ||    ||    ||    |_____/~\\___/          |_D__D__D_|  |_D__D__D_|   <br>"',
	'	+"  \\_/      \\__/  \\__/  \\__/  \\__/      \\_/               \\_/   \\_/    \\_/   \\_/    <br>";',
	'sl_wheels[1]' ,
	'	="__/ =| o |=-~~\\  /~~\\  /~~\\  /~~\\ ____Y___________|__|__________________________|_ <br>"',
	'	+" |/-=|___|=O=====O=====O=====O   |_____/~\\___/          |_D__D__D_|  |_D__D__D_|   <br>"',
	'	+"  \\_/      \\__/  \\__/  \\__/  \\__/      \\_/               \\_/   \\_/    \\_/   \\_/    <br>";',
	'sl_wheels[2]' ,
	'	="__/ =| o |=-~~\\  /~~\\  /~~\\  /~~\\ ____Y___________|__|__________________________|_ <br>"',
	'	+" |/-=|___|=    ||    ||    ||    |_____/~\\___/          |_D__D__D_|  |_D__D__D_|   <br>"',
	'	+"  \\_/      \\O=====O=====O=====O_/      \\_/               \\_/   \\_/    \\_/   \\_/    <br>";',
	'sl_wheels[3]' ,
	'	="__/ =| o |=-~~\\  /~~\\  /~~\\  /~~\\ ____Y___________|__|__________________________|_ <br>"',
	'	+" |/-=|___|=    ||    ||    ||    |_____/~\\___/          |_D__D__D_|  |_D__D__D_|   <br>"',
	'	+"  \\_/      \\_O=====O=====O=====O/      \\_/               \\_/   \\_/    \\_/   \\_/    <br>";',
	'sl_wheels[4]' ,
	'	="__/ =| o |=-~~\\  /~~\\  /~~\\  /~~\\ ____Y___________|__|__________________________|_ <br>"',
	'	+" |/-=|___|=   O=====O=====O=====O|_____/~\\___/          |_D__D__D_|  |_D__D__D_|   <br>"',
	'	+"  \\_/      \\__/  \\__/  \\__/  \\__/      \\_/               \\_/   \\_/    \\_/   \\_/    <br>";',
	'sl_wheels[5]' ,
	'	="__/ =| o |=-~O=====O=====O=====O\\ ____Y___________|__|__________________________|_ <br>"',
	'	+" |/-=|___|=    ||    ||    ||    |_____/~\\___/          |_D__D__D_|  |_D__D__D_|   <br>"',
	'	+"  \\_/      \\__/  \\__/  \\__/  \\__/      \\_/               \\_/   \\_/    \\_/   \\_/    <br>";',
	"sl_steam  = sl_steam.map(function(s) s.replace(/ /g, '&nbsp;'));",
	"sl_body   = sl_body.replace(/ /g,'&nbsp;');",
	"sl_wheels = sl_wheels.map(function(s) s.replace(/ /g, '&nbsp;'));",
	'var sl_patterns = [0, 0, 0, 1, 1, 1];',
	'sl_patterns = sl_patterns.map(function(p, i) sl_steam[p] + sl_body + sl_wheels[i]);',
	'var sl_counter  = 0;',
	'var sl_position = 0;',
	'var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;',
	'var windowWidth = window.innerWidth;',
	"var sl_style_base ='display: block;position: absolute;text-align: left;overflow: visible;white-space: pre;font: 12px/12px monospace;';",
	"var sl_style_main =sl_style_base +'top: '+(scrollTop+0)+'px;' +'left: '+windowWidth+'px;' +'padding: 20px;' +'z-index: 999;' +'color: '+sl_tx_color+';';",
	"document.body.innerHTML += '<div id=\"__sl_main__\" style=\"'+sl_style_main+'\">'+sl_patterns[0]+'</div>';",
	'var sl_w = document.getElementById("__sl_main__").clientWidth;',
	'var sl_h = document.getElementById("__sl_main__").clientHeight;',
	"var sl_style_background =sl_style_base +'top: '+(scrollTop+0)+'px;' +'left: 0px;' +'width: '+windowWidth+'px;' +'height: '+sl_h+'px;' +'z-index: 998;' +'background-color: '+sl_bg_color+';' +'filter: alpha(opacity=0);' +'-moz-opacity: 0.0;' +'opacity: 0.0;';",
	"document.body.innerHTML += '<div id=\"__sl_background__\" style=\"'+sl_style_background+'\"><br></div>';",
	'var sl_bg_counter = 0;',
	'sl_open = function() {',
	'	var oid = "__sl_background__";',
	'	var op  = sl_bg_counter;',
	'	var ua  = navigator.userAgent',
	"	document.getElementById(oid).style.filter = 'alpha(opacity=' + (op * 10) + ')';",
	'	document.getElementById(oid).style.MozOpacity = op / 10;',
	'	document.getElementById(oid).style.opacity = op / 10;',
	'	if ( sl_bg_counter < 8 ) {',
	'		sl_bg_counter++;',
	"		setTimeout('sl_open()',100);",
	'	} else {',
	'		sl_run();',
	'	}}',
	'sl_run = function() {',
	'	document.getElementById("__sl_main__").innerHTML = sl_patterns[sl_counter];',
	'	document.getElementById("__sl_main__").style.left = windowWidth - sl_position + "px";',
	'	if (sl_counter < 5) {sl_counter++;} else {sl_counter=0;}',
	'	sl_position += sl_pitch;',
	'	if ( sl_w + (windowWidth - sl_position) < 0 ) {',
	'		sl_counter  = 0;',
	'		sl_position = 0;',
	'		document.body.removeChild(document.getElementById("__sl_main__"));',
	'		sl_close();',
	'	} else {',
	"		setTimeout('sl_run()',sl_speed);",
	'	}}',
	'sl_close = function() {',
	'	var oid = "__sl_background__";',
	'	var op  = sl_bg_counter;',
	'	var ua  = navigator.userAgent',
	'	document.getElementById(oid).style.MozOpacity = op / 10;',
	'	if ( sl_bg_counter > 0 ) {',
	'		sl_bg_counter--;',
	"		setTimeout('sl_close()',100);",
	'	} else {',
	'		document.body.removeChild(document.getElementById(oid));',
	'	}}',
	'sl_open();'].join('\n'); //}}}
function sl(){
	//'var sl_speed=100,sl_pitch=15,sl_tx_color="#FFFFFF",sl_bg_color="#000000",sl_steam=[];' ,
	var option = {
		sl_speed : 100,
		sl_pitch : 15,
		sl_fg_color : "#FFFFFF",
		sl_bg_color : "#000000"
	};
	for (let v in option){
		if (liberator.globalVariables[v]) option[v] = liberator.globalVariables[v];
	}
	var option_code = "var sl_speed=" + option.sl_speed +
	                  ",sl_pitch=" + option.sl_pitch +
					  ",sl_tx_color=\"" + option.sl_fg_color + "\"" +
					  ",sl_bg_color=\"" + option.sl_bg_color + "\";\n";
	var script = d.createElement('script');
	script.setAttribute('type','application/javascript');
	var cdata = document.createCDATASection(option_code + data);
	//var cdata = d.createComment(data);
	script.appendChild(cdata);
	liberator.echo('\n\n\n\n\n\n\n\n\n\n\n\n\n',true);
	d.body.appendChild(script);
};
var orig_beep = liberator.beep;
liberator.beep = function(){
	if (liberator.options.sl_beep)
		sl();
	else
		orig_beep();
};
return sl;
})();