calc_working_hours 0.1.4 → 0.1.5

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