tod 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cd1afa5d7028c81edd6ccd8b2ed7937bd79b3f64
4
- data.tar.gz: 9765dafb8c5a03311d4fc9db18a38082a48e112e
3
+ metadata.gz: b581f923a697d706a4e045117aec261e6d3ed4e9
4
+ data.tar.gz: 79aee8f84597353593f56ed4df390f173732a356
5
5
  SHA512:
6
- metadata.gz: f332abbc345efa5d21623e300acf614a03b1005e415cef4f098536a8e8ac56edc9685aef8fb72bdb97d7f02ed80bb22ead96aafa2a5f3b5bab1ca4aa9f03e1e4
7
- data.tar.gz: a43fdedbac428c5ac59b0ae0b1427d46c7742f3617b0f220dedbad0e61f8aed5ac813c36593abd7694d49cd4db70b981ace140610a6492f98b3ddaab6d927969
6
+ metadata.gz: 953bbbbda9c23b88959cb9f727edc3a892bb427fc37ab7ac565cc20a61ae5c93f89c160a38f27a9ce4c02fde2b78ee1d955cba5354406fd52fad3e6fa1759c2d
7
+ data.tar.gz: 8b8241b58dba21e20541ef5b28716562266eec55279ab41f9d7755e1d75e080a71a7e78ec2297b85332687d9dcb568da8a655cadff9e6e6d93b7bd7442fc00b1
data/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
5
+ gemfile:
6
+ - gemfiles/3.0.gemfile
7
+ - gemfiles/3.1.gemfile
8
+ - gemfiles/3.2.gemfile
9
+ - gemfiles/4.0.gemfile
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in surus.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,52 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ tod (1.2.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ activemodel (3.2.13)
10
+ activesupport (= 3.2.13)
11
+ builder (~> 3.0.0)
12
+ activerecord (3.2.13)
13
+ activemodel (= 3.2.13)
14
+ activesupport (= 3.2.13)
15
+ arel (~> 3.0.2)
16
+ tzinfo (~> 0.3.29)
17
+ activesupport (3.2.13)
18
+ i18n (= 0.6.1)
19
+ multi_json (~> 1.0)
20
+ arel (3.0.2)
21
+ bourne (1.4.0)
22
+ mocha (~> 0.13.2)
23
+ builder (3.0.4)
24
+ i18n (0.6.1)
25
+ metaclass (0.0.1)
26
+ mocha (0.13.3)
27
+ metaclass (~> 0.0.1)
28
+ multi_json (1.7.2)
29
+ rake (10.0.4)
30
+ shoulda (3.4.0)
31
+ shoulda-context (~> 1.0, >= 1.0.1)
32
+ shoulda-matchers (~> 1.0, >= 1.4.1)
33
+ shoulda-context (1.1.1)
34
+ shoulda-matchers (1.5.6)
35
+ activesupport (>= 3.0.0)
36
+ bourne (~> 1.3)
37
+ sqlite3 (1.3.7)
38
+ test-unit (2.5.4)
39
+ tzinfo (0.3.37)
40
+
41
+ PLATFORMS
42
+ ruby
43
+
44
+ DEPENDENCIES
45
+ activerecord (>= 3.0.0)
46
+ mocha
47
+ rake
48
+ shoulda
49
+ sqlite3
50
+ test-unit
51
+ tod!
52
+ tzinfo
data/README.markdown CHANGED
@@ -88,18 +88,43 @@ Rails Time Zone Support
88
88
 
89
89
  If Rails time zone support is loaded, Date#on and TimeOfDay#at will automatically use Time.zone.
90
90
 
91
+ Active Record Serializable Attribute Support
92
+ =======================
93
+ TimeOfDay implements a custom serialization contract for activerecord serialize which allows to store TimeOfDay directly
94
+ in a column of the time type.
95
+ Example:
96
+ ```ruby
97
+ class Order < ActiveRecord::Base
98
+ serialize :time, Tod::TimeOfDay
99
+ end
100
+ order = Order.create(time: TimeOfDay.new(9,30))
101
+ order.time # => 09:30:00
102
+ ```
103
+
104
+ Compatibility
105
+ =============
106
+
107
+ [![Build Status](https://travis-ci.org/JackC/tod.png)](https://travis-ci.org/JackC/tod)
108
+
109
+ Tod is compatible with Ruby 1.9.3 and 2.0.0 and Rails 3.0, 3.1, 3.2, and 4.0.
110
+
111
+
91
112
  History
92
113
  =======
93
114
 
94
- # 1.1.1 (April 12, 2013)
115
+ ## 1.2.0 (July 16, 2013)
116
+
117
+ * Added ActiveRecord TimeOfDay serialization to time column (Maxim-Filimonov)
118
+
119
+ ## 1.1.1 (April 12, 2013)
95
120
 
96
121
  * Added to_i and from_i as aliases of second_of_day and from_second_of_day (Johnny Shields)
97
122
 
98
- # 1.1.0 (February 13, 2013)
123
+ ## 1.1.0 (February 13, 2013)
99
124
 
100
125
  * Added Rails time zone support
101
126
 
102
- # 1.0.0 (December 29, 2010)
127
+ ## 1.0.0 (December 29, 2010)
103
128
 
104
129
  * Initial Release
105
130
 
data/Rakefile CHANGED
@@ -9,3 +9,5 @@ Rake::TestTask.new do |t|
9
9
  t.test_files = FileList['test/tod/*_test.rb']
10
10
  t.verbose = true
11
11
  end
12
+
13
+ task :default => :test
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "activerecord", "~> 3.0.20"
4
+ gem "i18n"
5
+
6
+ gemspec :path=>"../"
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "activerecord", "~> 3.1.12"
4
+ gem "i18n"
5
+
6
+ gemspec :path=>"../"
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "activerecord", "~> 3.2.13"
4
+
5
+ gemspec :path=>"../"
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "activerecord", "4.0.0"
4
+
5
+ gemspec :path=>"../"
@@ -133,6 +133,18 @@ module Tod
133
133
  def self.time_zone
134
134
  (Time.respond_to?(:zone) && Time.zone) || Time
135
135
  end
136
+
137
+ def self.dump(time_of_day)
138
+ time_of_day.to_s
139
+ end
140
+
141
+ def self.load(time)
142
+ if time.respond_to?(:to_time_of_day)
143
+ time.to_time_of_day
144
+ else
145
+ TimeOfDay.parse(time) if time && !time.empty?
146
+ end
147
+ end
136
148
  end
137
149
  end
138
150
 
data/lib/tod/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class TimeOfDay
2
- VERSION = "1.1.1"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -0,0 +1,7 @@
1
+ require 'active_record'
2
+ ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: ':memory:'
3
+
4
+ ActiveRecord::Migration.create_table :orders do |t|
5
+ t.time :time
6
+ t.timestamps
7
+ end
data/test/test_helper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  $LOAD_PATH.unshift File.join(File.dirname(__FILE__),'..','lib')
2
2
 
3
+ require 'bundler/setup'
3
4
  require 'tod'
4
5
  require 'test/unit'
5
6
  require 'shoulda'
6
- require 'mocha'
7
+ require 'mocha/setup'
@@ -0,0 +1,27 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__),'..','test_helper'))
2
+ require File.expand_path(File.join(File.dirname(__FILE__),'..','support/active_record'))
3
+
4
+ class Order < ActiveRecord::Base
5
+ serialize :time, TimeOfDay
6
+ end
7
+ class TimeOfDayWithActiveRecordSerializableAttribute < Test::Unit::TestCase
8
+ context "self.dump" do
9
+ should "be able to set time of day" do
10
+ Order.create(time: TimeOfDay.new(9, 30))
11
+ end
12
+ should "be able to set nil as value" do
13
+ Order.create(time: nil)
14
+ end
15
+ end
16
+ context "self.load" do
17
+ should "load set time" do
18
+ time_of_day = TimeOfDay.new(9, 30)
19
+ order = Order.create(time: time_of_day)
20
+ assert_equal order.time, time_of_day
21
+ end
22
+ should "return nil if time is not set" do
23
+ order = Order.create(time: nil)
24
+ assert_equal order.time, nil
25
+ end
26
+ end
27
+ end
data/tod.gemspec CHANGED
@@ -15,7 +15,10 @@ Gem::Specification.new do |s|
15
15
  s.add_development_dependency "test-unit"
