先月Chromiumでデバッグ用APIが公開されたという記事が話題に登ったようですが,そのなかでデバッグ用のプロトコルのスキーマが紹介されています.記事では,みなさんの便利のために,ドキュメントを生成したと書かれています.
一昨日あたりから,このデバッグAPIにはまっているのですが,ただでさえ,いろんなページを開かなくてはならない,ウェブアプリの開発でAPIドキュメントのためにまたページが避かれるのは嫌だなと思って,こんなものを作ってみました.
すべての情報は inspector という JS の変数がもつオブジェクトに含まれているので,console で表示させるとこんな感じになります.ここでは,”Runtime” ドメインで利用可能なコマンドのうち,evaluateOn を眺めています.この機能が二つの引数として expression と objectId を取ることが分ります.
Web Inspector のなかで ”inspector” と叩くだけで API のスキーマをブラウズすることができます.元々の JSON スキーマで使われていた配列をコツコツとオブジェクトに変換する20行のコードのおかげで,扱いが簡単になりました.
以下のような感じです.
var inspector_schema = /* ここに http://trac.webkit.org/browser/trunk/Source/WebCore/inspector/Inspector.json の内容を埋める. */ ; var inspector = {}; inspector_schema.forEach(function (schema) { // array -> object var a2o = function (a, id) { var o = {}; a.forEach(function (x) { o[x[id]] = x; }); return o; }; if (schema.types) schema.types = a2o(schema.types, 'id'); if (schema.events) schema.events = a2o(schema.events, 'name'); if (schema.commands) { schema.commands.forEach(function (c) { if (c.parameters) c.parameters = a2o(c.parameters, 'name'); if (c.returns) c.returns = a2o(c.returns, 'name'); }); schema.commands = a2o(schema.commands, 'name'); } inspector[schema.domain] = schema; }); inspector_schema = undefined;