calc_working_hours 0.0.2 → 0.0.3

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.
@@ -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
  - ''