tod 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: