flexible_date 0.2.0 → 0.3.0
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.
- data/README.rdoc +13 -3
- data/lib/flexible_date.rb +8 -6
- metadata +39 -46
data/README.rdoc
CHANGED
@@ -18,10 +18,8 @@ And in config/locales/br.yml (or your native language):
|
|
18
18
|
messages:
|
19
19
|
with_suffix:
|
20
20
|
invalid: "inválida."
|
21
|
-
empty: "não pode ser vazia."
|
22
21
|
without_suffix:
|
23
22
|
invalid: "inválida."
|
24
|
-
empty: "não pode ser vazia."
|
25
23
|
|
26
24
|
|
27
25
|
Or, in a reduced form, when messages for with or without suffix are the same:
|
@@ -32,7 +30,6 @@ Or, in a reduced form, when messages for with or without suffix are the same:
|
|
32
30
|
format: "%d/%m/%Y"
|
33
31
|
messages:
|
34
32
|
invalid: "inválida."
|
35
|
-
empty: "não pode ser vazia."
|
36
33
|
|
37
34
|
|
38
35
|
Date format follows the same pattern used by strptime and strftime. This will
|
@@ -69,12 +66,25 @@ Suffix can be customized:
|
|
69
66
|
|
70
67
|
class Event < ActiveRecord::Base
|
71
68
|
flexible_date :judgement_day, :suffix => 'yyz'
|
69
|
+
end
|
72
70
|
|
73
71
|
event = Event.new
|
74
72
|
event.judgement_day_yyz = "28/02/2011"
|
75
73
|
event.judgement_day.should == Date.new(2011, 02, 28)
|
76
74
|
|
77
75
|
|
76
|
+
flexible_date supports conditional execution through the :if option. The object
|
77
|
+
itself is passed as parameter to the block:
|
78
|
+
|
79
|
+
class Event < ActiveRecord::Base
|
80
|
+
flexible_date :payday, :if => Proc.new { |n| n.description.blank? }
|
81
|
+
end
|
82
|
+
|
83
|
+
event = Event.new(:description => "some content")
|
84
|
+
event.payday_flex = "20/05/2011"
|
85
|
+
event.should_not be_valid
|
86
|
+
|
87
|
+
|
78
88
|
== How to install
|
79
89
|
|
80
90
|
Just run:
|
data/lib/flexible_date.rb
CHANGED
@@ -3,6 +3,8 @@ module FlexibleDate
|
|
3
3
|
def flexible_date(*params)
|
4
4
|
params.last.kind_of?(Hash) ? (options, fields = params.pop, params) : (options, fields = {}, params)
|
5
5
|
suffix = options[:suffix] || "flex"
|
6
|
+
condition = options[:if]
|
7
|
+
|
6
8
|
fields.each do |field|
|
7
9
|
unless methods.include?(:flexible_date_validations)
|
8
10
|
validate :flexible_date_validations
|
@@ -32,17 +34,17 @@ module FlexibleDate
|
|
32
34
|
end
|
33
35
|
|
34
36
|
@flexible_date_errors ||= {}
|
35
|
-
if
|
37
|
+
if condition and not condition.call(self)
|
36
38
|
@flexible_date_errors["#{field}".to_sym] = try_t.call(
|
37
|
-
"flexible_date.messages.without_suffix.
|
38
|
-
"flexible_date.messages.
|
39
|
+
"flexible_date.messages.without_suffix.invalid",
|
40
|
+
"flexible_date.messages.invalid")
|
39
41
|
@flexible_date_errors["#{field}_#{suffix}".to_sym] = try_t.call(
|
40
|
-
"flexible_date.messages.with_suffix.
|
41
|
-
"flexible_date.messages.
|
42
|
+
"flexible_date.messages.with_suffix.invalid",
|
43
|
+
"flexible_date.messages.invalid")
|
42
44
|
else
|
43
45
|
begin
|
44
46
|
format = I18n.t("flexible_date.configuration.format")
|
45
|
-
self.send("#{field}=", Date.strptime(value, format))
|
47
|
+
self.send("#{field}=", value.blank? ? "" : Date.strptime(value, format))
|
46
48
|
rescue ArgumentError
|
47
49
|
self.send("#{field}=", nil)
|
48
50
|
@flexible_date_errors["#{field}".to_sym] = try_t.call(
|
metadata
CHANGED
@@ -1,90 +1,83 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: flexible_date
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0
|
4
5
|
prerelease:
|
5
|
-
version: 0.2.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
8
|
-
-
|
7
|
+
authors:
|
8
|
+
- Rodrigo Manhães
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
date: 2011-05-21 00:00:00 -03:00
|
12
|
+
date: 2011-06-10 00:00:00.000000000 -03:00
|
14
13
|
default_executable:
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
17
16
|
name: activerecord
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &15312300 !ruby/object:Gem::Requirement
|
20
18
|
none: false
|
21
|
-
requirements:
|
19
|
+
requirements:
|
22
20
|
- - ~>
|
23
|
-
- !ruby/object:Gem::Version
|
21
|
+
- !ruby/object:Gem::Version
|
24
22
|
version: 3.0.0
|
25
23
|
type: :runtime
|
26
|
-
version_requirements: *id001
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: sqlite3-ruby
|
29
24
|
prerelease: false
|
30
|
-
|
25
|
+
version_requirements: *15312300
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: sqlite3-ruby
|
28
|
+
requirement: &15311840 !ruby/object:Gem::Requirement
|
31
29
|
none: false
|
32
|
-
requirements:
|
30
|
+
requirements:
|
33
31
|
- - ~>
|
34
|
-
- !ruby/object:Gem::Version
|
32
|
+
- !ruby/object:Gem::Version
|
35
33
|
version: 1.3.0
|
36
34
|
type: :development
|
37
|
-
version_requirements: *id002
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: rspec
|
40
35
|
prerelease: false
|
41
|
-
|
36
|
+
version_requirements: *15311840
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rspec
|
39
|
+
requirement: &15311380 !ruby/object:Gem::Requirement
|
42
40
|
none: false
|
43
|
-
requirements:
|
41
|
+
requirements:
|
44
42
|
- - ~>
|
45
|
-
- !ruby/object:Gem::Version
|
43
|
+
- !ruby/object:Gem::Version
|
46
44
|
version: 2.6.0
|
47
45
|
type: :development
|
48
|
-
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *15311380
|
49
48
|
description: Make ActiveRecord understand any date format you want.
|
50
49
|
email: rmanhaes@gmail.com
|
51
50
|
executables: []
|
52
|
-
|
53
51
|
extensions: []
|
54
|
-
|
55
52
|
extra_rdoc_files: []
|
56
|
-
|
57
|
-
files:
|
53
|
+
files:
|
58
54
|
- lib/flexible_date.rb
|
59
55
|
- README.rdoc
|
60
56
|
- LICENSE.txt
|
61
57
|
has_rdoc: true
|
62
58
|
homepage: https://github.com/rodrigomanhaes/flexible_date
|
63
59
|
licenses: []
|
64
|
-
|
65
60
|
post_install_message:
|
66
|
-
rdoc_options:
|
61
|
+
rdoc_options:
|
67
62
|
- --charset=UTF-8
|
68
|
-
require_paths:
|
63
|
+
require_paths:
|
69
64
|
- lib
|
70
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
66
|
none: false
|
72
|
-
requirements:
|
73
|
-
- -
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version:
|
76
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
72
|
none: false
|
78
|
-
requirements:
|
79
|
-
- -
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version:
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
82
77
|
requirements: []
|
83
|
-
|
84
78
|
rubyforge_project:
|
85
|
-
rubygems_version: 1.
|
79
|
+
rubygems_version: 1.6.2
|
86
80
|
signing_key:
|
87
81
|
specification_version: 3
|
88
82
|
summary: Make possible enter date fields in any format into your ActiveRecord models
|
89
83
|
test_files: []
|
90
|
-
|