volt 0.8.14 → 0.8.15
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.
- 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
|