Fixing time parsing issue for times without zone
This commit is contained in:
parent
626f997ff1
commit
dad386d8c9
|
@ -1,5 +1,4 @@
|
||||||
--colour
|
--colour
|
||||||
--format
|
--format
|
||||||
progress
|
progress
|
||||||
--loadby
|
|
||||||
mtime
|
mtime
|
1
Rakefile
1
Rakefile
|
@ -31,6 +31,7 @@ begin
|
||||||
gemspec.add_dependency("activesupport", ">= 2.3.5")
|
gemspec.add_dependency("activesupport", ">= 2.3.5")
|
||||||
gemspec.add_dependency("activemodel", ">= 3.0.0.beta4")
|
gemspec.add_dependency("activemodel", ">= 3.0.0.beta4")
|
||||||
gemspec.add_dependency("tzinfo", ">= 0.3.22")
|
gemspec.add_dependency("tzinfo", ">= 0.3.22")
|
||||||
|
gemspec.add_development_dependency('rspec', '>= 2.0.0.beta.19')
|
||||||
gemspec.version = CouchRest::Model::VERSION
|
gemspec.version = CouchRest::Model::VERSION
|
||||||
gemspec.date = Time.now.strftime("%Y-%m-%d")
|
gemspec.date = Time.now.strftime("%Y-%m-%d")
|
||||||
gemspec.require_path = "lib"
|
gemspec.require_path = "lib"
|
||||||
|
|
|
@ -9,7 +9,7 @@ Gem::Specification.new do |s|
|
||||||
|
|
||||||
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
||||||
s.authors = ["J. Chris Anderson", "Matt Aimonetti", "Marcos Tapajos", "Will Leinweber", "Sam Lown"]
|
s.authors = ["J. Chris Anderson", "Matt Aimonetti", "Marcos Tapajos", "Will Leinweber", "Sam Lown"]
|
||||||
s.date = %q{2010-08-11}
|
s.date = %q{2010-08-18}
|
||||||
s.description = %q{CouchRest Model provides aditional features to the standard CouchRest Document class such as properties, view designs, associations, callbacks, typecasting and validations.}
|
s.description = %q{CouchRest Model provides aditional features to the standard CouchRest Document class such as properties, view designs, associations, callbacks, typecasting and validations.}
|
||||||
s.email = %q{jchris@apache.org}
|
s.email = %q{jchris@apache.org}
|
||||||
s.extra_rdoc_files = [
|
s.extra_rdoc_files = [
|
||||||
|
@ -133,12 +133,14 @@ Gem::Specification.new do |s|
|
||||||
s.add_runtime_dependency(%q<activesupport>, [">= 2.3.5"])
|
s.add_runtime_dependency(%q<activesupport>, [">= 2.3.5"])
|
||||||
s.add_runtime_dependency(%q<activemodel>, [">= 3.0.0.beta4"])
|
s.add_runtime_dependency(%q<activemodel>, [">= 3.0.0.beta4"])
|
||||||
s.add_runtime_dependency(%q<tzinfo>, [">= 0.3.22"])
|
s.add_runtime_dependency(%q<tzinfo>, [">= 0.3.22"])
|
||||||
|
s.add_development_dependency(%q<rspec>, [">= 2.0.0.beta.19"])
|
||||||
else
|
else
|
||||||
s.add_dependency(%q<couchrest>, [">= 1.0.0"])
|
s.add_dependency(%q<couchrest>, [">= 1.0.0"])
|
||||||
s.add_dependency(%q<mime-types>, [">= 1.15"])
|
s.add_dependency(%q<mime-types>, [">= 1.15"])
|
||||||
s.add_dependency(%q<activesupport>, [">= 2.3.5"])
|
s.add_dependency(%q<activesupport>, [">= 2.3.5"])
|
||||||
s.add_dependency(%q<activemodel>, [">= 3.0.0.beta4"])
|
s.add_dependency(%q<activemodel>, [">= 3.0.0.beta4"])
|
||||||
s.add_dependency(%q<tzinfo>, [">= 0.3.22"])
|
s.add_dependency(%q<tzinfo>, [">= 0.3.22"])
|
||||||
|
s.add_dependency(%q<rspec>, [">= 2.0.0.beta.19"])
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
s.add_dependency(%q<couchrest>, [">= 1.0.0"])
|
s.add_dependency(%q<couchrest>, [">= 1.0.0"])
|
||||||
|
@ -146,6 +148,7 @@ Gem::Specification.new do |s|
|
||||||
s.add_dependency(%q<activesupport>, [">= 2.3.5"])
|
s.add_dependency(%q<activesupport>, [">= 2.3.5"])
|
||||||
s.add_dependency(%q<activemodel>, [">= 3.0.0.beta4"])
|
s.add_dependency(%q<activemodel>, [">= 3.0.0.beta4"])
|
||||||
s.add_dependency(%q<tzinfo>, [">= 0.3.22"])
|
s.add_dependency(%q<tzinfo>, [">= 0.3.22"])
|
||||||
|
s.add_dependency(%q<rspec>, [">= 2.0.0.beta.19"])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
* Minor enhancements
|
* Minor enhancements
|
||||||
* Raise error on adding objects to "collection_of" without an id
|
* Raise error on adding objects to "collection_of" without an id
|
||||||
* Allow mixing of protected and accessible properties. Any unspecified properties are now assumed to be protected by default
|
* Allow mixing of protected and accessible properties. Any unspecified properties are now assumed to be protected by default
|
||||||
|
* Parsing times without zone
|
||||||
|
* Using latest rspec (2.0.0.beta.19)
|
||||||
|
|
||||||
== CouchRest Model 1.0.0.beta7
|
== CouchRest Model 1.0.0.beta7
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,23 @@
|
||||||
class Time
|
class Time
|
||||||
# returns a local time value much faster than Time.parse
|
# returns a local time value much faster than Time.parse
|
||||||
def self.mktime_with_offset(string)
|
def self.mktime_with_offset(string)
|
||||||
string =~ /(\d{4})[\-|\/](\d{2})[\-|\/](\d{2})[T|\s](\d{2}):(\d{2}):(\d{2})([\+|\s|\-])*(\d{2}):?(\d{2})/
|
string =~ /(\d{4})[\-|\/](\d{2})[\-|\/](\d{2})[T|\s](\d{2}):(\d{2}):(\d{2})(([\+|\s|\-])*(\d{2}):?(\d{2}))?/
|
||||||
# $1 = year
|
# $1 = year
|
||||||
# $2 = month
|
# $2 = month
|
||||||
# $3 = day
|
# $3 = day
|
||||||
# $4 = hours
|
# $4 = hours
|
||||||
# $5 = minutes
|
# $5 = minutes
|
||||||
# $6 = seconds
|
# $6 = seconds
|
||||||
# $7 = time zone direction
|
# $8 = time zone direction
|
||||||
# $8 = tz difference
|
# $9 = tz difference
|
||||||
# utc time with wrong TZ info:
|
# utc time with wrong TZ info:
|
||||||
time = mktime($1, RFC2822_MONTH_NAME[$2.to_i - 1], $3, $4, $5, $6, $7)
|
time = mktime($1, RFC2822_MONTH_NAME[$2.to_i - 1], $3, $4, $5, $6)
|
||||||
tz_difference = ("#{$7 == '-' ? '+' : '-'}#{$8}".to_i * 3600)
|
if ($7)
|
||||||
|
tz_difference = ("#{$8 == '-' ? '+' : '-'}#{$9}".to_i * 3600)
|
||||||
time + tz_difference + zone_offset(time.zone)
|
time + tz_difference + zone_offset(time.zone)
|
||||||
|
else
|
||||||
|
time
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -128,6 +132,7 @@ module CouchRest
|
||||||
rescue ArgumentError
|
rescue ArgumentError
|
||||||
value
|
value
|
||||||
rescue TypeError
|
rescue TypeError
|
||||||
|
# After failures, resort to normal time parse
|
||||||
value
|
value
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -571,6 +571,16 @@ describe "Model properties" do
|
||||||
@course['ends_at'].min.should eql(t.min)
|
@course['ends_at'].min.should eql(t.min)
|
||||||
@course['ends_at'].sec.should eql(t.sec)
|
@course['ends_at'].sec.should eql(t.sec)
|
||||||
end
|
end
|
||||||
|
it 'parses the string without offset' do
|
||||||
|
t = Time.now
|
||||||
|
@course.ends_at = t.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
@course['ends_at'].year.should eql(t.year)
|
||||||
|
@course['ends_at'].month.should eql(t.month)
|
||||||
|
@course['ends_at'].day.should eql(t.day)
|
||||||
|
@course['ends_at'].hour.should eql(t.hour)
|
||||||
|
@course['ends_at'].min.should eql(t.min)
|
||||||
|
@course['ends_at'].sec.should eql(t.sec)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not typecast non-time values' do
|
it 'does not typecast non-time values' do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
require "rubygems"
|
require "rubygems"
|
||||||
require "spec" # Satisfies Autotest and anyone else not using the Rake tasks
|
require "rspec" # Satisfies Autotest and anyone else not using the Rake tasks
|
||||||
|
|
||||||
require File.join(File.dirname(__FILE__), '..','lib','couchrest_model')
|
require File.join(File.dirname(__FILE__), '..','lib','couchrest_model')
|
||||||
# check the following file to see how to use the spec'd features.
|
# check the following file to see how to use the spec'd features.
|
||||||
|
@ -24,7 +24,7 @@ def reset_test_db!
|
||||||
DB
|
DB
|
||||||
end
|
end
|
||||||
|
|
||||||
Spec::Runner.configure do |config|
|
RSpec.configure do |config|
|
||||||
config.before(:all) { reset_test_db! }
|
config.before(:all) { reset_test_db! }
|
||||||
|
|
||||||
config.after(:all) do
|
config.after(:all) do
|
||||||
|
|
Loading…
Reference in a new issue