今度は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;
};
このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。