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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b99f1a8446492ac2d5abf7a36c03ab771bfeff8f
4
- data.tar.gz: 58e5c6732a676566be85c7a2d63d04c672d21889
3
+ metadata.gz: 504471e3bef72a241996ded672149874d00f0eaf
4
+ data.tar.gz: 109650d32dbb7d98efb77346628f72168ad6ca4f
5
5
  SHA512:
6
- metadata.gz: 4a7cae0ccf832297e4c31d15b244817e4aa9248d1bd837b7cbdeea70ffabe7accf90ec2a0d323ef6e9a9ed657e59070de8896aa375769048c06a8d7921e7db2c
7
- data.tar.gz: 1fb354a0209079ec0663f468e56654157da5e3351d1d218f7d46142905145231be4b0bbf1f29b5ceb11a5751ce73d06518412c255f01449e1b09c890c8ec8033
6
+ metadata.gz: ed753ed4e16155ce5562d4059a09c61ad3f5fe9a3dc7658569e4b7e46c21b9e7809c2583d4dba9a14fb9aec1dc0b59465ea2dcbdc265a9e8da8ed15d91e6de0a
7
+ data.tar.gz: 7b177df1ded95804960165af8578b4213a17dbf63dfd5519b5c0ef62c881c109343efedf3f981dadde1063024ff457809d3d26aad1d6475e59dff2518861ace6
data/lib/vapid.rb CHANGED
@@ -17,8 +17,4 @@ module Vapid
17
17
  autoload :Server, "vapid/server"
18
18
  autoload :Settings, "vapid/settings"
19
19
  autoload :Template, "vapid/template"
20
-
21
- def self.register_directive(name, klass)
22
- Directives.register name, klass
23
- end
24
20
  end
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.abort_on_exception = true
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
- FileUtils.mkdir_p(settings.project_uploads)
237
- File.open File.join(settings.project_uploads, val[:filename]), "wb" do |file|
238
- file.write val[:tempfile].read
239
- end
240
- val = "/uploads/#{val[:filename]}"
241
- end
242
- @record.content[key] = val
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|
@@ -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 before_render(&block)
67
- define_input_modifier :callback_before_render, &block
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.register_directive subclass.name.split("::").last.downcase, subclass
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
- before_render do
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=#{v[0]} DESC" }.join(", ")
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
@@ -6,6 +6,11 @@ module Vapid
6
6
  renders :attributes do |input|
7
7
  { href: input } if input.present?
8
8
  end
9
+
10
+ # Form
11
+ form do |name, value|
12
+ url_field_tag name, value: value
13
+ end
9
14
  end
10
15
  end
11
16
  end
data/lib/vapid/server.rb CHANGED
@@ -17,6 +17,7 @@ module Vapid
17
17
  class Server < Sinatra::Base
18
18
  configure do
19
19
  enable :logging
20
+ set :quiet, true
20
21
 
21
22
  set :gem_pwd, File.dirname(__FILE__)
22
23
  set :gem_assets, File.join(gem_pwd, "assets")
data/lib/vapid/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # Version
2
2
  module Vapid
3
- VERSION = "0.1.0".freeze
3
+ VERSION = "0.1.1".freeze
4
4
  end
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.1"
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.0
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-08-01 00:00:00.000000000 Z
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.1'
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.1'
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