date_time_precision 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,10 @@
1
+ rvm:
2
+ - ree
3
+ - rbx-18mode
4
+ - rbx-19mode
5
+ - 1.8.7
6
+ - 1.9.2
7
+ - 1.9.3
8
+ #- 2.0.0
9
+ - jruby-18mode
10
+ - jruby-19mode
data/Gemfile CHANGED
@@ -1,4 +1,10 @@
1
- source 'https://rubygems.org'
1
+ source :rubygems
2
2
 
3
3
  # Specify your gem's dependencies in date_time_precision.gemspec
4
4
  gemspec
5
+
6
+ if RUBY_VERSION < '1.9'
7
+ gem 'activesupport', '~> 2.3.5'
8
+ else
9
+ gem 'activesupport', '~> 3'
10
+ end
data/README.md CHANGED
@@ -1,17 +1,34 @@
1
- # DateTimePrecision
1
+ # Ruby Date/Time Precision [![Build Status](https://travis-ci.org/Spokeo/date_time_precision.png?branch=master)](https://travis-ci.org/Spokeo/date_time_precision)
2
2
 
3
3
  Sometimes it is desirable to manipulate dates or times for which incomplete information is known.
4
4
  For example, one might only know the year, or the year and the month.
5
5
  Unfortunately, Ruby's built-in Date, Time, and DateTime classes do not keep track of the precision of the data.
6
6
  For example:
7
7
 
8
- Date.new.to_s => "-4712-01-01"
9
- Date.new(2000).to_s => "2000-01-01"
8
+ ```ruby
9
+ Date.new.to_s => "-4712-01-01"
10
+ Date.new(2000).to_s => "2000-01-01"
11
+ ```
10
12
 
11
13
  There is no way to tell the difference between January 1, 2000 and a Date where only the year 2000 was known.
12
14
 
13
15
  The DateTimePrecision gem patches the Date, Time, DateTime, and NilClass classes to keep track of precision.
14
- The behavior of these classes should remain unchanged, and the following methods are now available:
16
+ The behavior of these classes should otherwise remain unchanged.
17
+
18
+ ## Usage
19
+
20
+ ```ruby
21
+ require 'date_time_precision'
22
+
23
+ d = Date.new(2000)
24
+ d.precision # => DateTimePrecision::YEAR
25
+
26
+ t = Time::parse("2001-05")
27
+ t.precision # => DateTimePrecision::MONTH
28
+ t.precision > d.precision # => true
29
+ ```
30
+
31
+ The gem adds the following instance methods to Date, Time, and/or DateTime:
15
32
 
16
33
  * precision
17
34
  * precision=
@@ -23,6 +40,14 @@ The behavior of these classes should remain unchanged, and the following methods
23
40
  * min?
24
41
  * sec?
25
42
 
43
+ ## Compatibility
44
+
45
+ Tested in MRI 1.8.7/1.9.2/1.9.3, REE, JRuby 1.8/1.9, and Rubinius 1.8/1.9.
46
+
47
+ Note that starting in MRI 1.9.3, the core Date/Time classes were rewritten in C, making it difficult to
48
+ override internal functionality. Some functions are now implemented internally and are not exposed.
49
+ The workaround is inefficient: `#parse` and `#strptime` perform the same work twice, once to get the precision and once inside the original C method.
50
+
26
51
  ## Installation
27
52
 
28
53
  Add this line to your application's Gemfile:
@@ -37,19 +62,6 @@ Or install it yourself as:
37
62
 
38
63
  $ gem install date_time_precision
39
64
 
40
- Tested in Ruby 1.8.7, 1.9.1, and 1.9.2
41
-
42
- ## Usage
43
-
44
- require 'date_time_precision'
45
-
46
- d = Date.new(2000)
47
- d.precision # => DateTimePrecision::YEAR
48
-
49
- t = Time::parse("2001-05")
50
- t.precision # => DateTimePrecision::MONTH
51
- t.precision > d.precision # => true
52
-
53
65
  ## Wishlist
54
66
 
55
67
  * Support Time::mktime, Time::utc, Time::local
data/Rakefile CHANGED
@@ -3,4 +3,4 @@ require "bundler/gem_tasks"
3
3
 
4
4
  Dir['gem_tasks/**/*.rake'].each { |rake| load rake }
5
5
 
6
- task :default => [:spec]
6
+ task :default => [:spec, :active_support_spec]
@@ -15,10 +15,8 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = DateTimePrecision::VERSION
17
17
 
18
- gem.required_ruby_version = '>= 1.8.7'
19
18
  gem.add_development_dependency 'rake', '>= 0.9.2'
20
19
  gem.add_development_dependency 'rspec', '~> 2.10.0'
21
- gem.add_development_dependency 'activesupport'
22
20
  #gem.add_development_dependency 'ruby-debug'
23
21
  #gem.add_development_dependency 'ruby-debug19'
24
22
  end
@@ -3,5 +3,11 @@ require 'rspec/core/rake_task'
3
3
  desc "Run RSpec"
4
4
  RSpec::Core::RakeTask.new do |t|
5
5
  t.verbose = true
6
- t.pattern = 'spec/**/*.{spec,rb}'
6
+ t.pattern = "spec/date_time_precision/date_time_precision_spec.rb"
7
+ end
8
+
9
+ desc "Run ActiveSupport spec"
10
+ RSpec::Core::RakeTask.new(:active_support_spec) do |t|
11
+ t.verbose = true
12
+ t.pattern = "spec/date_time_precision/active_support_spec.rb"
7
13
  end
@@ -107,6 +107,11 @@ module DateTimePrecision
107
107
  min_precision = [frags1.length,frags2.length].min
108
108
  frags1.slice(0,min_precision) == frags2.slice(0,min_precision)
109
109
  end
110
+
111
+ def precision(val)
112
+ val = val.take(self::MAX_PRECISION) if val.is_a? Array
113
+ DateTimePrecision::precision(val)
114
+ end
110
115
  end
111
116
 
112
117
  def self.included(base)
@@ -1,5 +1,4 @@
1
1
  require 'date_time_precision/lib'
2
- require 'date_time_precision/patch/date'
3
- require 'date_time_precision/patch/time'
4
- require 'date_time_precision/patch/date_time'
5
- require 'date_time_precision/patch/nil'
2
+
3
+ require 'date_time_precision/patch/nil'
4
+ Dir["#{File.dirname(__FILE__)}/patch/#{RUBY_VERSION}/*.rb"].each {|f| require f }
@@ -0,0 +1,64 @@
1
+ require 'date_time_precision/lib'
2
+ require 'date'
3
+
4
+ class Date
5
+ include DateTimePrecision
6
+
7
+ MAX_PRECISION = DateTimePrecision::DAY
8
+
9
+ def self.parse(str='-4712-01-01T00:00:00+00:00', comp=false, sg=ITALY)
10
+ elem = _parse(str, comp)
11
+ precision = DateTimePrecision::precision(elem)
12
+ d = new_by_frags(elem, sg)
13
+ d.precision = precision
14
+ d
15
+ end
16
+
17
+ def self.strptime(str='-4712-01-01', fmt='%F', sg=ITALY)
18
+ elem = _strptime(str, fmt)
19
+ precision = DateTimePrecision::precision(elem)
20
+ d = new_by_frags(elem, sg)
21
+ d.precision = precision
22
+ d
23
+ end
24
+
25
+ def self.civil(y=nil, m=nil, d=nil, sg=ITALY)
26
+ vals = [y,m,d]
27
+ precision = DateTimePrecision::precision(vals)
28
+ unless vals.all?
29
+ vals = vals.compact
30
+ vals = vals.concat(NEW_DEFAULTS.slice(vals.length, NEW_DEFAULTS.length - vals.length))
31
+ end
32
+ y,m,d = vals
33
+
34
+ unless jd = valid_civil?(y, m, d, sg)
35
+ raise ArgumentError, 'invalid date'
36
+ end
37
+
38
+ d = new!(jd_to_ajd(jd, 0, 0), 0, sg)
39
+ d.precision = precision
40
+ d
41
+ end
42
+
43
+ class << self; alias_method :new, :civil end
44
+
45
+ =begin
46
+ Following code is unneccessary, but keeping it as an example
47
+ # Return the date as a human-readable string.
48
+ #
49
+ # The format used is YYYY-MM-DD, YYYY-MM, or YYYY.
50
+ def to_s
51
+ case
52
+ when self.precision.nil?, self.precision >= DateTimePrecision::DAY
53
+ format('%.4d-%02d-%02d', year, mon, mday)
54
+ when self.precision == DateTimePrecision::MONTH
55
+ format('%.4d-%02d', year, mon)
56
+ when self.precision == DateTimePrecision::YEAR
57
+ format('%.4d', year)
58
+ else
59
+ '?'
60
+ end
61
+ end
62
+ =end
63
+
64
+ end
@@ -0,0 +1,46 @@
1
+ require 'date_time_precision/lib'
2
+ require 'date'
3
+
4
+ class DateTime < Date
5
+ include DateTimePrecision
6
+
7
+ MAX_PRECISION = DateTimePrecision::SEC
8
+
9
+ def self.parse(str='-4712-01-01T00:00:00+00:00', comp=false, sg=ITALY)
10
+ elem = _parse(str, comp)
11
+ precision = DateTimePrecision::precision(elem)
12
+ dt = new_by_frags(elem, sg)
13
+ dt.precision = precision
14
+ dt
15
+ end
16
+
17
+ def self.civil(y=nil, m=nil, d=nil, h=nil, min=nil, s=nil, of=0, sg=ITALY)
18
+ vals = [y,m,d,h,min,s]
19
+ precision = DateTimePrecision::precision(vals)
20
+ unless vals.all?
21
+ vals = vals.compact
22
+ vals = vals.concat(NEW_DEFAULTS.slice(vals.length, NEW_DEFAULTS.length - vals.length))
23
+ end
24
+ y,m,d,h,min,s = vals
25
+
26
+ unless (jd = valid_civil?(y, m, d, sg)) && (fr = valid_time?(h, min, s))
27
+ raise ArgumentError, 'invalid date'
28
+ end
29
+ if String === of
30
+ of = Rational(zone_to_diff(of) || 0, 86400)
31
+ end
32
+ dt = new!(jd_to_ajd(jd, fr, of), of, sg)
33
+ dt.precision = precision
34
+ dt
35
+ end
36
+
37
+ class << self; alias_method :new, :civil end
38
+
39
+ def self.strptime(str='-4712-01-01', fmt='%F', sg=ITALY)
40
+ elem = _strptime(str, fmt)
41
+ precision = DateTimePrecision::precision(elem)
42
+ d = new_by_frags(elem, sg)
43
+ d.precision = precision
44
+ d
45
+ end
46
+ end
@@ -0,0 +1,64 @@
1
+ require 'date_time_precision/lib'
2
+ require 'date'
3
+
4
+ class Date
5
+ include DateTimePrecision
6
+
7
+ MAX_PRECISION = DateTimePrecision::DAY
8
+
9
+ def self.parse(str='-4712-01-01T00:00:00+00:00', comp=false, sg=ITALY)
10
+ elem = _parse(str, comp)
11
+ precision = DateTimePrecision::precision(elem)
12
+ d = new_by_frags(elem, sg)
13
+ d.precision = precision
14
+ d
15
+ end
16
+
17
+ def self.strptime(str='-4712-01-01', fmt='%F', sg=ITALY)
18
+ elem = _strptime(str, fmt)
19
+ precision = DateTimePrecision::precision(elem)
20
+ d = new_by_frags(elem, sg)
21
+ d.precision = precision
22
+ d
23
+ end
24
+
25
+ def self.civil(y=nil, m=nil, d=nil, sg=ITALY)
26
+ vals = [y,m,d]
27
+ precision = DateTimePrecision::precision(vals)
28
+ unless vals.all?
29
+ vals = vals.compact
30
+ vals = vals.concat(NEW_DEFAULTS.slice(vals.length, NEW_DEFAULTS.length - vals.length))
31
+ end
32
+ y,m,d = vals
33
+
34
+ unless jd = _valid_civil?(y, m, d, sg)
35
+ raise ArgumentError, 'invalid date'
36
+ end
37
+
38
+ d = new!(jd_to_ajd(jd, 0, 0), 0, sg)
39
+ d.precision = precision
40
+ d
41
+ end
42
+
43
+ class << self; alias_method :new, :civil end
44
+
45
+ =begin
46
+ Following code is unneccessary, but keeping it as an example
47
+ # Return the date as a human-readable string.
48
+ #
49
+ # The format used is YYYY-MM-DD, YYYY-MM, or YYYY.
50
+ def to_s
51
+ case
52
+ when self.precision.nil?, self.precision >= DateTimePrecision::DAY
53
+ format('%.4d-%02d-%02d', year, mon, mday)
54
+ when self.precision == DateTimePrecision::MONTH
55
+ format('%.4d-%02d', year, mon)
56
+ when self.precision == DateTimePrecision::YEAR
57
+ format('%.4d', year)
58
+ else
59
+ '?'
60
+ end
61
+ end
62
+ =end
63
+
64
+ end
@@ -0,0 +1,46 @@
1
+ require 'date_time_precision/lib'
2
+ require 'date'
3
+
4
+ class DateTime < Date
5
+ include DateTimePrecision
6
+
7
+ MAX_PRECISION = DateTimePrecision::SEC
8
+
9
+ def self.parse(str='-4712-01-01T00:00:00+00:00', comp=false, sg=ITALY)
10
+ elem = _parse(str, comp)
11
+ precision = DateTimePrecision::precision(elem)
12
+ dt = new_by_frags(elem, sg)
13
+ dt.precision = precision
14
+ dt
15
+ end
16
+
17
+ def self.civil(y=nil, m=nil, d=nil, h=nil, min=nil, s=nil, of=0, sg=ITALY)
18
+ vals = [y,m,d,h,min,s]
19
+ precision = DateTimePrecision::precision(vals)
20
+ unless vals.all?
21
+ vals = vals.compact
22
+ vals = vals.concat(NEW_DEFAULTS.slice(vals.length, NEW_DEFAULTS.length - vals.length))
23
+ end
24
+ y,m,d,h,min,s = vals
25
+
26
+ unless (jd = _valid_civil?(y, m, d, sg)) && (fr = _valid_time?(h, min, s))
27
+ raise ArgumentError, 'invalid date'
28
+ end
29
+ if String === of
30
+ of = Rational(zone_to_diff(of) || 0, 86400)
31
+ end
32
+ dt = new!(jd_to_ajd(jd, fr, of), of, sg)
33
+ dt.precision = precision
34
+ dt
35
+ end
36
+
37
+ class << self; alias_method :new, :civil end
38
+
39
+ def self.strptime(str='-4712-01-01', fmt='%F', sg=ITALY)
40
+ elem = _strptime(str, fmt)
41
+ precision = DateTimePrecision::precision(elem)
42
+ d = new_by_frags(elem, sg)
43
+ d.precision = precision
44
+ d
45
+ end
46
+ end
@@ -0,0 +1,21 @@
1
+ require 'date_time_precision/lib'
2
+ require 'time'
3
+
4
+ class Time
5
+ include DateTimePrecision
6
+
7
+ MAX_PRECISION = DateTimePrecision::SEC
8
+
9
+ def self.parse(date, now=self.now)
10
+ d = Date._parse(date, false)
11
+ year = d[:year]
12
+ year = yield(year) if year && block_given?
13
+ t = make_time(year, d[:mon], d[:mday], d[:hour], d[:min], d[:sec], d[:sec_fraction], d[:zone], now)
14
+ t.precision = DateTimePrecision::precision(d)
15
+ t
16
+ end
17
+
18
+ #def self.strptime(str='-4712-01-01', fmt='%F', sg=Date::ITALY)
19
+ # DateTime.strptime(str, fmt, sg).to_time
20
+ #end
21
+ end
@@ -0,0 +1,72 @@
1
+ require 'date_time_precision/lib'
2
+ require 'date'
3
+
4
+ class Date
5
+ include DateTimePrecision
6
+
7
+ MAX_PRECISION = DateTimePrecision::DAY
8
+
9
+ class << self
10
+ alias_method :new_orig, :new
11
+ def new(*args)
12
+ precision = self.precision(args)
13
+ d = new_orig(*args)
14
+ d.precision= precision
15
+ d
16
+ end
17
+
18
+ alias_method :parse_orig, :parse
19
+ def parse(str='-4712-01-01T00:00:00+00:00', start=ITALY)
20
+ comp = !block_given?
21
+ elem = _parse(str, comp)
22
+ precision = self.precision(elem)
23
+ d = parse_orig(str, start)
24
+ d.precision = precision
25
+ d
26
+ end
27
+
28
+ alias_method :civil_orig, :civil
29
+ def civil(y=nil, m=nil, d=nil, sg=ITALY)
30
+ vals = [y,m,d]
31
+ precision = self.precision(vals)
32
+ unless vals.all?
33
+ vals = vals.compact
34
+ vals = vals.concat(NEW_DEFAULTS.slice(vals.length, NEW_DEFAULTS.length - vals.length))
35
+ end
36
+ y,m,d = vals
37
+
38
+ d = civil_orig(y,m,d,sg)
39
+ d.precision = precision
40
+ d
41
+ end
42
+
43
+ alias_method :strptime_orig, :strptime
44
+ def strptime(date, format='%F', start=ITALY)
45
+ elem = _strptime(date, format)
46
+ precision = self.precision(elem)
47
+ d = strptime_orig(date, format, start)
48
+ d.precision = precision
49
+ d
50
+ end
51
+ end
52
+
53
+ =begin
54
+ Following code is unnecessary, but keeping it as an example
55
+ # Return the date as a human-readable string.
56
+ #
57
+ # The format used is YYYY-MM-DD, YYYY-MM, or YYYY.
58
+ def to_s
59
+ case
60
+ when self.precision.nil?, self.precision >= DateTimePrecision::DAY
61
+ format('%.4d-%02d-%02d', year, mon, mday)
62
+ when self.precision == DateTimePrecision::MONTH
63
+ format('%.4d-%02d', year, mon)
64
+ when self.precision == DateTimePrecision::YEAR
65
+ format('%.4d', year)
66
+ else
67
+ '?'
68
+ end
69
+ end
70
+ =end
71
+
72
+ end
@@ -0,0 +1,53 @@
1
+ require 'date_time_precision/lib'
2
+ require 'date'
3
+
4
+ class DateTime < Date
5
+ include DateTimePrecision
6
+
7
+ MAX_PRECISION = DateTimePrecision::SEC
8
+
9
+ class << self
10
+ alias_method :new_orig, :new
11
+ def new(*args)
12
+ precision = self.precision(args)
13
+ d = new_orig(*args)
14
+ d.precision= precision
15
+ d
16
+ end
17
+
18
+ alias_method :parse_orig, :parse
19
+ def parse(str='-4712-01-01T00:00:00+00:00', now=self.now)
20
+ comp = !block_given?
21
+ elem = _parse(str, comp)
22
+ precision = self.precision(elem)
23
+ dt = parse_orig(str, now)
24
+ dt.precision = precision
25
+ dt
26
+ end
27
+
28
+ alias_method :civil_orig, :civil
29
+ def civil(y=nil, m=nil, d=nil, sg=Date::ITALY)
30
+ vals = [y,m,d]
31
+ precision = self.precision(vals)
32
+ unless vals.all?
33
+ vals = vals.compact
34
+ vals = vals.concat(NEW_DEFAULTS.slice(vals.length, NEW_DEFAULTS.length - vals.length))
35
+ end
36
+ y,m,d = vals
37
+
38
+ dt = civil_orig(y,m,d,sg)
39
+ dt.precision = precision
40
+ dt
41
+ end
42
+
43
+ alias_method :strptime_orig, :strptime
44
+ def strptime(date, format='%F', start=Date::ITALY)
45
+ elem = _strptime(date, format)
46
+ precision = self.precision(elem)
47
+ d = strptime_orig(date, format, start)
48
+ d.precision = precision
49
+ d
50
+ end
51
+ end
52
+
53
+ end
@@ -0,0 +1,18 @@
1
+ require 'date_time_precision/lib'
2
+ require 'time'
3
+
4
+ class Time
5
+ include DateTimePrecision
6
+
7
+ MAX_PRECISION = DateTimePrecision::FRAC
8
+
9
+ class << self
10
+ alias_method :make_time_orig, :make_time
11
+ def make_time(*args)
12
+ t = make_time_orig(*args)
13
+ t.precision = self.precision(args)
14
+ t
15
+ end
16
+ private :make_time
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
1
  module DateTimePrecision
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -15,7 +15,7 @@ describe DateTimePrecision, 'Conversions' do
15
15
  it 'will lose precision when converting from DateTime or Time to Date' do
