mongoid_time_field 0.0.0 → 0.1.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.
data/README.rdoc CHANGED
@@ -1,5 +1,6 @@
1
1
  = mongoid_time_field
2
- Simple gem to store minutes+seconds or hours+minutes in one integer field in mongoid (as you would do in mysql with time field)
2
+
3
+ Simple gem to store minutes+seconds or hours+minutes in one integer field in mongoid (as you would do in mysql with time field)
3
4
 
4
5
  == Installation
5
6
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.0
1
+ 0.1.0
@@ -5,15 +5,17 @@ module Mongoid
5
5
  def time_field(*columns)
6
6
  [columns].flatten.each do |name|
7
7
  attr = name.to_sym
8
+ name_minutes = (name.to_s + '_minutes').to_sym
9
+
8
10
  field attr, type: Integer
9
-
11
+
10
12
  define_method(name) do
11
- seconds = read_attribute(attr)
12
- if seconds.nil?
13
+ minutes = read_attribute(attr)
14
+ if minutes.nil?
13
15
  nil
14
16
  else
15
- minutes = (seconds / 60).to_i
16
- sprintf("%d:%02d", minutes, (seconds - 60 * minutes))
17
+ hours = (minutes / 60).to_i
18
+ sprintf("%d:%02d", hours, (minutes - 60 * hours))
17
19
  end
18
20
  end
19
21
 
@@ -22,12 +24,32 @@ module Mongoid
22
24
  write_attribute(attr, nil)
23
25
  nil
24
26
  else
25
- minutes, seconds = value.split(/:/)
26
- val = seconds.to_i + (minutes.to_i * 60)
27
+ hours, minutes = value.split(/:/)
28
+ val = minutes.to_i + (hours.to_i * 60)
27
29
  write_attribute(attr, val)
28
30
  value
29
31
  end
30
32
  end
33
+
34
+ define_method(name_minutes) do
35
+ minutes = read_attribute(attr)
36
+ if minutes.nil?
37
+ nil
38
+ else
39
+ minutes
40
+ end
41
+ end
42
+
43
+ define_method("#{name_minutes}=") do |value|
44
+ if value.blank?
45
+ write_attribute(attr, nil)
46
+ nil
47
+ else
48
+ write_attribute(attr, value.to_i)
49
+ value.to_i
50
+ end
51
+ end
52
+
31
53
  end
32
54
  end
33
55
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "mongoid_time_field"
8
- s.version = "0.0.0"
8
+ s.version = "0.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["glebtv"]
12
- s.date = "2012-03-15"
12
+ s.date = "2012-03-18"
13
13
  s.description = "hh:mm or mm:ss time field for mongoid"
14
14
  s.email = "glebtv@gmail.com"
15
15
  s.extra_rdoc_files = [
data/spec/time_spec.rb CHANGED
@@ -16,6 +16,23 @@ describe Mongoid::TimeField do
16
16
  dummy.save.should eq true
17
17
  dummy.open.should eq '11:01'
18
18
  end
19
+
20
+ it 'should handle blank values set as time' do
21
+ dummy = DummyTime.new
22
+ dummy.open = ''
23
+ dummy.save.should eq true
24
+ dummy.open.should be_nil
25
+ dummy.open_minutes.should be_nil
26
+ end
27
+
28
+ it 'should handle blank values set as minutes' do
29
+ dummy = DummyTime.new
30
+ dummy.open_minutes = ''
31
+ dummy.save.should eq true
32
+ dummy.open.should be_nil
33
+ dummy.open_minutes.should be_nil
34
+ end
35
+
19
36
  end
20
37
 
21
38
  describe 'when accessing a document from the datastore with a TimeField datatype' do
@@ -27,7 +44,29 @@ describe Mongoid::TimeField do
27
44
  dummy = DummyTime.first
28
45
  dummy.open.should eq '12:34'
29
46
  end
47
+
48
+ it 'should have a minutes field value equal to what was initially persisted as time' do
49
+ dummy = DummyTime.first
50
+ dummy.open_minutes.should eq 754
51
+ end
30
52
  end
53
+
54
+ describe 'when accessing a document from the datastore with a TimeField datatype as integer minutes' do
55
+ before(:each) do
56
+ DummyTime.create(:description => "Test", :open_minutes => 754)
57
+ end
58
+
59
+ it 'should have a time field value that matches the TimeField value that was initially persisted' do
60
+ dummy = DummyTime.first
61
+ dummy.open.should eq '12:34'
62
+ end
63
+
64
+ it 'should have a minutes field value equal to what was initially persisted as time' do
65
+ dummy = DummyTime.first
66
+ dummy.open_minutes.should eq 754
67
+ end
68
+ end
69
+
31
70
 
32
71
  describe 'when accessing a document from the datastore with a TimeField datatype and empty value' do
33
72
  before(:each) do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid_time_field
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-15 00:00:00.000000000 Z
12
+ date: 2012-03-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mongoid
16
- requirement: &70862060 !ruby/object:Gem::Requirement
16
+ requirement: &75414110 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70862060
24
+ version_requirements: *75414110
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70861420 !ruby/object:Gem::Requirement
27
+ requirement: &75429980 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 2.8.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70861420
35
+ version_requirements: *75429980
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rdoc
38
- requirement: &70860550 !ruby/object:Gem::Requirement
38
+ requirement: &75429360 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '3.12'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70860550
46
+ version_requirements: *75429360
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &70860050 !ruby/object:Gem::Requirement
49
+ requirement: &75428920 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.0.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70860050
57
+ version_requirements: *75428920
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &70859630 !ruby/object:Gem::Requirement
60
+ requirement: &75428470 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.8.3
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70859630
68
+ version_requirements: *75428470
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simplecov
71
- requirement: &70859230 !ruby/object:Gem::Requirement
71
+ requirement: &75427890 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.4.0
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70859230
79
+ version_requirements: *75427890
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: database_cleaner
82
- requirement: &70858860 !ruby/object:Gem::Requirement
82
+ requirement: &75427470 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70858860
90
+ version_requirements: *75427470
91
91
  description: hh:mm or mm:ss time field for mongoid
92
92
  email: glebtv@gmail.com
93
93
  executables: []
@@ -125,7 +125,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
125
125
  version: '0'
126
126
  segments:
127
127
  - 0
128
- hash: -611396497
128
+ hash: -523699249
129
129
  required_rubygems_version: !ruby/object:Gem::Requirement
130
130
  none: false
131
131
  requirements: