volt 0.8.8 → 0.8.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/Readme.md +2 -1036
  4. data/VERSION +1 -1
  5. data/app/volt/models/user.rb +5 -0
  6. data/app/volt/tasks/query_tasks.rb +3 -3
  7. data/app/volt/tasks/store_tasks.rb +17 -15
  8. data/app/volt/tasks/user_tasks.rb +6 -0
  9. data/lib/volt/cli.rb +9 -0
  10. data/lib/volt/extra_core/string.rb +10 -2
  11. data/lib/volt/models/array_model.rb +0 -1
  12. data/lib/volt/models/model.rb +45 -28
  13. data/lib/volt/models/model_hash_behaviour.rb +16 -4
  14. data/lib/volt/models/model_helpers.rb +4 -2
  15. data/lib/volt/models/model_wrapper.rb +2 -1
  16. data/lib/volt/models/persistors/array_store.rb +6 -6
  17. data/lib/volt/models/persistors/local_store.rb +1 -1
  18. data/lib/volt/models/persistors/model_store.rb +3 -3
  19. data/lib/volt/models/persistors/query/query_listener.rb +6 -4
  20. data/lib/volt/models/persistors/query/query_listener_pool.rb +9 -0
  21. data/lib/volt/models/persistors/store.rb +1 -0
  22. data/lib/volt/models/url.rb +20 -10
  23. data/lib/volt/page/bindings/template_binding.rb +7 -1
  24. data/lib/volt/page/page.rb +3 -3
  25. data/lib/volt/page/tasks.rb +20 -19
  26. data/lib/volt/reactive/reactive_array.rb +44 -0
  27. data/lib/volt/router/routes.rb +5 -0
  28. data/lib/volt/server.rb +3 -1
  29. data/lib/volt/server/component_templates.rb +7 -1
  30. data/lib/volt/server/html_parser/attribute_scope.rb +1 -1
  31. data/lib/volt/server/rack/component_paths.rb +1 -10
  32. data/lib/volt/server/socket_connection_handler.rb +3 -0
  33. data/lib/volt/tasks/dispatcher.rb +3 -7
  34. data/lib/volt/tasks/task_handler.rb +41 -0
  35. data/spec/integration/bindings_spec.rb +1 -1
  36. data/spec/models/model_spec.rb +32 -32
  37. data/spec/models/persistors/params_spec.rb +1 -1
  38. data/spec/router/routes_spec.rb +4 -4
  39. data/templates/model/model.rb.tt +3 -0
  40. metadata +6 -2
@@ -188,7 +188,7 @@ if ENV['BROWSER']
188
188
  expect(find('#paramsCheck3')).to have_content('')
189
189
 
190
190
  if ENV['BROWSER'] != 'phantom'
191
- expect(current_url).to match(/\/bindings[?]check[=]false$/)
191
+ expect(current_url).to match(/\/bindings$/)
192
192
  end
193
193
  end
194
194
  end
@@ -178,8 +178,8 @@ describe Model do
178
178
  it "should add doubly nested arrays" do
179
179
  model = Model.new
180
180
 
181
- model._items << {_name: 'Cool', _lists: []}
182
- model._items[0]._lists << {_name: 'worked'}
181
+ model._items << {name: 'Cool', lists: []}
182
+ model._items[0]._lists << {name: 'worked'}
183
183
  expect(model._items[0]._lists[0]._name).to eq('worked')
184
184
  end
185
185
 
@@ -202,7 +202,7 @@ describe Model do
202
202
  a = Model.new
203
203
 
204
204
  count = 0
205
- -> { a._blue && a._blue.respond_to?(:_green) && a._blue._green ; count += 1 }.watch!
205
+ -> { a._blue && a._blue.respond_to?(:green) && a._blue._green ; count += 1 }.watch!
206
206
  expect(count).to eq(1)
207
207
 
208
208
  a._blue._green = 5
@@ -215,7 +215,7 @@ describe Model do
215
215
  Computation.flush!
216
216
  expect(count).to eq(3)
217
217
 
218
- a._blue = {_green: 50}
218
+ a._blue = {green: 50}
219
219
  expect(a._blue._green).to eq(50)
220
220
  Computation.flush!
221
221
  expect(count).to eq(4)
@@ -232,7 +232,7 @@ describe Model do
232
232
  Computation.flush!
233
233
  expect(count).to eq(2)
234
234
 
235
- a.delete(:_blue)
235
+ a.delete(:blue)
236
236
  Computation.flush!
237
237
  expect(count).to eq(3)
238
238
  end
@@ -240,7 +240,7 @@ describe Model do
240
240
  it "should let you append nested hashes" do
241
241
  a = Model.new
242
242
 
243
- a._items << {_name: {_text: 'Name'}}
243
+ a._items << {name: {text: 'Name'}}
244
244
 
