ende 0.5.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. checksums.yaml +4 -4
  2. data/component.json +2 -2
  3. data/components/indefinido/indemma/master/component.json +27 -17
  4. data/components/indefinido/indemma/master/lib/record/associable.js +74 -75
  5. data/components/indefinido/indemma/master/lib/record/dirtyable.js +40 -0
  6. data/components/indefinido/indemma/master/lib/record/queryable.js +2 -2
  7. data/components/indefinido/indemma/master/lib/record/resource.js +1 -1
  8. data/components/indefinido/indemma/master/lib/record/rest.js +7 -2
  9. data/components/indefinido/indemma/master/lib/record/restfulable.js +37 -10
  10. data/components/indefinido/indemma/master/lib/record/scopable.js +20 -47
  11. data/components/indefinido/indemma/master/lib/record/storable.js +11 -0
  12. data/components/indefinido/indemma/master/lib/record/validatable.js +195 -1068
  13. data/components/indefinido/indemma/master/lib/record.js +1 -1
  14. data/components/indefinido/indemma/master/vendor/stampit.js +568 -242
  15. data/components/indefinido/observable/es6-modules/component.json +39 -0
  16. data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/lib/adapters/rivets.js +3 -1
  17. data/components/indefinido/observable/es6-modules/lib/legacy/notifierable.js +145 -0
  18. data/components/indefinido/observable/es6-modules/lib/legacy/schedulerable.js +114 -0
  19. data/components/indefinido/observable/es6-modules/lib/lookup.js +38 -0
  20. data/components/indefinido/observable/es6-modules/lib/observable/keypath_observer.js +38 -0
  21. data/components/indefinido/observable/es6-modules/lib/observable/observation.js +45 -0
  22. data/components/indefinido/observable/es6-modules/lib/observable/selection.js +57 -0
  23. data/components/indefinido/observable/es6-modules/lib/observable/self_observer.js +38 -0
  24. data/components/indefinido/observable/es6-modules/lib/observable.js +90 -0
  25. data/components/indefinido/observable/es6-modules/lib/platform.js +12 -0
  26. data/components/indefinido/observable/es6-modules/vendor/observe-js/observe.js +1631 -0
  27. data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/accessors.js +85 -10
  28. data/lib/assets/javascripts/aura/extensions/rivets.js.coffee +1 -1
  29. data/lib/ende/version.rb +1 -1
  30. data/vendor/assets/components/ende_build.js +18379 -26828
  31. metadata +20 -128
  32. data/components/indefinido/indemma/master/.gitignore +0 -17
  33. data/components/indefinido/indemma/master/.ruby-gemset +0 -1
  34. data/components/indefinido/indemma/master/.ruby-version +0 -1
  35. data/components/indefinido/indemma/master/Gemfile +0 -13
  36. data/components/indefinido/indemma/master/Guardfile +0 -39
  37. data/components/indefinido/indemma/master/History.md +0 -0
  38. data/components/indefinido/indemma/master/Readme.md +0 -447
  39. data/components/indefinido/indemma/master/build/build.js +0 -26288
  40. data/components/indefinido/indemma/master/build/development.js +0 -22200
  41. data/components/indefinido/indemma/master/build/release.js +0 -22139
  42. data/components/indefinido/indemma/master/build/test.js +0 -22200
  43. data/components/indefinido/indemma/master/components/chaijs-assertion-error/component.json +0 -18
  44. data/components/indefinido/indemma/master/components/chaijs-assertion-error/index.js +0 -110
  45. data/components/indefinido/indemma/master/components/chaijs-chai/component.json +0 -47
  46. data/components/indefinido/indemma/master/components/chaijs-chai/index.js +0 -1
  47. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/assertion.js +0 -130
  48. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/core/assertions.js +0 -1270
  49. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/interface/assert.js +0 -1080
  50. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/interface/expect.js +0 -12
  51. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/interface/should.js +0 -76
  52. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/addChainableMethod.js +0 -94
  53. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/addMethod.js +0 -37
  54. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/addProperty.js +0 -40
  55. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/eql.js +0 -129
  56. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/flag.js +0 -32
  57. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getActual.js +0 -19
  58. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getEnumerableProperties.js +0 -25
  59. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getMessage.js +0 -49
  60. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getName.js +0 -20
  61. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getPathValue.js +0 -102
  62. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getProperties.js +0 -35
  63. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/index.js +0 -108
  64. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/inspect.js +0 -320
  65. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/objDisplay.js +0 -48
  66. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/overwriteMethod.js +0 -51
  67. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/overwriteProperty.js +0 -54
  68. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/test.js +0 -26
  69. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/transferFlags.js +0 -44
  70. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/type.js +0 -45
  71. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai.js +0 -80
  72. data/components/indefinido/indemma/master/components/component-bind/component.json +0 -14
  73. data/components/indefinido/indemma/master/components/component-bind/index.js +0 -24
  74. data/components/indefinido/indemma/master/components/component-jquery/component.json +0 -14
  75. data/components/indefinido/indemma/master/components/component-jquery/index.js +0 -9601
  76. data/components/indefinido/indemma/master/components/component-type/component.json +0 -18
  77. data/components/indefinido/indemma/master/components/component-type/index.js +0 -32
  78. data/components/indefinido/indemma/master/components/indefinido-advisable/component.json +0 -21
  79. data/components/indefinido/indemma/master/components/indefinido-advisable/index.js +0 -1
  80. data/components/indefinido/indemma/master/components/indefinido-advisable/lib/advisable.js +0 -60
  81. data/components/indefinido/indemma/master/components/indefinido-observable/component.json +0 -25
  82. data/components/indefinido/indemma/master/components/indefinido-observable/components/cjohansen-sinon/sinon.js +0 -4290
  83. data/components/indefinido/indemma/master/components/indefinido-observable/lib/observable.js +0 -323
  84. data/components/indefinido/indemma/master/components/kapit-observe-utils/component.json +0 -13
  85. data/components/indefinido/indemma/master/components/paulmillr-es6-shim/component.json +0 -17
  86. data/components/indefinido/indemma/master/components/paulmillr-es6-shim/es6-shim.js +0 -996
  87. data/components/indefinido/indemma/master/components/pluma-assimilate/component.json +0 -25
  88. data/components/indefinido/indemma/master/components/pluma-assimilate/dist/assimilate.js +0 -127
  89. data/components/indefinido/indemma/master/karma.conf.js +0 -76
  90. data/components/indefinido/indemma/master/package.json +0 -9
  91. data/components/indefinido/indemma/master/spec/record/associable_spec.js +0 -137
  92. data/components/indefinido/indemma/master/spec/record/persistable_spec.js +0 -36
  93. data/components/indefinido/indemma/master/spec/record/queryable_spec.js +0 -33
  94. data/components/indefinido/indemma/master/spec/record/resource_spec.js +0 -93
  95. data/components/indefinido/indemma/master/spec/record/rest_spec.js +0 -32
  96. data/components/indefinido/indemma/master/spec/record/restfulable_spec.js +0 -300
  97. data/components/indefinido/indemma/master/spec/record/scopable_spec.js +0 -212
  98. data/components/indefinido/indemma/master/spec/record/storable_spec.js +0 -53
  99. data/components/indefinido/indemma/master/spec/record/translationable.js +0 -28
  100. data/components/indefinido/indemma/master/spec/record/validatable_spec.js +0 -111
  101. data/components/indefinido/indemma/master/spec/record/validations/associated_spec.js +0 -43
  102. data/components/indefinido/indemma/master/spec/record/validations/confirmation_spec.js +0 -36
  103. data/components/indefinido/indemma/master/spec/record/validations/cpf_spec.js +0 -35
  104. data/components/indefinido/indemma/master/spec/record/validations/presence_spec.js +0 -28
  105. data/components/indefinido/indemma/master/spec/record/validations/remote_spec.js +0 -87
  106. data/components/indefinido/indemma/master/spec/record/validations/type_spec.js +0 -48
  107. data/components/indefinido/indemma/master/spec/record_spec.js +0 -37
  108. data/components/indefinido/indemma/master/spec/spec_helper.js +0 -11
  109. data/components/indefinido/indemma/master/spec/support/value_objects/phone.js +0 -45
  110. data/components/indefinido/indemma/master/src/lib/extensions/rivets.coffee +0 -17
  111. data/components/indefinido/indemma/master/src/lib/record/associable.coffee +0 -380
  112. data/components/indefinido/indemma/master/src/lib/record/errors.coffee +0 -20
  113. data/components/indefinido/indemma/master/src/lib/record/maid.coffee +0 -16
  114. data/components/indefinido/indemma/master/src/lib/record/persistable.coffee +0 -32
  115. data/components/indefinido/indemma/master/src/lib/record/queryable.coffee +0 -30
  116. data/components/indefinido/indemma/master/src/lib/record/resource.coffee +0 -106
  117. data/components/indefinido/indemma/master/src/lib/record/rest.coffee +0 -28
  118. data/components/indefinido/indemma/master/src/lib/record/restfulable.coffee +0 -447
  119. data/components/indefinido/indemma/master/src/lib/record/scopable.coffee +0 -294
  120. data/components/indefinido/indemma/master/src/lib/record/storable.coffee +0 -46
  121. data/components/indefinido/indemma/master/src/lib/record/translationable.coffee +0 -18
  122. data/components/indefinido/indemma/master/src/lib/record/validatable.coffee +0 -207
  123. data/components/indefinido/indemma/master/src/lib/record/validations/associated.coffee +0 -30
  124. data/components/indefinido/indemma/master/src/lib/record/validations/confirmation.coffee +0 -17
  125. data/components/indefinido/indemma/master/src/lib/record/validations/cpf.coffee +0 -57
  126. data/components/indefinido/indemma/master/src/lib/record/validations/presence.coffee +0 -16
  127. data/components/indefinido/indemma/master/src/lib/record/validations/remote.coffee +0 -61
  128. data/components/indefinido/indemma/master/src/lib/record/validations/type.coffee +0 -31
  129. data/components/indefinido/indemma/master/src/lib/record/validations/validatorable.coffee +0 -5
  130. data/components/indefinido/indemma/master/src/lib/record.coffee +0 -138
  131. data/components/indefinido/indemma/master/src/spec/record/associable_spec.coffee +0 -130
  132. data/components/indefinido/indemma/master/src/spec/record/persistable_spec.coffee +0 -30
  133. data/components/indefinido/indemma/master/src/spec/record/queryable_spec.coffee +0 -27
  134. data/components/indefinido/indemma/master/src/spec/record/resource_spec.coffee +0 -69
  135. data/components/indefinido/indemma/master/src/spec/record/rest_spec.coffee +0 -22
  136. data/components/indefinido/indemma/master/src/spec/record/restfulable_spec.coffee +0 -215
  137. data/components/indefinido/indemma/master/src/spec/record/scopable_spec.coffee +0 -191
  138. data/components/indefinido/indemma/master/src/spec/record/storable_spec.coffee +0 -40
  139. data/components/indefinido/indemma/master/src/spec/record/translationable.coffee +0 -19
  140. data/components/indefinido/indemma/master/src/spec/record/validatable_spec.coffee +0 -100
  141. data/components/indefinido/indemma/master/src/spec/record/validations/associated_spec.coffee +0 -35
  142. data/components/indefinido/indemma/master/src/spec/record/validations/confirmation_spec.coffee +0 -25
  143. data/components/indefinido/indemma/master/src/spec/record/validations/cpf_spec.coffee +0 -28
  144. data/components/indefinido/indemma/master/src/spec/record/validations/presence_spec.coffee +0 -24
  145. data/components/indefinido/indemma/master/src/spec/record/validations/remote_spec.coffee +0 -74
  146. data/components/indefinido/indemma/master/src/spec/record/validations/type_spec.coffee +0 -33
  147. data/components/indefinido/indemma/master/src/spec/record_spec.coffee +0 -23
  148. data/components/indefinido/indemma/master/src/spec/spec_helper.coffee +0 -9
  149. data/components/indefinido/indemma/master/src/spec/support/value_objects/phone.coffee +0 -30
  150. data/components/indefinido/indemma/master/vendor/object/mixin.js +0 -196
  151. data/components/indefinido/indemma/master/vendor/sinon.js +0 -4290
  152. /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/index.js +0 -0
  153. /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/accessors-legacy.js +0 -0
  154. /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/array.indexOf.js +0 -0
  155. /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/object.create.js +0 -0
