pencil_pusher 0.0.4 → 0.0.5

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