validates_timeliness 2.3.1 → 2.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +5 -0
- data/README.rdoc +5 -6
- data/lib/validates_timeliness/formats.rb +3 -0
- data/lib/validates_timeliness/locale/en.new.yml +18 -0
- data/lib/validates_timeliness/locale/{en.yml → en.old.yml} +0 -0
- data/lib/validates_timeliness/parser.rb +1 -1
- data/lib/validates_timeliness/version.rb +1 -1
- data/lib/validates_timeliness.rb +12 -2
- data/spec/formats_spec.rb +7 -0
- data/spec/ginger_scenarios.rb +1 -1
- data/spec/parser_spec.rb +7 -3
- data/spec/validator_spec.rb +13 -3
- metadata +19 -6
data/CHANGELOG
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
= 2.3.2 [2010-11-07]
|
2
|
+
- Fixed parser for string with timezone offset (thanks sigi)
|
3
|
+
- Support for latest I18n interpolation tokens in locale file
|
4
|
+
- Fixed parser allowing an hour over 12 for AM meridian
|
5
|
+
|
1
6
|
= 2.3.1 [2010-03-19]
|
2
7
|
- Fixed bug where custom attribute writer method for date/times were being overriden
|
3
8
|
|
data/README.rdoc
CHANGED
@@ -31,18 +31,17 @@ time string.
|
|
31
31
|
|
32
32
|
== INSTALLATION:
|
33
33
|
|
34
|
-
As plugin (from master)
|
35
|
-
|
36
|
-
./script/plugin install git://github.com/adzap/validates_timeliness.git
|
37
|
-
|
38
34
|
As gem
|
39
35
|
|
40
|
-
|
36
|
+
gem install validates_timeliness -v '~> 2.3'
|
41
37
|
|
42
38
|
# in environment.rb
|
43
39
|
|
44
|
-
config.gem 'validates_timeliness'
|
40
|
+
config.gem 'validates_timeliness', :version => '~> 2.3'
|
41
|
+
|
42
|
+
As plugin (from master)
|
45
43
|
|
44
|
+
./script/plugin install git://github.com/adzap/validates_timeliness.git -r v2.3
|
46
45
|
|
47
46
|
== USAGE:
|
48
47
|
|
@@ -209,6 +209,8 @@ module ValidatesTimeliness
|
|
209
209
|
values[0..2] = dummy_date_for_time_type if type == :time
|
210
210
|
return values
|
211
211
|
end
|
212
|
+
rescue
|
213
|
+
nil
|
212
214
|
end
|
213
215
|
|
214
216
|
# Delete formats of specified type. Error raised if format not found.
|
@@ -255,6 +257,7 @@ module ValidatesTimeliness
|
|
255
257
|
hour = hour.to_i
|
256
258
|
return hour if meridian.nil?
|
257
259
|
if meridian.delete('.').downcase == 'am'
|
260
|
+
raise if hour == 0 || hour > 12
|
258
261
|
hour == 12 ? 0 : hour
|
259
262
|
else
|
260
263
|
hour == 12 ? hour : hour + 12
|
@@ -0,0 +1,18 @@
|
|
1
|
+
en:
|
2
|
+
activerecord:
|
3
|
+
errors:
|
4
|
+
messages:
|
5
|
+
invalid_date: "is not a valid date"
|
6
|
+
invalid_time: "is not a valid time"
|
7
|
+
invalid_datetime: "is not a valid datetime"
|
8
|
+
is_at: "must be at %{restriction}"
|
9
|
+
before: "must be before %{restriction}"
|
10
|
+
on_or_before: "must be on or before %{restriction}"
|
11
|
+
after: "must be after %{restriction}"
|
12
|
+
on_or_after: "must be on or after %{restriction}"
|
13
|
+
between: "must be between %{earliest} and %{latest}"
|
14
|
+
validates_timeliness:
|
15
|
+
error_value_formats:
|
16
|
+
date: '%Y-%m-%d'
|
17
|
+
time: '%H:%M:%S'
|
18
|
+
datetime: '%Y-%m-%d %H:%M:%S'
|
File without changes
|
data/lib/validates_timeliness.rb
CHANGED
@@ -2,10 +2,18 @@ require 'validates_timeliness/formats'
|
|
2
2
|
require 'validates_timeliness/parser'
|
3
3
|
require 'validates_timeliness/validator'
|
4
4
|
require 'validates_timeliness/validation_methods'
|
5
|
-
|
6
5
|
require 'validates_timeliness/active_record/attribute_methods'
|
7
6
|
require 'validates_timeliness/active_record/multiparameter_attributes'
|
8
7
|
require 'validates_timeliness/action_view/instance_tag'
|
8
|
+
begin
|
9
|
+
i18n_path = $:.grep(/active_support\/vendor\/i18n-/)
|
10
|
+
if i18n_path.empty?
|
11
|
+
require 'i18n/version'
|
12
|
+
else
|
13
|
+
require i18n_path[0] + '/version'
|
14
|
+
end
|
15
|
+
rescue LoadError
|
16
|
+
end if defined?(I18n)
|
9
17
|
|
10
18
|
module ValidatesTimeliness
|
11
19
|
|
@@ -15,7 +23,9 @@ module ValidatesTimeliness
|
|
15
23
|
mattr_accessor :use_time_zones
|
16
24
|
self.use_time_zones = false
|
17
25
|
|
18
|
-
|
26
|
+
I18N_LATEST = defined?(I18n::VERSION) && I18n::VERSION >= '0.4.0'
|
27
|
+
locale_file = I18N_LATEST ? 'en.new.yml' : 'en.old.yml'
|
28
|
+
LOCALE_PATH = File.expand_path(File.join(File.dirname(__FILE__),'validates_timeliness','locale',locale_file))
|
19
29
|
|
20
30
|
class << self
|
21
31
|
|
data/spec/formats_spec.rb
CHANGED
@@ -102,6 +102,13 @@ describe ValidatesTimeliness::Formats do
|
|
102
102
|
time_array.should == [2000,1,1,12,13,14,0]
|
103
103
|
end
|
104
104
|
|
105
|
+
it "should return nil if time hour is out of range for AM meridian" do
|
106
|
+
time_array = formats.parse('13:14 am', :time, :strict => true)
|
107
|
+
time_array.should == nil
|
108
|
+
time_array = formats.parse('00:14 am', :time, :strict => true)
|
109
|
+
time_array.should == nil
|
110
|
+
end
|
111
|
+
|
105
112
|
it "should return date array from time string" do
|
106
113
|
time_array = formats.parse('2000-02-01', :date, :strict => true)
|
107
114
|
time_array.should == [2000,2,1,0,0,0,0]
|
data/spec/ginger_scenarios.rb
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
# ginger spec
|
10
10
|
#
|
11
11
|
Ginger.configure do |config|
|
12
|
-
rails_versions = ['2.0.2', '2.1.2', '2.2.2', '2.3.3', '2.3.4', '2.3.5']
|
12
|
+
rails_versions = ['2.0.2', '2.1.2', '2.2.2', '2.3.3', '2.3.4', '2.3.5', '2.3.6', '2.3.9']
|
13
13
|
|
14
14
|
rails_versions.each do |v|
|
15
15
|
g = Ginger::Scenario.new("Rails #{v}")
|
data/spec/parser_spec.rb
CHANGED
@@ -7,6 +7,10 @@ describe ValidatesTimeliness::Parser do
|
|
7
7
|
it "should return time object for valid time string" do
|
8
8
|
parse("2000-01-01 12:13:14", :datetime).should be_kind_of(Time)
|
9
9
|
end
|
10
|
+
|
11
|
+
it "should return Time object for ISO 8601 string with time zone" do
|
12
|
+
parse("2000-01-01T12:23:42+09:00", :datetime).should be_kind_of(Time)
|
13
|
+
end
|
10
14
|
|
11
15
|
it "should return nil for time string with invalid date part" do
|
12
16
|
parse("2000-02-30 12:13:14", :datetime).should be_nil
|
@@ -19,12 +23,12 @@ describe ValidatesTimeliness::Parser do
|
|
19
23
|
it "should return Time object when passed a Time object" do
|
20
24
|
parse(Time.now, :datetime).should be_kind_of(Time)
|
21
25
|
end
|
22
|
-
|
26
|
+
|
23
27
|
if RAILS_VER >= '2.1'
|
24
28
|
it "should convert time string into current timezone" do
|
25
29
|
Time.zone = 'Melbourne'
|
26
|
-
time = parse("2000-
|
27
|
-
|
30
|
+
time = parse("2000-06-01 12:13:14", :datetime)
|
31
|
+
time.utc_offset.should == 10.hours
|
28
32
|
end
|
29
33
|
end
|
30
34
|
|
data/spec/validator_spec.rb
CHANGED
@@ -3,6 +3,14 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
3
3
|
describe ValidatesTimeliness::Validator do
|
4
4
|
attr_accessor :person, :validator
|
5
5
|
|
6
|
+
if ValidatesTimeliness::I18N_LATEST
|
7
|
+
I18N_REGEXP = /\%\{\w*\}/
|
8
|
+
I18N_INTERPOLATION = '%{%s}'
|
9
|
+
else
|
10
|
+
I18N_REGEXP = /\{\{\w*\}\}/
|
11
|
+
I18N_INTERPOLATION = '{{%s}}'
|
12
|
+
end
|
13
|
+
|
6
14
|
before :all do
|
7
15
|
# freezes time using time_travel plugin
|
8
16
|
Time.now = Time.utc(2000, 1, 1, 0, 0, 0)
|
@@ -513,8 +521,9 @@ describe ValidatesTimeliness::Validator do
|
|
513
521
|
|
514
522
|
describe "localized error messages" do
|
515
523
|
before(:all) do
|
524
|
+
message = "retfa #{I18N_INTERPOLATION}" % 'restriction'
|
516
525
|
translations = {
|
517
|
-
:activerecord => {:errors => {:messages => { :after =>
|
526
|
+
:activerecord => {:errors => {:messages => { :after => message }}},
|
518
527
|
:validates_timeliness => {:error_value_formats => {}}
|
519
528
|
}
|
520
529
|
I18n.backend.store_translations 'zz', translations
|
@@ -616,7 +625,8 @@ describe ValidatesTimeliness::Validator do
|
|
616
625
|
|
617
626
|
describe "I18n" do
|
618
627
|
it "should use global default if locale format missing" do
|
619
|
-
|
628
|
+
message = "after #{I18N_INTERPOLATION}" % 'restriction'
|
629
|
+
I18n.backend.store_translations 'zz', :activerecord => {:errors => {:messages => { :after => message }}}
|
620
630
|
I18n.locale = :zz
|
621
631
|
configure_validator(:type => :datetime, :after => 1.day.from_now)
|
622
632
|
validate_with(:birth_date_and_time, Time.now)
|
@@ -708,6 +718,6 @@ describe ValidatesTimeliness::Validator do
|
|
708
718
|
def error_messages
|
709
719
|
return @error_messages if defined?(@error_messages)
|
710
720
|
messages = defined?(I18n) ? I18n.t('activerecord.errors.messages') : validator.send(:error_messages)
|
711
|
-
@error_messages = messages.inject({}) {|h, (k, v)| h[k] = v.sub(/ (\%s
|
721
|
+
@error_messages = messages.inject({}) {|h, (k, v)| h[k] = v.sub(/ (\%s|#{I18N_REGEXP}).*/, ''); h }
|
712
722
|
end
|
713
723
|
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validates_timeliness
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 7
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 2
|
8
|
+
- 3
|
9
|
+
- 2
|
10
|
+
version: 2.3.2
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Adam Meehan
|
@@ -9,7 +15,7 @@ autorequire: validates_timeliness
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date: 2010-
|
18
|
+
date: 2010-11-07 00:00:00 +11:00
|
13
19
|
default_executable:
|
14
20
|
dependencies: []
|
15
21
|
|
@@ -34,7 +40,8 @@ files:
|
|
34
40
|
- lib/validates_timeliness/active_record/attribute_methods.rb
|
35
41
|
- lib/validates_timeliness/active_record/multiparameter_attributes.rb
|
36
42
|
- lib/validates_timeliness/formats.rb
|
37
|
-
- lib/validates_timeliness/locale/en.yml
|
43
|
+
- lib/validates_timeliness/locale/en.new.yml
|
44
|
+
- lib/validates_timeliness/locale/en.old.yml
|
38
45
|
- lib/validates_timeliness/matcher.rb
|
39
46
|
- lib/validates_timeliness/parser.rb
|
40
47
|
- lib/validates_timeliness/spec/rails/matchers/validate_timeliness.rb
|
@@ -68,21 +75,27 @@ rdoc_options: []
|
|
68
75
|
require_paths:
|
69
76
|
- lib
|
70
77
|
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
71
79
|
requirements:
|
72
80
|
- - ">="
|
73
81
|
- !ruby/object:Gem::Version
|
82
|
+
hash: 3
|
83
|
+
segments:
|
84
|
+
- 0
|
74
85
|
version: "0"
|
75
|
-
version:
|
76
86
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
77
88
|
requirements:
|
78
89
|
- - ">="
|
79
90
|
- !ruby/object:Gem::Version
|
91
|
+
hash: 3
|
92
|
+
segments:
|
93
|
+
- 0
|
80
94
|
version: "0"
|
81
|
-
version:
|
82
95
|
requirements: []
|
83
96
|
|
84
97
|
rubyforge_project: validatestime
|
85
|
-
rubygems_version: 1.3.
|
98
|
+
rubygems_version: 1.3.7
|
86
99
|
signing_key:
|
87
100
|
specification_version: 3
|
88
101
|
summary: Date and time validation plugin for Rails 2.x which allows custom formats
|