16
16
  t = Time::parse('2000-1-1 00:00:00 EST') # => Fri Dec 31 21:00:00 -0800 1999
17
17
  t.precision.should == DateTimePrecision::SEC
18
- t.to_datetime.precision.should == DateTimePrecision::SEC
18
+ t.to_datetime.precision.should == DateTime::MAX_PRECISION
19
19
  t.to_date.precision.should == DateTimePrecision::DAY
20
20
  end
21
21
  end
@@ -60,7 +60,7 @@ describe DateTimePrecision, 'Constructors' do
60
60
  end
61
61
 
62
62
  describe DateTimePrecision, 'Parsing' do
63
- it 'should have second precision when parsing a timestamp' do
63
+ it 'should have second/frac precision when parsing a timestamp' do
64
64
  t = Time::parse('2000-2-3 00:00:00 UTC')
65
65
  t.precision.should == DateTimePrecision::SEC
66
66
  t.year.should == 2000
data/time.rb ADDED
@@ -0,0 +1,21 @@
1
+ require 'date_time_precision/lib'
2
+ require 'time'
3
+
4
+ class Time
5
+ include DateTimePrecision
6
+
7
+ MAX_PRECISION = DateTimePrecision::SEC
8
+
9
+ def self.parse(date, now=self.now)
10
+ d = Date._parse(date, false)
11
+ year = d[:year]
12
+ year = yield(year) if year && block_given?
13
+ t = make_time(year, d[:mon], d[:mday], d[:hour], d[:min], d[:sec], d[:sec_fraction], d[:zone], now)
14
+ t.precision = DateTimePrecision::precision(d)
15
+ t
16
+ end
17
+
18
+ #def self.strptime(str='-4712-01-01', fmt='%F', sg=Date::ITALY)
19
+ # DateTime.strptime(str, fmt, sg).to_time
20
+ #end
21
+ end
metadata CHANGED
@@ -1,136 +1,111 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: date_time_precision
3
- version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 0
9
- - 1
10
- version: 0.0.1
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - David Butler
14
- autorequire:
9
+ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-06-14 00:00:00 -07:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-12-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: rake
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ! '>='
19
+ - !ruby/object:Gem::Version
20
+ version: 0.9.2
25
21
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 63
30
- segments:
31
- - 0
32
- - 9
33
- - 2
22
+ requirement: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
34
26
  version: 0.9.2