16
16
  s.add_development_dependency "shoulda"
17
17
  s.add_development_dependency "mocha"
18
- s.add_development_dependency "active_support", ">= 3.0"
18
+ s.add_development_dependency "tzinfo"
19
+ s.add_development_dependency "rake"
20
+ s.add_development_dependency "activerecord", ">= 3.0.0"
21
+ s.add_development_dependency "sqlite3"
19
22
 
20
23
  s.files = `git ls-files`.split("\n")
21
24
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tod
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jack Christensen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-12 00:00:00.000000000 Z
11
+ date: 2013-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: test-unit
@@ -53,19 +53,61 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: active_support
56
+ name: tzinfo
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - '>='
60
60
  - !ruby/object:Gem::Version
61
- version: '3.0'
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - '>='
67
81
  - !ruby/object:Gem::Version
68
- version: '3.0'
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: activerecord
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: 3.0.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: 3.0.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: sqlite3
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
69
111
  description: Supplies TimeOfDay class that includes parsing, strftime, comparison,
70
112
  and arithmetic.
71
113
  email:
@@ -75,17 +117,26 @@ extensions: []
75
117
  extra_rdoc_files: []
76
118
  files:
77
119
  - .gitignore
120
+ - .travis.yml
121
+ - Gemfile
122
+ - Gemfile.lock
78
123
  - MIT-LICENSE
79
124
  - README.markdown
80
125
  - Rakefile
126
+ - gemfiles/3.0.gemfile
127
+ - gemfiles/3.1.gemfile
128
+ - gemfiles/3.2.gemfile
129
+ - gemfiles/4.0.gemfile
81
130
  - lib/tod.rb
82
131
  - lib/tod/date.rb
83
132
  - lib/tod/time.rb
84
133
  - lib/tod/time_of_day.rb
85
134
  - lib/tod/version.rb
135
+ - test/support/active_record.rb
86
136
  - test/test_helper.rb
87
137
  - test/tod/a_a_a_time_of_day_time_zone_without_active_support_test.rb
88
138
  - test/tod/date_test.rb
139
+ - test/tod/time_of_day_serializable_attribute_test.rb
89
140
  - test/tod/time_of_day_test.rb
90
141
  - test/tod/time_of_day_time_zone_with_active_support_test.rb
91
142
  - test/tod/time_test.rb
@@ -114,9 +165,12 @@ signing_key:
114
165
  specification_version: 4
115
166
  summary: Supplies TimeOfDay class
116
167
  test_files:
168
+ - test/support/active_record.rb
117
169
  - test/test_helper.rb
118
170
  - test/tod/a_a_a_time_of_day_time_zone_without_active_support_test.rb
119
171
  - test/tod/date_test.rb
172
+ - test/tod/time_of_day_serializable_attribute_test.rb
120
173
  - test/tod/time_of_day_test.rb
121
174
  - test/tod/time_of_day_time_zone_with_active_support_test.rb
122
175
  - test/tod/time_test.rb
176
+ has_rdoc: