american_date 1.1.1 → 1.2.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.
- checksums.yaml +5 -5
- data/CHANGELOG +4 -0
- data/MIT-LICENSE +1 -1
- data/README.rdoc +1 -7
- data/Rakefile +1 -1
- data/lib/american_date.rb +44 -11
- data/spec/american_date_keyword_spec.rb +40 -0
- data/spec/american_date_spec.rb +8 -1
- metadata +42 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 2fd9a4c53baa027ff94f1802a0f51e78bdc68fc9892d49152072b8eb2205f671
|
|
4
|
+
data.tar.gz: d56ba6c7c8a88eeb79a2993fac0c3eb69c2318437a3299eaf087e94213720ce1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: dfd6235350c26f3ed600bdcc5a6497cb9633666bda0df00c7129d142f145edd8fe6e14a8e9aa8b82398abf3210141e50d09a4c2c12021da69183cd3a691282cf
|
|
7
|
+
data.tar.gz: dc035e0b03255603061bd2a419250ab05c57187c60b441b64afe0de3a2730f620e594c46f7a7c7a2b67dfdbc3025c2c9583a2c840306a8db95e98793454461a5
|
data/CHANGELOG
CHANGED
data/MIT-LICENSE
CHANGED
data/README.rdoc
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
ruby-american_date exists to make ruby 1.9+ parse american-style
|
|
4
4
|
month/day/year dates correctly, with behavior matching ruby 1.8.7.
|
|
5
|
-
It can also be used on earlier ruby
|
|
5
|
+
It can also be used on earlier ruby versions, but it is basically
|
|
6
6
|
a noop there.
|
|
7
7
|
|
|
8
8
|
As far as I know, there isn't a gem that already handles this. You
|
|
@@ -25,12 +25,6 @@ standard date parsing methods. This is probably the least invasive
|
|
|
25
25
|
way that works correctly on both the pure-ruby date parser (<1.9.3)
|
|
26
26
|
and the C extension date parser (>=1.9.3).
|
|
27
27
|
|
|
28
|
-
== Tested ruby versions
|
|
29
|
-
|
|
30
|
-
* ruby 1.8.6, 1.8.7, 1.9.2, 1.9.3, 2.0.0, 2.1.0
|
|
31
|
-
* rubinius 1.2.4, 2.2.6
|
|
32
|
-
* jruby 1.6.5, 1.7.9 (both --1.8 and --1.9 modes)
|
|
33
|
-
|
|
34
28
|
== Installation
|
|
35
29
|
|
|
36
30
|
ruby-american_date is distributed as a gem, and can be installed with:
|
data/Rakefile
CHANGED
data/lib/american_date.rb
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
require 'date'
|
|
2
2
|
|
|
3
3
|
if RUBY_VERSION >= '1.9'
|
|
4
|
+
long_date = ' ' * 128 + '2021-10-11'
|
|
5
|
+
limit_supported = begin
|
|
6
|
+
Date.parse(long_date)
|
|
7
|
+
rescue ArgumentError
|
|
8
|
+
(Date.parse(long_date, true, Date::ITALY, :limit=>nil) == Date.new(2021, 10, 11)) rescue false
|
|
9
|
+
else
|
|
10
|
+
false
|
|
11
|
+
end
|
|
12
|
+
|
|
4
13
|
# Modify parsing methods to handle american date format correctly.
|
|
5
|
-
|
|
14
|
+
Date.instance_eval do
|
|
6
15
|
# American date format detected by the library.
|
|
7
16
|
AMERICAN_DATE_RE = eval('%r_(?<!\d)(\d{1,2})/(\d{1,2})/(\d{4}|\d{2})(?!\d)_').freeze
|
|
8
17
|
# Negative lookbehinds, which are not supported in Ruby 1.8
|
|
@@ -12,18 +21,34 @@ if RUBY_VERSION >= '1.9'
|
|
|
12
21
|
# Alias for stdlib Date._parse
|
|
13
22
|
alias _parse_without_american_date _parse
|
|
14
23
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
24
|
+
if limit_supported
|
|
25
|
+
instance_eval(<<-END, __FILE__, __LINE__+1)
|
|
26
|
+
def _parse(string, comp=true, limit: 128)
|
|
27
|
+
_parse_without_american_date(convert_american_to_iso(string), comp, limit: limit)
|
|
28
|
+
end
|
|
29
|
+
END
|
|
30
|
+
else
|
|
31
|
+
# Transform american dates into ISO dates before parsing.
|
|
32
|
+
def _parse(string, comp=true)
|
|
33
|
+
_parse_without_american_date(convert_american_to_iso(string), comp)
|
|
34
|
+
end
|
|
18
35
|
end
|
|
19
36
|
|
|
20
37
|
if RUBY_VERSION >= '1.9.3'
|
|
21
38
|
# Alias for stdlib Date.parse
|
|
22
39
|
alias parse_without_american_date parse
|
|
23
40
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
41
|
+
if limit_supported
|
|
42
|
+
instance_eval(<<-END, __FILE__, __LINE__+1)
|
|
43
|
+
def parse(string, comp=true, start=Date::ITALY, limit: 128)
|
|
44
|
+
parse_without_american_date(convert_american_to_iso(string), comp, start, limit: limit)
|
|
45
|
+
end
|
|
46
|
+
END
|
|
47
|
+
else
|
|
48
|
+
# Transform american dates into ISO dates before parsing.
|
|
49
|
+
def parse(string, comp=true, start=Date::ITALY)
|
|
50
|
+
parse_without_american_date(convert_american_to_iso(string), comp, start)
|
|
51
|
+
end
|
|
27
52
|
end
|
|
28
53
|
end
|
|
29
54
|
|
|
@@ -48,13 +73,21 @@ if RUBY_VERSION >= '1.9'
|
|
|
48
73
|
|
|
49
74
|
if RUBY_VERSION >= '1.9.3'
|
|
50
75
|
# Modify parsing methods to handle american date format correctly.
|
|
51
|
-
|
|
76
|
+
DateTime.instance_eval do
|
|
52
77
|
# Alias for stdlib Date.parse
|
|
53
78
|
alias parse_without_american_date parse
|
|
54
79
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
80
|
+
if limit_supported
|
|
81
|
+
instance_eval(<<-END, __FILE__, __LINE__+1)
|
|
82
|
+
def parse(string, comp=true, start=Date::ITALY, limit: 128)
|
|
83
|
+
parse_without_american_date(convert_american_to_iso(string), comp, start, limit: limit)
|
|
84
|
+
end
|
|
85
|
+
END
|
|
86
|
+
else
|
|
87
|
+
# Transform american dates into ISO dates before parsing.
|
|
88
|
+
def parse(string, comp=true, start=Date::ITALY)
|
|
89
|
+
parse_without_american_date(convert_american_to_iso(string), comp, start)
|
|
90
|
+
end
|
|
58
91
|
end
|
|
59
92
|
end
|
|
60
93
|
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
long_date = ' ' * 128 + '01/02/2003'
|
|
2
|
+
limit_supported = begin
|
|
3
|
+
Date.parse(long_date)
|
|
4
|
+
rescue ArgumentError
|
|
5
|
+
if ((Date.parse(long_date, true, Date::ITALY, :limit=>nil) == Date.new(2003, 1, 2)) rescue false)
|
|
6
|
+
describe "Date.parse" do
|
|
7
|
+
specify "should not support long dates without limit keyword" do
|
|
8
|
+
proc{Date.parse(long_date, true)}.must_raise ArgumentError
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
specify "should not support long dates with limit keyword" do
|
|
12
|
+
Date.parse(long_date, true, limit: 150).must_equal Date.new(2003, 1, 2)
|
|
13
|
+
Date.parse(long_date, true, limit: nil).must_equal Date.new(2003, 1, 2)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe "DateTime.parse" do
|
|
18
|
+
long_datetime = long_date + ' 10:11:12'
|
|
19
|
+
specify "should not support long dates without limit keyword" do
|
|
20
|
+
proc{DateTime.parse(long_datetime, true)}.must_raise ArgumentError
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
specify "should not support long dates with limit keyword" do
|
|
24
|
+
DateTime.parse(long_datetime, true, limit: 150).must_equal DateTime.new(2003, 1, 2, 10, 11, 12)
|
|
25
|
+
DateTime.parse(long_datetime, true, limit: nil).must_equal DateTime.new(2003, 1, 2, 10, 11, 12)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe "Date._parse" do
|
|
30
|
+
specify "should not support long dates without limit keyword" do
|
|
31
|
+
proc{Date._parse(long_date, true)}.must_raise ArgumentError
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
specify "should not support long dates with limit keyword" do
|
|
35
|
+
Date._parse(long_date, true, limit: 150).must_equal(:year=>2003, :mon=>1, :mday=>2)
|
|
36
|
+
Date._parse(long_date, true, limit: nil).must_equal(:year=>2003, :mon=>1, :mday=>2)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
data/spec/american_date_spec.rb
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
require File.join(File.dirname(File.dirname(File.expand_path(__FILE__))), 'lib', 'american_date')
|
|
2
2
|
require 'time'
|
|
3
|
-
require '
|
|
3
|
+
require 'rubygems'
|
|
4
|
+
ENV['MT_NO_PLUGINS'] = '1' # Work around stupid autoloading of plugins
|
|
5
|
+
gem 'minitest'
|
|
6
|
+
require 'minitest/global_expectations/autorun'
|
|
7
|
+
|
|
8
|
+
if RUBY_VERSION >= '2.0'
|
|
9
|
+
require File.join(File.dirname(File.dirname(File.expand_path(__FILE__))), 'spec', 'american_date_keyword_spec')
|
|
10
|
+
end
|
|
4
11
|
|
|
5
12
|
describe "Date.parse" do
|
|
6
13
|
specify "should use american date format for dd/mm/yy" do
|
metadata
CHANGED
|
@@ -1,16 +1,44 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: american_date
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jeremy Evans
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
12
|
-
dependencies:
|
|
13
|
-
|
|
11
|
+
date: 2021-11-17 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: minitest
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '5'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '5'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: minitest-global_expectations
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
description: American style month/day/year date parsing for ruby 1.9+
|
|
14
42
|
email: code@jeremyevans.net
|
|
15
43
|
executables: []
|
|
16
44
|
extensions: []
|
|
@@ -24,17 +52,22 @@ files:
|
|
|
24
52
|
- README.rdoc
|
|
25
53
|
- Rakefile
|
|
26
54
|
- lib/american_date.rb
|
|
55
|
+
- spec/american_date_keyword_spec.rb
|
|
27
56
|
- spec/american_date_spec.rb
|
|
28
57
|
homepage: https://github.com/jeremyevans/ruby-american_date
|
|
29
|
-
licenses:
|
|
30
|
-
|
|
58
|
+
licenses:
|
|
59
|
+
- MIT
|
|
60
|
+
metadata:
|
|
61
|
+
bug_tracker_uri: https://github.com/jeremyevans/ruby-american_date/issues
|
|
62
|
+
changelog_uri: https://github.com/jeremyevans/ruby-american_date/blob/master/CHANGELOG
|
|
63
|
+
source_code_uri: https://github.com/jeremyevans/ruby-american_date
|
|
31
64
|
post_install_message:
|
|
32
65
|
rdoc_options:
|
|
33
66
|
- "--quiet"
|
|
34
67
|
- "--inline-source"
|
|
35
68
|
- "--line-numbers"
|
|
36
69
|
- "--title"
|
|
37
|
-
- 'american_date: American style month/day/year date parsing for ruby 1.9'
|
|
70
|
+
- 'american_date: American style month/day/year date parsing for ruby 1.9+'
|
|
38
71
|
- "--main"
|
|
39
72
|
- README.rdoc
|
|
40
73
|
require_paths:
|
|
@@ -50,9 +83,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
50
83
|
- !ruby/object:Gem::Version
|
|
51
84
|
version: '0'
|
|
52
85
|
requirements: []
|
|
53
|
-
|
|
54
|
-
rubygems_version: 2.4.5.1
|
|
86
|
+
rubygems_version: 3.2.22
|
|
55
87
|
signing_key:
|
|
56
88
|
specification_version: 4
|
|
57
|
-
summary: American style month/day/year date parsing for ruby 1.9
|
|
89
|
+
summary: American style month/day/year date parsing for ruby 1.9+
|
|
58
90
|
test_files: []
|