pencil_pusher 0.0.2 → 0.0.3

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: 38bac29daaef588d28e1ff3dcc72fe2fd61ae158
4
- data.tar.gz: 24cd32266128bb7108ab4e0c98d70fe59bc9cb1d
3
+ metadata.gz: e65dd4877f82625a813ff89e86e542c490cc2733
4
+ data.tar.gz: 30cac5b504ff29b834227d850a87aa89c2f1f004
5
5
  SHA512:
6
- metadata.gz: 82a81198049f01e96e6c244755be0252f7c96c081cd563ae351cbb594be3f2775565c4fc781c42c13555b565a72fb579a9ec9d17d1f2144abb0d5903bbcfc4d9
7
- data.tar.gz: c146e0d14bf237ba0862eca5d70afe89f544db0cb616104791facbd95c0860a98bf02843cf60d80c37dc0f22ef1e24573e63ead16ab6fc8596d412412c01a12d
6
+ metadata.gz: e89544cc94a70bc59cd4696c1dd7e61ded0bf0e8803dcf8d99ffd6cf0be06becf053e6dd8b24638e5dfd8d63db478cd7e8e0f0e29c36f9163848306c5d44c9ad
7
+ data.tar.gz: 8df150739c05735a928d93627e0fabc8aa7be8484a85eb186df6ec98aa2c5997f2f32047fcc6ea2da27f002903db1a294a662b71959f7095443f28a773772a70
@@ -0,0 +1,31 @@
1
+ module PencilPusher
2
+ module Validations
3
+ class DateTimeValidator < ActiveModel::EachValidator
4
+ def validate_each(model, attribute, value)
5
+ @model = model
6
+ @attribute = attribute
7
+
8
+ if value.nil?
9
+ add_error
10
+ else
11
+ coerce_date(value)
12
+ end
13
+ end
14
+
15
+ private
16
+
17
+ attr_reader :model, :attribute
18
+
19
+ def coerce_date(value)
20
+ Date.strptime(value, options.fetch(:format))
21
+ rescue ArgumentError
22
+ add_error
23
+ end
24
+
25
+ def add_error
26
+ model.errors[attribute] << options.fetch(:message)
27
+ end
28
+ end
29
+ end
30
+ end
31
+
@@ -0,0 +1,28 @@
1
+ require 'virtus'
2
+ require 'date'
3
+
4
+ module PencilPusher
5
+ module Virtus
6
+ module Coercer
7
+ class DateTime < ::Virtus::Attribute
8
+ def initialize(type, options)
9
+ @format = options.fetch(:format)
10
+ super
11
+ end
12
+
13
+ def coerce(value)
14
+ format_date(value)
15
+ end
16
+
17
+ private
18
+
19
+ attr_reader :format
20
+
21
+ def format_date(value)
22
+ return value unless value.is_a?(Date)
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.2
4
+ version: 0.0.3
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-02 00:00:00.000000000 Z
12
+ date: 2013-10-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemodel
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - ~>
33
33
  - !ruby/object:Gem::Version
34
- version: 1.0.0beta8
34
+ version: 1.0.0rc2
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ~>
40
40
  - !ruby/object:Gem::Version
41
- version: 1.0.0beta8
41
+ version: 1.0.0rc2
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: pry
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -91,7 +91,7 @@ extra_rdoc_files: []
91
91
  files:
92
92
  - lib/pencil_pusher/have_errors.rb
93
93
  - lib/pencil_pusher/form_builder.rb
94
- - lib/pencil_pusher/virtus/coercer/strict_date_time.rb
94
+ - lib/pencil_pusher/virtus/coercer/date_time.rb
95
95
  - lib/pencil_pusher/have_text_field.rb
96
96
  - lib/pencil_pusher/have_int_field.rb
97
97
  - lib/pencil_pusher/matchers.rb
@@ -99,6 +99,7 @@ files:
99
99
  - lib/pencil_pusher/have_required_choice_field.rb
100
100
  - lib/pencil_pusher/have_required_field.rb
101
101
  - lib/pencil_pusher/have_required_text_field.rb
102
+ - lib/pencil_pusher/validations/date_time_validator.rb
102
103
  - lib/pencil_pusher/shared_fields.rb
103
104
  - lib/pencil_pusher/have_required_float_field.rb
104
105
  - lib/pencil_pusher/form.rb
@@ -1,35 +0,0 @@
1
- require 'virtus'
2
- require 'date'
3
-
4
- module PencilPusher
5
- module Virtus
6
- module Coercer
7
- class StrictDateTime < ::Virtus::Attribute
8
- def initialize(type, options)
9
- @format = options[:format]
10
- super
11
- end
12
-
13
- def coerce(value)
14
- return nil if value.nil?
15
- coerce_date(value)
16
- end
17
-
18
- private
19
-
20
- attr_reader :format
21
-
22
- def coerce_date(value)
23
- return value if value.is_a?(Date)
24
- if format
25
- DateTime.strptime(value, format)
26
- else
27
- Date.parse(value)
28
- end
29
- rescue ArgumentError
30
- nil
31
- end
32
- end
33
- end
34
- end
35
- end