読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

Typeでのコンポーネント取得を実装。

JavaScript ContainerJS

前に検討したTypeでのコンポーネント取得(コンポーネントが持つAPIを条件にコンポーネントを探索し、コンテナから取り出したりインジェクションしたりする機能。)をまったり実装。実装自体はだいたい済んだけどテストは未。簡単なサンプルが動くのは確認。

こんな感じで使えます。コンポーネントの名前は必須ではなくなりました。

var stdout = document.getElementById( "stdout" );

// クラス
function Kitten() {}
Kitten.prototype = {
   run:function() { stdout.innerHTML += this.name + " : teku teku" + "<br/>"; },
   meow:function() { stdout.innerHTML += this.name + " : meow" + "<br/>"; }
};

function Tiger() {}
Tiger.prototype = {
   run:function() { stdout.innerHTML += this.name + " : teku teku" + "<br/>"; },
   bite:function() { stdout.innerHTML += this.name + " : gabu" + "<br/>"; }
};

// コンテナ
var c = new container.Container( function( binder ) {
  binder.bind( Kitten ).inject({ name:"mii", age:1 });
  binder.bind( Kitten ).inject({ name:"kuro", age:2 });

  binder.bind( Tiger ).inject({ name:"tora", age:2 });
});

// Typeを使ってコンテナからコンポーネントを取得する。
// "run", "bite"を持つ最初のコンポーネントを取得。
var tora = c.get( container.types.has( "run", "bite" ) );
tora.bite(); // tora : gabu

stdout.innerHTML += "---<br/>";

// Typeにマッチするすべてのコンポーネントを取得する。
// runはすべてのコンポーネントが持っているので、mii,kuro,toraすべてがヒット。
var kittens = c.gets( container.types.has( "run" ) );
for ( var i=0; i < kittens.length; i++ ) {
    kittens[i].run();
}

実行結果はこちらから。

年内にはリリースしたいところ。テストしないと。