27
+ none: false
28
+ prerelease: false
35
29
  type: :development
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
30
+ - !ruby/object:Gem::Dependency
38
31
  name: rspec
39
- prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ~>
35
+ - !ruby/object:Gem::Version
36
+ version: 2.10.0
41
37
  none: false
42
- requirements:
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
43
40
  - - ~>
44
- - !ruby/object:Gem::Version
45
- hash: 39
46
- segments:
47
- - 2
48
- - 10
49
- - 0
41
+ - !ruby/object:Gem::Version
50
42
  version: 2.10.0
51
- type: :development
52
- version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
54
- name: activesupport
55
- prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
57
43
  none: false
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- hash: 3
62
- segments:
63
- - 0
64
- version: "0"
44
+ prerelease: false
65
45
  type: :development
66
- version_requirements: *id003
67
46
  description: Patches Date, Time, and DateTime ruby classes to keep track of precision
68
- email:
47
+ email:
69
48
  - dwbutler@ucla.edu
70
49
  executables: []
71
-
72
50
  extensions: []
73
-
74
51
  extra_rdoc_files: []
75
-
76
- files:
52
+ files:
77
53
  - .gitignore
78
- - .rvmrc
54
+ - .travis.yml
79
55
  - Gemfile
80
56
  - LICENSE
81
57
  - README
82
58
  - README.md
83
59
  - Rakefile
60
+ - date.rb
61
+ - date_time.rb
84
62
  - date_time_precision.gemspec
85
63
  - gem_tasks/rspec.rake
86
64
  - lib/date_time_precision.rb
87
65
  - lib/date_time_precision/lib.rb
88
66
  - lib/date_time_precision/patch.rb
89
- - lib/date_time_precision/patch/date.rb
90
- - lib/date_time_precision/patch/date_time.rb
67
+ - lib/date_time_precision/patch/1.8.7/date.rb
68
+ - lib/date_time_precision/patch/1.8.7/date_time.rb
69
+ - lib/date_time_precision/patch/1.8.7/time.rb
70
+ - lib/date_time_precision/patch/1.9.2/date.rb
71
+ - lib/date_time_precision/patch/1.9.2/date_time.rb
72
+ - lib/date_time_precision/patch/1.9.2/time.rb
73
+ - lib/date_time_precision/patch/1.9.3/date.rb
74
+ - lib/date_time_precision/patch/1.9.3/date_time.rb
75
+ - lib/date_time_precision/patch/1.9.3/time.rb
91
76
  - lib/date_time_precision/patch/nil.rb
92
- - lib/date_time_precision/patch/time.rb
93
77
  - lib/date_time_precision/version.rb
94
- - spec/date_time_precision/active_support.rb
78
+ - spec/date_time_precision/active_support_spec.rb
95
79
  - spec/date_time_precision/date_time_precision_spec.rb