245
245
  expect(a._items[0]._name._text).to eq('Name')
246
246
  end
@@ -248,13 +248,13 @@ describe Model do
248
248
 
249
249
  it "should not call added too many times" do
250
250
  a = Model.new
251
- a._list << 1
251
+ a._lists << 1
252
252
 
253
253
  count = 0
254
- a._list.on('added') { count += 1 }
254
+ a._lists.on('added') { count += 1 }
255
255
  expect(count).to eq(0)
256
256
 
257
- a._list << 2
257
+ a._lists << 2
258
258
  expect(count).to eq(1)
259
259
  end
260
260
 
@@ -275,13 +275,13 @@ describe Model do
275
275
  describe "paths" do
276
276
  it "should store the path" do
277
277
  a = Model.new
278
- expect(a._test.path).to eq([:_test])
278
+ expect(a._test.path).to eq([:test])
279
279
  a._test = {_name: 'Yes'}
280
- expect(a._test.path).to eq([:_test])
280
+ expect(a._test.path).to eq([:test])
281
281
 
282
282
  a._items << {_name: 'Yes'}
283
- expect(a._items.path).to eq([:_items])
284
- expect(a._items[0].path).to eq([:_items, :[]])
283
+ expect(a._items.path).to eq([:items])
284
+ expect(a._items[0].path).to eq([:items, :[]])
285
285
  end
286
286
 
287
287
  it "should store the paths when assigned" do
@@ -289,17 +289,17 @@ describe Model do
289
289
 
290
290
  a._items = [{_name: 'Cool'}]
291
291
 
292
- expect(a._items.path).to eq([:_items])
293
- expect(a._items[0].path).to eq([:_items, :[]])
292
+ expect(a._items.path).to eq([:items])
293
+ expect(a._items[0].path).to eq([:items, :[]])
294
294
  end
295
295
 
296
296
  it "should handle nested paths" do
297
297
  a = Model.new
298
298
 
299
- a._items << {_name: 'Cool', _lists: [{_name: 'One'}, {_name: 'Two'}]}
299
+ a._items << {name: 'Cool', lists: [{name: 'One'}, {name: 'Two'}]}
300
300
 
301
- expect(a._items[0]._lists.path).to eq([:_items, :[], :_lists])
302
- expect(a._items[0]._lists[1].path).to eq([:_items, :[], :_lists, :[]])
301
+ expect(a._items[0]._lists.path).to eq([:items, :[], :lists])
302
+ expect(a._items[0]._lists[1].path).to eq([:items, :[], :lists, :[]])
303
303
  end
304
304
 
305
305
  it "should trigger added when added" do
@@ -337,9 +337,9 @@ describe Model do
337
337
  it "should delete from an ArrayModel" do
338
338
  array = ArrayModel.new([])
339
339
 
340
- array << {_name: 'One'}
341
- array << {_name: 'Two'}
342
- array << {_name: 'Three'}
340
+ array << {name: 'One'}
341
+ array << {name: 'Two'}
342
+ array << {name: 'Three'}
343
343
 
344
344
  expect(array.size).to eq(3)
345
345
 
@@ -362,18 +362,18 @@ describe Model do
362
362
 
363
363
  it "should convert to a hash, and unwrap all of the way down" do
364
364
  a = Model.new
365
- a._items << {_name: 'Test1', _other: {_time: 'Now'}}
366
- a._items << {_name: 'Test2', _other: {_time: 'Later'}}
365
+ a._items << {name: 'Test1', other: {time: 'Now'}}
366
+ a._items << {name: 'Test2', other: {time: 'Later'}}
367
367
 
368
368
  item1 = a._items[0].to_h
369
- expect(item1[:_name]).to eq('Test1')
370
- expect(item1[:_other][:_time]).to eq('Now')
369
+ expect(item1[:name]).to eq('Test1')
370
+ expect(item1[:other][:time]).to eq('Now')
371
371
 
372
372
  all_items = a._items.to_a
373
373
 
374
374
  a = [
375
- {:_name => "Test1", :_other => {:_time => "Now"}},
376
- {:_name => "Test2", :_other => {:_time => "Later"}}
375
+ {:name => "Test1", :other => {:time => "Now"}},
376
+ {:name => "Test2", :other => {:time => "Later"}}
377
377
  ]
378
378
  expect(all_items).to eq(a)
379
379
  end
@@ -386,25 +386,25 @@ describe Model do
386
386
 
387
387
  it "should set the model path" do
388
388
  @model._object._name = 'Test'
389
- expect(@model._object.path).to eq([:_object])
389
+ expect(@model._object.path).to eq([:object])
390
390
  end
391
391
 
392
392
  it "should set the model path for a sub array" do
393
393
  @model._items << {_name: 'Bob'}
