vapid 0.1.0 → 0.1.1

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 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