calc_working_hours 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module CalcWorkingHours
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -8,30 +8,47 @@ module CalcWorkingHours
8
8
  if valid_time_format?(str)
9
9
  @time_string = str
10
10
  self.to_minute
11
+ self
11
12
  else
12
13
  raise "failure initialize (invalid time format!)"
13
14
  end
14
15
  end
15
16
 
16
17
  def to_minute
17
- /(\d+):(\d+)/ =~ @time_string
18
- @minute = $1.to_i * 60 + $2.to_i
18
+ @minute = change_to_minute(@time_string)
19
19
  end
20
20
 
21
21
  def add_time(str)
22
22
  if valid_time_format?(str)
23
- /(\d+):(\d+)/ =~ str
24
- minute_for_adding = $1.to_i * 60 + $2.to_i
25
- @minute = @minute + minute_for_adding
26
- hour = @minute.div(60)
27
- minute = @minute % 60
28
- @time_string = hour.to_s + ":" + minute.to_s
23
+ @minute = @minute + change_to_minute(str)
24
+ @time_string = change_to_time_string(@minute)
29
25
  self
30
26
  else
31
27
  raise "failure add_time (invalid time format!)"
32
28
  end
33
29
  end
34
30
 
31
+ def add_array_time(array)
32
+ array.each do |str|
33
+ self.add_time(str)
34
+ end
35
+ self
36
+ end
37
+
38
+ def minus_time(str)
39
+ if valid_time_format?(str)
40
+ minute = @minute - change_to_minute(str)
41
+ if minute >= 0
42
+ @minute = minute
43
+ @time_string = change_to_time_string(@minute)
44
+ self
45
+ else
46
+ raise "failure add_time (invalid time format!)"
47
+ end
48
+ end
49
+ end
50
+
51
+ private
35
52
  def valid_time_format?(str)
36
53
  flag = false
37
54
  if str.class == String
@@ -43,5 +60,17 @@ module CalcWorkingHours
43
60
  end
44
61
  return flag
45
62
  end
63
+
64
+ def change_to_minute(str)
65
+ /(\d+):(\d+)/ =~ str
66
+ return $1.to_i * 60 + $2.to_i
67
+ end
68
+
69
+ def change_to_time_string(minute)
70
+ hour = minute.div(60)
71
+ minute = minute % 60
72
+ return hour.to_s + ":" + minute.to_s
73
+ end
74
+
46
75
  end
47
76
  end
@@ -25,6 +25,24 @@ describe WorkingHours do
25
25
  it "2:25を加え、さらに3:00を加えると13:10になること(add_timeはチェインできること)" do
26
26
  @working_hours.add_time("2:25").add_time("3:00").time_string.should == "13:10"
27
27
  end
28
+
29
+ it "1:50を引くと、5:55になること" do
30
+ @working_hours.minus_time("1:50").time_string.should == "5:55"
31
+ end
32
+
33
+ it "8:50を引くと、マイナスになるため、例外が発生すること" do
34
+ proc{ @working_hours.minus_time("8:50").time_string }.should raise_error
35
+ end
36
+
37
+ it "2:25を引き、さらに3:00を引くと2:20になること(minus_timeはチェインできること)" do
38
+ @working_hours.minus_time("2:25").minus_time("3:00").time_string.should == "2:20"
39
+ end
40
+
41
+ it '["1:10", "2:20", "3:30", "4:40"]を足すと、19:35になること' do
42
+ @working_hours.add_array_time(["1:10", "2:20", "3:30", "4:40"]).time_string.should == "19:25"
43
+ end
44
+
45
+
28
46
  end
29
47
 
30
48
  context "7:70(7時間70分)が労働時間だった場合" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: calc_working_hours
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
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: 2013-09-18 00:00:00.000000000Z
12
+ date: 2013-09-19 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- requirement: &70291272497220 !ruby/object:Gem::Requirement
16
+ requirement: &70166375149760 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '1.3'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70291272497220
24
+ version_requirements: *70166375149760
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70291272496380 !ruby/object:Gem::Requirement
27
+ requirement: &70166375149160 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70291272496380
35
+ version_requirements: *70166375149160
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70291272494680 !ruby/object:Gem::Requirement
38
+ requirement: &70166375148340 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70291272494680
46
+ version_requirements: *70166375148340
47
47
  description: 例えば、173:08のような表記の時間を計算するライブラリです
48
48
  email:
49
49
  - ''