pencil_pusher 0.0.2 → 0.0.3

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