Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mix-in APIの追加(h5.mixin空間) #300

Closed
simdy opened this issue Apr 30, 2014 · 4 comments
Closed

Mix-in APIの追加(h5.mixin空間) #300

simdy opened this issue Apr 30, 2014 · 4 comments
Assignees
Labels
Milestone

Comments

@simdy
Copy link
Member

@simdy simdy commented Apr 30, 2014

Mix-inを行うAPIを追加する。h5.u.objにmix()関数を追加する。

mix関数はtarget, mixinの2つの引数をとる。

target

mixを行うオブジェクト。

mixin

特定の機能セットを持ち、ターゲットに提供するミックスイン。
この引数には、特定の処理を実行する、function mixin(target)というシグネチャの関数を渡すことを想定する。
この関数に渡すtargetは、mixを行うオブジェクト(つまり第1引数)である。

この関数は、渡されたtargetに対して必要な関数プロパティを追加する責任を持つ。

@simdy simdy added this to the v1.1.10 milestone Apr 30, 2014
@simdy simdy added the enhancement label Apr 30, 2014
@simdy simdy changed the title Mix-in APIの追加:h5.u.obj.mix(target, mixin) Mix-in APIの追加(h5.mixin空間) Apr 30, 2014
@simdy
Copy link
Member Author

@simdy simdy commented Apr 30, 2014

API設計を変更します。

h5.u.obj.mix()関数は作成せず、h5.mixin.createMixin(moduleObject)関数を作成します。
createMixin(moduleObject)は、mix(target)とhasInterface(object)を持つMixinオブジェクトを生成します。
当該Mixinオブジェクトのmix()を呼ぶと、moduleObjectで指定されたプロパティをtargetに付加します。

また、hasInterface()は、引数で渡されたobjectがmoduleObjectで指定された全てのプロパティを持つかどうかを判定します。
hasInterface()では、そのオブジェクトの固有プロパティ(hasOwnProperty()がtrue)かどうかはチェックしません。したがって、プロトタイプチェーン上に(全ての)指定されたプロパティがあればtrueを返します。

今回のバージョンでは、moduleObjectが持つことができるのは、関数、数値リテラル、文字列リテラル、ブール値リテラル、nullのみとします。値がundefinedとなっているプロパティは、存在しても無視することとします。

例)EventDispatcherの場合:

var obj = {};
h5.mixin.eventDispatcher.mix(obj);  //EventDispatcherのインターフェースがobjに付加される
fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue May 1, 2014
h5.mixinのテストケース作成しました。

hifive#268 h5.mixin.eventDispatcherを作成しました。
EventDispatcherをh5internalに公開してh5.mixin.jsで使用しています。
h5.mixin.eventDispatcherのテストは未追加です。
fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue May 2, 2014
mixinはmixinモジュールを作るのではなくutilモジュールに含めてビルドされるようにしました。
@simdy
Copy link
Member Author

@simdy simdy commented May 2, 2014

@fukudayasuo
mixinのエラーコードを
http://www.htmlhifive.com/conts/web/view/reference/error-code
に追記してください。

fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue May 2, 2014
fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue May 2, 2014
createItemしたitemが持つEventDispatcherのメソッドと比較して判定するのではなく、EventDispatcherのメソッドを持っているかどうかを判定するようにしました。
@fukudayasuo
Copy link

@fukudayasuo fukudayasuo commented May 2, 2014

mixinのエラーコードをhifiveのページに追記しました。
http://www.htmlhifive.com/conts/web/view/reference/error-code

fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue May 2, 2014
hasInstanceは間違いです。インターフェースを持つかどうかの判定のため、hasInterfaceが正しいです。

変数名の変更
eventDispatcherPrototype→eventDispatcherModule
fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue May 2, 2014
fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue May 2, 2014
fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue May 2, 2014
fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue May 2, 2014
@simdy simdy closed this May 2, 2014
@fukudayasuo
Copy link

@fukudayasuo fukudayasuo commented Jun 5, 2014

テストケースのアサーションで、actual(実行結果)とexpect(予想)が逆になっていた箇所があるので修正します

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants
You can’t perform that action at this time.