pencil_pusher 0.0.9 → 0.0.10

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: eb17eb0c09ab9f72cbcb754da6c58765bd043b2a
4
- data.tar.gz: 3268165991cf00ca6409d7e8e44579788b193a35
3
+ metadata.gz: 1170aa5c409739d57c8602666eaceaf607e92f0d
4
+ data.tar.gz: c23c1d241b4debfbc1ee6972286969415e9c7857
5
5
  SHA512:
6
- metadata.gz: 2bc66eb6a2297447bf54a15d57dc499842471b1f341ef7828b65c7a1c530ba8945ecc225ecb45b099085629bdd54f9de35e3f2ca99a24f3a8b8684af6c80b659
7
- data.tar.gz: 22ac888104f9ab05727e973072d4ff8353615e2471c220f27d3dd05feeb7a9b39e95d6976f75879b337768484b8240826eb48296b18ee6893b13dc660a74b6ad
6
+ metadata.gz: 09cd33cfe465e5eb5937f943a88286bdb2c5faa963701edaf88c29013eeab9f7e7b43b36e09138f7882965995624206676198801cb71d6df0868345f80e3e901
7
+ data.tar.gz: f9e374990db0487ebf63175adf108b4000ac0776eb97cdb24c60d30afa3c808b75ac884332f33481c111e1f273a491cba35de60c395d622039b585ec41e27354
@@ -1,4 +1,6 @@
1
1
  require 'pencil_pusher/validations/date_time_validator'
2
+ require 'pencil_pusher/validations/optional_date_time_validator'
3
+ require 'pencil_pusher/validations/optional_time_validator'
2
4
  require 'pencil_pusher/validations/time_validator'
3
5
  require 'pencil_pusher/virtus/coercer/date_time'
4
6
  require 'pencil_pusher/virtus/coercer/time'
@@ -21,6 +23,19 @@ module PencilPusher
21
23
  }
22
24
  end
23
25
 
26
+ def optional_date_time_field(options={})
27
+ field_name = options.fetch(:field_name)
28
+ format = options.fetch(:format)
29
+
30
+ attribute field_name, PencilPusher::Virtus::Coercer::DateTime, format: format
31
+
32
+ validates field_name,
33
+ 'pencil_pusher/validations/optional_date_time' => {
34
+ format: format,
35
+ messages: {invalid: options.fetch(:invalid_message)}
36
+ }
37
+ end
38
+
24
39
  def required_time_field(options={})
25
40
  field_name = options.fetch(:field_name)
26
41
  format = options.fetch(:format)
@@ -36,5 +51,18 @@ module PencilPusher
36
51
  }
37
52
  }
38
53
  end
54
+
55
+ def optional_time_field(options={})
56
+ field_name = options.fetch(:field_name)
57
+ format = options.fetch(:format)
58
+
59
+ attribute field_name, PencilPusher::Virtus::Coercer::Time, format: format
60
+
61
+ validates field_name,
62
+ 'pencil_pusher/validations/optional_time' => {
63
+ format: format,
64
+ messages: {invalid: options.fetch(:invalid_message)}
65
+ }
66
+ end
39
67
  end
40
68
  end
@@ -0,0 +1,35 @@
1
+ module PencilPusher
2
+ module Validations
3
+ class OptionalTimeValidator < ActiveModel::EachValidator
4
+ def validate_each(model, attribute, value)
5
+ @model = model
6
+ @attribute = attribute
7
+
8
+ return if blank?(value)
9
+ coerce_time(value)
10
+ end
11
+
12
+ private
13
+
14
+ attr_reader :model, :attribute
15
+
16
+ def messages
17
+ @messages ||= options.fetch(:messages)
18
+ end
19
+
20
+ def coerce_time(value)
21
+ Time.strptime(value, options.fetch(:format))
22
+ rescue ArgumentError
23
+ append_invalid_message
24
+ end
25
+
26
+ def blank?(value)
27
+ value.nil? || value.strip == ''
28
+ end
29
+
30
+ def append_invalid_message
31
+ model.errors[attribute] << messages.fetch(:invalid)
32
+ end
33
+ end
34
+ end
35
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pencil_pusher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Myles Megyesi
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-14 00:00:00.000000000 Z
12
+ date: 2014-08-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemodel
@@ -105,6 +105,7 @@ files:
105
105
  - lib/pencil_pusher/spec_helpers.rb
106
106
  - lib/pencil_pusher/validations/date_time_validator.rb
107
107
  - lib/pencil_pusher/validations/optional_date_time_validator.rb
108
+ - lib/pencil_pusher/validations/optional_time_validator.rb
108
109
  - lib/pencil_pusher/validations/time_validator.rb
109
110
  - lib/pencil_pusher/virtus/coercer/date_time.rb
110
111
  - lib/pencil_pusher/virtus/coercer/time.rb