2009年03月21日 06:30 [Edit]

Ajax - Lightweight Languages を実行するAPI

今度は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;
};

この記事へのトラックバックURL

この記事へのトラックバック
Hello, Twitter!なボットであるscriptterで利用させて頂いているlleval.cgiのお話を聞きに、Shibuya.pmのShibuya Perl Mongersテクニカルトーク#11に行ってきました。 いろいろなところでトラップが仕掛けられているさまが面白かったのですが、小飼さんがCPANのことを「スィ
scriptterで利用しているlleval.cgiのお話を聞いてきました【p1dlab日記】at 2009年04月22日 22:25
前回、 おとうさんにもわかるYコンビネータ!(絵解き解説編) - よくわかりませんというエントリで、Yコンビネータ(不動点演算子)と再帰の絵解き解説をしました。 Yコンビネータ自身は、結局のところ再帰を産み出してくれるだけです。関数(正確にはλという単純な文字列変換
さあ、Yコンビネータ(不動点演算子)を使おう!【よくわかりません】at 2009年04月22日 20:53
404 Blog Not Found:Ajax - Lightweight Languages を実行するAPI今度はPerlだけではありません。一時はcodepadの1/100くらいの利便性まで下がってしまって心配しましたが、100倍便利になってぼくたちのDan the APIが帰って来ました。 しかし、まだ物足りない所として貼付け...
danさんのllevalをもっと便利にするラッパー作った【YappoLogs】at 2009年03月26日 17:25
というわけで大好評の「404 Blog Not Found:Ajax - Lightweight Languages を実行するAPI」ですが、サポート言語がさらに増えたのでお知らせします。以下の「コンソール」を見るのが一番てっとりばやいでしょう。 lleval - run codes from your browser IEでも動きます...
Ajax - llevalのサポート言語がさらに増えました【404 Blog Not Found】at 2009年03月26日 10:28
この記事へのコメント
早急なる対処ありがとうございます。
Posted by 通りすがり at 2009年03月22日 02:04
通りすがりさん、
なおってます。動いていなかった理由は別記事に書く予定。
Dan the Maintainer
Posted by at 2009年03月21日 22:16
Fx だとちゃんと動くけど、
IE だとほとんど動かないみたいです。
Posted by 通りすがり at 2009年03月21日 19:17