volt 0.8.14 → 0.8.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/Readme.md +8 -2
- data/VERSION +1 -1
- data/app/volt/controllers/notices_controller.rb +1 -1
- data/app/volt/models/user.rb +2 -2
- data/app/volt/tasks/live_query/live_query_pool.rb +1 -1
- data/app/volt/tasks/query_tasks.rb +1 -1
- data/app/volt/tasks/store_tasks.rb +1 -1
- data/app/volt/tasks/user_tasks.rb +2 -2
- data/lib/volt/boot.rb +2 -2
- data/lib/volt/cli/asset_compile.rb +31 -27
- data/lib/volt/cli.rb +64 -65
- data/lib/volt/config.rb +25 -23
- data/lib/volt/console.rb +17 -16
- data/lib/volt/controllers/model_controller.rb +82 -80
- data/lib/volt/data_stores/data_store.rb +2 -2
- data/lib/volt/data_stores/mongo_driver.rb +2 -2
- data/lib/volt/extra_core/inflections.rb +2 -2
- data/lib/volt/extra_core/inflector/inflections.rb +185 -183
- data/lib/volt/extra_core/inflector/methods.rb +50 -48
- data/lib/volt/extra_core/string.rb +2 -2
- data/lib/volt/models/array_model.rb +93 -92
- data/lib/volt/models/cursor.rb +3 -2
- data/lib/volt/models/model.rb +248 -251
- data/lib/volt/models/model_hash_behaviour.rb +44 -44
- data/lib/volt/models/model_helpers.rb +38 -36
- data/lib/volt/models/model_state.rb +16 -17
- data/lib/volt/models/model_wrapper.rb +25 -24
- data/lib/volt/models/persistors/array_store.rb +145 -143
- data/lib/volt/models/persistors/base.rb +18 -16
- data/lib/volt/models/persistors/flash.rb +24 -22
- data/lib/volt/models/persistors/local_store.rb +46 -44
- data/lib/volt/models/persistors/model_identity_map.rb +10 -8
- data/lib/volt/models/persistors/model_store.rb +76 -76
- data/lib/volt/models/persistors/params.rb +19 -17
- data/lib/volt/models/persistors/query/query_listener.rb +65 -63
- data/lib/volt/models/persistors/query/query_listener_pool.rb +12 -10
- data/lib/volt/models/persistors/store.rb +28 -28
- data/lib/volt/models/persistors/store_factory.rb +12 -10
- data/lib/volt/models/persistors/store_state.rb +33 -31
- data/lib/volt/models/url.rb +96 -104
- data/lib/volt/models/validations.rb +56 -54
- data/lib/volt/models/validators/length_validator.rb +24 -22
- data/lib/volt/models/validators/presence_validator.rb +14 -12
- data/lib/volt/page/bindings/attribute_binding.rb +106 -106
- data/lib/volt/page/bindings/base_binding.rb +23 -21
- data/lib/volt/page/bindings/component_binding.rb +3 -1
- data/lib/volt/page/bindings/content_binding.rb +34 -34
- data/lib/volt/page/bindings/each_binding.rb +113 -113
- data/lib/volt/page/bindings/event_binding.rb +38 -34
- data/lib/volt/page/bindings/if_binding.rb +56 -54
- data/lib/volt/page/bindings/template_binding/grouped_controllers.rb +24 -22
- data/lib/volt/page/bindings/template_binding.rb +182 -185
- data/lib/volt/page/channel.rb +79 -77
- data/lib/volt/page/channel_stub.rb +29 -27
- data/lib/volt/page/document.rb +6 -5
- data/lib/volt/page/document_events.rb +54 -52
- data/lib/volt/page/page.rb +139 -138
- data/lib/volt/page/string_template_renderer.rb +36 -36
- data/lib/volt/page/sub_context.rb +26 -25
- data/lib/volt/page/targets/attribute_section.rb +27 -25
- data/lib/volt/page/targets/attribute_target.rb +7 -6
- data/lib/volt/page/targets/base_section.rb +27 -26
- data/lib/volt/page/targets/binding_document/base_node.rb +3 -1
- data/lib/volt/page/targets/binding_document/component_node.rb +85 -82
- data/lib/volt/page/targets/binding_document/html_node.rb +11 -9
- data/lib/volt/page/targets/dom_section.rb +78 -77
- data/lib/volt/page/targets/dom_target.rb +8 -6
- data/lib/volt/page/targets/dom_template.rb +90 -88
- data/lib/volt/page/targets/helpers/comment_searchers.rb +51 -49
- data/lib/volt/page/tasks.rb +59 -57
- data/lib/volt/page/template_renderer.rb +17 -14
- data/lib/volt/page/url_tracker.rb +26 -24
- data/lib/volt/reactive/computation.rb +87 -88
- data/lib/volt/reactive/dependency.rb +30 -28
- data/lib/volt/reactive/eventable.rb +64 -62
- data/lib/volt/reactive/hash_dependency.rb +25 -23
- data/lib/volt/reactive/reactive_accessors.rb +34 -32
- data/lib/volt/reactive/reactive_array.rb +162 -162
- data/lib/volt/reactive/reactive_hash.rb +37 -35
- data/lib/volt/router/routes.rb +99 -101
- data/lib/volt/server/component_handler.rb +20 -21
- data/lib/volt/server/component_templates.rb +72 -70
- data/lib/volt/server/html_parser/attribute_scope.rb +109 -99
- data/lib/volt/server/html_parser/each_scope.rb +17 -16
- data/lib/volt/server/html_parser/if_view_scope.rb +51 -49
- data/lib/volt/server/html_parser/sandlebars_parser.rb +184 -177
- data/lib/volt/server/html_parser/textarea_scope.rb +24 -22
- data/lib/volt/server/html_parser/view_handler.rb +66 -65
- data/lib/volt/server/html_parser/view_parser.rb +23 -21
- data/lib/volt/server/html_parser/view_scope.rb +142 -141
- data/lib/volt/server/rack/asset_files.rb +81 -79
- data/lib/volt/server/rack/component_code.rb +17 -15
- data/lib/volt/server/rack/component_html_renderer.rb +14 -12
- data/lib/volt/server/rack/component_paths.rb +72 -71
- data/lib/volt/server/rack/index_files.rb +36 -39
- data/lib/volt/server/rack/opal_files.rb +43 -41
- data/lib/volt/server/rack/source_map_server.rb +23 -21
- data/lib/volt/server/socket_connection_handler.rb +46 -45
- data/lib/volt/server/socket_connection_handler_stub.rb +21 -19
- data/lib/volt/server.rb +60 -58
- data/lib/volt/spec/setup.rb +3 -3
- data/lib/volt/tasks/dispatcher.rb +24 -23
- data/lib/volt/tasks/task_handler.rb +35 -33
- data/lib/volt/utils/ejson.rb +8 -6
- data/lib/volt/utils/generic_counting_pool.rb +33 -31
- data/lib/volt/utils/generic_pool.rb +73 -70
- data/lib/volt/utils/local_storage.rb +42 -38
- data/lib/volt/volt/environment.rb +1 -1
- data/lib/volt.rb +44 -42
- data/spec/apps/kitchen_sink/app/main/assets/css/todos.css +28 -0
- data/spec/apps/kitchen_sink/app/main/config/routes.rb +1 -0
- data/spec/apps/kitchen_sink/app/main/controllers/main_controller.rb +2 -2
- data/spec/apps/kitchen_sink/app/main/controllers/todos_controller.rb +17 -0
- data/spec/apps/kitchen_sink/app/main/views/main/main.html +1 -0
- data/spec/apps/kitchen_sink/app/main/views/todos/index.html +24 -0
- data/spec/apps/kitchen_sink/config.ru +1 -1
- data/spec/controllers/reactive_accessors_spec.rb +5 -5
- data/spec/extra_core/inflector_spec.rb +2 -2
- data/spec/integration/list_spec.rb +68 -0
- data/spec/models/model_spec.rb +57 -57
- data/spec/models/persistors/params_spec.rb +6 -6
- data/spec/models/persistors/store_spec.rb +7 -7
- data/spec/models/validations_spec.rb +3 -3
- data/spec/page/bindings/content_binding_spec.rb +7 -7
- data/spec/page/bindings/template_binding_spec.rb +4 -5
- data/spec/page/sub_context_spec.rb +2 -2
- data/spec/reactive/computation_spec.rb +10 -10
- data/spec/reactive/dependency_spec.rb +2 -2
- data/spec/reactive/eventable_spec.rb +4 -4
- data/spec/reactive/reactive_array_spec.rb +13 -13
- data/spec/router/routes_spec.rb +5 -5
- data/spec/server/html_parser/sandlebars_parser_spec.rb +9 -9
- data/spec/server/html_parser/view_parser_spec.rb +27 -27
- data/spec/server/rack/asset_files_spec.rb +5 -5
- data/spec/server/rack/component_paths_spec.rb +2 -2
- data/spec/tasks/live_query_spec.rb +2 -2
- data/spec/tasks/query_tasks.rb +1 -1
- data/spec/tasks/query_tracker_spec.rb +1 -1
- data/spec/templates/targets/binding_document/component_node_spec.rb +2 -2
- data/spec/utils/generic_counting_pool_spec.rb +2 -2
- data/spec/utils/generic_pool_spec.rb +2 -2
- data/templates/component/controllers/main_controller.rb +1 -1
- data/templates/model/model.rb.tt +2 -2
- data/templates/newgem/app/newgem/controllers/main_controller.rb.tt +2 -2
- data/templates/project/app/main/controllers/main_controller.rb +1 -1
- data/templates/project/config.ru +1 -1
- metadata +10 -3
- data/app/volt/assets/js/vertxbus.js +0 -216
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'volt/reactive/reactive_array'
|
3
3
|
|
4
|
-
describe ReactiveArray do
|
4
|
+
describe Volt::ReactiveArray do
|
5
5
|
describe "cells" do
|
6
6
|
it 'should track dependencies for cells' do
|
7
|
-
a = ReactiveArray.new
|
7
|
+
a = Volt::ReactiveArray.new
|
8
8
|
|
9
9
|
count = 0
|
10
10
|
values = []
|
@@ -12,19 +12,19 @@ describe ReactiveArray do
|
|
12
12
|
|
13
13
|
a[0] = 5
|
14
14
|
|
15
|
-
Computation.flush!
|
15
|
+
Volt::Computation.flush!
|
16
16
|
|
17
17
|
a[0] = 10
|
18
18
|
expect(count).to eq(2)
|
19
19
|
expect(values).to eq([nil, 5])
|
20
20
|
|
21
|
-
Computation.flush!
|
21
|
+
Volt::Computation.flush!
|
22
22
|
expect(count).to eq(3)
|
23
23
|
expect(values).to eq([nil, 5, 10])
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'should trigger changed on the last cell when appending' do
|
27
|
-
a = ReactiveArray.new([1,2,3])
|
27
|
+
a = Volt::ReactiveArray.new([1,2,3])
|
28
28
|
|
29
29
|
values = []
|
30
30
|
-> { values << a[3] }.watch!
|
@@ -34,12 +34,12 @@ describe ReactiveArray do
|
|
34
34
|
a << 4
|
35
35
|
expect(values).to eq([nil])
|
36
36
|
|
37
|
-
Computation.flush!
|
37
|
+
Volt::Computation.flush!
|
38
38
|
expect(values).to eq([nil, 4])
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'should trigger changes for each cell after index after insert' do
|
42
|
-
a = ReactiveArray.new([1,2,3])
|
42
|
+
a = Volt::ReactiveArray.new([1,2,3])
|
43
43
|
|
44
44
|
values_at_2 = []
|
45
45
|
values_at_3 = []
|
@@ -54,7 +54,7 @@ describe ReactiveArray do
|
|
54
54
|
|
55
55
|
a.insert(2,1.3,1.7)
|
56
56
|
|
57
|
-
Computation.flush!
|
57
|
+
Volt::Computation.flush!
|
58
58
|
|
59
59
|
expect(values_at_2).to eq([3,1.3])
|
60
60
|
expect(values_at_3).to eq([nil,1.7])
|
@@ -65,7 +65,7 @@ describe ReactiveArray do
|
|
65
65
|
|
66
66
|
describe "size dependencies" do
|
67
67
|
it 'pushing should trigger changed for size' do
|
68
|
-
array = ReactiveArray.new
|
68
|
+
array = Volt::ReactiveArray.new
|
69
69
|
count = 0
|
70
70
|
|
71
71
|
size_values = []
|
@@ -75,12 +75,12 @@ describe ReactiveArray do
|
|
75
75
|
|
76
76
|
array << 5
|
77
77
|
|
78
|
-
Computation.flush!
|
78
|
+
Volt::Computation.flush!
|
79
79
|
expect(size_values).to eq([0,1])
|
80
80
|
end
|
81
81
|
|
82
82
|
it 'should trigger a size change when deleting' do
|
83
|
-
array = ReactiveArray.new([1,2,3])
|
83
|
+
array = Volt::ReactiveArray.new([1,2,3])
|
84
84
|
|
85
85
|
size_values = []
|
86
86
|
-> { size_values << array.size }.watch!
|
@@ -90,8 +90,8 @@ describe ReactiveArray do
|
|
90
90
|
array.delete_at(2)
|
91
91
|
|
92
92
|
expect(size_values).to eq([3])
|
93
|
-
Computation.flush!
|
93
|
+
Volt::Computation.flush!
|
94
94
|
expect(size_values).to eq([3,2])
|
95
95
|
end
|
96
96
|
end
|
97
|
-
end
|
97
|
+
end
|
data/spec/router/routes_spec.rb
CHANGED
@@ -2,11 +2,11 @@ require 'volt/router/routes'
|
|
2
2
|
require 'volt/models'
|
3
3
|
|
4
4
|
def routes(&block)
|
5
|
-
@routes = Routes.new
|
5
|
+
@routes = Volt::Routes.new
|
6
6
|
@routes.define(&block)
|
7
7
|
end
|
8
8
|
|
9
|
-
describe Routes do
|
9
|
+
describe Volt::Routes do
|
10
10
|
it "should setup direct routes" do
|
11
11
|
routes do
|
12
12
|
get '/', _view: 'index'
|
@@ -115,7 +115,7 @@ describe Routes do
|
|
115
115
|
end
|
116
116
|
|
117
117
|
it "should test that params match a param matcher" do
|
118
|
-
routes = Routes.new
|
118
|
+
routes = Volt::Routes.new
|
119
119
|
match, params = routes.send(:check_params_match, {_view: 'blog', _id: '55'}, {_view: 'blog', _id: nil})
|
120
120
|
expect(match).to eq(true)
|
121
121
|
expect(params).to eq({_id: '55'})
|
@@ -143,7 +143,7 @@ describe Routes do
|
|
143
143
|
end
|
144
144
|
|
145
145
|
it "should match routes" do
|
146
|
-
params = Model.new({}, persistor: Persistors::Params)
|
146
|
+
params = Volt::Model.new({}, persistor: Volt::Persistors::Params)
|
147
147
|
params._controller = 'blog'
|
148
148
|
params._index = '5'
|
149
149
|
|
@@ -158,7 +158,7 @@ describe Routes do
|
|
158
158
|
end
|
159
159
|
|
160
160
|
it "should handle routes with bindings in them" do
|
161
|
-
params = Model.new({}, persistor: Persistors::Params)
|
161
|
+
params = Volt::Model.new({}, persistor: Volt::Persistors::Params)
|
162
162
|
|
163
163
|
routes do
|
164
164
|
get '/', _controller: 'index'
|
@@ -46,15 +46,15 @@ def parse_url(url)
|
|
46
46
|
File.open("/Users/ryanstout/Desktop/tests/#{url}1.html", 'w') {|f| f.write(html) }
|
47
47
|
|
48
48
|
handler = HTMLHandler.new
|
49
|
-
SandlebarsParser.new(html, handler)
|
49
|
+
Volt::SandlebarsParser.new(html, handler)
|
50
50
|
|
51
51
|
File.open("/Users/ryanstout/Desktop/tests/#{url}2.html", 'w') {|f| f.write(handler.html) }
|
52
52
|
end
|
53
53
|
|
54
|
-
describe SandlebarsParser do
|
54
|
+
describe Volt::SandlebarsParser do
|
55
55
|
def test_html(html, match=nil)
|
56
56
|
handler = HTMLHandler.new
|
57
|
-
parser = SandlebarsParser.new(html, handler)
|
57
|
+
parser = Volt::SandlebarsParser.new(html, handler)
|
58
58
|
|
59
59
|
expect(handler.html).to eq(match || html)
|
60
60
|
end
|
@@ -107,21 +107,21 @@ describe SandlebarsParser do
|
|
107
107
|
html = "<p>testing with {{nested"
|
108
108
|
|
109
109
|
handler = HTMLHandler.new
|
110
|
-
expect { SandlebarsParser.new(html, handler) }.to raise_error(HTMLParseError)
|
110
|
+
expect { Volt::SandlebarsParser.new(html, handler) }.to raise_error(Volt::HTMLParseError)
|
111
111
|
end
|
112
112
|
|
113
113
|
it "should raise an exception on an unclosed binding" do
|
114
114
|
html = "<p>testing with {{nested </p>\n<p>ok</p>"
|
115
115
|
|
116
116
|
handler = HTMLHandler.new
|
117
|
-
expect { SandlebarsParser.new(html, handler) }.to raise_error(HTMLParseError)
|
117
|
+
expect { Volt::SandlebarsParser.new(html, handler) }.to raise_error(Volt::HTMLParseError)
|
118
118
|
end
|
119
119
|
|
120
120
|
it "should report the line number" do
|
121
121
|
html = "\n\n<p>some paragraph</p>\n\n<p>testing with {{nested </p>\n<p>ok</p>"
|
122
122
|
|
123
123
|
handler = HTMLHandler.new
|
124
|
-
expect { SandlebarsParser.new(html, handler) }.to raise_error(HTMLParseError, "unclosed binding: {nested </p> on line: 5")
|
124
|
+
expect { Volt::SandlebarsParser.new(html, handler) }.to raise_error(Volt::HTMLParseError, "unclosed binding: {nested </p> on line: 5")
|
125
125
|
end
|
126
126
|
|
127
127
|
it "should handle a bunch of things" do
|
@@ -179,7 +179,7 @@ describe SandlebarsParser do
|
|
179
179
|
html = File.read(File.join(File.dirname(__FILE__), 'sample_page.html'))
|
180
180
|
handler = HTMLHandler.new
|
181
181
|
time = Benchmark.measure do
|
182
|
-
SandlebarsParser.new(html, handler)
|
182
|
+
Volt::SandlebarsParser.new(html, handler)
|
183
183
|
end
|
184
184
|
|
185
185
|
# Less than 100ms
|
@@ -195,7 +195,7 @@ describe SandlebarsParser do
|
|
195
195
|
# html = "<div><p>test</p></div></div>"
|
196
196
|
#
|
197
197
|
# handler = HTMLHandler.new
|
198
|
-
# expect { SandlebarsParser.new(html, handler) }.to raise_error(HTMLParseError)
|
198
|
+
# expect { Volt::SandlebarsParser.new(html, handler) }.to raise_error(Volt::HTMLParseError)
|
199
199
|
# end
|
200
200
|
end
|
201
|
-
end
|
201
|
+
end
|
@@ -3,18 +3,18 @@ else
|
|
3
3
|
require 'benchmark'
|
4
4
|
require 'volt/server/html_parser/view_parser'
|
5
5
|
|
6
|
-
describe ViewParser do
|
6
|
+
describe Volt::ViewParser do
|
7
7
|
it "should parse content bindings" do
|
8
8
|
html = "<p>Some {{ content }} binding, {{ name }}</p>"
|
9
9
|
|
10
|
-
view = ViewParser.new(html, "main/main/main")
|
10
|
+
view = Volt::ViewParser.new(html, "main/main/main")
|
11
11
|
|
12
12
|
expect(view.templates).to eq({
|
13
13
|
'main/main/main/body' => {
|
14
14
|
'html' => '<p>Some <!-- $0 --><!-- $/0 --> binding, <!-- $1 --><!-- $/1 --></p>',
|
15
15
|
'bindings' => {
|
16
|
-
0 => ["lambda { |__p, __t, __c, __id| ContentBinding.new(__p, __t, __c, __id, Proc.new { content }) }"],
|
17
|
-
1 => ["lambda { |__p, __t, __c, __id| ContentBinding.new(__p, __t, __c, __id, Proc.new { name }) }"]
|
16
|
+
0 => ["lambda { |__p, __t, __c, __id| Volt::ContentBinding.new(__p, __t, __c, __id, Proc.new { content }) }"],
|
17
|
+
1 => ["lambda { |__p, __t, __c, __id| Volt::ContentBinding.new(__p, __t, __c, __id, Proc.new { name }) }"]
|
18
18
|
}
|
19
19
|
}
|
20
20
|
})
|
@@ -34,7 +34,7 @@ describe ViewParser do
|
|
34
34
|
</p>
|
35
35
|
END
|
36
36
|
|
37
|
-
view = ViewParser.new(html, "main/main/main")
|
37
|
+
view = Volt::ViewParser.new(html, "main/main/main")
|
38
38
|
|
39
39
|
expect(view.templates).to eq( {
|
40
40
|
"main/main/main/body/__ifg0/__if0" => {
|
@@ -50,7 +50,7 @@ describe ViewParser do
|
|
50
50
|
"html" => " <p>\n Some\n <!-- $0 --><!-- $/0 -->\n </p>\n",
|
51
51
|
"bindings" => {
|
52
52
|
0 => [
|
53
|
-
"lambda { |__p, __t, __c, __id| IfBinding.new(__p, __t, __c, __id, [[Proc.new { showing == :text }, \"main/main/main/body/__ifg0/__if0\"], [Proc.new { showing == :button }, \"main/main/main/body/__ifg0/__if1\"], [nil, \"main/main/main/body/__ifg0/__if2\"]]) }"
|
53
|
+
"lambda { |__p, __t, __c, __id| Volt::IfBinding.new(__p, __t, __c, __id, [[Proc.new { showing == :text }, \"main/main/main/body/__ifg0/__if0\"], [Proc.new { showing == :button }, \"main/main/main/body/__ifg0/__if1\"], [nil, \"main/main/main/body/__ifg0/__if2\"]]) }"
|
54
54
|
]
|
55
55
|
}
|
56
56
|
}
|
@@ -73,7 +73,7 @@ describe ViewParser do
|
|
73
73
|
</p>
|
74
74
|
END
|
75
75
|
|
76
|
-
view = ViewParser.new(html, "main/main/main")
|
76
|
+
view = Volt::ViewParser.new(html, "main/main/main")
|
77
77
|
|
78
78
|
expect(view.templates).to eq( {
|
79
79
|
"main/main/main/body/__ifg0/__if0/__ifg0/__if0" => {
|
@@ -83,7 +83,7 @@ describe ViewParser do
|
|
83
83
|
"html" => "\n <!-- $0 --><!-- $/0 -->\n ",
|
84
84
|
"bindings" => {
|
85
85
|
0 => [
|
86
|
-
"lambda { |__p, __t, __c, __id| IfBinding.new(__p, __t, __c, __id, [[Proc.new { sub_item }, \"main/main/main/body/__ifg0/__if0/__ifg0/__if0\"]]) }"
|
86
|
+
"lambda { |__p, __t, __c, __id| Volt::IfBinding.new(__p, __t, __c, __id, [[Proc.new { sub_item }, \"main/main/main/body/__ifg0/__if0/__ifg0/__if0\"]]) }"
|
87
87
|
]
|
88
88
|
}
|
89
89
|
},
|
@@ -94,7 +94,7 @@ describe ViewParser do
|
|
94
94
|
"html" => " <p>\n Some\n <!-- $0 --><!-- $/0 -->\n </p>\n",
|
95
95
|
"bindings" => {
|
96
96
|
0 => [
|
97
|
-
"lambda { |__p, __t, __c, __id| IfBinding.new(__p, __t, __c, __id, [[Proc.new { showing == :text }, \"main/main/main/body/__ifg0/__if0\"], [nil, \"main/main/main/body/__ifg0/__if1\"]]) }"
|
97
|
+
"lambda { |__p, __t, __c, __id| Volt::IfBinding.new(__p, __t, __c, __id, [[Proc.new { showing == :text }, \"main/main/main/body/__ifg0/__if0\"], [nil, \"main/main/main/body/__ifg0/__if1\"]]) }"
|
98
98
|
]
|
99
99
|
}
|
100
100
|
}
|
@@ -111,14 +111,14 @@ describe ViewParser do
|
|
111
111
|
</div>
|
112
112
|
END
|
113
113
|
|
114
|
-
view = ViewParser.new(html, "main/main/main")
|
114
|
+
view = Volt::ViewParser.new(html, "main/main/main")
|
115
115
|
|
116
116
|
expect(view.templates).to eq({
|
117
117
|
"main/main/main/body/__each0/__template/0" => {
|
118
118
|
"html" => "\n <p><!-- $0 --><!-- $/0 --></p>\n ",
|
119
119
|
"bindings" => {
|
120
120
|
0 => [
|
121
|
-
"lambda { |__p, __t, __c, __id| ContentBinding.new(__p, __t, __c, __id, Proc.new { item }) }"
|
121
|
+
"lambda { |__p, __t, __c, __id| Volt::ContentBinding.new(__p, __t, __c, __id, Proc.new { item }) }"
|
122
122
|
]
|
123
123
|
}
|
124
124
|
},
|
@@ -126,7 +126,7 @@ describe ViewParser do
|
|
126
126
|
"html" => " <div class=\"main\">\n <!-- $0 --><!-- $/0 -->\n </div>\n",
|
127
127
|
"bindings" => {
|
128
128
|
0 => [
|
129
|
-
"lambda { |__p, __t, __c, __id| EachBinding.new(__p, __t, __c, __id, Proc.new { _items }, \"item\", \"main/main/main/body/__each0/__template/0\") }"
|
129
|
+
"lambda { |__p, __t, __c, __id| Volt::EachBinding.new(__p, __t, __c, __id, Proc.new { _items }, \"item\", \"main/main/main/body/__each0/__template/0\") }"
|
130
130
|
]
|
131
131
|
}
|
132
132
|
}
|
@@ -141,9 +141,9 @@ describe ViewParser do
|
|
141
141
|
</div>
|
142
142
|
END
|
143
143
|
|
144
|
-
view = ViewParser.new(html, "main/main/main")
|
144
|
+
view = Volt::ViewParser.new(html, "main/main/main")
|
145
145
|
|
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) }) }"]}}})
|
146
|
+
expect(view.templates).to eq({"main/main/main/body"=>{"html"=>" <div id=\"id0\">\n </div>\n", "bindings"=>{"id0"=>["lambda { |__p, __t, __c, __id| Volt::AttributeBinding.new(__p, __t, __c, __id, \"class\", Proc.new { main_class }, Proc.new { |val| self.main_class=(val) }) }"]}}})
|
147
147
|
end
|
148
148
|
|
149
149
|
it "should parse multiple attribute bindings in a single attribute" do
|
@@ -152,17 +152,17 @@ describe ViewParser do
|
|
152
152
|
</div>
|
153
153
|
END
|
154
154
|
|
155
|
-
view = ViewParser.new(html, "main/main/main")
|
155
|
+
view = Volt::ViewParser.new(html, "main/main/main")
|
156
156
|
|
157
157
|
expect(view.templates).to eq({
|
158
158
|
"main/main/main/body/_rv1" => {
|
159
159
|
"html" => "start <!-- $0 --><!-- $/0 --> <!-- $1 --><!-- $/1 --> string",
|
160
160
|
"bindings" => {
|
161
161
|
0 => [
|
162
|
-
"lambda { |__p, __t, __c, __id| ContentBinding.new(__p, __t, __c, __id, Proc.new { main_class }) }"
|
162
|
+
"lambda { |__p, __t, __c, __id| Volt::ContentBinding.new(__p, __t, __c, __id, Proc.new { main_class }) }"
|
163
163
|
],
|
164
164
|
1 => [
|
165
|
-
"lambda { |__p, __t, __c, __id| ContentBinding.new(__p, __t, __c, __id, Proc.new { awesome_class }) }"
|
165
|
+
"lambda { |__p, __t, __c, __id| Volt::ContentBinding.new(__p, __t, __c, __id, Proc.new { awesome_class }) }"
|
166
166
|
]
|
167
167
|
}
|
168
168
|
},
|
@@ -170,7 +170,7 @@ describe ViewParser do
|
|
170
170
|
"html" => " <div id=\"id0\">\n </div>\n",
|
171
171
|
"bindings" => {
|
172
172
|
"id0" => [
|
173
|
-
"lambda { |__p, __t, __c, __id| AttributeBinding.new(__p, __t, __c, __id, \"class\", Proc.new { StringTemplateRender.new(__p, __c, \"main/main/main/body/_rv1\") }) }"
|
173
|
+
"lambda { |__p, __t, __c, __id| Volt::AttributeBinding.new(__p, __t, __c, __id, \"class\", Proc.new { Volt::StringTemplateRender.new(__p, __c, \"main/main/main/body/_rv1\") }) }"
|
174
174
|
]
|
175
175
|
}
|
176
176
|
}
|
@@ -182,14 +182,14 @@ describe ViewParser do
|
|
182
182
|
{{ template "/home/temp/path" }}
|
183
183
|
END
|
184
184
|
|
185
|
-
view = ViewParser.new(html, "main/main/main")
|
185
|
+
view = Volt::ViewParser.new(html, "main/main/main")
|
186
186
|
|
187
187
|
expect(view.templates).to eq({
|
188
188
|
"main/main/main/body" => {
|
189
189
|
"html" => " <!-- $0 --><!-- $/0 -->\n",
|
190
190
|
"bindings" => {
|
191
191
|
0 => [
|
192
|
-
"lambda { |__p, __t, __c, __id| TemplateBinding.new(__p, __t, __c, __id, \"main/main/main/body\", Proc.new { [\"/home/temp/path\"] }) }"
|
192
|
+
"lambda { |__p, __t, __c, __id| Volt::TemplateBinding.new(__p, __t, __c, __id, \"main/main/main/body\", Proc.new { [\"/home/temp/path\"] }) }"
|
193
193
|
]
|
194
194
|
}
|
195
195
|
}
|
@@ -202,7 +202,7 @@ describe ViewParser do
|
|
202
202
|
<a href="/{link_name}">Link</a>
|
203
203
|
END
|
204
204
|
|
205
|
-
view = ViewParser.new(html, "main/main/main/body")
|
205
|
+
view = Volt::ViewParser.new(html, "main/main/main/body")
|
206
206
|
|
207
207
|
# puts view.templates.inspect
|
208
208
|
end
|
@@ -211,7 +211,7 @@ describe ViewParser do
|
|
211
211
|
<a href="{link_name}">Link</a>
|
212
212
|
END
|
213
213
|
|
214
|
-
view = ViewParser.new(html, "main/main/main/body")
|
214
|
+
view = Volt::ViewParser.new(html, "main/main/main/body")
|
215
215
|
|
216
216
|
# puts view.templates.inspect
|
217
217
|
end
|
@@ -229,7 +229,7 @@ describe ViewParser do
|
|
229
229
|
<p>This text goes in the body</p>
|
230
230
|
END
|
231
231
|
|
232
|
-
view = ViewParser.new(html, "main/main/main")
|
232
|
+
view = Volt::ViewParser.new(html, "main/main/main")
|
233
233
|
|
234
234
|
expect(view.templates).to eq( {
|
235
235
|
"main/main/main/title" => {
|
@@ -248,7 +248,7 @@ describe ViewParser do
|
|
248
248
|
<textarea name="cool">some text in a textarea</textarea>
|
249
249
|
END
|
250
250
|
|
251
|
-
view = ViewParser.new(html, "main/main/main")
|
251
|
+
view = Volt::ViewParser.new(html, "main/main/main")
|
252
252
|
|
253
253
|
expect(view.templates).to eq({
|
254
254
|
"main/main/main/body" => {
|
@@ -262,10 +262,10 @@ describe ViewParser do
|
|
262
262
|
<textarea name="cool">{{ awesome }}</textarea>
|
263
263
|
END
|
264
264
|
|
265
|
-
view = ViewParser.new(html, "main/main/main")
|
265
|
+
view = Volt::ViewParser.new(html, "main/main/main")
|
266
266
|
|
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) }) }"]}}})
|
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| Volt::AttributeBinding.new(__p, __t, __c, __id, \"value\", Proc.new { awesome }, Proc.new { |val| self.awesome=(val) }) }"]}}})
|
268
268
|
end
|
269
|
+
end
|
269
270
|
|
270
271
|
end
|
271
|
-
end
|
@@ -1,25 +1,25 @@
|
|
1
1
|
if RUBY_PLATFORM != 'opal'
|
2
2
|
require 'volt/server/rack/asset_files'
|
3
3
|
|
4
|
-
describe AssetFiles do
|
4
|
+
describe Volt::AssetFiles do
|
5
5
|
before do
|
6
6
|
spec_app_root = File.join(File.dirname(__FILE__), "../../apps/file_loading")
|
7
7
|
|
8
8
|
path_to_main = File.join(File.dirname(__FILE__), "../../apps/file_loading/app/main")
|
9
|
-
@component_paths = ComponentPaths.new(spec_app_root)
|
9
|
+
@component_paths = Volt::ComponentPaths.new(spec_app_root)
|
10
10
|
end
|
11
11
|
|
12
12
|
it "should return the dependencies list" do
|
13
|
-
main = AssetFiles.new("main", @component_paths)
|
13
|
+
main = Volt::AssetFiles.new("main", @component_paths)
|
14
14
|
|
15
15
|
components = main.components
|
16
16
|
expect(components).to eq(['volt', 'main', 'shared', 'bootstrap', "slideshow"])
|
17
17
|
end
|
18
18
|
|
19
19
|
it "should list all JS files" do
|
20
|
-
main = AssetFiles.new("main", @component_paths)
|
20
|
+
main = Volt::AssetFiles.new("main", @component_paths)
|
21
21
|
|
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/
|
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/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
|
@@ -1,12 +1,12 @@
|
|
1
1
|
if RUBY_PLATFORM != 'opal'
|
2
2
|
require 'volt/server/rack/component_paths'
|
3
3
|
|
4
|
-
describe ComponentPaths do
|
4
|
+
describe Volt::ComponentPaths do
|
5
5
|
before do
|
6
6
|
spec_app_root = File.join(File.dirname(__FILE__), "../../apps/file_loading")
|
7
7
|
|
8
8
|
path_to_main = File.join(File.dirname(__FILE__), "../../apps/file_loading/app/main")
|
9
|
-
@component_paths = ComponentPaths.new(spec_app_root)
|
9
|
+
@component_paths = Volt::ComponentPaths.new(spec_app_root)
|
10
10
|
end
|
11
11
|
|
12
12
|
it "should return the paths to all app folders" do
|
@@ -5,8 +5,8 @@ if RUBY_PLATFORM != 'opal'
|
|
5
5
|
end
|
6
6
|
|
7
7
|
it "should run a query" do
|
8
|
-
pool = double('pool')
|
9
|
-
data_store = double('data store')
|
8
|
+
pool = double('volt/pool')
|
9
|
+
data_store = double('volt/data store')
|
10
10
|
|
11
11
|
expect(data_store).to receive(:query).with('_items', {}).and_return([
|
12
12
|
{'_id' => 0, '_name' => 'one'}
|
data/spec/tasks/query_tasks.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'volt/page/targets/binding_document/component_node'
|
2
2
|
|
3
|
-
describe ComponentNode do
|
3
|
+
describe Volt::ComponentNode do
|
4
4
|
before do
|
5
5
|
html = <<-END
|
6
6
|
<!-- $0 -->Before <!-- $1 -->Inside<!-- $/1 --> After<!-- $/0 -->
|
7
7
|
END
|
8
8
|
|
9
|
-
@component = ComponentNode.new
|
9
|
+
@component = Volt::ComponentNode.new
|
10
10
|
@component.html = html
|
11
11
|
end
|
12
12
|
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'volt/utils/generic_counting_pool'
|
2
2
|
|
3
|
-
class CountingPoolTest < GenericCountingPool
|
3
|
+
class CountingPoolTest < Volt::GenericCountingPool
|
4
4
|
def create(id, name=nil)
|
5
5
|
return Object.new
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
-
describe GenericCountingPool do
|
9
|
+
describe Volt::GenericCountingPool do
|
10
10
|
before do
|
11
11
|
@count_pool = CountingPoolTest.new
|
12
12
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'volt/utils/generic_pool'
|
2
2
|
|
3
|
-
class PoolTest < GenericPool
|
3
|
+
class PoolTest < Volt::GenericPool
|
4
4
|
def create(collection, query, other=nil)
|
5
5
|
return Object.new
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
-
describe GenericPool do
|
9
|
+
describe Volt::GenericPool do
|
10
10
|
|
11
11
|
before do
|
12
12
|
@pool_test = PoolTest.new
|
data/templates/model/model.rb.tt
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
class <%= config[:model_name] %> < Model
|
1
|
+
class <%= config[:model_name] %> < Volt::Model
|
2
2
|
|
3
|
-
end
|
3
|
+
end
|
data/templates/project/config.ru
CHANGED
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.
|
4
|
+
version: 0.8.15
|
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-
|
11
|
+
date: 2014-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -355,7 +355,6 @@ files:
|
|
355
355
|
- app/volt/assets/js/jquery-2.0.3.js
|
356
356
|
- app/volt/assets/js/setImmediate.js
|
357
357
|
- app/volt/assets/js/sockjs-0.3.4.min.js
|
358
|
-
- app/volt/assets/js/vertxbus.js
|
359
358
|
- app/volt/config/dependencies.rb
|
360
359
|
- app/volt/controllers/notices_controller.rb
|
361
360
|
- app/volt/models/user.rb
|
@@ -501,13 +500,16 @@ files:
|
|
501
500
|
- spec/apps/file_loading/app/slideshow/assets/js/test3.js
|
502
501
|
- spec/apps/kitchen_sink/.gitignore
|
503
502
|
- spec/apps/kitchen_sink/Gemfile
|
503
|
+
- spec/apps/kitchen_sink/app/main/assets/css/todos.css
|
504
504
|
- spec/apps/kitchen_sink/app/main/config/dependencies.rb
|
505
505
|
- spec/apps/kitchen_sink/app/main/config/routes.rb
|
506
506
|
- spec/apps/kitchen_sink/app/main/controllers/main_controller.rb
|
507
|
+
- spec/apps/kitchen_sink/app/main/controllers/todos_controller.rb
|
507
508
|
- spec/apps/kitchen_sink/app/main/views/main/bindings.html
|
508
509
|
- spec/apps/kitchen_sink/app/main/views/main/index.html
|
509
510
|
- spec/apps/kitchen_sink/app/main/views/main/main.html
|
510
511
|
- spec/apps/kitchen_sink/app/main/views/main/store.html
|
512
|
+
- spec/apps/kitchen_sink/app/main/views/todos/index.html
|
511
513
|
- spec/apps/kitchen_sink/config.ru
|
512
514
|
- spec/apps/kitchen_sink/public/index.html
|
513
515
|
- spec/controllers/reactive_accessors_spec.rb
|
@@ -515,6 +517,7 @@ files:
|
|
515
517
|
- spec/extra_core/string_transformation_test_cases.rb
|
516
518
|
- spec/extra_core/string_transformations_spec.rb
|
517
519
|
- spec/integration/bindings_spec.rb
|
520
|
+
- spec/integration/list_spec.rb
|
518
521
|
- spec/integration/templates_spec.rb
|
519
522
|
- spec/models/model_spec.rb
|
520
523
|
- spec/models/persistors/params_spec.rb
|
@@ -626,13 +629,16 @@ test_files:
|
|
626
629
|
- spec/apps/file_loading/app/slideshow/assets/js/test3.js
|
627
630
|
- spec/apps/kitchen_sink/.gitignore
|
628
631
|
- spec/apps/kitchen_sink/Gemfile
|
632
|
+
- spec/apps/kitchen_sink/app/main/assets/css/todos.css
|
629
633
|
- spec/apps/kitchen_sink/app/main/config/dependencies.rb
|
630
634
|
- spec/apps/kitchen_sink/app/main/config/routes.rb
|
631
635
|
- spec/apps/kitchen_sink/app/main/controllers/main_controller.rb
|
636
|
+
- spec/apps/kitchen_sink/app/main/controllers/todos_controller.rb
|
632
637
|
- spec/apps/kitchen_sink/app/main/views/main/bindings.html
|
633
638
|
- spec/apps/kitchen_sink/app/main/views/main/index.html
|
634
639
|
- spec/apps/kitchen_sink/app/main/views/main/main.html
|
635
640
|
- spec/apps/kitchen_sink/app/main/views/main/store.html
|
641
|
+
- spec/apps/kitchen_sink/app/main/views/todos/index.html
|
636
642
|
- spec/apps/kitchen_sink/config.ru
|
637
643
|
- spec/apps/kitchen_sink/public/index.html
|
638
644
|
- spec/controllers/reactive_accessors_spec.rb
|
@@ -640,6 +646,7 @@ test_files:
|
|
640
646
|
- spec/extra_core/string_transformation_test_cases.rb
|
641
647
|
- spec/extra_core/string_transformations_spec.rb
|
642
648
|
- spec/integration/bindings_spec.rb
|
649
|
+
- spec/integration/list_spec.rb
|
643
650
|
- spec/integration/templates_spec.rb
|
644
651
|
- spec/models/model_spec.rb
|
645
652
|
- spec/models/persistors/params_spec.rb
|