calc_working_hours 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,84 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ module CalcWorkingHours
4
+
5
+ class CalcHelper
6
+ class << self
7
+ def valid_working_hours_format?(str)
8
+ flag = false
9
+ if str.class == String
10
+ if /\d+:(\d+)/ =~ str
11
+ if $1.to_i < 60 && $1.to_i >= 0
12
+ flag = true
13
+ end
14
+ end
15
+ end
16
+ return flag
17
+ end
18
+
19
+ def valid_time_format?(time)
20
+ flag = false
21
+ if time.class == String
22
+ if /(\d+):(\d+)/ =~ time
23
+ if ($1.to_i <= 48 && $1.to_i >= 0) && ($2.to_i < 60 && $2.to_i >= 0)
24
+ flag = true
25
+ end
26
+ end
27
+ end
28
+ return flag
29
+ end
30
+
31
+ def valid_time_order?(first, second)
32
+ false
33
+ true if change_to_minute(first) <= change_to_minute(second)
34
+ end
35
+
36
+ def valid_range?(first, second)
37
+ false
38
+ true if change_to_minute(first) <= change_to_minute(second)
39
+ end
40
+
41
+ def valid_break_time?(break_time, starting_time, ending_time)
42
+ flag = false
43
+ break_time.each do |time|
44
+ if time.length == 2 && time.class == Array
45
+ if valid_time_format?(time[0]) && valid_time_format?(time[1])
46
+ time.each do |t|
47
+ if change_to_minute(starting_time) >= change_to_minute(t) || change_to_minute(ending_time) <= change_to_minute(t)
48
+ return flag = false
49
+ end
50
+ end
51
+ flag = true
52
+ end
53
+ else
54
+ return flag = false
55
+ end
56
+ end
57
+ return flag
58
+ end
59
+
60
+ def total_break_time(break_time)
61
+ total = WorkingHours.new("0:00")
62
+ break_time.each do |time|
63
+ total.add_time(time[1]).minus_time(time[0])
64
+ end
65
+ return total
66
+ end
67
+
68
+ def change_to_minute(str)
69
+ /(\d+):(\d+)/ =~ str
70
+ return $1.to_i * 60 + $2.to_i
71
+ end
72
+
73
+ def change_to_time_string(minute)
74
+ hour = minute.div(60).to_s
75
+ minute = (minute % 60).to_s
76
+ if minute.length == 1
77
+ minute = "0" + minute
78
+ end
79
+ return hour + ":" + minute
80
+ end
81
+ end
82
+
83
+ end
84
+ end
@@ -3,6 +3,7 @@
3
3
  module CalcWorkingHours
4
4
  attr_reader :time_card_rows, :card_id, :id
5
5
  class TimeCard
6
+
6
7
  def initialize(card_id, id)
7
8
  @time_card_rows = []
8
9
  @card_id = card_id
@@ -26,7 +27,7 @@ module CalcWorkingHours
26
27
  def total_working_hours_in_range(start_range, end_range)
27
28
  array_of_working_hours_in_range = []
28
29
  if start_range == true && end_range == true
29
- unless valid_time_format?(start_range) || valid_time_format?(end_range)
30
+ unless CalcHelper.valid_time_format?(start_range) || CalcHelper.valid_time_format?(end_range)
30
31
  raise "invalid time format (TimeCard total_working_hours)"
31
32
  end
32
33
  end
@@ -36,29 +37,5 @@ module CalcWorkingHours
36
37
  return WorkingHours.new("0:00").add_array_time(array_of_working_hours_in_range).time_string
37
38
  end
38
39
 
39
- private
40
-
41
- def valid_range?(first, second)
42
- false
43
- true if change_to_minute(first) < change_to_minute(second)
44
- end
45
-
46
- def valid_time_format?(time)
47
- flag = false
48
- if time.class == String
49
- if /(\d+):(\d+)/ =~ time
50
- if ($1.to_i <= 48 && $1.to_i >= 0) && ($2.to_i < 60 && $2.to_i >= 0)
51
- flag = true
52
- end
53
- end
54
- end
55
- return flag
56
- end
57
-
58
- def change_to_minute(str)
59
- /(\d+):(\d+)/ =~ str
60
- return $1.to_i * 60 + $2.to_i
61
- end
62
-
63
40
  end
64
41
  end
@@ -7,29 +7,29 @@ module CalcWorkingHours
7
7
  class TimeCardRow
8
8
  attr_reader :starting_time, :ending_time, :break_time, :working_hours, :date_string, :time_point, :working_hours_in_range, :overtime, :id
9
9
  def initialize(starting_time, ending_time, *break_time)
10
- unless valid_time_format?(starting_time) && valid_time_format?(ending_time)
10
+ unless CalcHelper.valid_time_format?(starting_time) && CalcHelper.valid_time_format?(ending_time)
11
11
  raise "failure initialize (invalid time format! TimeCardRow class)"
12
12
  end
13
13
 
14
- unless valid_time_order?(starting_time, ending_time)
14
+ unless CalcHelper.valid_time_order?(starting_time, ending_time)
15
15
  raise "failure initialize (invalid time order! TimeCardRow class)"
16
16
  end
17
17
 
18
18
  unless break_time.empty?
19
- unless valid_break_time?(break_time, starting_time, ending_time)
19
+ unless CalcHelper.valid_break_time?(break_time, starting_time, ending_time)
20
20
  raise "failure initialize (invalid break time! TimeCardRow class)"
21
21
  end
22
22
  end
23
23
 
24
24
  break_time.each do |time|
25
- unless valid_time_order?(time[0], time[1])
25
+ unless CalcHelper.valid_time_order?(time[0], time[1])
26
26
  raise "failure initialize (invalid time order(break time)! TimeCardRow class)"
27
27
  end
28
28
  end
29
29
 
30
30
  total_break_time_string = "0:00"
31
31
  unless break_time.empty?
32
- total_break_time_string = total_break_time(break_time)
32
+ total_break_time_string = CalcHelper.total_break_time(break_time).time_string
33
33
  end
34
34
 
35
35
  @starting_time = starting_time
@@ -76,86 +76,18 @@ module CalcWorkingHours
76
76
  starting_time = @time_point[counter]
77
77
  ending_time = @time_point[counter + 1]
78
78
 
79
- if valid_range?(end_range, starting_time) || valid_range?(ending_time, start_range)
80
- elsif valid_range?(start_range, starting_time) && valid_range?(end_range, ending_time)
79
+ if CalcHelper.valid_range?(end_range, starting_time) || CalcHelper.valid_range?(ending_time, start_range)
80
+ elsif CalcHelper.valid_range?(start_range, starting_time) && CalcHelper.valid_range?(end_range, ending_time)
81
81
  array_of_working_hours << WorkingHours.new(end_range).minus_time(starting_time).time_string
82
- elsif valid_range?(starting_time, start_range) && valid_range?(end_range, ending_time)
82
+ elsif CalcHelper.valid_range?(starting_time, start_range) && CalcHelper.valid_range?(end_range, ending_time)
83
83
  array_of_working_hours << WorkingHours.new(end_range).minus_time(start_range).time_string
84
- elsif valid_range?(starting_time, start_range) && valid_range?(ending_time, end_range)
84
+ elsif CalcHelper.valid_range?(starting_time, start_range) && CalcHelper.valid_range?(ending_time, end_range)
85
85
  array_of_working_hours << WorkingHours.new(ending_time).minus_time(start_range).time_string
86
- elsif valid_range?(start_range, starting_time) && valid_range?(ending_time, end_range)
86
+ elsif CalcHelper.valid_range?(start_range, starting_time) && CalcHelper.valid_range?(ending_time, end_range)
87
87
  array_of_working_hours << WorkingHours.new(ending_time).minus_time(starting_time).time_string
88
88
  end
89
89
  end
90
90
  return @working_hours_in_range = WorkingHours.new("0:00").add_array_time(array_of_working_hours).time_string
91
91
  end