96
80
  - spec/spec_helper.rb
97
- has_rdoc: true
81
+ - time.rb
98
82
  homepage: http://github.com/Spokeo/date_time_precision
99
83
  licenses: []
100
-
101
- post_install_message:
84
+ post_install_message:
102
85
  rdoc_options: []
103
-
104
- require_paths:
86
+ require_paths:
105
87
  - lib
106
- required_ruby_version: !ruby/object:Gem::Requirement
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: !binary |-
93
+ MA==
107
94
  none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- hash: 57
112
- segments:
113
- - 1
114
- - 8
115
- - 7
116
- version: 1.8.7
117
- required_rubygems_version: !ruby/object:Gem::Requirement
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: !binary |-
100
+ MA==
118
101
  none: false
119
- requirements:
120
- - - ">="
121
- - !ruby/object:Gem::Version
122
- hash: 3
123
- segments:
124
- - 0
125
- version: "0"
126
102
  requirements: []
127
-
128
- rubyforge_project:
129
- rubygems_version: 1.3.7
130
- signing_key:
103
+ rubyforge_project:
104
+ rubygems_version: 1.8.24
105
+ signing_key:
131
106
  specification_version: 3
132
107
  summary: Patches Date, Time, and DateTime ruby classes to keep track of precision
133
- test_files:
134
- - spec/date_time_precision/active_support.rb
108
+ test_files:
109
+ - spec/date_time_precision/active_support_spec.rb
135
110
  - spec/date_time_precision/date_time_precision_spec.rb
136
111
  - spec/spec_helper.rb
data/.rvmrc DELETED
@@ -1,52 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- # This is an RVM Project .rvmrc file, used to automatically load the ruby
4
- # development environment upon cd'ing into the directory
5
-
6
- # First we specify our desired <ruby>[@<gemset>], the @gemset name is optional,
7
- # Only full ruby name is supported here, for short names use:
8
- # echo "rvm use 1.8.7" > .rvmrc
9
- environment_id="ruby-1.8.7-p358@date_time_precision"
10
-
11
- # Uncomment the following lines if you want to verify rvm version per project
12
- # rvmrc_rvm_version="1.13.5 (stable)" # 1.10.1 seams as a safe start
13
- # eval "$(echo ${rvm_version}.${rvmrc_rvm_version} | awk -F. '{print "[[ "$1*65536+$2*256+$3" -ge "$4*65536+$5*256+$6" ]]"}' )" || {
14
- # echo "This .rvmrc file requires at least RVM ${rvmrc_rvm_version}, aborting loading."
15
- # return 1
16
- # }
17
-
18
- # First we attempt to load the desired environment directly from the environment
19
- # file. This is very fast and efficient compared to running through the entire
20
- # CLI and selector. If you want feedback on which environment was used then
21
- # insert the word 'use' after --create as this triggers verbose mode.
22
- if [[ -d "${rvm_path:-$HOME/.rvm}/environments"
23
- && -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]]
24
- then
25
- \. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
26
- [[ -s "${rvm_path:-$HOME/.rvm}/hooks/after_use" ]] &&
27
- \. "${rvm_path:-$HOME/.rvm}/hooks/after_use" || true
28
- if [[ $- == *i* ]] # check for interactive shells
29
- then echo "Using: $(tput setaf 2)$GEM_HOME$(tput sgr0)" # show the user the ruby and gemset they are using in green
30
- else echo "Using: $GEM_HOME" # don't use colors in non-interactive shells
31
- fi
32
- else
33
- # If the environment file has not yet been created, use the RVM CLI to select.
34
- rvm --create use "$environment_id" || {
35
- echo "Failed to create RVM environment '${environment_id}'."
36
- return 1
37
- }
38
- fi
39
-
40
- # If you use bundler, this might be useful to you:
41
- # if [[ -s Gemfile ]] && {
42
- # ! builtin command -v bundle >/dev/null ||
43
- # builtin command -v bundle | GREP_OPTIONS= \grep $rvm_path/bin/bundle >/dev/null
44
- # }
45
- # then
46
- # printf "%b" "The rubygem 'bundler' is not installed. Installing it now.\n"
47
- # gem install bundler
48
- # fi
49
- # if [[ -s Gemfile ]] && builtin command -v bundle >/dev/null
50
- # then
51
- # bundle install | GREP_OPTIONS= \grep -vE '^Using|Your bundle is complete'
52
- # fi