5509/EIP — pull request #4 by hokaccha (2013-08-13 09:35:48+00:00)
Title: フォームの種類を拡張できるようにした

今`text`、`textarea`、`select`しか対応してないけど、少し複雑なケースに対応したかったので、利用者のほうでカスタムタイプを追加できるようにプラガブルな設計に変更してみました。

`EIP.addType`でタイプを定義して、4つのメソッドを定義します。
```javascript
EIP.addType('list', {
getDefaultValue: function() {
// 初期ロード時にHTMLからdata-eip-valueをつくる
},
getInputValue: function() {
// フォームサブミット時にフォームの値からdata-eip-valueをつくる
},
renderHolder: function(val) {
// 通常表示のHTMLをレンダリングする
},
renderForm: function(val) {
// フォーム表示時のHTMLをレンダリングする
}
});
```

例えば次のようなリスト形式のフォームなどを作れます。（この例はリスト2つで固定してるけど実際にやりたいのは可変長のリストにして、要素の追加・削除ボタンもあるUI）
http://dl.dropboxusercontent.com/u/336104/tmp/eip/index.html

これまでの`text`、`textarea`、`select`は本体の中で定義しているので基本的にはこれまでと変わらずに使えるはずです（が、変更が大きいのでこれまでの挙動がバグってるかもしれません。テスト書かないと厳しそう）。