394
- expect(@model._items.path).to eq([:_items])
395
- expect(@model._items[0].path).to eq([:_items, :[]])
394
+ expect(@model._items.path).to eq([:items])
395
+ expect(@model._items[0].path).to eq([:items, :[]])
396
396
  end
397
397
 
398
398
  it "should set the model path for sub sub arrays" do
399
399
  @model._lists << {_name: 'List 1', _items: []}
400
- expect(@model._lists[0]._items.path).to eq([:_lists, :[], :_items])
400
+ expect(@model._lists[0]._items.path).to eq([:lists, :[], :items])
401
401
  end
402
402
 
403
403
  it "should update the path when added from a model instance to a collection" do
404
404
  test_item = TestItem.new
405
405
 
406
406
  @model._items << test_item
407
- expect(@model._items[0].path).to eq([:_items, :[]])
407
+ expect(@model._items[0].path).to eq([:items, :[]])
408
408
  end
409
409
  end
410
410
 
@@ -8,7 +8,7 @@ describe Persistors::Params do
8
8
 
9
9
  expect(a._test._cool.persistor.class).to eq(Persistors::Params)
10
10
 
11
- a._items << {_name: 'Test'}
11
+ a._items << {name: 'Test'}
12
12
 
13
13
  expect(a._items.persistor.class).to eq(Persistors::Params)
14
14
  expect(a._items[0].persistor.class).to eq(Persistors::Params)
@@ -100,16 +100,16 @@ describe Routes do
100
100
  get '/login/{{ _name }}/user/{{ _id }}', _view: 'login', _action: 'user'
101
101
  end
102
102
 
103
- url, params = @routes.params_to_url({_view: 'blog/show', _id: '55'})
103
+ url, params = @routes.params_to_url({view: 'blog/show', id: '55'})
104
104
  expect(url).to eq('/blog/55')
105
105
  expect(params).to eq({})
106
106
 
107
107
 
108
- url, params = @routes.params_to_url({_view: 'blog/edit', _id: '100'})
108
+ url, params = @routes.params_to_url({view: 'blog/edit', id: '100'})
109
109
  expect(url).to eq('/blog/100/edit')
110
110
  expect(params).to eq({})
111
111
 
112
- url, params = @routes.params_to_url({_view: 'blog/edit', _id: '100', _other: 'should_pass'})
112
+ url, params = @routes.params_to_url({view: 'blog/edit', id: '100', other: 'should_pass'})
113
113
  expect(url).to eq('/blog/100/edit')
114
114
  expect(params).to eq({_other: 'should_pass'})
115
115
  end
@@ -152,7 +152,7 @@ describe Routes do
152
152
  get '/blog', _controller: 'blog'
153
153
  end
154
154
 
155
- path, cleaned_params = @routes.params_to_url(params)
155
+ path, cleaned_params = @routes.params_to_url(params.to_h)
156
156
  expect(path).to eq('/blog')
157
157
  expect(cleaned_params).to eq({_index: '5'})
158
158
  end
@@ -0,0 +1,3 @@
1
+ class <%= config[:model_name] %> < Model
2
+
3
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: volt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.8
4
+ version: 0.8.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Stout
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-07 00:00:00.000000000 Z
11
+ date: 2014-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -358,12 +358,14 @@ files:
358
358
  - app/volt/assets/js/vertxbus.js
359
359
  - app/volt/config/dependencies.rb
360
360
  - app/volt/controllers/notices_controller.rb
361
+ - app/volt/models/user.rb
361
362
  - app/volt/tasks/live_query/data_store.rb
362
363
  - app/volt/tasks/live_query/live_query.rb
363
364
  - app/volt/tasks/live_query/live_query_pool.rb
364
365
  - app/volt/tasks/live_query/query_tracker.rb
365
366
  - app/volt/tasks/query_tasks.rb
366
367
  - app/volt/tasks/store_tasks.rb
368
+ - app/volt/tasks/user_tasks.rb
367
369
  - app/volt/views/notices/index.html
368
370
  - bin/volt
369
371
  - docs/FAQ.md
@@ -484,6 +486,7 @@ files:
484
486
  - lib/volt/spec/setup.rb
485
487
  - lib/volt/store/mongo.rb
486
488
  - lib/volt/tasks/dispatcher.rb
489
+ - lib/volt/tasks/task_handler.rb
487
490
  - lib/volt/utils/ejson.rb
488
491
  - lib/volt/utils/generic_counting_pool.rb
489
492
  - lib/volt/utils/generic_pool.rb
@@ -537,6 +540,7 @@ files:
537
540
  - spec/utils/generic_counting_pool_spec.rb
538
541
  - spec/utils/generic_pool_spec.rb
539
542
  - templates/.gitignore
543
+ - templates/model/model.rb.tt
540
544
  - templates/newgem/Gemfile.tt
541
545
  - templates/newgem/LICENSE.txt.tt
542
546
  - templates/newgem/README.md.tt