92
-
93
- private
94
-
95
- def valid_range?(first, second)
96
- false
97
- true if change_to_minute(first) <= change_to_minute(second)
98
- end
99
-
100
- def total_break_time(break_time)
101
- total = WorkingHours.new("0:00")
102
- break_time.each do |time|
103
- total.add_time(time[1]).minus_time(time[0])
104
- end
105
- return total.time_string
106
- end
107
-
108
- def valid_time_card_row_format?(starting_time, ending_time)
109
- # break_timeについてはvalid_break_timeでチェック
110
- flag = false
111
- if valid_time_format?(starting_time) && valid_time_format?(ending_time)
112
- flag = true
113
- end
114
- return flag
115
- end
116
-
117
- def valid_time_format?(time)
118
- flag = false
119
- if time.class == String
120
- if /(\d+):(\d+)/ =~ time
121
- if ($1.to_i <= 48 && $1.to_i >= 0) && ($2.to_i < 60 && $2.to_i >= 0)
122
- flag = true
123
- end
124
- end
125
- end
126
- return flag
127
- end
128
-
129
- def valid_time_order?(first, second)
130
- false
131
- true if change_to_minute(first) < change_to_minute(second)
132
- end
133
-
134
- def valid_break_time?(break_time, starting_time, ending_time)
135
- flag = false
136
- break_time.each do |time|
137
- if time.length == 2 && time.class == Array
138
- if valid_time_format?(time[0]) && valid_time_format?(time[1])
139
- time.each do |t|
140
- if change_to_minute(starting_time) >= change_to_minute(t) || change_to_minute(ending_time) <= change_to_minute(t)
141
- return flag = false
142
- end
143
- end
144
- flag = true
145
- end
146
- else
147
- return flag = false
148
- end
149
- end
150
-
151
- return flag
152
- end
153
-
154
- def change_to_minute(str)
155
- /(\d+):(\d+)/ =~ str
156
- return $1.to_i * 60 + $2.to_i
157
- end
158
-
159
92
  end
160
-
161
93
  end
@@ -1,3 +1,3 @@
1
1
  module CalcWorkingHours
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -5,7 +5,7 @@ module CalcWorkingHours
5
5
  class WorkingHours
6
6
  attr_reader :time_string, :minute
7
7
  def initialize(str)
8
- if valid_time_format?(str)
8
+ if CalcHelper.valid_working_hours_format?(str)
9
9
  @time_string = str
10
10
  self.to_minute
11
11
  self
@@ -15,13 +15,13 @@ module CalcWorkingHours
15
15
  end
16
16
 
17
17
  def to_minute
18
- @minute = change_to_minute(@time_string)
18
+ @minute = CalcHelper.change_to_minute(@time_string)
19
19
  end
20
20
 
21
21
  def add_time(str)
22
- if valid_time_format?(str)
23
- @minute = @minute + change_to_minute(str)
24
- @time_string = change_to_time_string(@minute)
22
+ if CalcHelper.valid_working_hours_format?(str)
23
+ @minute = @minute + CalcHelper.change_to_minute(str)
24
+ @time_string = CalcHelper.change_to_time_string(@minute)
25
25
  self
26
26
  else
27
27
  raise "failure add_time (invalid time format!)"
@@ -36,11 +36,11 @@ module CalcWorkingHours
36
36
  end
37
37
 
38
38
  def minus_time(str)
39
- if valid_time_format?(str)
40
- minute = @minute - change_to_minute(str)
39
+ if CalcHelper.valid_working_hours_format?(str)
40
+ minute = @minute - CalcHelper.change_to_minute(str)
41
41
  if minute >= 0
42
42
  @minute = minute
43
- @time_string = change_to_time_string(@minute)
43
+ @time_string = CalcHelper.change_to_time_string(@minute)
44
44
  self
45
45
  else
46
46
  raise "failure add_time (invalid time format!)"
@@ -48,32 +48,5 @@ module CalcWorkingHours
48
48
  end
49
49
  end
50
50
 
51
- private
52
- def valid_time_format?(str)
53
- flag = false
54
- if str.class == String
55
- if /\d+:(\d+)/ =~ str
56
- if $1.to_i < 60 && $1.to_i >= 0
57
- flag = true
58
- end
59
- end
60
- end
61
- return flag
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).to_s
71
- minute = (minute % 60).to_s
72
- if minute.length == 1
73
- minute = "0" + minute
74
- end
75
- return hour + ":" + minute
76
- end
77
-
78
51
  end
