volt 0.8.8 → 0.8.9

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 (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