今度はPerlだけではありません。
Perl
だけではなく....
PHP
も(誰だ、私がPHPを嫌いって言ってるのは:)....
Python
に...
Ruby
に...
Scheme (gauche)
に...
JavaScript (SpiderMonkey)
だけではなく....
Perl6 (rakudo)
まで(すごく遅いけど)。
使い方
APIのURIは
http://api.dan.co.jp/lleval.cgi?c=callback&s=source
となります。どの言語かはl=language
があればそれを使い、なければ#!
を使います。
http://api.dan.co.jp/lleval.cgi?q=1
で、言語のリストを取れます。
askLanguages = function(dst){ if (! this['JSONP']) JSONP = {}; JSONP['q'] = function(json){ dst.innerHTML = ''; dst.appendChild(json2table(json)); }; (function(d, uri){ var s = d.createElement('script'); s.charset = 'UTF-8'; s.src = uri + '&q=1'; s.id = s.src; d.body.appendChild(s); })(document, 'http://api.dan.co.jp/lleval.cgi?c=JSONP.q'); };
ここで使っているJS側はこんなです。
runJSON = function(name, func, src, ll){ if (! this['JSONP']) JSONP = {}; JSONP[name] = func; (function(d, uri){ var s = d.createElement('script'); s.charset = 'UTF-8'; s.src = uri + '&s=' + encodeURIComponent(src); if (ll) s.src += '&l=' + encodeURIComponent(ll) s.id = s.src; d.body.appendChild(s); })(document, 'http://api.dan.co.jp/lleval.cgi?c=JSONP.' + name, src, ll); }; LLEval = function(src, dst, ll){ var d = document; runJSON(ll || 'll', function(json){ dst.innerHTML = ''; dst.appendChild(json2table(json)); }, src.value, ll); };
旧API
これにともない、
で紹介した旧APIは廃止とさせていただきます。あしからず。
無保証
です。仕様変更、サービスの停止、廃止など、私の胸先三寸と心得てください。
Enjoy!
Dan the LL Monger
その他JS
var appendText = (function(){ var d = document; if (1 /*@cc_on -1@*/){ return function(n, t){ n.appendChild(d.createTextNode(t)) }; }else{ return function(n, t){ n.innerText = t }; } })(); json2table = function(json){ var keys = []; for (var k in json) keys[keys.length] = k; keys.sort(); var d = document; var tbody = d.createElement('tbody'); for (var i = 0, l = keys.length; i < l; i++){ var k = keys[i]; var v = json[k]; var tr = d.createElement('tr'); tr.style.verticalAlign = 'top'; var th = d.createElement('th'); th.style.textAlign = 'right'; appendText(th, k); tr.appendChild(th); var td = d.createElement('td'); appendText(td, v); if (keys[i].match(/^std/)){ td.style.fontFamily = 'monospace'; td.style.whiteSpace = 'pre'; } tr.appendChild(td); tbody.appendChild(tr); } var table = d.createElement('table'); table.appendChild(tbody); return table; };
このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。