aratak_date_validator 0.6.1
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/.bundle/config +2 -0
- data/.document +5 -0
- data/.gitignore +8 -0
- data/.rspec +2 -0
- data/.rvmrc +1 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +49 -0
- data/Rakefile +43 -0
- data/Readme.md +45 -0
- data/date_validator.gemspec +31 -0
- data/lib/active_model/validations/date_validator.rb +77 -0
- data/lib/date_validator.rb +15 -0
- data/lib/date_validator/version.rb +4 -0
- data/locales/ca.yml +11 -0
- data/locales/en.yml +8 -0
- data/locales/es.yml +8 -0
- data/locales/nl.yml +8 -0
- data/spec/date_validator_spec.rb +140 -0
- data/spec/spec_helper.rb +20 -0
- metadata +161 -0
data/.bundle/config
ADDED
data/.document
ADDED
data/.gitignore
ADDED
data/.rspec
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm --create use ruby-1.9.2@date_validator
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
date_validator (0.6.1)
|
5
|
+
activemodel (~> 3.1.0.beta1)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
activemodel (3.1.0.beta1)
|
11
|
+
activesupport (= 3.1.0.beta1)
|
12
|
+
bcrypt-ruby (~> 2.1.4)
|
13
|
+
builder (~> 3.0.0)
|
14
|
+
i18n (~> 0.6.0beta1)
|
15
|
+
activesupport (3.1.0.beta1)
|
16
|
+
multi_json (~> 1.0)
|
17
|
+
bcrypt-ruby (2.1.4)
|
18
|
+
bcrypt-ruby (2.1.4-java)
|
19
|
+
bluecloth (2.0.11)
|
20
|
+
builder (3.0.0)
|
21
|
+
diff-lcs (1.1.2)
|
22
|
+
i18n (0.6.0beta1)
|
23
|
+
multi_json (1.0.1)
|
24
|
+
rspec (2.5.0)
|
25
|
+
rspec-core (~> 2.5.0)
|
26
|
+
rspec-expectations (~> 2.5.0)
|
27
|
+
rspec-mocks (~> 2.5.0)
|
28
|
+
rspec-core (2.5.1)
|
29
|
+
rspec-expectations (2.5.0)
|
30
|
+
diff-lcs (~> 1.1.2)
|
31
|
+
rspec-mocks (2.5.0)
|
32
|
+
simplecov (0.3.6)
|
33
|
+
simplecov-html (>= 0.3.7)
|
34
|
+
simplecov-html (0.3.8)
|
35
|
+
tzinfo (0.3.23)
|
36
|
+
yard (0.6.4)
|
37
|
+
|
38
|
+
PLATFORMS
|
39
|
+
java
|
40
|
+
ruby
|
41
|
+
|
42
|
+
DEPENDENCIES
|
43
|
+
activesupport (~> 3.1.0.beta1)
|
44
|
+
bluecloth
|
45
|
+
date_validator!
|
46
|
+
rspec (~> 2.5.0)
|
47
|
+
simplecov
|
48
|
+
tzinfo (~> 0.3.0)
|
49
|
+
yard
|
data/Rakefile
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
3
|
+
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
desc "Run superrtext specs"
|
6
|
+
RSpec::Core::RakeTask.new
|
7
|
+
|
8
|
+
require 'yard'
|
9
|
+
YARD::Rake::YardocTask.new(:docs) do |t|
|
10
|
+
t.files = ['lib/**/*.rb']
|
11
|
+
t.options = ['-m', 'markdown', '--no-private', '-r', 'Readme.md', '--title', 'Date Validator documentation']
|
12
|
+
end
|
13
|
+
|
14
|
+
site = 'doc'
|
15
|
+
source_branch = 'master'
|
16
|
+
deploy_branch = 'gh-pages'
|
17
|
+
|
18
|
+
desc "generate and deploy documentation website to github pages"
|
19
|
+
multitask :pages do
|
20
|
+
puts ">>> Deploying #{deploy_branch} branch to Github Pages <<<"
|
21
|
+
require 'git'
|
22
|
+
repo = Git.open('.')
|
23
|
+
puts "\n>>> Checking out #{deploy_branch} branch <<<\n"
|
24
|
+
repo.branch("#{deploy_branch}").checkout
|
25
|
+
(Dir["*"] - [site]).each { |f| rm_rf(f) }
|
26
|
+
Dir["#{site}/*"].each {|f| mv(f, "./")}
|
27
|
+
rm_rf(site)
|
28
|
+
puts "\n>>> Moving generated site files <<<\n"
|
29
|
+
Dir["**/*"].each {|f| repo.add(f) }
|
30
|
+
repo.status.deleted.each {|f, s| repo.remove(f)}
|
31
|
+
puts "\n>>> Commiting: Site updated at #{Time.now.utc} <<<\n"
|
32
|
+
message = ENV["MESSAGE"] || "Site updated at #{Time.now.utc}"
|
33
|
+
repo.commit(message)
|
34
|
+
puts "\n>>> Pushing generated site to #{deploy_branch} branch <<<\n"
|
35
|
+
repo.push
|
36
|
+
puts "\n>>> Github Pages deploy complete <<<\n"
|
37
|
+
repo.branch("#{source_branch}").checkout
|
38
|
+
end
|
39
|
+
|
40
|
+
task :doc => [:docs]
|
41
|
+
|
42
|
+
task :default => :spec
|
43
|
+
task :test => [:spec]
|
data/Readme.md
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
# date_validator
|
2
|
+
|
3
|
+
A simple date validator for Rails 3. Compatible with Ruby 1.8.7, 1.9.2 and
|
4
|
+
Rubinius 1.2.2.
|
5
|
+
|
6
|
+
$ gem sources -a http://gemcutter.org/
|
7
|
+
$ gem install date_validator
|
8
|
+
|
9
|
+
And I mean simple. In your model:
|
10
|
+
|
11
|
+
validates :expiration_date,
|
12
|
+
:date => {:after => Proc.new { Time.now },
|
13
|
+
:before => Proc.new { Time.now + 1.year } }
|
14
|
+
# Using Proc.new prevents production cache issues
|
15
|
+
|
16
|
+
If you want to check the date against another attribute, you can pass it
|
17
|
+
a Symbol instead of a block:
|
18
|
+
|
19
|
+
# Ensure the expiration date is after the packaging date
|
20
|
+
validates :expiration_date,
|
21
|
+
:date => {:after => :packaging_date}
|
22
|
+
|
23
|
+
For now the available options you can use are `:after`, `:before`,
|
24
|
+
`:after_or_equal_to` and `:before_or_equal_to`.
|
25
|
+
|
26
|
+
If you want to specify a custom message, you can do so in the options hash:
|
27
|
+
|
28
|
+
validates :start_date,
|
29
|
+
:date => {:after => Date.today, :message => 'must be after today'},
|
30
|
+
:on => :create
|
31
|
+
|
32
|
+
Pretty much self-explanatory! :)
|
33
|
+
|
34
|
+
## Note on Patches/Pull Requests
|
35
|
+
|
36
|
+
* Fork the project.
|
37
|
+
* Make your feature addition or bug fix.
|
38
|
+
* Add tests for it. This is important so I don't break it in a
|
39
|
+
future version unintentionally.
|
40
|
+
* Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
41
|
+
* Send us a pull request. Bonus points for topic branches.
|
42
|
+
|
43
|
+
## Copyright
|
44
|
+
|
45
|
+
Copyright (c) 2011 Codegram. See LICENSE for details.
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "date_validator/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "aratak_date_validator"
|
7
|
+
s.version = DateValidator::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Oriol Gual", "Josep M. Bach", "Josep Jaume Rey"]
|
10
|
+
s.email = ["info@codegram.com", "alexey@osipenko.in.ua"]
|
11
|
+
s.homepage = "http://github.com/aratak/date_validator"
|
12
|
+
s.summary = %q{A simple, ORM agnostic, Ruby 1.9 compatible date validator for Rails 3, based on ActiveModel.}
|
13
|
+
s.description = %q{A simple, ORM agnostic, Ruby 1.9 compatible date validator for Rails 3, based on ActiveModel. Currently supporting :after, :before, :after_or_equal_to and :before_or_equal_to options.}
|
14
|
+
|
15
|
+
s.rubyforge_project = "date_validator"
|
16
|
+
|
17
|
+
s.add_runtime_dependency 'activemodel', '>= 3.0.0', '< 3.2'
|
18
|
+
|
19
|
+
s.add_development_dependency 'rspec', '~> 2.5.0'
|
20
|
+
s.add_development_dependency 'simplecov'
|
21
|
+
s.add_development_dependency 'activesupport', '>= 3.0.0', '< 3.2'
|
22
|
+
s.add_development_dependency 'tzinfo', '~> 0.3.0'
|
23
|
+
|
24
|
+
s.add_development_dependency 'yard'
|
25
|
+
s.add_development_dependency 'bluecloth'
|
26
|
+
|
27
|
+
s.files = `git ls-files`.split("\n")
|
28
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
29
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
30
|
+
s.require_paths = ["lib"]
|
31
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'active_model/validations'
|
2
|
+
|
3
|
+
# ActiveModel Rails module.
|
4
|
+
module ActiveModel
|
5
|
+
|
6
|
+
# ActiveModel::Validations Rails module. Contains all the default validators.
|
7
|
+
module Validations
|
8
|
+
|
9
|
+
# Date Validator. Inherits from ActiveModel::EachValidator.
|
10
|
+
#
|
11
|
+
# Responds to the regular validator API methods `#check_validity` and
|
12
|
+
# `#validate_each`.
|
13
|
+
class DateValidator < ActiveModel::EachValidator
|
14
|
+
|
15
|
+
# Implemented checks and their associated operators.
|
16
|
+
CHECKS = { :after => :>, :after_or_equal_to => :>=,
|
17
|
+
:before => :<, :before_or_equal_to => :<=}.freeze
|
18
|
+
|
19
|
+
# Call `#initialize` on the superclass, adding a default
|
20
|
+
# `:allow_nil => false` option.
|
21
|
+
def initialize(options)
|
22
|
+
super(options.reverse_merge(:allow_nil => false))
|
23
|
+
end
|
24
|
+
|
25
|
+
# Validates the arguments passed to the validator.
|
26
|
+
#
|
27
|
+
# They must be either any kind of Time, a Proc, or a Symbol.
|
28
|
+
def check_validity!
|
29
|
+
keys = CHECKS.keys
|
30
|
+
options.slice(*keys).each do |option, value|
|
31
|
+
next if is_time?(value) || value.is_a?(Proc) || value.is_a?(Symbol) || (defined?(ActiveSupport::TimeWithZone) and value.is_a? ActiveSupport::TimeWithZone)
|
32
|
+
raise ArgumentError, ":#{option} must be a time, a date, a time_with_zone, a symbol or a proc"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# The actual validator method. It is called when ActiveRecord iterates
|
37
|
+
# over all the validators.
|
38
|
+
def validate_each(record, attr_name, value)
|
39
|
+
return if options[:allow_nil] && value.nil?
|
40
|
+
|
41
|
+
unless value
|
42
|
+
record.errors.add(attr_name, :not_a_date, options)
|
43
|
+
return
|
44
|
+
end
|
45
|
+
|
46
|
+
options.slice(*CHECKS.keys).each do |option, option_value|
|
47
|
+
option_value = option_value.call(record) if option_value.is_a?(Proc)
|
48
|
+
option_value = record.send(option_value) if option_value.is_a?(Symbol)
|
49
|
+
|
50
|
+
original_value = value
|
51
|
+
original_option_value = option_value
|
52
|
+
|
53
|
+
# To enable to_i conversion, these types must be converted to Datetimes
|
54
|
+
if defined?(ActiveSupport::TimeWithZone)
|
55
|
+
option_value = option_value.to_datetime if option_value.is_a?(ActiveSupport::TimeWithZone)
|
56
|
+
value = value.to_datetime if value.is_a?(ActiveSupport::TimeWithZone)
|
57
|
+
end
|
58
|
+
|
59
|
+
if defined?(Date)
|
60
|
+
option_value = option_value.to_datetime if option_value.is_a?(Date)
|
61
|
+
value = value.to_datetime if value.is_a?(Date)
|
62
|
+
end
|
63
|
+
|
64
|
+
unless is_time?(option_value) && value.to_i.send(CHECKS[option], option_value.to_i)
|
65
|
+
record.errors.add(attr_name, option, options.merge(:value => original_value, :date => original_option_value))
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
private
|
71
|
+
|
72
|
+
def is_time?(object)
|
73
|
+
object.is_a?(Time) || (defined?(Date) and object.is_a?(Date)) || (defined?(ActiveSupport::TimeWithZone) and object.is_a?(ActiveSupport::TimeWithZone))
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'active_model/validations/date_validator'
|
2
|
+
require 'active_support/i18n'
|
3
|
+
|
4
|
+
# A simple date validator for Rails 3.
|
5
|
+
#
|
6
|
+
# @example
|
7
|
+
# validates :expiration_date,
|
8
|
+
# :date => {:after => Proc.new { Time.now },
|
9
|
+
# :before => Proc.new { Time.now + 1.year } }
|
10
|
+
# # Using Proc.new prevents production cache issues
|
11
|
+
#
|
12
|
+
module DateValidator
|
13
|
+
end
|
14
|
+
|
15
|
+
I18n.load_path += Dir[File.expand_path(File.join(File.dirname(__FILE__), '../locales', '*.yml')).to_s]
|
data/locales/ca.yml
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# Sample localization file for English. Add more files in this directory for other locales.
|
2
|
+
# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
|
3
|
+
|
4
|
+
ca:
|
5
|
+
errors:
|
6
|
+
messages:
|
7
|
+
not_a_date: "is not a date"
|
8
|
+
after: "must be after %{date}"
|
9
|
+
after_or_equal_to: "must be after or equal to %{date}"
|
10
|
+
before: "must be before %{date}"
|
11
|
+
before_or_equal_to: "must be before or equal to %{date}"
|
data/locales/en.yml
ADDED
data/locales/es.yml
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
es:
|
2
|
+
errors:
|
3
|
+
messages:
|
4
|
+
not_a_date: "no es una fecha"
|
5
|
+
after: "tiene que ser posterior a %{date}"
|
6
|
+
after_or_equal_to: "tiene que ser posterior o igual a %{date}"
|
7
|
+
before: "tiene que ser antes de %{date}"
|
8
|
+
before_or_equal_to: "tiene que ser antes o igual a %{date}"
|
data/locales/nl.yml
ADDED
@@ -0,0 +1,140 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module ActiveModel
|
4
|
+
module Validations
|
5
|
+
|
6
|
+
describe DateValidator do
|
7
|
+
|
8
|
+
before do
|
9
|
+
TestRecord.reset_callbacks(:validate)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "checks validity of the arguments" do
|
13
|
+
[3, "foo", 1..6].each do |wrong_argument|
|
14
|
+
expect {
|
15
|
+
TestRecord.validates :expiration_date,
|
16
|
+
:date => {:before => wrong_argument}
|
17
|
+
}.to raise_error(ArgumentError, ":before must be a time, a date, a time_with_zone, a symbol or a proc")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it "complains when no options are provided" do
|
22
|
+
TestRecord.validates :expiration_date,
|
23
|
+
:date => {:before => Time.now}
|
24
|
+
|
25
|
+
model = TestRecord.new(nil)
|
26
|
+
model.should_not be_valid
|
27
|
+
model.errors[:expiration_date].should eq(["is not a date"])
|
28
|
+
end
|
29
|
+
|
30
|
+
[:valid,:invalid].each do |should_be|
|
31
|
+
_context = should_be == :valid ? 'when value validates correctly' : 'when value does not match validation requirements'
|
32
|
+
|
33
|
+
context _context do
|
34
|
+
[:after, :before, :after_or_equal_to, :before_or_equal_to].each do |check|
|
35
|
+
now = Time.now.to_datetime
|
36
|
+
|
37
|
+
model_date = case check
|
38
|
+
when :after then should_be == :valid ? now + 21000 : now - 1
|
39
|
+
when :before then should_be == :valid ? now - 21000 : now + 1
|
40
|
+
when :after_or_equal_to then should_be == :valid ? now : now - 21000
|
41
|
+
when :before_or_equal_to then should_be == :valid ? now : now + 21000
|
42
|
+
end
|
43
|
+
|
44
|
+
it "ensures that an attribute is #{should_be} when #{should_be == :valid ? 'respecting' : 'offending' } the #{check} check" do
|
45
|
+
TestRecord.validates :expiration_date,
|
46
|
+
:date => {:"#{check}" => now}
|
47
|
+
|
48
|
+
model = TestRecord.new(model_date)
|
49
|
+
should_be == :valid ? model.should(be_valid, "an attribute should be valid when respecting the #{check} check")\
|
50
|
+
: model.should_not(be_valid, "an attribute should be invalidwhen offending the #{check} check")
|
51
|
+
end
|
52
|
+
|
53
|
+
if _context == 'when value does not match validation requirements'
|
54
|
+
it "yields a default error message indicating that value must be #{check} validation requirements" do
|
55
|
+
TestRecord.validates :expiration_date,
|
56
|
+
:date => {:"#{check}" => now}
|
57
|
+
|
58
|
+
model = TestRecord.new(model_date)
|
59
|
+
model.should_not be_valid
|
60
|
+
model.errors[:expiration_date].should eq(["must be " + check.to_s.gsub('_',' ') + " #{now}"])
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
if _context == 'when value does not match validation requirements'
|
66
|
+
now = Time.now.to_datetime
|
67
|
+
|
68
|
+
it "allows for a custom validation message" do
|
69
|
+
TestRecord.validates :expiration_date,
|
70
|
+
:date => {:before_or_equal_to => now,
|
71
|
+
:message => 'must be after Christmas'}
|
72
|
+
|
73
|
+
model = TestRecord.new(now + 21000)
|
74
|
+
model.should_not be_valid
|
75
|
+
model.errors[:expiration_date].should eq(["must be after Christmas"])
|
76
|
+
end
|
77
|
+
|
78
|
+
it "allows custom validation message to be handled by I18n" do
|
79
|
+
custom_message = 'Custom Date Message'
|
80
|
+
I18n.backend.store_translations('en', {:errors => {:messages => {:not_a_date => custom_message}}})
|
81
|
+
|
82
|
+
TestRecord.validates :expiration_date, :date => true
|
83
|
+
|
84
|
+
model = TestRecord.new(nil)
|
85
|
+
model.should_not be_valid
|
86
|
+
model.errors[:expiration_date].should eq([custom_message])
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
extra_types = [:proc, :symbol]
|
94
|
+
extra_types.push(:date) if defined?(Date) and defined?(DateTime)
|
95
|
+
extra_types.push(:time_with_zone) if defined?(ActiveSupport::TimeWithZone)
|
96
|
+
|
97
|
+
extra_types.each do |type|
|
98
|
+
it "accepts a #{type} as an argument to a check" do
|
99
|
+
case type
|
100
|
+
when :proc then
|
101
|
+
expect {
|
102
|
+
TestRecord.validates :expiration_date,
|
103
|
+
:date => {:after => Proc.new{Time.now + 21000}}
|
104
|
+
}.to_not raise_error
|
105
|
+
when :symbol then
|
106
|
+
expect {
|
107
|
+
TestRecord.send(:define_method, :min_date, lambda { Time.now + 21000 })
|
108
|
+
TestRecord.validates :expiration_date, :date => {:after => :min_date}
|
109
|
+
}.to_not raise_error
|
110
|
+
when :date then
|
111
|
+
expect {
|
112
|
+
TestRecord.validates :expiration_date, :date => {:after => Time.now.to_date}
|
113
|
+
}.to_not raise_error
|
114
|
+
when :time_with_zone then
|
115
|
+
expect {
|
116
|
+
Time.zone = "Hawaii"
|
117
|
+
TestRecord.validates :expiration_date, :date => {:before => Time.zone.parse((Time.now + 21000).to_s)}
|
118
|
+
}.to_not raise_error
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
it "gracefully handles an unexpected result from a proc argument evaluation" do
|
124
|
+
TestRecord.validates :expiration_date,
|
125
|
+
:date => {:after => Proc.new{ nil }}
|
126
|
+
|
127
|
+
TestRecord.new(Time.now).should_not be_valid
|
128
|
+
end
|
129
|
+
|
130
|
+
it "gracefully handles an unexpected result from a symbol argument evaluation" do
|
131
|
+
TestRecord.send(:define_method, :min_date, lambda { nil })
|
132
|
+
TestRecord.validates :expiration_date,
|
133
|
+
:date => {:after => :min_date}
|
134
|
+
|
135
|
+
TestRecord.new(Time.now).should_not be_valid
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
end
|
140
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
SimpleCov.start do
|
3
|
+
add_group "Lib", "lib"
|
4
|
+
end
|
5
|
+
|
6
|
+
require 'rspec'
|
7
|
+
|
8
|
+
require 'active_support/time' # For testing Date and TimeWithZone objects
|
9
|
+
|
10
|
+
require 'active_model'
|
11
|
+
require 'date_validator'
|
12
|
+
|
13
|
+
class TestRecord
|
14
|
+
include ActiveModel::Validations
|
15
|
+
attr_accessor :expiration_date
|
16
|
+
|
17
|
+
def initialize(expiration_date)
|
18
|
+
@expiration_date = expiration_date
|
19
|
+
end
|
20
|
+
end
|
metadata
ADDED
@@ -0,0 +1,161 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: aratak_date_validator
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.6.1
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Oriol Gual
|
9
|
+
- Josep M. Bach
|
10
|
+
- Josep Jaume Rey
|
11
|
+
autorequire:
|
12
|
+
bindir: bin
|
13
|
+
cert_chain: []
|
14
|
+
|
15
|
+
date: 2011-05-11 00:00:00 +03:00
|
16
|
+
default_executable:
|
17
|
+
dependencies:
|
18
|
+
- !ruby/object:Gem::Dependency
|
19
|
+
name: activemodel
|
20
|
+
prerelease: false
|
21
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
22
|
+
none: false
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.0.0
|
27
|
+
- - <
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: "3.2"
|
30
|
+
type: :runtime
|
31
|
+
version_requirements: *id001
|
32
|
+
- !ruby/object:Gem::Dependency
|
33
|
+
name: rspec
|
34
|
+
prerelease: false
|
35
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
36
|
+
none: false
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.5.0
|
41
|
+
type: :development
|
42
|
+
version_requirements: *id002
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: simplecov
|
45
|
+
prerelease: false
|
46
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: "0"
|
52
|
+
type: :development
|
53
|
+
version_requirements: *id003
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: activesupport
|
56
|
+
prerelease: false
|
57
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 3.0.0
|
63
|
+
- - <
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: "3.2"
|
66
|
+
type: :development
|
67
|
+
version_requirements: *id004
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: tzinfo
|
70
|
+
prerelease: false
|
71
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.3.0
|
77
|
+
type: :development
|
78
|
+
version_requirements: *id005
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: yard
|
81
|
+
prerelease: false
|
82
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: "0"
|
88
|
+
type: :development
|
89
|
+
version_requirements: *id006
|
90
|
+
- !ruby/object:Gem::Dependency
|
91
|
+
name: bluecloth
|
92
|
+
prerelease: false
|
93
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: "0"
|
99
|
+
type: :development
|
100
|
+
version_requirements: *id007
|
101
|
+
description: A simple, ORM agnostic, Ruby 1.9 compatible date validator for Rails 3, based on ActiveModel. Currently supporting :after, :before, :after_or_equal_to and :before_or_equal_to options.
|
102
|
+
email:
|
103
|
+
- info@codegram.com
|
104
|
+
- alexey@osipenko.in.ua
|
105
|
+
executables: []
|
106
|
+
|
107
|
+
extensions: []
|
108
|
+
|
109
|
+
extra_rdoc_files: []
|
110
|
+
|
111
|
+
files:
|
112
|
+
- .bundle/config
|
113
|
+
- .document
|
114
|
+
- .gitignore
|
115
|
+
- .rspec
|
116
|
+
- .rvmrc
|
117
|
+
- Gemfile
|
118
|
+
- Gemfile.lock
|
119
|
+
- Rakefile
|
120
|
+
- Readme.md
|
121
|
+
- date_validator.gemspec
|
122
|
+
- lib/active_model/validations/date_validator.rb
|
123
|
+
- lib/date_validator.rb
|
124
|
+
- lib/date_validator/version.rb
|
125
|
+
- locales/ca.yml
|
126
|
+
- locales/en.yml
|
127
|
+
- locales/es.yml
|
128
|
+
- locales/nl.yml
|
129
|
+
- spec/date_validator_spec.rb
|
130
|
+
- spec/spec_helper.rb
|
131
|
+
has_rdoc: true
|
132
|
+
homepage: http://github.com/aratak/date_validator
|
133
|
+
licenses: []
|
134
|
+
|
135
|
+
post_install_message:
|
136
|
+
rdoc_options: []
|
137
|
+
|
138
|
+
require_paths:
|
139
|
+
- lib
|
140
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
141
|
+
none: false
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: "0"
|
146
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
|
+
none: false
|
148
|
+
requirements:
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: "0"
|
152
|
+
requirements: []
|
153
|
+
|
154
|
+
rubyforge_project: date_validator
|
155
|
+
rubygems_version: 1.6.2
|
156
|
+
signing_key:
|
157
|
+
specification_version: 3
|
158
|
+
summary: A simple, ORM agnostic, Ruby 1.9 compatible date validator for Rails 3, based on ActiveModel.
|
159
|
+
test_files:
|
160
|
+
- spec/date_validator_spec.rb
|
161
|
+
- spec/spec_helper.rb
|