american_date 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d6fc099c8faff7f7a245c01f54bcc32c4770fa8d
4
+ data.tar.gz: 0b072c3a750fc6fb6ac0bc81c730ff1fae5e6889
5
+ SHA512:
6
+ metadata.gz: deff8c7fd14b1b48d4e88fd6f3257931623206746cdd2f8947f329ec441edf136fe94b3fce081cecfb4e2601563669b0bdc5ed33288a06e690ce14fefa8e4803
7
+ data.tar.gz: 1a9b4920b7396ba32f4589168943fa1870d256e3ef6fa5c7ed529fc396fc9d05d32f53513b8cff6a4b61f893c2ddd7292276a7b2a90058dbcf95a4f869b29377
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ === HEAD
2
+
3
+ * Don't freeze the regular expression used, to allow easier overrides (jeremyevans)
4
+
5
+ * Raise TypeError if passed object not implicitly convertible to String (jeremyevans) (#6)
6
+
1
7
  === 1.0.0 (2011-12-12)
2
8
 
3
9
  * Initial public release
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011 Jeremy Evans
1
+ Copyright (c) 2011,2013 Jeremy Evans
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to
data/README.rdoc CHANGED
@@ -28,7 +28,7 @@ That may change in the future if it is determined to be safe.
28
28
 
29
29
  == Tested ruby versions
30
30
 
31
- * ruby 1.8.6, 1.8.7, 1.9.2, 1.9.3
31
+ * ruby 1.8.6, 1.8.7, 1.9.2, 1.9.3, 2.0.0
32
32
  * rubinius 1.2.4
33
33
  * jruby 1.6.5 (both --1.8 and --1.9 modes)
34
34
 
data/lib/american_date.rb CHANGED
@@ -4,7 +4,7 @@ if RUBY_VERSION >= '1.9'
4
4
  # Modify parsing methods to handle american date format correctly.
5
5
  class << Date
6
6
  # American date format detected by the library.
7
- AMERICAN_DATE_RE = %r_\A\s*(\d{1,2})/(\d{1,2})/(\d{4}|\d{2})_.freeze
7
+ AMERICAN_DATE_RE = %r_\A\s*(\d{1,2})/(\d{1,2})/(\d{4}|\d{2})_
8
8
 
9
9
  # Alias for stdlib Date._parse
10
10
  alias _parse_without_american_date _parse
@@ -28,6 +28,17 @@ if RUBY_VERSION >= '1.9'
28
28
 
29
29
  # Transform american date fromat into ISO format.
30
30
  def convert_american_to_iso(string)
31
+ unless string.is_a?(String)
32
+ if string.respond_to?(:to_str)
33
+ str = string.to_str
34
+ unless str.is_a?(String)
35
+ raise TypeError, "no implicit conversion of #{string.inspect} into String"
36
+ end
37
+ string = str
38
+ else
39
+ raise TypeError, "no implicit conversion of #{string.inspect} into String"
40
+ end
41
+ end
31
42
  string.sub(AMERICAN_DATE_RE){|m| "#$3-#$1-#$2"}
32
43
  end
33
44
  end
@@ -26,6 +26,26 @@ describe "Date.parse" do
26
26
  specify "should ignore preceding whitespace" do
27
27
  Date.parse(' 01/02/2003').should == Date.new(2003, 1, 2)
28
28
  end
29
+
30
+ if RUBY_VERSION > '1.9'
31
+ specify "should raise TypeError for invalid values" do
32
+ [nil, 1, 1.0, [], {}].each do |x|
33
+ proc{Date.parse(x)}.should raise_error(TypeError)
34
+ end
35
+ end
36
+
37
+ specify "should handle values implicitly convertible to String" do
38
+ o = Object.new
39
+ def o.to_str() '01/02/2003' end
40
+ Date.parse(o).should == Date.new(2003, 1, 2)
41
+ end
42
+
43
+ specify "should handle values implicitly convertible to String" do
44
+ o = Object.new
45
+ def o.to_str() 1 end
46
+ proc{Date.parse(o)}.should raise_error(TypeError)
47
+ end
48
+ end
29
49
  end
30
50
 
31
51
  describe "DateTime.parse" do
@@ -57,6 +77,26 @@ describe "DateTime.parse" do
57
77
  specify "should work with times" do
58
78
  DateTime.parse('01/02/2003 10:20:30').should == DateTime.new(2003, 1, 2, 10, 20, 30)
59
79
  end
80
+
81
+ if RUBY_VERSION > '1.9'
82
+ specify "should raise TypeError for invalid values" do
83
+ [nil, 1, 1.0, [], {}].each do |x|
84
+ proc{DateTime.parse(x)}.should raise_error(TypeError)
85
+ end
86
+ end
87
+
88
+ specify "should handle values implicitly convertible to String" do
89
+ o = Object.new
90
+ def o.to_str() '01/02/2003' end
91
+ DateTime.parse(o).should == DateTime.new(2003, 1, 2)
92
+ end
93
+
94
+ specify "should handle values implicitly convertible to String" do
95
+ o = Object.new
96
+ def o.to_str() 1 end
97
+ proc{DateTime.parse(o)}.should raise_error(TypeError)
98
+ end
99
+ end
60
100
  end
61
101
 
62
102
  describe "Time.parse" do
@@ -87,6 +127,26 @@ describe "Time.parse" do
87
127
  specify "should work with times" do
88
128
  Time.parse('01/02/2003 10:20:30').should == Time.local(2003, 1, 2, 10, 20, 30)
89
129
  end
130
+
131
+ if RUBY_VERSION > '1.9'
132
+ specify "should raise TypeError for invalid values" do
133
+ [nil, 1, 1.0, [], {}].each do |x|
134
+ proc{Time.parse(x)}.should raise_error(TypeError)
135
+ end
136
+ end
137
+
138
+ specify "should handle values implicitly convertible to String" do
139
+ o = Object.new
140
+ def o.to_str() '01/02/2003' end
141
+ Time.parse(o).should == Time.local(2003, 1, 2)
142
+ end
143
+
144
+ specify "should handle values implicitly convertible to String" do
145
+ o = Object.new
146
+ def o.to_str() 1 end
147
+ proc{Time.parse(o)}.should raise_error(TypeError)
148
+ end
149
+ end
90
150
  end
91
151
 
92
152
  describe "Date._parse" do
@@ -118,4 +178,24 @@ describe "Date._parse" do
118
178
  specify "should work with times" do
119
179
  DateTime._parse('01/02/2003 10:20:30').should == {:year=>2003, :mon=>1, :mday=>2, :hour=>10, :min=>20, :sec=>30}
120
180
  end
181
+
182
+ if RUBY_VERSION > '1.9'
183
+ specify "should raise TypeError for invalid values" do
184
+ [nil, 1, 1.0, [], {}].each do |x|
185
+ proc{DateTime._parse(x)}.should raise_error(TypeError)
186
+ end
187
+ end
188
+
189
+ specify "should handle values implicitly convertible to String" do
190
+ o = Object.new
191
+ def o.to_str() '01/02/2003' end
192
+ DateTime._parse(o).should == {:year=>2003, :mon=>1, :mday=>2}
193
+ end
194
+
195
+ specify "should handle values implicitly convertible to String" do
196
+ o = Object.new
197
+ def o.to_str() 1 end
198
+ proc{DateTime._parse(o)}.should raise_error(TypeError)
199
+ end
200
+ end
121
201
  end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: american_date
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
5
- prerelease:
4
+ version: 1.0.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jeremy Evans
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2011-12-12 00:00:00.000000000 Z
11
+ date: 2013-03-20 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: American style month/day/year date parsing for ruby 1.9
15
14
  email: code@jeremyevans.net
@@ -28,33 +27,32 @@ files:
28
27
  - lib/american_date.rb
29
28
  homepage: https://github.com/jeremyevans/ruby-american_date
30
29
  licenses: []
30
+ metadata: {}
31
31
  post_install_message:
32
32
  rdoc_options:
33
33
  - --quiet
34
34
  - --inline-source
35
35
  - --line-numbers
36
36
  - --title
37
- - ! 'american_date: American style month/day/year date parsing for ruby 1.9'
37
+ - 'american_date: American style month/day/year date parsing for ruby 1.9'
38
38
  - --main
39
39
  - README.rdoc
40
40
  require_paths:
41
41
  - lib
42
42
  required_ruby_version: !ruby/object:Gem::Requirement
43
- none: false
44
43
  requirements:
45
- - - ! '>='
44
+ - - '>='
46
45
  - !ruby/object:Gem::Version
47
46
  version: '0'
48
47
  required_rubygems_version: !ruby/object:Gem::Requirement
49
- none: false
50
48
  requirements:
51
- - - ! '>='
49
+ - - '>='
52
50
  - !ruby/object:Gem::Version
53
51
  version: '0'
54
52
  requirements: []
55
53
  rubyforge_project:
56
- rubygems_version: 1.8.11
54
+ rubygems_version: 2.0.0
57
55
  signing_key:
58
- specification_version: 3
56
+ specification_version: 4
59
57
  summary: American style month/day/year date parsing for ruby 1.9
60
58
  test_files: []