79
52
  end
@@ -1,3 +1,4 @@
1
+ require "calc_working_hours/calc_helper"
1
2
  require "calc_working_hours/time_card"
2
3
  require "calc_working_hours/time_card_row"
3
4
  require "calc_working_hours/time_recorder"
metadata CHANGED
@@ -1,57 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: calc_working_hours
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Takashi_U
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-09-23 00:00:00.000000000 Z
12
+ date: 2013-09-23 00:00:00.000000000Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
+ requirement: &70285409908500 !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
19
21
  version: '1.3'
20
22
  type: :development
21
23
  prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ~>
25
- - !ruby/object:Gem::Version
26
- version: '1.3'
24
+ version_requirements: *70285409908500
27
25
  - !ruby/object:Gem::Dependency
28
26
  name: rake
29
- requirement: !ruby/object:Gem::Requirement
27
+ requirement: &70285409907800 !ruby/object:Gem::Requirement
28
+ none: false
30
29
  requirements:
31
- - - '>='
30
+ - - ! '>='
32
31
  - !ruby/object:Gem::Version
33
32
  version: '0'
34
33
  type: :development
35
34
  prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
35
+ version_requirements: *70285409907800
41
36
  - !ruby/object:Gem::Dependency
42
37
  name: rspec
43
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &70285409907060 !ruby/object:Gem::Requirement
39
+ none: false
44
40
  requirements:
45
- - - '>='
41
+ - - ! '>='
46
42
  - !ruby/object:Gem::Version
47
43
  version: '0'
48
44
  type: :development
49
45
  prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
46
+ version_requirements: *70285409907060
55
47
  description: 例えば、173:08のような表記の時間を計算するライブラリです
56
48
  email:
57
49
  - ''
@@ -68,6 +60,7 @@ files:
68
60
  - Rakefile
69
61
  - calc_working_hours.gemspec
70
62
  - lib/calc_working_hours.rb
63
+ - lib/calc_working_hours/calc_helper.rb
71
64
  - lib/calc_working_hours/time_card.rb
72
65
  - lib/calc_working_hours/time_card_row.rb
73
66
  - lib/calc_working_hours/time_recorder.rb
@@ -84,26 +77,33 @@ files:
84
77
  homepage: https://github.com/Takashi-U/calc_working_hours
85
78
  licenses:
86
79
  - MIT
87
- metadata: {}
88
80
  post_install_message:
89
81
  rdoc_options: []
90
82
  require_paths:
91
83
  - lib
92
84
  required_ruby_version: !ruby/object:Gem::Requirement
85
+ none: false
93
86
  requirements:
94
- - - '>='
87
+ - - ! '>='
95
88
  - !ruby/object:Gem::Version
96
89
  version: '0'
90
+ segments:
91
+ - 0
92
+ hash: -1838675914513887134
97
93
  required_rubygems_version: !ruby/object:Gem::Requirement
94
+ none: false
98
95
  requirements:
99
- - - '>='
96
+ - - ! '>='
100
97
  - !ruby/object:Gem::Version
101
98
  version: '0'
99
+ segments:
100
+ - 0
101
+ hash: -1838675914513887134
102
102
  requirements: []
103
103
  rubyforge_project:
104
- rubygems_version: 2.0.3
104
+ rubygems_version: 1.8.10
105
105
  signing_key:
106
- specification_version: 4
106
+ specification_version: 3
107
107
  summary: 時間計算
108
108
  test_files:
109
109
  - spec/calc_working_hours/data_sample.csv
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: de4eaa0b8467abb4b621e819e25038b342c33936
4
- data.tar.gz: dee2875a0559607c565770adf163a786da2ba6dd
5
- SHA512:
6
- metadata.gz: 7cd7effd40cc868f38230f3ca02fc17fe6fee931fe23147dfb75fa48b90b24ea16411f27d2e0d03cf58043bd239bca3edab93ea296796e50b303014f01001895
7
- data.tar.gz: 451121820aea6dc580c5d603f94c8e9819c7d48e7097dd1ae14d09ef925cc70cb27dbb3c9be412d7c0970476be2962d4428a9c7e8d0b057f9cc19a90ec405e8a