pencil_pusher 0.0.4 → 0.0.5

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: 07c4fe56c3dc8d165527f6a247bb2ec518508f79
4
- data.tar.gz: 3b9b5d4f2286f3fb6a0b3924a0c9a762a920da8d
3
+ metadata.gz: be612a6c9a9460c07d0ead47877457b29baa5451
4
+ data.tar.gz: 303c48e9bd3f7ba1e7ab90c73a6b629f68477996
5
5
  SHA512:
6
- metadata.gz: e353c05beb2c569ac6e0a1b18907eaa470f4126ab95b7654731b60ecc45d91451a65c6050e64406ccfc42eec48a7dc73f4cb946113efd4d28c0b6b26cc12a9ff
7
- data.tar.gz: d3b979cabb34f948811b8f5885e998af582641cfca70c1d5b894f1a84e9453a3b6c3f6b14441161127a88f39d710f60521820fe1665d51d60b14ff55b615f08a
6
+ metadata.gz: 50a32d42d788ecb897d03e25c1933b222423c5ab5bc2fe046169f9d15433370cc50f797f9ebdc09210e6bed12d2da7082775b559659f2f7c6efc01521c437a16
7
+ data.tar.gz: 1a568ee47673eafa0374d763016570e95358b1be73ee470c7df4554f46fe1156a8a134146bfe2ed2862842f9397d0943c30ad7962abfbd8bc813f9f52a858afd
@@ -1,5 +1,7 @@
1
1
  require 'pencil_pusher/validations/date_time_validator'
2
+ require 'pencil_pusher/validations/time_validator'
2
3
  require 'pencil_pusher/virtus/coercer/date_time'
4
+ require 'pencil_pusher/virtus/coercer/time'
3
5
 
4
6
  module PencilPusher
5
7
  module DateTimeFields
@@ -18,5 +20,21 @@ module PencilPusher
18
20
  }
19
21
  }
20
22
  end
23
+
24
+ def required_time_field(options={})
25
+ field_name = options.fetch(:field_name)
26
+ format = options.fetch(:format)
27
+
28
+ attribute field_name, PencilPusher::Virtus::Coercer::Time, format: format
29
+
30
+ validates field_name,
31
+ 'pencil_pusher/validations/time' => {
32
+ format: format,
33
+ messages: {
34
+ blank: options.fetch(:blank_message),
35
+ invalid: options.fetch(:invalid_message)
36
+ }
37
+ }
38
+ end
21
39
  end
22
40
  end
@@ -0,0 +1,42 @@
1
+ module PencilPusher
2
+ module Validations
3
+ class TimeValidator < ActiveModel::EachValidator
4
+ def validate_each(model, attribute, value)
5
+ @model = model
6
+ @attribute = attribute
7
+
8
+ if blank?(value)
9
+ append_blank_message
10
+ else
11
+ coerce_time(value)
12
+ end
13
+ end
14
+
15
+ private
16
+
17
+ attr_reader :model, :attribute
18
+
19
+ def messages
20
+ @messages ||= options.fetch(:messages)
21
+ end
22
+
23
+ def coerce_time(value)
24
+ Time.strptime(value, options.fetch(:format))
25
+ rescue ArgumentError
26
+ append_invalid_message
27
+ end
28
+
29
+ def blank?(value)
30
+ value.nil? || value.strip == ''
31
+ end
32
+
33
+ def append_blank_message
34
+ model.errors[attribute] << messages.fetch(:blank)
35
+ end
36
+
37
+ def append_invalid_message
38
+ model.errors[attribute] << messages.fetch(:invalid)
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,28 @@
1
+ require 'virtus'
2
+ require 'time'
3
+
4
+ module PencilPusher
5
+ module Virtus
6
+ module Coercer
7
+ class Time < ::Virtus::Attribute
8
+ def initialize(type, options)
9
+ @format = options.fetch(:format)
10
+ super
11
+ end
12
+
13
+ def coerce(value)
14
+ format_time(value)
15
+ end
16
+
17
+ private
18
+
19
+ attr_reader :format
20
+
21
+ def format_time(value)
22
+ return value unless value.is_a?(::Time)
23
+ value.strftime(format)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ 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.4
4
+ version: 0.0.5
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: 2013-10-11 00:00:00.000000000 Z
12
+ date: 2013-10-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemodel
@@ -92,6 +92,7 @@ files:
92
92
  - lib/pencil_pusher/have_errors.rb
93
93
  - lib/pencil_pusher/form_builder.rb
94
94
  - lib/pencil_pusher/virtus/coercer/date_time.rb
95
+ - lib/pencil_pusher/virtus/coercer/time.rb
95
96
  - lib/pencil_pusher/have_text_field.rb
96
97
  - lib/pencil_pusher/have_int_field.rb
97
98
  - lib/pencil_pusher/matchers.rb
@@ -99,6 +100,7 @@ files:
99
100
  - lib/pencil_pusher/have_required_choice_field.rb
100
101
  - lib/pencil_pusher/have_required_field.rb
101
102
  - lib/pencil_pusher/have_required_text_field.rb
103
+ - lib/pencil_pusher/validations/time_validator.rb
102
104
  - lib/pencil_pusher/validations/date_time_validator.rb
103
105
  - lib/pencil_pusher/shared_fields.rb
104
106
  - lib/pencil_pusher/have_required_float_field.rb