@@ -1,447 +0,0 @@
1
-
2
- indemma
3
- =======
4
-
5
- Indemma (mind picture → memory), client side, ES5 observable and REST, extensible modular data model.
6
-
7
- Current version 0.1.9
8
-
9
- Summary
10
- -------
11
-
12
- - We are tired of calling .attr on our models.
13
- - We are tired of using templates
14
- - We want a decent kind of polyfill to view models and rest clients until polymer is out of beta
15
- - Requirements
16
- - ES5 Getters and Setters (Shim ships with component, IE 10+)
17
- - ES7 Observer (Shim ships with component, IE ?+)
18
-
19
- Installation
20
- ------------
21
-
22
- $ component install indefinido/indemma
23
-
24
- Usage
25
- -----
26
-
27
- ### Basic Functionality (Query, Observable, Advisable)
28
-
29
- Basic functionality: Just a copy of [ActiveRecord Interface](https://github.com/rails/rails/blob/master/activerecord) on javascript.
30
-
31
- #### Model
32
-
33
- ```javascript
34
-
35
- require('indemma');
36
-
37
- var person = model.call({
38
- resource: 'person',
39
- record: {
40
- after_initialize: [] // Callbacks
41
-
42
- // Default attributes
43
- avatar: "assets/images/layout/avatar_placeholder.png"
44
- }
45
- });
46
-
47
- // In the future will return a promise object
48
- // for now it doesn't, i know it's bad
49
- person.create({name: "Arthur Philip Dent"}, {name: "Ford Perfect"});
50
-
51
- // some time passed here
52
-
53
- person.find(1) // {name: "Arthur Philip Dent", subscribe: ..., before: ..., after: ..., ... }
54
-
55
- person.every() // [{name: "Arthur Philip Dent", subscribe: ..., ... }, {name: "Ford Perfect", subscribe: ..., ... }]
56
-
57
- // TODO active record interface like: person.where(attribute: value)
58
- ```
59
-
60
- #### Record
61
-
62
- ```javascript
63
-
64
- require('indemma');
65
-
66
- var person = model.call({resource: 'person'}),
67
-
68
- arthur = person({
69
- name : function () { return this.firstname + " " + this.surname; },
70
- firstname: "Arthur Philip",
71
- surname : "Dent",
72
- species : "Humam"
73
- });
74
-
75
- // Subscribe to all changes
76
- arthur.subscribe(function (updates) {
77
- var i = updates.length, update;
78
- while (i--) {
79
- update = updates[i];
80
- console.log(update.name, update.type, update.oldValue, '→', update.object[update.name]); // also this[update.name]
81
- }
82
- });
83
-
84
- // Subscribe to single property change
85
- arthur.subscribe('firstname', function ( update) {
86
- console.log( update.name, update.type, update.oldValue, '→', update.object[ update.name]); // also this[ update.name]
87
- });
88
-
89
- // Advice function calls
90
- arthur.after('name', function () {
91
- console.log('excuted after arthur.name()');
92
- });
93
-
94
- arthur.firstname = "Arthur Philip Dent";
95
- delete arthur.name
96
- ```
97
-
98
- ### Extensions
99
-
100
- #### Associations
101
-
102
- Basic active record like associations
103
-
104
- ```javascript
105
- require('indemma');
106
-
107
- // Activate association support
108
- require('indemma/lib/record/associations'); // Working on to be require('indemma/association')
109
- model.associable();
110
-
111
- var person = model.call({
112
- resource: 'person',
113
- has_many: 'towels' // Yes! Say no to camelcase!
114
- }),
115
-
116
- towel = model.call({
117
- resource: 'towel',
118
- belongs_to: 'person'
119
- })
120
-
121
- // Lets have our data
122
-
123
- arthur = person({
124
- name : function () { return this.firstname + " " + this.surname; },
125
- firstname: "Arthur Philip",
126
- surname : "Dent",
127
- species : "Humam"
128
- });
129
-
130
- // Magic (⚡) and Science (☣) happening now
131
- microfiber_towel = arthur.towels.create({
132
- material : 'microfiber',
133
- color : 'orange',
134
- functions_amount: Infinity
135
- });
136
-
137
-
138
- arthur.towels[0] === microfiber_towel // true
139
- arthur.towels.length // 1
140
-
141
- microfiber_towel.person_id // 1
142
- microfiber_towel.person = person({name: "Ford"}) // 1
143
- microfiber_towel.person_id // 2 (This may vary depending on storage)
144
- arthur.towels.length // 0
145
- ```
146
-
147
- TODO table with all available methods per association
148
-
149
-
150
- Nested Attributes
151
-
152
- ```javascript
153
- require('indemma');
154
-
155
- // Activate association support
156
- require('indemma/lib/record/associations'); // Working on to be require('indemma/association')
157
- model.associable();
158
-
159
- var person = model.call({
160
- resource: 'person',
161
- nest_attributes: 'towel'
162
- }),
163
-
164
- towel = model.call({
165
- resource: 'towel'
166
- }),
167
-
168
- arthur = person({
169
- name : function () { return this.firstname + " " + this.surname; },
170
- firstname: "Arthur Philip",
171
- surname : "Dent",
172
- species : "Humam"
173
- });
174
-
175
- arthur.towel_attributes = { material: 'microfiber', functions: Infinity }
176
- arthur.towels[0]; // { material: 'microfiber', functions: Infinity } (Still in beta)
177
-
178
- ```
179
-
180
- #### Restful
181
-
182
- ```javascript
183
-
184
- require('indemma');
185
-
186
- // Activate restful support
187
- // Compatible with default rails json rendering e.g. render :json => @person
188
- // Depends on resourceful module
189
- require('indemma/lib/record/restful'); // Working on to be require('indemma/restful')
190
-
191
- var person = model.call({
192
- resource: 'person'
193
- }),
194
-
195
- arthur = person({
196
- name : function () { return this.firstname + " " + this.surname; },
197
- firstname: "Arthur Philip",
198
- surname : "Dent",
199
- species : "Humam"
200
- });
201
-
202
- // ⚡ + ☣ again
203
- arthur.save(); // POST /people
204
-
205
- // ... some time passes
206
- arthur.species = "Homo Sapiens Sapiens";
207
- arthur.save(); // PUT /people/1
208
-
209
- // serialization
210
- arthur.json(); // {name: "Arthur Philip Dent", firstname: "Arthur Philip", surname: "Dent", species: "Humam"}
211
-
212
- ```
213
-
214
- #### Resourcefull
215
-
216
- Inflection and resource modules together.
217
-
218
- ```javascript
219
-
220
- require('indemma/lib/record/resource'); // Working on to be require('indemma/resourceable')
221
-
222
- var person = model.call({
223
- resource: {
224
- name : 'person',
225
- param_name: 'guy',
226
- scope : 'world'
227
- // singular: true // Works as singular resource too =D
228
- }
229
- }),
230
-
231
- arthur = person({
232
- name : "Arthur Philip",
233
- species: "Humam"
234
- });
235
-
236
- // Also sets the accept header to application/json
237
-
238
- arthur.save(); // POST /world/person?guy[name]=Arthur Philip&guy[species]=Human
239
-
240
- ```
241
-
242
- #### Scopable
243
-
244
- Active Record like scopes and some finders
245
-
246
- ```javascript
247
- require('indemma/lib/record/scopable'); // Working on to be require('indemma/scopable)
248
-
249
- // Sintax is up to change yet
250
- var person = model.call({
251
- resource: 'person',
252
- $gender: String,
253
- $age: Number
254
- $towel_ids: Array
255
-
256
- // $towel: function () {} // Runtime scope builders to come
257
- });
258
-
259
- // Also sets the accept header to application/json
260
-
261
- person.all(); // GET /people
262
- person.gender('m'); // GET /people?gender=m
263
- person.age(32); // GET /people?age=32
264
- person.none.age(32); // GET /people
265
- person.towel_ids(1, 2, 3); // GET /people?towel_ids[]=1&towel_ids[]=2&towel_ids[]=3
266
-
267
- ```
268
-
269
- #### Maid
270
-
271
- TODO make documentation
272
-
273
- #### Storage (Persistance, Queryable & Storeable)
274
-
275
- TODO make documentation
276
-
277
- ### Validations support
278
-
279
- ```javascript
280
- require('indemma');
281
-
282
- // model definition
283
- var person = model.call({
284
- resource : 'person',
285
-
286
- email : 'Email', // By default uses type validation
287
- age : Number,
288
- birthday : {type: Number},
289
-
290
- // You can use builtin validators sintax
291
- validates_presence_of : 'age',
292
- validates_remotely : 'email', // Remote validator will do POST /people/validate?person[email]=arthur@earth.com
293
-
294
- // Coming soon!
295
- // validates : {name: {beginsWith: 'arthur', presence: true}} // Or you can use the object syntax
296
-
297
- });
298
-
299
-
300
- arthur = person({
301
- name: "Arthur Philip Dent",
302
- });
303
-
304
-
305
- arthur.email = "arthur@earth.com";// "arthur@earth.com"
306
- arthur.valid; // true
307
-
308
- arthur.email = "wrong@@";
309
- arthur.valid; // false
310
-
311
- // When calling valid attribute will trigger validations
312
- arthur.errors; // [ email: ["Email 'wrongg@@' is in an invalid format.", "..."]
313
- arthur.errors.messages.email; // "Email 'wrongg@@' is in an invalid format."
314
-
315
- // When using remote validations use the returned deferred
316
- arthur.validate(function (record, validation_results...) {
317
- alert(record.errors.messages.email);
318
- });
319
-
320
- <div>
321
- <input class="invalid" data-value="user.email" data-class-invalid="user.errors.messages.email" />
322
- </div>
323
-
324
- // Validators reference
325
- person.validators // [ {attribute_name: 'email', type: 'Email', ... } , ... ]
326
-
327
-
328
- // Suport for custom validators coming soon!
329
- // person.validators.phone = function (record, attribute, value) {... }
330
-
331
- ```
332
-
333
- #### Adapters
334
-
335
- ##### Rivets
336
-
337
- ```javascript
338
- require('indemma');
339
-
340
- // Activate restful support
341
- // Requires observer-shim
342
- // Compatible with default rails json rendering e.g. render :json => @person
343
- require('indemma/lib/record/rivets'); // Working on to be require('indemma/adapters/rivets')
344
-
345
- var person = model.call({resource: 'person'}),
346
-
347
- arthur = person({
348
- name : function () { return this.firstname + " " + this.surname; },
349
- firstname: "Arthur Philip",
350
- surname : "Dent",
351
- species : "Humam"
352
- }),
353
-
354
- template = '<div class="person">' +
355
- ' <span data-html="person.name"></span> ' +
356
- ' <span data-html="person.species"></span> ' +
357
- '</div>';
358
-
359
- document.body.innerHTML = template;
360
- element = document.body.children[0];
361
-
362
- arthur.tie(element); // equivalent to rivets.bind(element, {person: arthur});
363
-
364
- arthur.species = "Homo Sapiens";
365
-
366
- ```
367
-
368
- ## TODO
369
-
370
- Move API to a custom page or the github wiki
371
-
372
- ## Tests!
373
-
374
- A medium part of tests has been written, but more on the go!
375
- You can help by implementing the body of some spec
376
-
377
-
378
- ### Define property on steroids sintax support
379
-
380
- With setter on steroids
381
-
382
- ```javascript
383
- require('indemma');
384
-
385
- // model definition
386
- var person = model.call({
387
- resource : 'person',
388
- name : {
389
- set : function (name) { this.name = name.split(' '); },
390
- get : function (name) { this.name.join(' '); }
391
- },
392
- firstname: {
393
- get : function () { this.name[0] },
394
- }
395
- });
396
-
397
- arthur = person({
398
- name: "Arthur Philip Dent",
399
- species : "Humam"
400
- });
401
-
402
- arthur.firstname // Arthur
403
- ```
404
-
405
- ### Inflections support
406
-
407
- ```javascript
408
- require('indemma');
409
-
410
- var person = model.call({resource: 'person'});
411
- person.plural // 'people'
412
-
413
- ```
414
-
415
- ### Storage extension
416
-
417
- ```javascript
418
- require('indemma');
419
-
420
- model.storable()
421
-
422
- arthur = person({
423
- name: "Arthur Philip Dent",
424
- species : "Humam",
425
- });
426
-
427
- arthur.save() // Store on selected storage (localStorage, memory, etc ...)
428
- ```
429
-
430
- ### Single extensions call option
431
-
432
- ```javascript
433
- require('indemma');
434
-
435
- model(['advisable', 'observable', 'restfulable', 'maid', ... ]);
436
- ```
437
-
438
- Credits
439
- -------
440
-
441
- Built upon the lovely [coffeescript](http://coffeescript.org/) language
442
- Building with [the prototypal paradigm](http://ericleads.com/2013/02/fluent-javascript-three-different-kinds-of-prototypal-oo) library [stampit](https://github.com/dilvie/stampit)
443
-
444
-
445
-
446
-
447
- This project rocks and uses [WTFP-LICENSE](http://www.wtfpl.net)