volt 0.9.0.pre5 → 0.9.0.pre6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/VERSION +1 -1
- data/lib/volt/cli/generate.rb +1 -1
- data/lib/volt/controllers/actions.rb +2 -2
- data/lib/volt/models/array_model.rb +3 -3
- data/lib/volt/models/model.rb +9 -2
- data/lib/volt/models/persistors/array_store.rb +9 -1
- data/lib/volt/page/bindings/attribute_binding.rb +9 -0
- data/lib/volt/page/bindings/each_binding.rb +10 -2
- data/lib/volt/reactive/eventable.rb +1 -0
- data/lib/volt/server/html_parser/attribute_scope.rb +5 -1
- data/lib/volt/server.rb +1 -0
- data/lib/volt/utils/boolean_patch.rb +8 -0
- data/lib/volt/utils/generic_pool.rb +1 -1
- data/lib/volt/utils/modes.rb +12 -0
- data/lib/volt/utils/tilt_patch.rb +9 -0
- data/lib/volt.rb +1 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d7f725c0927c9b59afe03d26fb21eabd1dedb70
|
4
|
+
data.tar.gz: 5db3976c7d9fa0c0f4d39143fbdc55f605ef1d4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19f53d2bf32447609e05e3ec6bc7f111b746da01e6def14e94bc94a56a0f1940b328342d15d82e9378227855d99c02369b0bf31e356616a2ee149b8fd489b080
|
7
|
+
data.tar.gz: e7a5b0e5e96857977531d42c3805e9547ebff7af8cc3248aab7d39374e2fb880d124ceaf83493bd3cf61ca3db8d17198c2b8e0e66cada5cf59b9c08412fed9b3
|
data/CHANGELOG.md
CHANGED
@@ -23,6 +23,9 @@
|
|
23
23
|
- ```the_page``` is a shortcut to the page collection inside of specs. (Unfortunately, ```page``` is used by capybara, so for now we're using ```the_page```, we'll find a better solution in the future.)
|
24
24
|
- Add filtering to logging on password, and option to configure filtered args. Also, improve the way errors are displayed.
|
25
25
|
- You can now call raw in a content binding to render the raw html on the page. Use carefully, this can open you up to xss attacks. We reccomend never showing html from the user directly.
|
26
|
+
- before/after actions added to ModelController (HttpController support coming soon).
|
27
|
+
- in the disabled attribute, you can now bind to a boolean or string.
|
28
|
+
- added a .fetch_each method that fetches all items, then yields each one.
|
26
29
|
|
27
30
|
### Changed
|
28
31
|
- template bindings have been renamed to view. ```{{ view "path/for/view" }}``` instead of ```{{ template "path/for/view" }}```
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.9.0.
|
1
|
+
0.9.0.pre6
|
data/lib/volt/cli/generate.rb
CHANGED
@@ -75,7 +75,7 @@ class Generate < Thor
|
|
75
75
|
method_option :name, type: :string, banner: 'The name of the task.'
|
76
76
|
method_option :component, type: :string, default: 'main', banner: 'The component the task should be created in.', required: false
|
77
77
|
def task(name, component = 'main')
|
78
|
-
name = name.underscore.singularize
|
78
|
+
name = name.underscore.gsub(/_tasks$/, '').singularize + '_tasks'
|
79
79
|
output_file = Dir.pwd + "/app/#{component}/tasks/#{name}.rb"
|
80
80
|
spec_file = Dir.pwd + "/spec/app/#{component}/tasks/#{name}_spec.rb"
|
81
81
|
template('task/task.rb.tt', output_file, task_name: name.camelize.singularize)
|
@@ -87,9 +87,9 @@ module Volt
|
|
87
87
|
# here by storing by action and having an all category as well.
|
88
88
|
def filter_actions_by_only_exclude(callbacks, action)
|
89
89
|
callbacks.select do |callback, options|
|
90
|
-
if options
|
90
|
+
if options && (only = options[:only])
|
91
91
|
# If there is an only, make sure the action is in the list.
|
92
|
-
|
92
|
+
[only].flatten.include?(action.to_sym)
|
93
93
|
else
|
94
94
|
# If no only, include it
|
95
95
|
true
|
@@ -41,7 +41,7 @@ module Volt
|
|
41
41
|
end
|
42
42
|
|
43
43
|
proxy_with_root_dep :[], :size, :first, :last, :state_for#, :limit, :find_one, :find
|
44
|
-
proxy_to_persistor :find, :where, :skip, :sort, :limit, :then, :fetch, :fetch_first
|
44
|
+
proxy_to_persistor :find, :where, :skip, :sort, :limit, :then, :fetch, :fetch_first, :fetch_each
|
45
45
|
|
46
46
|
def initialize(array = [], options = {})
|
47
47
|
@options = options
|
@@ -197,12 +197,12 @@ module Volt
|
|
197
197
|
end
|
198
198
|
end
|
199
199
|
|
200
|
-
def buffer
|
200
|
+
def buffer(attrs={})
|
201
201
|
model_path = options[:path] + [:[]]
|
202
202
|
model_klass = Volt::Model.class_at_path(model_path)
|
203
203
|
|
204
204
|
new_options = options.merge(path: model_path, save_to: self, buffer: true).reject { |k, _| k.to_sym == :persistor }
|
205
|
-
model = model_klass.new(
|
205
|
+
model = model_klass.new(attrs, new_options)
|
206
206
|
|
207
207
|
model
|
208
208
|
end
|
data/lib/volt/models/model.rb
CHANGED
@@ -16,6 +16,7 @@ require 'volt/models/permissions'
|
|
16
16
|
require 'volt/models/associations'
|
17
17
|
require 'volt/reactive/class_eventable'
|
18
18
|
require 'volt/utils/event_counter'
|
19
|
+
require 'volt/reactive/reactive_accessors'
|
19
20
|
require 'thread'
|
20
21
|
|
21
22
|
module Volt
|
@@ -43,6 +44,7 @@ module Volt
|
|
43
44
|
include ListenerTracker
|
44
45
|
include Permissions
|
45
46
|
include Associations
|
47
|
+
include ReactiveAccessors
|
46
48
|
|
47
49
|
attr_reader :attributes, :parent, :path, :persistor, :options
|
48
50
|
|
@@ -257,14 +259,19 @@ module Volt
|
|
257
259
|
else
|
258
260
|
# If we're expanding, or the get is for a collection, in which
|
259
261
|
# case we always expand.
|
260
|
-
|
262
|
+
plural_attr = attr_name.plural?
|
263
|
+
if expand || plural_attr
|
261
264
|
new_value = read_new_model(attr_name)
|
262
265
|
|
263
266
|
# A value was generated, store it
|
264
267
|
if new_value
|
265
268
|
# Assign directly. Since this is the first time
|
266
269
|
# we're loading, we can just assign.
|
267
|
-
|
270
|
+
#
|
271
|
+
# Don't track changes if we're setting a collection
|
272
|
+
Volt.run_in_mode_if(plural_attr, :no_change_tracking) do
|
273
|
+
set(attr_name, new_value)
|
274
|
+
end
|
268
275
|
end
|
269
276
|
|
270
277
|
return new_value
|
@@ -104,7 +104,6 @@ module Volt
|
|
104
104
|
|
105
105
|
# Called the first time data is requested from this collection
|
106
106
|
def load_data
|
107
|
-
# puts "LOAD DATA: #{@model.path.inspect}: #{@model.options[:query].inspect}"
|
108
107
|
Computation.run_without_tracking do
|
109
108
|
loaded_state = @model.loaded_state
|
110
109
|
|
@@ -218,6 +217,15 @@ module Volt
|
|
218
217
|
promise
|
219
218
|
end
|
220
219
|
|
220
|
+
# A combination of .fetch and .each. Returns the fetch promise
|
221
|
+
def fetch_each
|
222
|
+
fetch do |items|
|
223
|
+
items.each do |item|
|
224
|
+
yield(item)
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
221
229
|
# Alias then for now
|
222
230
|
# TODO: Deprecate
|
223
231
|
alias_method :then, :fetch
|
@@ -97,6 +97,15 @@ module Volt
|
|
97
97
|
if val != element.value
|
98
98
|
element.value = val
|
99
99
|
end
|
100
|
+
when 'disabled'
|
101
|
+
# Disabled is handled specially, you can either return a boolean:
|
102
|
+
# (true being disabled, false not disabled), or you can optionally
|
103
|
+
# include the "disabled" string. (or any string)
|
104
|
+
if val != false && val.present?
|
105
|
+
element.attr('disabled', 'disabled')
|
106
|
+
else
|
107
|
+
element.remove_attr('disabled')
|
108
|
+
end
|
100
109
|
else
|
101
110
|
element[@attribute_name] = val
|
102
111
|
end
|
@@ -33,8 +33,14 @@ module Volt
|
|
33
33
|
values = current_values(value)
|
34
34
|
@value = values
|
35
35
|
|
36
|
-
|
37
|
-
|
36
|
+
if @added_listener
|
37
|
+
@added_listener.remove
|
38
|
+
@added_listener = nil
|
39
|
+
end
|
40
|
+
if @removed_listener
|
41
|
+
@removed_listener.remove
|
42
|
+
@removed_listener = nil
|
43
|
+
end
|
38
44
|
|
39
45
|
if @value.respond_to?(:on)
|
40
46
|
@added_listener = @value.on('added') { |position| item_added(position) }
|
@@ -132,6 +138,8 @@ module Volt
|
|
132
138
|
# Clear value
|
133
139
|
@value = []
|
134
140
|
|
141
|
+
@getter = nil
|
142
|
+
|
135
143
|
if @added_listener
|
136
144
|
@added_listener.remove
|
137
145
|
@added_listener = nil
|
@@ -35,7 +35,11 @@ module Volt
|
|
35
35
|
# Takes a string and splits on bindings, returns the string split on bindings
|
36
36
|
# and the number of bindings.
|
37
37
|
def binding_parts_and_count(value)
|
38
|
-
|
38
|
+
if value.is_a?(String)
|
39
|
+
parts = value.split(/(\{\{[^\}]+\}\})/).reject(&:blank?)
|
40
|
+
else
|
41
|
+
parts = ['']
|
42
|
+
end
|
39
43
|
binding_count = parts.count { |p| p[0] == '{' && p[1] == '{' && p[-2] == '}' && p[-1] == '}' }
|
40
44
|
|
41
45
|
[parts, binding_count]
|
data/lib/volt/server.rb
CHANGED
data/lib/volt/utils/modes.rb
CHANGED
@@ -27,6 +27,18 @@ module Volt
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
+
def run_in_mode_if(conditional, mode_name)
|
31
|
+
if conditional
|
32
|
+
# Yes, run in the mode
|
33
|
+
Volt.run_in_mode(mode_name) do
|
34
|
+
yield
|
35
|
+
end
|
36
|
+
else
|
37
|
+
# Just run normally
|
38
|
+
yield
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
30
42
|
# Check to see if we are in the specified mode
|
31
43
|
def in_mode?(mode_name)
|
32
44
|
return defined?(Thread) && Thread.current[mode_name]
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class Tilt::Template
|
2
|
+
# Tilt outputs the following error:
|
3
|
+
# WARN: tilt autoloading 'sass' in a non thread-safe way; explicit require 'sass' suggested.
|
4
|
+
# I can't get rid of this no matter what I do. (If someone smarter wants to take a shot at
|
5
|
+
# it, please do.) For now for my sanity, I'm just silencing its warnings.
|
6
|
+
def warn(*args)
|
7
|
+
# Kernel.warn(*args)
|
8
|
+
end
|
9
|
+
end
|
data/lib/volt.rb
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.9.0.
|
4
|
+
version: 0.9.0.pre6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Stout
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -614,6 +614,7 @@ files:
|
|
614
614
|
- lib/volt/store/mongo.rb
|
615
615
|
- lib/volt/tasks/dispatcher.rb
|
616
616
|
- lib/volt/tasks/task_handler.rb
|
617
|
+
- lib/volt/utils/boolean_patch.rb
|
617
618
|
- lib/volt/utils/ejson.rb
|
618
619
|
- lib/volt/utils/event_counter.rb
|
619
620
|
- lib/volt/utils/generic_counting_pool.rb
|
@@ -623,6 +624,7 @@ files:
|
|
623
624
|
- lib/volt/utils/logging/task_logger.rb
|
624
625
|
- lib/volt/utils/modes.rb
|
625
626
|
- lib/volt/utils/promise_patch.rb
|
627
|
+
- lib/volt/utils/tilt_patch.rb
|
626
628
|
- lib/volt/utils/timers.rb
|
627
629
|
- lib/volt/utils/volt_user_error.rb
|
628
630
|
- lib/volt/volt/environment.rb
|