volt 0.7.23 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +8 -1
- data/CHANGELOG.md +22 -0
- data/Gemfile +8 -0
- data/Guardfile +2 -2
- data/Readme.md +139 -136
- data/VERSION +1 -1
- data/app/volt/assets/js/setImmediate.js +175 -0
- data/app/volt/tasks/live_query/data_store.rb +0 -2
- data/app/volt/tasks/live_query/live_query.rb +4 -4
- data/docs/GETTING_STARTED.md +24 -3
- data/docs/WHY.md +1 -22
- data/lib/volt.rb +20 -1
- data/lib/volt/console.rb +20 -0
- data/lib/volt/controllers/model_controller.rb +25 -11
- data/lib/volt/extra_core/object.rb +2 -14
- data/lib/volt/extra_core/string.rb +4 -0
- data/lib/volt/models.rb +0 -1
- data/lib/volt/models/array_model.rb +8 -16
- data/lib/volt/models/cursor.rb +1 -1
- data/lib/volt/models/model.rb +40 -60
- data/lib/volt/models/model_hash_behaviour.rb +10 -24
- data/lib/volt/models/model_helpers.rb +2 -2
- data/lib/volt/models/model_state.rb +1 -1
- data/lib/volt/models/model_wrapper.rb +4 -4
- data/lib/volt/models/persistors/array_store.rb +44 -28
- data/lib/volt/models/persistors/base.rb +1 -1
- data/lib/volt/models/persistors/model_store.rb +1 -1
- data/lib/volt/models/persistors/params.rb +5 -1
- data/lib/volt/models/persistors/query/query_listener.rb +2 -0
- data/lib/volt/models/persistors/store.rb +3 -2
- data/lib/volt/models/persistors/store_state.rb +7 -2
- data/lib/volt/models/url.rb +35 -29
- data/lib/volt/models/validations.rb +7 -17
- data/lib/volt/page/bindings/attribute_binding.rb +57 -39
- data/lib/volt/page/bindings/base_binding.rb +0 -14
- data/lib/volt/page/bindings/content_binding.rb +15 -18
- data/lib/volt/page/bindings/each_binding.rb +67 -34
- data/lib/volt/page/bindings/if_binding.rb +15 -12
- data/lib/volt/page/bindings/template_binding.rb +77 -59
- data/lib/volt/page/bindings/template_binding/grouped_controllers.rb +19 -4
- data/lib/volt/page/channel.rb +22 -38
- data/lib/volt/page/channel_stub.rb +3 -6
- data/lib/volt/page/page.rb +24 -26
- data/lib/volt/page/string_template_renderer.rb +46 -0
- data/lib/volt/page/sub_context.rb +7 -1
- data/lib/volt/page/targets/binding_document/component_node.rb +11 -9
- data/lib/volt/page/tasks.rb +3 -2
- data/lib/volt/page/url_tracker.rb +4 -3
- data/lib/volt/reactive/computation.rb +131 -0
- data/lib/volt/reactive/dependency.rb +71 -0
- data/lib/volt/reactive/eventable.rb +82 -0
- data/lib/volt/reactive/hash_dependency.rb +36 -0
- data/lib/volt/{controllers → reactive}/reactive_accessors.rb +8 -11
- data/lib/volt/reactive/reactive_array.rb +100 -193
- data/lib/volt/reactive/reactive_hash.rb +49 -0
- data/lib/volt/server/html_parser/attribute_scope.rb +24 -4
- data/lib/volt/server/html_parser/if_view_scope.rb +15 -15
- data/lib/volt/server/html_parser/view_scope.rb +31 -1
- data/spec/apps/kitchen_sink/Gemfile +4 -8
- data/spec/apps/kitchen_sink/app/main/config/dependencies.rb +8 -0
- data/spec/apps/kitchen_sink/app/main/config/routes.rb +8 -1
- data/spec/apps/kitchen_sink/app/main/controllers/main_controller.rb +8 -0
- data/spec/apps/kitchen_sink/app/main/views/main/bindings.html +73 -0
- data/spec/apps/kitchen_sink/app/main/views/main/index.html +6 -1
- data/spec/apps/kitchen_sink/app/main/views/main/main.html +26 -6
- data/spec/apps/kitchen_sink/app/main/views/main/store.html +6 -0
- data/spec/controllers/reactive_accessors_spec.rb +13 -15
- data/spec/integration/bindings_spec.rb +159 -0
- data/spec/integration/templates_spec.rb +15 -0
- data/spec/models/model_spec.rb +130 -228
- data/spec/reactive/computation_spec.rb +63 -0
- data/spec/reactive/dependency_spec.rb +5 -0
- data/spec/reactive/eventable_spec.rb +48 -0
- data/spec/reactive/reactive_array_spec.rb +97 -0
- data/spec/router/routes_spec.rb +26 -27
- data/spec/server/html_parser/view_parser_spec.rb +3 -21
- data/spec/server/rack/asset_files_spec.rb +1 -1
- data/templates/project/app/main/views/main/main.html +2 -2
- metadata +29 -41
- data/lib/volt/extra_core/time.rb +0 -16
- data/lib/volt/page/draw_cycle.rb +0 -31
- data/lib/volt/page/memory_test.rb +0 -26
- data/lib/volt/page/reactive_template.rb +0 -32
- data/lib/volt/reactive/array_extensions.rb +0 -12
- data/lib/volt/reactive/destructive_methods.rb +0 -19
- data/lib/volt/reactive/event_chain.rb +0 -125
- data/lib/volt/reactive/events.rb +0 -216
- data/lib/volt/reactive/object_tracking.rb +0 -14
- data/lib/volt/reactive/reactive_block.rb +0 -88
- data/lib/volt/reactive/reactive_generator.rb +0 -44
- data/lib/volt/reactive/reactive_tags.rb +0 -71
- data/lib/volt/reactive/reactive_value.rb +0 -427
- data/lib/volt/reactive/string_extensions.rb +0 -31
- data/spec/integration/test_integration_spec.rb +0 -14
- data/spec/models/event_chain_spec.rb +0 -150
- data/spec/models/model_buffers_spec.rb +0 -9
- data/spec/models/old_model_spec.rb +0 -67
- data/spec/models/reactive_array_spec.rb +0 -364
- data/spec/models/reactive_block_spec.rb +0 -13
- data/spec/models/reactive_call_times_spec.rb +0 -28
- data/spec/models/reactive_generator_spec.rb +0 -58
- data/spec/models/reactive_tags_spec.rb +0 -35
- data/spec/models/reactive_value_spec.rb +0 -370
- data/spec/models/store_spec.rb +0 -16
- data/spec/models/string_extensions_spec.rb +0 -57
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Computation do
|
4
|
+
it 'should trigger again when a dependent changes' do
|
5
|
+
a = ReactiveHash.new
|
6
|
+
|
7
|
+
values = []
|
8
|
+
|
9
|
+
-> { values << a[0] }.watch!
|
10
|
+
|
11
|
+
expect(values).to eq([nil])
|
12
|
+
|
13
|
+
a[0] = 'one'
|
14
|
+
Computation.flush!
|
15
|
+
expect(values).to eq([nil, 'one'])
|
16
|
+
|
17
|
+
a[0] = 'two'
|
18
|
+
Computation.flush!
|
19
|
+
expect(values).to eq([nil, 'one', 'two'])
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should not trigger after the computation is stopped' do
|
23
|
+
a = ReactiveHash.new
|
24
|
+
|
25
|
+
values = []
|
26
|
+
computation = -> { values << a[0] }.watch!
|
27
|
+
|
28
|
+
expect(values).to eq([nil])
|
29
|
+
|
30
|
+
a[0] = 'one'
|
31
|
+
Computation.flush!
|
32
|
+
expect(values).to eq([nil, 'one'])
|
33
|
+
|
34
|
+
computation.stop
|
35
|
+
|
36
|
+
a[0] = 'two'
|
37
|
+
Computation.flush!
|
38
|
+
expect(values).to eq([nil, 'one'])
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should support nested watches' do
|
42
|
+
a = ReactiveHash.new
|
43
|
+
|
44
|
+
values = []
|
45
|
+
-> do
|
46
|
+
values << a[0]
|
47
|
+
|
48
|
+
-> do
|
49
|
+
values << a[1]
|
50
|
+
end.watch!
|
51
|
+
end.watch!
|
52
|
+
|
53
|
+
expect(values).to eq([nil,nil])
|
54
|
+
|
55
|
+
a[1] = 'inner'
|
56
|
+
Computation.flush!
|
57
|
+
expect(values).to eq([nil,nil,'inner'])
|
58
|
+
|
59
|
+
a[0] = 'outer'
|
60
|
+
Computation.flush!
|
61
|
+
expect(values).to eq([nil,nil,'inner','outer','inner'])
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'volt/reactive/eventable'
|
3
|
+
|
4
|
+
class TestEventable
|
5
|
+
include Eventable
|
6
|
+
|
7
|
+
def trigger_works_event!
|
8
|
+
trigger!('works', 20)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe Eventable do
|
13
|
+
it 'should allow events to be bound with on' do
|
14
|
+
test_eventable = TestEventable.new
|
15
|
+
|
16
|
+
count = 0
|
17
|
+
test_eventable.on('works') do |val|
|
18
|
+
count += 1
|
19
|
+
expect(val).to eq(20)
|
20
|
+
end
|
21
|
+
|
22
|
+
expect(count).to eq(0)
|
23
|
+
test_eventable.trigger_works_event!
|
24
|
+
expect(count).to eq(1)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should allow events to be removed with .remove' do
|
28
|
+
test_eventable = TestEventable.new
|
29
|
+
|
30
|
+
count = 0
|
31
|
+
listener = test_eventable.on('works') do
|
32
|
+
count += 1
|
33
|
+
end
|
34
|
+
|
35
|
+
expect(listener.class).to eq(Listener)
|
36
|
+
|
37
|
+
expect(count).to eq(0)
|
38
|
+
test_eventable.trigger_works_event!
|
39
|
+
expect(count).to eq(1)
|
40
|
+
|
41
|
+
test_eventable.trigger_works_event!
|
42
|
+
expect(count).to eq(2)
|
43
|
+
|
44
|
+
listener.remove
|
45
|
+
test_eventable.trigger_works_event!
|
46
|
+
expect(count).to eq(2)
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'volt/reactive/reactive_array'
|
3
|
+
|
4
|
+
describe ReactiveArray do
|
5
|
+
describe "cells" do
|
6
|
+
it 'should track dependencies for cells' do
|
7
|
+
a = ReactiveArray.new
|
8
|
+
|
9
|
+
count = 0
|
10
|
+
values = []
|
11
|
+
-> { values << a[0] ; count += 1 }.watch!
|
12
|
+
|
13
|
+
a[0] = 5
|
14
|
+
|
15
|
+
Computation.flush!
|
16
|
+
|
17
|
+
a[0] = 10
|
18
|
+
expect(count).to eq(2)
|
19
|
+
expect(values).to eq([nil, 5])
|
20
|
+
|
21
|
+
Computation.flush!
|
22
|
+
expect(count).to eq(3)
|
23
|
+
expect(values).to eq([nil, 5, 10])
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should trigger changed on the last cell when appending' do
|
27
|
+
a = ReactiveArray.new([1,2,3])
|
28
|
+
|
29
|
+
values = []
|
30
|
+
-> { values << a[3] }.watch!
|
31
|
+
|
32
|
+
expect(values).to eq([nil])
|
33
|
+
|
34
|
+
a << 4
|
35
|
+
expect(values).to eq([nil])
|
36
|
+
|
37
|
+
Computation.flush!
|
38
|
+
expect(values).to eq([nil, 4])
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should trigger changes for each cell after index after insert' do
|
42
|
+
a = ReactiveArray.new([1,2,3])
|
43
|
+
|
44
|
+
values_at_2 = []
|
45
|
+
values_at_3 = []
|
46
|
+
values_at_4 = []
|
47
|
+
-> { values_at_2 << a[2] }.watch!
|
48
|
+
-> { values_at_3 << a[3] }.watch!
|
49
|
+
-> { values_at_4 << a[4] }.watch!
|
50
|
+
|
51
|
+
expect(values_at_2).to eq([3])
|
52
|
+
expect(values_at_3).to eq([nil])
|
53
|
+
expect(values_at_4).to eq([nil])
|
54
|
+
|
55
|
+
a.insert(2,1.3,1.7)
|
56
|
+
|
57
|
+
Computation.flush!
|
58
|
+
|
59
|
+
expect(values_at_2).to eq([3,1.3])
|
60
|
+
expect(values_at_3).to eq([nil,1.7])
|
61
|
+
expect(values_at_4).to eq([nil,3])
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "size dependencies" do
|
67
|
+
it 'pushing should trigger changed for size' do
|
68
|
+
array = ReactiveArray.new
|
69
|
+
count = 0
|
70
|
+
|
71
|
+
size_values = []
|
72
|
+
-> { size_values << array.size }.watch!
|
73
|
+
|
74
|
+
expect(size_values).to eq([0])
|
75
|
+
|
76
|
+
array << 5
|
77
|
+
|
78
|
+
Computation.flush!
|
79
|
+
expect(size_values).to eq([0,1])
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'should trigger a size change when deleting' do
|
83
|
+
array = ReactiveArray.new([1,2,3])
|
84
|
+
|
85
|
+
size_values = []
|
86
|
+
-> { size_values << array.size }.watch!
|
87
|
+
|
88
|
+
expect(size_values).to eq([3])
|
89
|
+
|
90
|
+
array.delete_at(2)
|
91
|
+
|
92
|
+
expect(size_values).to eq([3])
|
93
|
+
Computation.flush!
|
94
|
+
expect(size_values).to eq([3,2])
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
data/spec/router/routes_spec.rb
CHANGED
@@ -142,31 +142,30 @@ describe Routes do
|
|
142
142
|
|
143
143
|
end
|
144
144
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
# end
|
145
|
+
it "should match routes" do
|
146
|
+
params = Model.new({}, persistor: Persistors::Params)
|
147
|
+
params._controller = 'blog'
|
148
|
+
params._index = '5'
|
149
|
+
|
150
|
+
routes do
|
151
|
+
get '/', _controller: 'index'
|
152
|
+
get '/blog', _controller: 'blog'
|
153
|
+
end
|
154
|
+
|
155
|
+
path, cleaned_params = @routes.params_to_url(params)
|
156
|
+
expect(path).to eq('/blog')
|
157
|
+
expect(cleaned_params).to eq({_index: '5'})
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should handle routes with bindings in them" do
|
161
|
+
params = Model.new({}, persistor: Persistors::Params)
|
162
|
+
|
163
|
+
routes do
|
164
|
+
get '/', _controller: 'index'
|
165
|
+
get '/blog/{_id}', _controller: 'blog'
|
166
|
+
end
|
167
|
+
|
168
|
+
params = @routes.url_to_params('/blog/20')
|
169
|
+
|
170
|
+
end
|
172
171
|
end
|
@@ -143,16 +143,7 @@ describe ViewParser do
|
|
143
143
|
|
144
144
|
view = ViewParser.new(html, "main/main/main")
|
145
145
|
|
146
|
-
expect(view.templates).to eq({
|
147
|
-
"main/main/main/body" => {
|
148
|
-
"html" => " <div id=\"id0\">\n </div>\n",
|
149
|
-
"bindings" => {
|
150
|
-
"id0" => [
|
151
|
-
"lambda { |__p, __t, __c, __id| AttributeBinding.new(__p, __t, __c, __id, \"class\", Proc.new { main_class }) }"
|
152
|
-
]
|
153
|
-
}
|
154
|
-
}
|
155
|
-
})
|
146
|
+
expect(view.templates).to eq({"main/main/main/body"=>{"html"=>" <div id=\"id0\">\n </div>\n", "bindings"=>{"id0"=>["lambda { |__p, __t, __c, __id| AttributeBinding.new(__p, __t, __c, __id, \"class\", Proc.new { main_class }, Proc.new { |val| self.main_class=(val) }) }"]}}})
|
156
147
|
end
|
157
148
|
|
158
149
|
it "should parse multiple attribute bindings in a single attribute" do
|
@@ -179,7 +170,7 @@ describe ViewParser do
|
|
179
170
|
"html" => " <div id=\"id0\">\n </div>\n",
|
180
171
|
"bindings" => {
|
181
172
|
"id0" => [
|
182
|
-
"lambda { |__p, __t, __c, __id| AttributeBinding.new(__p, __t, __c, __id, \"class\", Proc.new {
|
173
|
+
"lambda { |__p, __t, __c, __id| AttributeBinding.new(__p, __t, __c, __id, \"class\", Proc.new { StringTemplateRender.new(__p, __c, \"main/main/main/body/_rv1\") }) }"
|
183
174
|
]
|
184
175
|
}
|
185
176
|
}
|
@@ -273,16 +264,7 @@ describe ViewParser do
|
|
273
264
|
|
274
265
|
view = ViewParser.new(html, "main/main/main")
|
275
266
|
|
276
|
-
expect(view.templates).to eq({
|
277
|
-
"main/main/main/body" => {
|
278
|
-
"html" => " <textarea name=\"cool\" id=\"id1\"></textarea>\n",
|
279
|
-
"bindings" => {
|
280
|
-
"id1" => [
|
281
|
-
"lambda { |__p, __t, __c, __id| AttributeBinding.new(__p, __t, __c, __id, \"value\", Proc.new { awesome }) }"
|
282
|
-
]
|
283
|
-
}
|
284
|
-
}
|
285
|
-
})
|
267
|
+
expect(view.templates).to eq({"main/main/main/body"=>{"html"=>" <textarea name=\"cool\" id=\"id1\"></textarea>\n", "bindings"=>{"id1"=>["lambda { |__p, __t, __c, __id| AttributeBinding.new(__p, __t, __c, __id, \"value\", Proc.new { awesome }, Proc.new { |val| self.awesome=(val) }) }"]}}})
|
286
268
|
end
|
287
269
|
|
288
270
|
end
|
@@ -19,7 +19,7 @@ if RUBY_PLATFORM != 'opal'
|
|
19
19
|
it "should list all JS files" do
|
20
20
|
main = AssetFiles.new("main", @component_paths)
|
21
21
|
|
22
|
-
expect(main.javascript_files(nil)).to eq(["/assets/js/jquery-2.0.3.js", "/assets/js/sockjs-0.3.4.min.js", "/assets/js/vertxbus.js", "/assets/js/bootstrap.js", "/assets/js/test2.js", "/assets/js/test3.js", "/assets/js/test1.js", "/assets/volt/page/page.js", "/components/main.js"])
|
22
|
+
expect(main.javascript_files(nil)).to eq(["/assets/js/jquery-2.0.3.js", "/assets/js/setImmediate.js", "/assets/js/sockjs-0.3.4.min.js", "/assets/js/vertxbus.js", "/assets/js/bootstrap.js", "/assets/js/test2.js", "/assets/js/test3.js", "/assets/js/test1.js", "/assets/volt/page/page.js", "/components/main.js"])
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -22,7 +22,7 @@
|
|
22
22
|
</div>
|
23
23
|
|
24
24
|
<:Nav>
|
25
|
-
<li class="{#if url.path.split('/')[1] ==
|
26
|
-
<a href="{
|
25
|
+
<li class="{#if url.path.split('/')[1] == data.href.split('/')[1]}active{/}">
|
26
|
+
<a href="{data.href}">{data.text}</a>
|
27
27
|
</li>
|
28
28
|
|
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.
|
4
|
+
version: 0.8.0
|
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-
|
11
|
+
date: 2014-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -344,6 +344,7 @@ files:
|
|
344
344
|
- ".rspec"
|
345
345
|
- ".ruby-version"
|
346
346
|
- ".travis.yml"
|
347
|
+
- CHANGELOG.md
|
347
348
|
- Gemfile
|
348
349
|
- Guardfile
|
349
350
|
- LICENSE.txt
|
@@ -352,6 +353,7 @@ files:
|
|
352
353
|
- VERSION
|
353
354
|
- app/volt/assets/css/notices.css.scss
|
354
355
|
- app/volt/assets/js/jquery-2.0.3.js
|
356
|
+
- app/volt/assets/js/setImmediate.js
|
355
357
|
- app/volt/assets/js/sockjs-0.3.4.min.js
|
356
358
|
- app/volt/assets/js/vertxbus.js
|
357
359
|
- app/volt/config/dependencies.rb
|
@@ -377,7 +379,6 @@ files:
|
|
377
379
|
- lib/volt/cli/new_gem.rb
|
378
380
|
- lib/volt/console.rb
|
379
381
|
- lib/volt/controllers/model_controller.rb
|
380
|
-
- lib/volt/controllers/reactive_accessors.rb
|
381
382
|
- lib/volt/extra_core/array.rb
|
382
383
|
- lib/volt/extra_core/blank.rb
|
383
384
|
- lib/volt/extra_core/extra_core.rb
|
@@ -393,7 +394,6 @@ files:
|
|
393
394
|
- lib/volt/extra_core/string.rb
|
394
395
|
- lib/volt/extra_core/stringify_keys.rb
|
395
396
|
- lib/volt/extra_core/symbol.rb
|
396
|
-
- lib/volt/extra_core/time.rb
|
397
397
|
- lib/volt/extra_core/true_false.rb
|
398
398
|
- lib/volt/extra_core/try.rb
|
399
399
|
- lib/volt/models.rb
|
@@ -433,10 +433,8 @@ files:
|
|
433
433
|
- lib/volt/page/channel_stub.rb
|
434
434
|
- lib/volt/page/document.rb
|
435
435
|
- lib/volt/page/document_events.rb
|
436
|
-
- lib/volt/page/draw_cycle.rb
|
437
|
-
- lib/volt/page/memory_test.rb
|
438
436
|
- lib/volt/page/page.rb
|
439
|
-
- lib/volt/page/
|
437
|
+
- lib/volt/page/string_template_renderer.rb
|
440
438
|
- lib/volt/page/sub_context.rb
|
441
439
|
- lib/volt/page/targets/attribute_section.rb
|
442
440
|
- lib/volt/page/targets/attribute_target.rb
|
@@ -451,17 +449,13 @@ files:
|
|
451
449
|
- lib/volt/page/tasks.rb
|
452
450
|
- lib/volt/page/template_renderer.rb
|
453
451
|
- lib/volt/page/url_tracker.rb
|
454
|
-
- lib/volt/reactive/
|
455
|
-
- lib/volt/reactive/
|
456
|
-
- lib/volt/reactive/
|
457
|
-
- lib/volt/reactive/
|
458
|
-
- lib/volt/reactive/
|
452
|
+
- lib/volt/reactive/computation.rb
|
453
|
+
- lib/volt/reactive/dependency.rb
|
454
|
+
- lib/volt/reactive/eventable.rb
|
455
|
+
- lib/volt/reactive/hash_dependency.rb
|
456
|
+
- lib/volt/reactive/reactive_accessors.rb
|
459
457
|
- lib/volt/reactive/reactive_array.rb
|
460
|
-
- lib/volt/reactive/
|
461
|
-
- lib/volt/reactive/reactive_generator.rb
|
462
|
-
- lib/volt/reactive/reactive_tags.rb
|
463
|
-
- lib/volt/reactive/reactive_value.rb
|
464
|
-
- lib/volt/reactive/string_extensions.rb
|
458
|
+
- lib/volt/reactive/reactive_hash.rb
|
465
459
|
- lib/volt/router/routes.rb
|
466
460
|
- lib/volt/server.rb
|
467
461
|
- lib/volt/server/banner.txt
|
@@ -500,33 +494,30 @@ files:
|
|
500
494
|
- spec/apps/file_loading/app/slideshow/assets/js/test3.js
|
501
495
|
- spec/apps/kitchen_sink/.gitignore
|
502
496
|
- spec/apps/kitchen_sink/Gemfile
|
497
|
+
- spec/apps/kitchen_sink/app/main/config/dependencies.rb
|
503
498
|
- spec/apps/kitchen_sink/app/main/config/routes.rb
|
504
499
|
- spec/apps/kitchen_sink/app/main/controllers/main_controller.rb
|
500
|
+
- spec/apps/kitchen_sink/app/main/views/main/bindings.html
|
505
501
|
- spec/apps/kitchen_sink/app/main/views/main/index.html
|
506
502
|
- spec/apps/kitchen_sink/app/main/views/main/main.html
|
503
|
+
- spec/apps/kitchen_sink/app/main/views/main/store.html
|
507
504
|
- spec/apps/kitchen_sink/config.ru
|
508
505
|
- spec/apps/kitchen_sink/public/index.html
|
509
506
|
- spec/controllers/reactive_accessors_spec.rb
|
510
507
|
- spec/extra_core/inflector_spec.rb
|
511
|
-
- spec/integration/
|
512
|
-
- spec/
|
513
|
-
- spec/models/model_buffers_spec.rb
|
508
|
+
- spec/integration/bindings_spec.rb
|
509
|
+
- spec/integration/templates_spec.rb
|
514
510
|
- spec/models/model_spec.rb
|
515
|
-
- spec/models/old_model_spec.rb
|
516
511
|
- spec/models/persistors/params_spec.rb
|
517
512
|
- spec/models/persistors/store_spec.rb
|
518
|
-
- spec/models/reactive_array_spec.rb
|
519
|
-
- spec/models/reactive_block_spec.rb
|
520
|
-
- spec/models/reactive_call_times_spec.rb
|
521
|
-
- spec/models/reactive_generator_spec.rb
|
522
|
-
- spec/models/reactive_tags_spec.rb
|
523
|
-
- spec/models/reactive_value_spec.rb
|
524
|
-
- spec/models/store_spec.rb
|
525
|
-
- spec/models/string_extensions_spec.rb
|
526
513
|
- spec/models/validations_spec.rb
|
527
514
|
- spec/page/bindings/content_binding_spec.rb
|
528
515
|
- spec/page/bindings/template_binding_spec.rb
|
529
516
|
- spec/page/sub_context_spec.rb
|
517
|
+
- spec/reactive/computation_spec.rb
|
518
|
+
- spec/reactive/dependency_spec.rb
|
519
|
+
- spec/reactive/eventable_spec.rb
|
520
|
+
- spec/reactive/reactive_array_spec.rb
|
530
521
|
- spec/router/routes_spec.rb
|
531
522
|
- spec/server/html_parser/sample_page.html
|
532
523
|
- spec/server/html_parser/sandlebars_parser_spec.rb
|
@@ -617,33 +608,30 @@ test_files:
|
|
617
608
|
- spec/apps/file_loading/app/slideshow/assets/js/test3.js
|
618
609
|
- spec/apps/kitchen_sink/.gitignore
|
619
610
|
- spec/apps/kitchen_sink/Gemfile
|
611
|
+
- spec/apps/kitchen_sink/app/main/config/dependencies.rb
|
620
612
|
- spec/apps/kitchen_sink/app/main/config/routes.rb
|
621
613
|
- spec/apps/kitchen_sink/app/main/controllers/main_controller.rb
|
614
|
+
- spec/apps/kitchen_sink/app/main/views/main/bindings.html
|
622
615
|
- spec/apps/kitchen_sink/app/main/views/main/index.html
|
623
616
|
- spec/apps/kitchen_sink/app/main/views/main/main.html
|
617
|
+
- spec/apps/kitchen_sink/app/main/views/main/store.html
|
624
618
|
- spec/apps/kitchen_sink/config.ru
|
625
619
|
- spec/apps/kitchen_sink/public/index.html
|
626
620
|
- spec/controllers/reactive_accessors_spec.rb
|
627
621
|
- spec/extra_core/inflector_spec.rb
|
628
|
-
- spec/integration/
|
629
|
-
- spec/
|
630
|
-
- spec/models/model_buffers_spec.rb
|
622
|
+
- spec/integration/bindings_spec.rb
|
623
|
+
- spec/integration/templates_spec.rb
|
631
624
|
- spec/models/model_spec.rb
|
632
|
-
- spec/models/old_model_spec.rb
|
633
625
|
- spec/models/persistors/params_spec.rb
|
634
626
|
- spec/models/persistors/store_spec.rb
|
635
|
-
- spec/models/reactive_array_spec.rb
|
636
|
-
- spec/models/reactive_block_spec.rb
|
637
|
-
- spec/models/reactive_call_times_spec.rb
|
638
|
-
- spec/models/reactive_generator_spec.rb
|
639
|
-
- spec/models/reactive_tags_spec.rb
|
640
|
-
- spec/models/reactive_value_spec.rb
|
641
|
-
- spec/models/store_spec.rb
|
642
|
-
- spec/models/string_extensions_spec.rb
|
643
627
|
- spec/models/validations_spec.rb
|
644
628
|
- spec/page/bindings/content_binding_spec.rb
|
645
629
|
- spec/page/bindings/template_binding_spec.rb
|
646
630
|
- spec/page/sub_context_spec.rb
|
631
|
+
- spec/reactive/computation_spec.rb
|
632
|
+
- spec/reactive/dependency_spec.rb
|
633
|
+
- spec/reactive/eventable_spec.rb
|
634
|
+
- spec/reactive/reactive_array_spec.rb
|
647
635
|
- spec/router/routes_spec.rb
|
648
636
|
- spec/server/html_parser/sample_page.html
|
649
637
|
- spec/server/html_parser/sandlebars_parser_spec.rb
|