american_date 1.0.0 → 1.0.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.
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: []