volt 0.4.8 → 0.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/app/volt/tasks/store_tasks.rb +17 -6
- data/lib/volt/assets/test.rb +6 -0
- data/lib/volt/models/store.rb +35 -28
- data/lib/volt/models/store_array.rb +54 -12
- data/lib/volt/page/channel_stub.rb +1 -1
- data/lib/volt/page/tasks.rb +8 -0
- data/lib/volt/reactive/events.rb +8 -0
- data/lib/volt/reactive/object_tracker.rb +1 -0
- data/lib/volt/server/component_templates.rb +3 -3
- data/lib/volt/server/rack/asset_files.rb +2 -2
- data/lib/volt/server/rack/component_paths.rb +3 -3
- data/lib/volt/server/rack/opal_files.rb +10 -0
- data/spec/models/model_spec.rb +28 -1
- data/spec/models/old_model_spec.rb +0 -42
- data/volt.gemspec +2 -0
- metadata +31 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0ae38f2f69535b60b4fe850f9c6a9073da98b75
|
4
|
+
data.tar.gz: a2a08253c6f76f71ac495ec91d13efa4a35f0a98
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f39067395499d7b5bd46088b343612d9dc8b79d1fa5b53885777fa9deb5bde1f42215f6ab111264935636e0a7971d8212edd3f235a49df6c2f388aec62a01c44
|
7
|
+
data.tar.gz: a0713dc5334f151bd05bf9b95e879be1b02ae4cd59ae1e9f8bbdbf90e9474f9ff35286f2b998f66d91f1247cc05ddc07c49f3996fbfc9b7ff672bc97619abbf0
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.9
|
@@ -16,28 +16,32 @@ class StoreTasks
|
|
16
16
|
|
17
17
|
def save(collection, data)
|
18
18
|
puts "Insert: #{data.inspect} on #{collection.inspect}"
|
19
|
+
|
20
|
+
data = data.symbolize_keys
|
21
|
+
id = data[:_id]
|
22
|
+
|
19
23
|
# Try to create
|
20
24
|
# TODO: Seems mongo is dumb and doesn't let you upsert with custom id's
|
21
25
|
begin
|
22
26
|
@@db[collection].insert(data)
|
23
|
-
id = {'_id' => data.delete('_id')}
|
24
27
|
|
25
28
|
# Message that we inserted a new item
|
26
|
-
|
29
|
+
puts "SENDING DATA: #{data.inspect}"
|
30
|
+
ChannelTasks.send_message_to_channel("#{collection}-added", ['added', nil, collection, data], @channel)
|
27
31
|
rescue Mongo::OperationFailure => error
|
28
32
|
# Really mongo client?
|
29
33
|
if error.message[/^11000[:]/]
|
30
34
|
# Update because the id already exists
|
31
|
-
|
32
|
-
|
35
|
+
update_data = data.dup
|
36
|
+
update_data.delete(:_id)
|
37
|
+
@@db[collection].update({:_id => id}, update_data)
|
33
38
|
else
|
34
39
|
raise
|
35
40
|
end
|
36
41
|
end
|
37
42
|
|
38
|
-
id = id['_id']
|
39
43
|
|
40
|
-
ChannelTasks.send_message_to_channel("#{collection}##{id}", ['changed', nil, id, data
|
44
|
+
ChannelTasks.send_message_to_channel("#{collection}##{id}", ['changed', nil, id, data], @channel)
|
41
45
|
end
|
42
46
|
|
43
47
|
def find(collection, scope, query=nil)
|
@@ -46,4 +50,11 @@ class StoreTasks
|
|
46
50
|
|
47
51
|
return results
|
48
52
|
end
|
53
|
+
|
54
|
+
def delete(collection, id)
|
55
|
+
puts "DELETE: #{collection.inspect} - #{id.inspect}"
|
56
|
+
@@db[collection].remove('_id' => id)
|
57
|
+
|
58
|
+
ChannelTasks.send_message_to_channel("#{collection}-removed", ['removed', nil, id], @channel)
|
59
|
+
end
|
49
60
|
end
|
@@ -0,0 +1,6 @@
|
|
1
|
+
require 'sass'
|
2
|
+
|
3
|
+
sass_engine = Sass::Engine.new(template, {syntax: :scss, filename: 'cool.css.scss', sourcemap: true}) ; output =
|
4
|
+
sass_engine.render_with_sourcemap('/source_maps/')
|
5
|
+
|
6
|
+
puts a[1].to_json(:css_path => '/cool.css', :sourcemap_path => '/source_maps/cool.css.map')
|
data/lib/volt/models/store.rb
CHANGED
@@ -17,6 +17,10 @@ class Store < Model
|
|
17
17
|
|
18
18
|
value_updated
|
19
19
|
end
|
20
|
+
|
21
|
+
def self.from_id(id)
|
22
|
+
@@identity_map[id]
|
23
|
+
end
|
20
24
|
|
21
25
|
def event_added(event, scope_provider, first)
|
22
26
|
if first && event == :changed
|
@@ -36,6 +40,7 @@ class Store < Model
|
|
36
40
|
def change_channel_connection(add_or_remove)
|
37
41
|
if attributes && path.size > 1
|
38
42
|
channel_name = "#{path[-2]}##{attributes[:_id]}"
|
43
|
+
puts "Event Added: #{channel_name} -- #{attributes.inspect}"
|
39
44
|
@tasks.call('ChannelTasks', "#{add_or_remove}_listener", channel_name)
|
40
45
|
end
|
41
46
|
end
|
@@ -121,49 +126,51 @@ class Store < Model
|
|
121
126
|
# On stores, we store the model so we don't have to look it up
|
122
127
|
# every time we do a read.
|
123
128
|
def read_new_model(method_name)
|
124
|
-
|
129
|
+
# On stores, plural associations are automatically assumed to be
|
130
|
+
# collections.
|
131
|
+
if method_name.plural?
|
132
|
+
model = new_array_model([], self, path + [method_name])
|
133
|
+
else
|
134
|
+
model = new_model(nil, self, path + [method_name])
|
135
|
+
end
|
125
136
|
|
126
137
|
self.attributes ||= {}
|
127
138
|
attributes[method_name] = model
|
128
139
|
|
129
|
-
if model.state == :not_loaded
|
140
|
+
if model.is_a?(StoreArray)# && model.state == :not_loaded
|
130
141
|
model.load!
|
131
142
|
end
|
132
143
|
|
133
144
|
return model
|
134
145
|
end
|
146
|
+
|
135
147
|
|
136
|
-
|
137
|
-
|
138
|
-
|
148
|
+
# When called, this model is deleted from its current parent collection
|
149
|
+
# and from the database
|
150
|
+
def delete!
|
151
|
+
if path.size == 0
|
152
|
+
raise "Not in a collection"
|
153
|
+
end
|
139
154
|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
scope[:"#{path[-3].singularize}_id"] = parent._id
|
148
|
-
end
|
149
|
-
|
150
|
-
load_child_models(scope)
|
155
|
+
# TEMP: Find this model in the parent's collection
|
156
|
+
parent.each_with_index do |child,index|
|
157
|
+
puts "CHECK #{child.inspect} vs #{self.inspect}"
|
158
|
+
if child._id == self._id
|
159
|
+
puts "FOUND AT: #{index}"
|
160
|
+
parent.delete_at(index)
|
161
|
+
break
|
151
162
|
end
|
152
163
|
end
|
153
|
-
|
154
|
-
|
164
|
+
|
165
|
+
# Send to the DB that we got deleted
|
166
|
+
unless $loading_models
|
167
|
+
puts "delete #{collection} - #{attributes[:_id]}"
|
168
|
+
@tasks.call('StoreTasks', 'delete', collection, attributes[:_id])
|
169
|
+
end
|
155
170
|
end
|
156
171
|
|
157
|
-
def
|
158
|
-
|
159
|
-
@tasks.call('StoreTasks', 'find', collection(path), scope) do |results|
|
160
|
-
# TODO: Globals evil, replace
|
161
|
-
$loading_models = true
|
162
|
-
results.each do |result|
|
163
|
-
self << Store.new(@tasks, result, self, path + [:[]], @class_paths)
|
164
|
-
end
|
165
|
-
$loading_models = false
|
166
|
-
end
|
172
|
+
def inspect
|
173
|
+
"<#{self.class.to_s}-#{@state} #{attributes.inspect}>"
|
167
174
|
end
|
168
175
|
|
169
176
|
def new_model(attributes={}, parent=nil, path=nil, class_paths=nil)
|
@@ -1,31 +1,73 @@
|
|
1
1
|
class StoreArray < ArrayModel
|
2
|
+
attr_reader :state
|
3
|
+
|
2
4
|
def initialize(tasks=nil, array=[], parent=nil, path=nil)
|
3
5
|
@tasks = tasks
|
6
|
+
@state = :not_loaded
|
4
7
|
|
5
8
|
super(array, parent, path)
|
9
|
+
|
10
|
+
# TEMP: TODO: Setup the listeners right away
|
11
|
+
change_channel_connection('add', 'added')
|
12
|
+
change_channel_connection('add', 'removed')
|
6
13
|
end
|
7
14
|
|
8
|
-
def event_added(event, scope_provider, first)
|
9
|
-
|
10
|
-
|
11
|
-
|
15
|
+
# def event_added(event, scope_provider, first)
|
16
|
+
# puts "New event1: #{event.inspect} - #{first}"
|
17
|
+
# if first && [:added, :removed].include?(event)
|
18
|
+
# # Start listening for added items on the collection
|
19
|
+
#
|
20
|
+
# change_channel_connection('add', event)
|
21
|
+
# end
|
22
|
+
# end
|
23
|
+
#
|
24
|
+
# def event_removed(event, no_more_events)
|
25
|
+
# if no_more_events && [:added, :removed].include?(event)
|
26
|
+
# # Stop listening
|
27
|
+
# change_channel_connection("remove", event)
|
28
|
+
# end
|
29
|
+
# end
|
30
|
+
|
31
|
+
|
32
|
+
def load!
|
33
|
+
if @state == :not_loaded
|
34
|
+
@state = :loading
|
35
|
+
|
36
|
+
if @tasks && path.last.plural?
|
37
|
+
# Check to see the parents scope so we can only lookup associated
|
38
|
+
# models.
|
39
|
+
scope = {}
|
12
40
|
|
13
|
-
|
41
|
+
# Scope to the parent
|
42
|
+
if path.size > 1 && attributes && attributes[:_id].true?
|
43
|
+
scope[:"#{path[-2].singularize}_id"] = _id
|
44
|
+
end
|
45
|
+
|
46
|
+
puts "Load At Scope: #{scope.inspect}"
|
47
|
+
|
48
|
+
load_child_models(scope)
|
49
|
+
end
|
14
50
|
end
|
51
|
+
|
52
|
+
return self
|
15
53
|
end
|
16
54
|
|
17
|
-
def
|
18
|
-
|
19
|
-
|
20
|
-
|
55
|
+
def load_child_models(scope)
|
56
|
+
# puts "FIND: #{collection(path).inspect} at #{scope.inspect}"
|
57
|
+
@tasks.call('StoreTasks', 'find', path.last, scope) do |results|
|
58
|
+
# TODO: Globals evil, replace
|
59
|
+
$loading_models = true
|
60
|
+
results.each do |result|
|
61
|
+
self << Store.new(@tasks, result, self, path + [:[]], @class_paths)
|
62
|
+
end
|
63
|
+
$loading_models = false
|
21
64
|
end
|
22
65
|
end
|
23
66
|
|
24
|
-
|
25
67
|
def change_channel_connection(add_or_remove, event)
|
26
|
-
if parent.attributes && path.size != 0
|
68
|
+
if @tasks && parent.attributes && path.size != 0
|
27
69
|
channel_name = "#{path[-1]}-#{event}"
|
28
|
-
puts "Listen on #{channel_name}"
|
70
|
+
puts "Listen on #{channel_name} - #{add_or_remove}"
|
29
71
|
@tasks.call('ChannelTasks', "#{add_or_remove}_listener", channel_name)
|
30
72
|
end
|
31
73
|
end
|
data/lib/volt/page/tasks.rb
CHANGED
@@ -35,6 +35,8 @@ class Tasks
|
|
35
35
|
changed(*args)
|
36
36
|
when 'added'
|
37
37
|
added(*args)
|
38
|
+
when 'removed'
|
39
|
+
removed(*args)
|
38
40
|
when 'reload'
|
39
41
|
reload
|
40
42
|
end
|
@@ -62,6 +64,12 @@ class Tasks
|
|
62
64
|
$loading_models = false
|
63
65
|
end
|
64
66
|
|
67
|
+
def removed(id)
|
68
|
+
$loading_models = true
|
69
|
+
Store.from_id(id).delete!
|
70
|
+
$loading_models = false
|
71
|
+
end
|
72
|
+
|
65
73
|
def reload
|
66
74
|
puts "RELOAD"
|
67
75
|
$page.page._reloading = true
|
data/lib/volt/reactive/events.rb
CHANGED
@@ -100,6 +100,14 @@ end
|
|
100
100
|
module Events
|
101
101
|
# Add a listener for an event
|
102
102
|
def on(event, scope_provider=nil, &block)
|
103
|
+
|
104
|
+
|
105
|
+
# if reactive? && [:added, :removed].include?(event)
|
106
|
+
# self.object_tracker.queue_update
|
107
|
+
# ObjectTracker.process_queue
|
108
|
+
# end
|
109
|
+
|
110
|
+
|
103
111
|
# puts "Register: #{event} on #{self.inspect}"
|
104
112
|
event = event.to_sym
|
105
113
|
|
@@ -15,7 +15,7 @@ class ComponentTemplates
|
|
15
15
|
views_path = "#{@component_path}/views/"
|
16
16
|
|
17
17
|
# Load all templates in the folder
|
18
|
-
Dir["#{views_path}*/*.html"].each do |view_path|
|
18
|
+
Dir["#{views_path}*/*.html"].sort.each do |view_path|
|
19
19
|
# Get the path for the template, supports templates in folders
|
20
20
|
template_path = view_path[views_path.size..((-1 * ('.html'.size + 1)))]
|
21
21
|
template_path = "#{@component_name}/#{template_path}"
|
@@ -45,7 +45,7 @@ class ComponentTemplates
|
|
45
45
|
code = ''
|
46
46
|
controllers_path = "#{@component_path}/controllers/"
|
47
47
|
|
48
|
-
Dir["#{controllers_path}*_controller.rb"].each do |controller_path|
|
48
|
+
Dir["#{controllers_path}*_controller.rb"].sort.each do |controller_path|
|
49
49
|
code << File.read(controller_path) + "\n\n"
|
50
50
|
end
|
51
51
|
|
@@ -56,7 +56,7 @@ class ComponentTemplates
|
|
56
56
|
code = ''
|
57
57
|
models_path = "#{@component_path}/models/"
|
58
58
|
|
59
|
-
Dir["#{models_path}*.rb"].each do |model_path|
|
59
|
+
Dir["#{models_path}*.rb"].sort.each do |model_path|
|
60
60
|
code << File.read(model_path) + "\n\n"
|
61
61
|
|
62
62
|
model_name = model_path.match(/([^\/]+)[.]rb$/)[1]
|
@@ -70,7 +70,7 @@ class AssetFiles
|
|
70
70
|
@assets.each do |type, path|
|
71
71
|
case type
|
72
72
|
when :folder
|
73
|
-
javascript_files += Dir["#{path}/**/*.js"].map {|folder| '/assets' + folder[path.size..-1] }
|
73
|
+
javascript_files += Dir["#{path}/**/*.js"].sort.map {|folder| '/assets' + folder[path.size..-1] }
|
74
74
|
when :javascript_file
|
75
75
|
javascript_files << path
|
76
76
|
end
|
@@ -94,7 +94,7 @@ class AssetFiles
|
|
94
94
|
@assets.each do |type, path|
|
95
95
|
case type
|
96
96
|
when :folder
|
97
|
-
css_files += Dir["#{path}/**/*.{css,scss}"].map {|folder| '/assets' + folder[path.size..-1].gsub(/[.]scss$/, '') }
|
97
|
+
css_files += Dir["#{path}/**/*.{css,scss}"].sort.map {|folder| '/assets' + folder[path.size..-1].gsub(/[.]scss$/, '') }
|
98
98
|
when :css_file
|
99
99
|
css_files << path
|
100
100
|
end
|
@@ -34,7 +34,7 @@ class ComponentPaths
|
|
34
34
|
|
35
35
|
@components = {}
|
36
36
|
app_folders do |app_folder|
|
37
|
-
Dir["#{app_folder}/*"].each do |folder|
|
37
|
+
Dir["#{app_folder}/*"].sort.each do |folder|
|
38
38
|
if File.directory?(folder)
|
39
39
|
folder_name = folder[/[^\/]+$/]
|
40
40
|
|
@@ -51,7 +51,7 @@ class ComponentPaths
|
|
51
51
|
def setup_components_load_path
|
52
52
|
components.each do |name,component_folders|
|
53
53
|
component_folders.each do |component_folder|
|
54
|
-
Dir["#{component_folder}/tasks"].each do |tasks_folder|
|
54
|
+
Dir["#{component_folder}/tasks"].sort.each do |tasks_folder|
|
55
55
|
$LOAD_PATH.unshift(tasks_folder)
|
56
56
|
end
|
57
57
|
end
|
@@ -73,7 +73,7 @@ class ComponentPaths
|
|
73
73
|
def asset_folders
|
74
74
|
folders = []
|
75
75
|
app_folders do |app_folder|
|
76
|
-
Dir["#{app_folder}/*/assets"].each do |asset_folder|
|
76
|
+
Dir["#{app_folder}/*/assets"].sort.each do |asset_folder|
|
77
77
|
folders << yield(asset_folder)
|
78
78
|
end
|
79
79
|
end
|
@@ -1,4 +1,8 @@
|
|
1
1
|
require 'volt/server/rack/source_map_server'
|
2
|
+
if Volt.env.production?
|
3
|
+
# Compress assets in production
|
4
|
+
require 'uglifier'
|
5
|
+
end
|
2
6
|
|
3
7
|
# Sets up the maps for the opal assets, and source maps if enabled.
|
4
8
|
class OpalFiles
|
@@ -19,6 +23,12 @@ class OpalFiles
|
|
19
23
|
environment = @environment
|
20
24
|
|
21
25
|
environment.cache = Sprockets::Cache::FileStore.new("./tmp")
|
26
|
+
|
27
|
+
if Volt.env.production?
|
28
|
+
# Compress in production
|
29
|
+
environment.js_compressor = Sprockets::UglifierCompressor
|
30
|
+
environment.css_compressor = Sprockets::YUICompressor
|
31
|
+
end
|
22
32
|
|
23
33
|
environment.append_path(app_path)
|
24
34
|
|
data/spec/models/model_spec.rb
CHANGED
@@ -291,7 +291,7 @@ describe Model do
|
|
291
291
|
# expect(changed_count).to eq(1)
|
292
292
|
end
|
293
293
|
|
294
|
-
it "should handle a basic todo list
|
294
|
+
it "should handle a basic todo list with no setup" do
|
295
295
|
store = ReactiveValue.new(Model.new)
|
296
296
|
params = ReactiveValue.new(Params.new)
|
297
297
|
|
@@ -411,4 +411,31 @@ describe Model do
|
|
411
411
|
expect(count2).to eq(2)
|
412
412
|
|
413
413
|
end
|
414
|
+
|
415
|
+
it "should set its self to be " do
|
416
|
+
|
417
|
+
end
|
418
|
+
|
419
|
+
|
420
|
+
describe "model paths" do
|
421
|
+
before do
|
422
|
+
@model = ReactiveValue.new(Model.new)
|
423
|
+
end
|
424
|
+
|
425
|
+
it "should set the model path" do
|
426
|
+
@model._object._name = 'Test'
|
427
|
+
expect(@model._object.path.cur).to eq([:_object])
|
428
|
+
end
|
429
|
+
|
430
|
+
it "should set the model path for a sub array" do
|
431
|
+
@model._items << {_name: 'Bob'}
|
432
|
+
expect(@model._items.path.cur).to eq([:_items])
|
433
|
+
expect(@model._items[0].path.cur).to eq([:_items, :[]])
|
434
|
+
end
|
435
|
+
|
436
|
+
it "should set the model path for sub sub arrays" do
|
437
|
+
@model._lists << {_name: 'List 1', _items: []}
|
438
|
+
expect(@model._lists[0]._items.path.cur).to eq([:_lists, :[], :_items])
|
439
|
+
end
|
440
|
+
end
|
414
441
|
end
|
@@ -3,48 +3,6 @@
|
|
3
3
|
#
|
4
4
|
# describe Model do
|
5
5
|
#
|
6
|
-
# describe "model paths" do
|
7
|
-
# before do
|
8
|
-
# @model = ReactiveValue.new(Model.new)
|
9
|
-
# end
|
10
|
-
#
|
11
|
-
# it "should set the model path" do
|
12
|
-
# @model._object._name = 'Test'
|
13
|
-
# @model._object.path.cur.should == ['_object']
|
14
|
-
# end
|
15
|
-
#
|
16
|
-
# it "should set the model path for a sub array" do
|
17
|
-
# @model._items << {_name: 'Bob'}
|
18
|
-
# @model._items.path.cur.should == ['_items']
|
19
|
-
# @model._items[0].path.cur.should == ['_items', '[]']
|
20
|
-
# end
|
21
|
-
#
|
22
|
-
# it "should set the model path for sub sub arrays" do
|
23
|
-
# @model._lists << {_name: 'List 1', _items: []}
|
24
|
-
# @model._lists[0]._items.path.cur.should == ['_lists', '[]', '_items']
|
25
|
-
# end
|
26
|
-
# end
|
27
|
-
#
|
28
|
-
#
|
29
|
-
# describe "paths" do
|
30
|
-
# before do
|
31
|
-
# @model = ReactiveValue.new(Model.new({}, nil, 'model'))
|
32
|
-
# end
|
33
|
-
#
|
34
|
-
# it "should track paths" do
|
35
|
-
# @model._test.path.cur.should == ['model', '_test']
|
36
|
-
# end
|
37
|
-
#
|
38
|
-
# it "should track nested paths" do
|
39
|
-
# @model._test._blue.path.cur.should == ['model', '_test', '_blue']
|
40
|
-
# end
|
41
|
-
#
|
42
|
-
# it "should track paths with array lookup's" do
|
43
|
-
# @model._test._green << {}
|
44
|
-
# @model._test._green.path.cur.should == ['model', '_test', '_green']
|
45
|
-
# @model._test._green[0].path.cur.should == ['model', '_test', '_green', '[]']
|
46
|
-
# end
|
47
|
-
# end
|
48
6
|
#
|
49
7
|
# describe "user models" do
|
50
8
|
# class User < Model
|
data/volt.gemspec
CHANGED
@@ -33,6 +33,8 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_dependency "oj", "~> 2.5.0"
|
34
34
|
spec.add_dependency "rake", "~> 10.0.4"
|
35
35
|
spec.add_dependency "listen", "~> 2.4.0"
|
36
|
+
spec.add_dependency "uglifier", "~> 2.4.0"
|
37
|
+
spec.add_dependency "yui-compressor", "~> 0.12.0"
|
36
38
|
# spec.add_dependency "rack-colorized_logger", "~> 1.0.4"
|
37
39
|
|
38
40
|
|
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.
|
4
|
+
version: 0.4.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Stout
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -206,6 +206,34 @@ dependencies:
|
|
206
206
|
- - "~>"
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: 2.4.0
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: uglifier
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - "~>"
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: 2.4.0
|
216
|
+
type: :runtime
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - "~>"
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: 2.4.0
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: yui-compressor
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - "~>"
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: 0.12.0
|
230
|
+
type: :runtime
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - "~>"
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: 0.12.0
|
209
237
|
- !ruby/object:Gem::Dependency
|
210
238
|
name: bundler
|
211
239
|
requirement: !ruby/object:Gem::Requirement
|
@@ -305,6 +333,7 @@ files:
|
|
305
333
|
- docs/GETTING_STARTED.md
|
306
334
|
- docs/WHY.md
|
307
335
|
- lib/volt.rb
|
336
|
+
- lib/volt/assets/test.rb
|
308
337
|
- lib/volt/benchmark/benchmark.rb
|
309
338
|
- lib/volt/cli.rb
|
310
339
|
- lib/volt/cli/new_gem.rb
|