vapid 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/vapid.rb +0 -4
- data/lib/vapid/cli.rb +1 -5
- data/lib/vapid/controllers/admin_controller.rb +18 -9
- data/lib/vapid/directive.rb +27 -12
- data/lib/vapid/directives/date.rb +31 -0
- data/lib/vapid/directives/group.rb +3 -3
- data/lib/vapid/directives/href.rb +5 -0
- data/lib/vapid/server.rb +1 -0
- data/lib/vapid/version.rb +1 -1
- data/vapid.gemspec +1 -2
- metadata +5 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 504471e3bef72a241996ded672149874d00f0eaf
|
4
|
+
data.tar.gz: 109650d32dbb7d98efb77346628f72168ad6ca4f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed753ed4e16155ce5562d4059a09c61ad3f5fe9a3dc7658569e4b7e46c21b9e7809c2583d4dba9a14fb9aec1dc0b59465ea2dcbdc265a9e8da8ed15d91e6de0a
|
7
|
+
data.tar.gz: 7b177df1ded95804960165af8578b4213a17dbf63dfd5519b5c0ef62c881c109343efedf3f981dadde1063024ff457809d3d26aad1d6475e59dff2518861ace6
|
data/lib/vapid.rb
CHANGED
data/lib/vapid/cli.rb
CHANGED
@@ -38,11 +38,7 @@ module Vapid
|
|
38
38
|
def server(target = ".")
|
39
39
|
say "== The Vapid server is loading"
|
40
40
|
inside_target(target) do
|
41
|
-
Thread.
|
42
|
-
Thread.new do
|
43
|
-
Server.run! options
|
44
|
-
end
|
45
|
-
|
41
|
+
Thread.new { Server.run! options }
|
46
42
|
Guard.start guardfile_contents: GUARDFILE, watchdir: target, no_interactions: true
|
47
43
|
end
|
48
44
|
say "== The Vapid server is now shut down"
|
@@ -10,7 +10,7 @@ module Vapid
|
|
10
10
|
def vp_field(name, type, value = "")
|
11
11
|
@directive = Directives[type]
|
12
12
|
@name = name
|
13
|
-
@value = value
|
13
|
+
@value = @directive.new(name).send :deserialize_input, value
|
14
14
|
|
15
15
|
label(name) +
|
16
16
|
template.content_tag(:div) do
|
@@ -211,6 +211,12 @@ module Vapid
|
|
211
211
|
@group = current_group
|
212
212
|
@record = @group.records.build(params[:record])
|
213
213
|
|
214
|
+
# TODO: Externalize this into a function (see update method below)
|
215
|
+
params[:record]["content"].each do |key, val|
|
216
|
+
content_type = current_group.fields[key]
|
217
|
+
@record.content[key] = Directives[content_type].serialize_input(val)
|
218
|
+
end
|
219
|
+
|
214
220
|
if @record.save
|
215
221
|
flash[:success] = "Record created"
|
216
222
|
livereload
|
@@ -231,15 +237,18 @@ module Vapid
|
|
231
237
|
@group = current_group
|
232
238
|
@record = current_record
|
233
239
|
|
240
|
+
# TODO: Externalize this into a function (see create method above)
|
234
241
|
params[:record]["content"].each do |key, val|
|
235
|
-
if val.is_a?(Hash) && val[:tempfile]
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
end
|
242
|
-
|
242
|
+
# if val.is_a?(Hash) && val[:tempfile]
|
243
|
+
# FileUtils.mkdir_p(settings.project_uploads)
|
244
|
+
# File.open File.join(settings.project_uploads, val[:filename]), "wb" do |file|
|
245
|
+
# file.write val[:tempfile].read
|
246
|
+
# end
|
247
|
+
# val = "/uploads/#{val[:filename]}"
|
248
|
+
# end
|
249
|
+
|
250
|
+
content_type = current_group.fields[key]
|
251
|
+
@record.content[key] = Directives[content_type].serialize_input(val)
|
243
252
|
end
|
244
253
|
|
245
254
|
params[:_destroy] && params[:_destroy].each do |key, _val|
|
data/lib/vapid/directive.rb
CHANGED
@@ -39,6 +39,13 @@ module Vapid
|
|
39
39
|
destroy
|
40
40
|
end
|
41
41
|
|
42
|
+
# Serializes input before it's saved to the database
|
43
|
+
#
|
44
|
+
# @return [String]
|
45
|
+
def serialize_input(input)
|
46
|
+
input.to_s
|
47
|
+
end
|
48
|
+
|
42
49
|
private
|
43
50
|
|
44
51
|
attr_accessor :filters, :preview, :destroy
|
@@ -63,14 +70,26 @@ module Vapid
|
|
63
70
|
@filters[name] = block
|
64
71
|
end
|
65
72
|
|
66
|
-
def
|
67
|
-
|
73
|
+
def deserialize(&block)
|
74
|
+
instance_eval do
|
75
|
+
define_method :deserialize_input do |input|
|
76
|
+
instance_exec input, &block
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def serialize(&block)
|
82
|
+
(class << self; self; end).instance_eval do
|
83
|
+
define_method :serialize_input do |input|
|
84
|
+
block.call input
|
85
|
+
end
|
86
|
+
end
|
68
87
|
end
|
69
88
|
|
70
89
|
def inherited(subclass)
|
71
90
|
# Auto-register directives
|
72
91
|
# @todo Shouldn't do this
|
73
|
-
Vapid.
|
92
|
+
Vapid::Directives.register subclass.name.split("::").last.downcase, subclass
|
74
93
|
end
|
75
94
|
|
76
95
|
def define_input_modifier(name, &block)
|
@@ -94,11 +113,8 @@ module Vapid
|
|
94
113
|
# @return [Object] a Nokogiri-friendly hash of modifiers,
|
95
114
|
# or the original input value
|
96
115
|
def render(input = nil)
|
97
|
-
@input = input
|
98
|
-
|
99
|
-
run_before_callback
|
116
|
+
@input = deserialize_input(input)
|
100
117
|
apply_filters
|
101
|
-
|
102
118
|
render_all
|
103
119
|
end
|
104
120
|
|
@@ -121,11 +137,6 @@ module Vapid
|
|
121
137
|
}.reject { |_k, v| v.blank? }
|
122
138
|
end
|
123
139
|
|
124
|
-
def run_before_callback
|
125
|
-
return unless respond_to?(:callback_before_render, true)
|
126
|
-
@input = callback_before_render
|
127
|
-
end
|
128
|
-
|
129
140
|
def apply_filters
|
130
141
|
@input = @args.reduce(@input) do |input, (name, args)|
|
131
142
|
begin
|
@@ -137,6 +148,10 @@ module Vapid
|
|
137
148
|
end
|
138
149
|
end
|
139
150
|
|
151
|
+
def deserialize_input(input)
|
152
|
+
input
|
153
|
+
end
|
154
|
+
|
140
155
|
def parse_expression(expression)
|
141
156
|
parts = expression.split("|")
|
142
157
|
@subject = parts.shift
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Vapid
|
2
|
+
module Directives
|
3
|
+
# Date directive
|
4
|
+
class Date < Vapid::Directive
|
5
|
+
DEFAULT_FORMAT = "%D"
|
6
|
+
|
7
|
+
serialize do |input|
|
8
|
+
::Date.parse(input).to_time.to_i
|
9
|
+
end
|
10
|
+
|
11
|
+
deserialize do |input|
|
12
|
+
::Time.at(input).to_date unless input.blank?
|
13
|
+
end
|
14
|
+
|
15
|
+
# Render
|
16
|
+
renders :text do |input|
|
17
|
+
input.strftime(@format || DEFAULT_FORMAT) unless input.blank?
|
18
|
+
end
|
19
|
+
|
20
|
+
filter :format do |input, fmt|
|
21
|
+
@format = fmt
|
22
|
+
input
|
23
|
+
end
|
24
|
+
|
25
|
+
# Form
|
26
|
+
form do |name, value|
|
27
|
+
date_field_tag name, value: value
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -6,7 +6,7 @@ module Vapid
|
|
6
6
|
|
7
7
|
renders :all
|
8
8
|
|
9
|
-
|
9
|
+
deserialize do |_input|
|
10
10
|
Models::Group.named(subject).try(:records)
|
11
11
|
end
|
12
12
|
|
@@ -22,7 +22,7 @@ module Vapid
|
|
22
22
|
fields, desc_indexes = parse_conditions(args)
|
23
23
|
values = fetch_values(query, fields)
|
24
24
|
sorted_values = sort_values(values, desc_indexes)
|
25
|
-
statement = sorted_values.map { |v| "ID
|
25
|
+
statement = sorted_values.map { |v| "ID='#{v[0]}' DESC" }.join(", ")
|
26
26
|
|
27
27
|
query.order(statement)
|
28
28
|
end
|
@@ -62,7 +62,7 @@ module Vapid
|
|
62
62
|
x[i] = y[i]
|
63
63
|
y[i] = orig
|
64
64
|
end
|
65
|
-
|
65
|
+
|
66
66
|
x <=> y
|
67
67
|
end
|
68
68
|
end
|
data/lib/vapid/server.rb
CHANGED
data/lib/vapid/version.rb
CHANGED
data/vapid.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
21
|
spec.require_paths = ["lib"]
|
22
22
|
|
23
|
-
spec.add_dependency "thor", "~> 0.
|
23
|
+
spec.add_dependency "thor", "~> 0.20"
|
24
24
|
spec.add_dependency "sinatra", "~> 2.0"
|
25
25
|
spec.add_dependency "sinatra-contrib", "~> 2.0"
|
26
26
|
spec.add_dependency "sinatra-activerecord", "~> 2.0"
|
@@ -33,7 +33,6 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_dependency "nokogiri", "~> 1.7"
|
34
34
|
spec.add_dependency "nokogiri-styles", "~> 0.1"
|
35
35
|
spec.add_dependency "bcrypt", "~> 3.1"
|
36
|
-
spec.add_dependency "super_token", "~> 1.0"
|
37
36
|
spec.add_dependency "loofah", "~> 2.0"
|
38
37
|
spec.add_dependency "rake", "~> 11.3"
|
39
38
|
spec.add_dependency "rack-livereload", "~> 0.3"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vapid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Robbin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
19
|
+
version: '0.20'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0.
|
26
|
+
version: '0.20'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: sinatra
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,20 +192,6 @@ dependencies:
|
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: '3.1'
|
195
|
-
- !ruby/object:Gem::Dependency
|
196
|
-
name: super_token
|
197
|
-
requirement: !ruby/object:Gem::Requirement
|
198
|
-
requirements:
|
199
|
-
- - "~>"
|
200
|
-
- !ruby/object:Gem::Version
|
201
|
-
version: '1.0'
|
202
|
-
type: :runtime
|
203
|
-
prerelease: false
|
204
|
-
version_requirements: !ruby/object:Gem::Requirement
|
205
|
-
requirements:
|
206
|
-
- - "~>"
|
207
|
-
- !ruby/object:Gem::Version
|
208
|
-
version: '1.0'
|
209
195
|
- !ruby/object:Gem::Dependency
|
210
196
|
name: loofah
|
211
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -378,6 +364,7 @@ files:
|
|
378
364
|
- lib/vapid/directive.rb
|
379
365
|
- lib/vapid/directives.rb
|
380
366
|
- lib/vapid/directives/audio.rb
|
367
|
+
- lib/vapid/directives/date.rb
|
381
368
|
- lib/vapid/directives/group.rb
|
382
369
|
- lib/vapid/directives/hide.rb
|
383
370
|
- lib/vapid/directives/href.rb
|