calc_working_hours 0.2.1 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ea21e50f8b5b8af5843d898a5019f54bd5e4c4d0
4
- data.tar.gz: 5eb6efc9ff0decf4ca6348c62007ddad425d82cb
3
+ metadata.gz: 16b8b8c6774066be91cce24c079db2df12b65c81
4
+ data.tar.gz: ab99ed5e2a1c3a5df82d2560b8a4a4336485e4a2
5
5
  SHA512:
6
- metadata.gz: 16e476bd0df661b86ecf69877ca07adbf3e12ef4f14cee526d120247f3dff77b30a0e771542b8d596211333378d06a204f4543a652fd787933ecc546fdf099a6
7
- data.tar.gz: 2c9b9ca198e8b52abffe72ce7718ddc022163947fe30cd43ce912926a47058c41954459c1a9a78b45bc37f2d7ff917fb349675fde7bdade764f6b3da1e309a07
6
+ metadata.gz: c3fb572921a516701f0b4b954bccc2ec750efeba9dcbd3ebe7d688fbaa88667c7c458625089b52a28eebe5010b133d739eb04b0e73a6755c30f980ba2f366d94
7
+ data.tar.gz: 2467a654f306c79deefc8388253fd93129c6d5abadbe5953e6daf7a0140deb6e0c86926a444dc094d9cf185531c14009ca553aec9f54d0651afb375636317c1a
@@ -6,7 +6,15 @@ module CalcWorkingHours
6
6
 
7
7
  class TimeCardRow
8
8
  attr_reader :starting_time, :ending_time, :break_time, :working_hours, :date_string, :time_point, :over_time, :id
9
- def initialize(date_string, starting_time, ending_time, *break_time)
9
+ def initialize(date_string, starting_time, ending_time, auto_correction, *break_time)
10
+
11
+ if auto_correction
12
+ unless CalcHelper.valid_time_order?(starting_time, ending_time)
13
+ et = WorkingHours.new(ending_time)
14
+ ending_time = et.add_time("24:00")
15
+ end
16
+ end
17
+
10
18
  unless date_string.class == String
11
19
  raise "failure set_date (date should string class)! TimeCardRow class"
12
20
  end
@@ -24,7 +32,7 @@ module CalcWorkingHours
24
32
  raise "failure initialize (invalid break time! TimeCardRow class)"
25
33
  end
26
34
  end
27
-
35
+
28
36
  break_time.each do |time|
29
37
  unless CalcHelper.valid_time_order?(time[0], time[1])
30
38
  raise "failure initialize (invalid time order(break time)! TimeCardRow class)"
@@ -5,8 +5,7 @@ module CalcWorkingHours
5
5
 
6
6
  class TimeRecorder
7
7
  attr_reader :time_cards
8
- def initialize(path_to_csv, set_encode, id_row, card_id_row, date_row, starting_time_row, ending_time_row, *break_time_rows)
9
-
8
+ def initialize(path_to_csv, set_encode ,id_row, card_id_row, date_row, starting_time_row, ending_time_row, auto_correction, *break_time_rows)
10
9
  csv_data = File.read(path_to_csv) if set_encode == nil || set_encode == false
11
10
  csv_data = File.read(path_to_csv, :encoding => set_encode + ":UTF-8") if set_encode
12
11
  time_cards = {}
@@ -27,10 +26,10 @@ module CalcWorkingHours
27
26
 
28
27
  if time_cards.has_key?(row[card_id_row])
29
28
  raise "id mismatching! (TimeRecorder class)" unless time_cards[row[card_id_row]].id == row[id_row]
30
- time_cards[row[card_id_row]].add_row(TimeCardRow.new(row[date_row], row[starting_time_row], row[ending_time_row], *break_times))
29
+ time_cards[row[card_id_row]].add_row(TimeCardRow.new(row[date_row], row[starting_time_row], row[ending_time_row], auto_correction ,*break_times))
31
30
  else
32
31
  time_cards[row[card_id_row]] = TimeCard.new(row[card_id_row], row[id_row])
33
- time_cards[row[card_id_row]].add_row(TimeCardRow.new(row[date_row], row[starting_time_row], row[ending_time_row], *break_times))
32
+ time_cards[row[card_id_row]].add_row(TimeCardRow.new(row[date_row], row[starting_time_row], row[ending_time_row], auto_correction , *break_times))
34
33
  end
35
34
  end
36
35
  end
@@ -1,3 +1,3 @@
1
1
  module CalcWorkingHours
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -6,7 +6,7 @@ include CalcWorkingHours
6
6
  describe TimeCardRow do
7
7
  context "始業9:00、終業19:00、休憩11:00〜12:00、15:00〜16:00のとき" do
8
8
  before do
9
- @time_card_row = TimeCardRow.new("2013/5/12", "9:00", "19:00", ["11:00", "12:00"], ["15:00", "16:00"])
9
+ @time_card_row = TimeCardRow.new("2013/5/12", "9:00", "19:00", false, ["11:00", "12:00"], ["15:00", "16:00"])
10
10
  end
11
11
 
12
12
  it "始業時間は9:00となっている" do
@@ -48,7 +48,7 @@ describe TimeCardRow do
48
48
 
49
49
  context "始業11:30、終業23:34、休憩15:38〜17:14のとき" do
50
50
  before do
51
- @time_card_row = TimeCardRow.new("2013/5/12", "11:30", "23:34", ["15:38", "17:14"])
51
+ @time_card_row = TimeCardRow.new("2013/5/12", "11:30", "23:34", false, ["15:38", "17:14"])
52
52
  end
53
53
 
54
54
  it "所定労働時間を8:00とすると、残業時間は2:28となる" do
@@ -58,7 +58,7 @@ describe TimeCardRow do
58
58
 
59
59
  context "始業9:00、終業18:00、休憩9:00〜18:00のとき" do
60
60
  before do
61
- @time_card_row = TimeCardRow.new("2013/5/12", "9:00", "18:00", ["9:00", "18:00"])
61
+ @time_card_row = TimeCardRow.new("2013/5/12", "9:00", "18:00", false, ["9:00", "18:00"])
62
62
  end
63
63
 
64
64
  it "労働時間は0:00となる" do
@@ -68,51 +68,51 @@ describe TimeCardRow do
68
68
 
69
69
  context "適正な時間設定と、不適な設定時間を設定したとき" do
70
70
  it "set_dateにString以外を設定すると例外が発生する" do
71
- proc { TimeCardRow.new(Date.new(2013, 5, 12), "22:00", "28:00") }.should raise_error
71
+ proc { TimeCardRow.new(Date.new(2013, 5, 12), "22:00", "28:00", false) }.should raise_error
72
72
  end
73
73
 
74
74
  it "始業22:00、終業28:00は適正な始業・終業時間設定(0:00〜48:00)なので、エラーは発生しないこと" do
75
- proc{ TimeCardRow.new("2013/5/12", "22:00", "28:00") }.should_not raise_error
75
+ proc{ TimeCardRow.new("2013/5/12", "22:00", "28:00", false) }.should_not raise_error
76
76
  end
77
77
 
78
78
  it "始業44:00、終業50:00は不適正な始業・終業時間設定なので、エラーが発生すること" do
79
- proc{ TimeCardRow.new("2013/5/12", "44:00", "50:00") }.should raise_error
79
+ proc{ TimeCardRow.new("2013/5/12", "44:00", "50:00", false) }.should raise_error
80
80
  end
81
81
 
82
82
  it "始業四:00、終業5:00は不適正な時間フォーマットなので、エラーが発生すること" do
83
- proc{ TimeCardRow.new("2013/5/12", "四:00", "5:00") }.should raise_error
83
+ proc{ TimeCardRow.new("2013/5/12", "四:00", "5:00" ,false)}.should raise_error
84
84
  end
85
85
 
86
86
  it "始業9:00、終業19:00の時系列に誤りが無いので、エラーは発生しないこと" do
87
- proc { TimeCardRow.new("2013/5/12", "9:00", "19:00") }.should_not raise_error
87
+ proc { TimeCardRow.new("2013/5/12", "9:00", "19:00" ,false)}.should_not raise_error
88
88
  end
89
89
 
90
90
  it "始業18:00、終業8:00は時系列が誤っているので、エラーが発生すること" do
91
- proc { TimeCardRow.new("2013/5/12", "18:00", "9:00") }.should raise_error
91
+ proc { TimeCardRow.new("2013/5/12", "18:00", "9:00" ,false)}.should raise_error
92
92
  end
93
93
 
94
94
  it "始業8:00、終業19:00、休憩12:00〜11:00は時系列が誤っているので、エラーが発生すること" do
95
- proc { TimeCardRow.new("2013/5/12", "8:00", "19:00", ["12:00", "10:00"]) }.should raise_error
95
+ proc { TimeCardRow.new("2013/5/12", "8:00", "19:00",false,["12:00", "10:00"]) }.should raise_error
96
96
  end
97
97
 
98
98
  it "始業8:00、終業19:00、休憩12:00は休憩時間設定が誤っているので、エラーが発生すること" do
99
- proc { TimeCardRow.new("2013/5/12", "8:00", "19:00", "12:00") }.should raise_error
99
+ proc { TimeCardRow.new("2013/5/12", "8:00", "19:00", "12:00",false) }.should raise_error
100
100
  end
101
101
 
102
102
  it "始業8:00、終業19:00、休憩7:00〜11:00は時系列が誤っているので、エラーが発生すること" do
103
- proc { TimeCardRow.new("2013/5/12", "8:00", "19:00", ["7:00", "10:00"]) }.should raise_error
103
+ proc { TimeCardRow.new("2013/5/12", "8:00", "19:00",false, ["7:00", "10:00"]) }.should raise_error
104
104
  end
105
105
  end
106
106
 
107
107
  context "始業20:00、終業25:00のとき" do
108
108
  it "深夜勤務時間は3:00となる" do
109
- TimeCardRow.new("2013/5/12", "20:00", "25:00").between_10pm_and_5am.should == "3:00"
109
+ TimeCardRow.new("2013/5/12", "20:00", "25:00", false).between_10pm_and_5am.should == "3:00"
110
110
  end
111
111
  end
112
112
 
113
113
  context "始業20:00、終業25:00、休憩23:00〜24:00のとき" do
114
114
  it "深夜勤務時間は4:00となる" do
115
- TimeCardRow.new("2013/5/12", "20:00", "25:00", ["23:00", "24:00"]).between_10pm_and_5am.should == "2:00"
115
+ TimeCardRow.new("2013/5/12", "20:00", "25:00", false,["23:00", "24:00"]).between_10pm_and_5am.should == "2:00"
116
116
  end
117
117
  end
118
118
 
@@ -7,8 +7,8 @@ describe TimeCard do
7
7
  context "始業9:00、終業19:00、休憩11:00〜12:00、15:00〜16:00が2日間のとき" do
8
8
  before do
9
9
  @time_card = TimeCard.new(1,1)
10
- @time_card.add_row(TimeCardRow.new("2013/5/12", "9:00", "19:00", ["11:00", "12:00"], ["15:00", "16:00"]).set_fixed_working_hours("7:00"))
11
- @time_card.add_row(TimeCardRow.new("2013/5/13", "9:00", "19:00", ["11:00", "12:00"], ["15:00", "16:00"]).set_fixed_working_hours("7:00"))
10
+ @time_card.add_row(TimeCardRow.new("2013/5/12", "9:00", "19:00", false, ["11:00", "12:00"], ["15:00", "16:00"]).set_fixed_working_hours("7:00"))
11
+ @time_card.add_row(TimeCardRow.new("2013/5/13", "9:00", "19:00", false, ["11:00", "12:00"], ["15:00", "16:00"]).set_fixed_working_hours("7:00"))
12
12
  end
13
13
 
14
14
  it "残業時間のトータルは2:00となる" do
@@ -19,8 +19,8 @@ describe TimeCard do
19
19
  context "始業24:00、終業30:00、休憩25:00〜26:00が2日間のとき" do
20
20
  before do
21
21
  @time_card = TimeCard.new(1,1)
22
- @time_card.add_row(TimeCardRow.new("2013/5/12", "24:00", "30:00",["25:00", "26:00"]).set_fixed_working_hours("7:00"))
23
- @time_card.add_row(TimeCardRow.new("2013/5/13", "24:00", "30:00",["25:00", "26:00"]).set_fixed_working_hours("7:00"))
22
+ @time_card.add_row(TimeCardRow.new("2013/5/12", "24:00", "30:00", false,["25:00", "26:00"]).set_fixed_working_hours("7:00"))
23
+ @time_card.add_row(TimeCardRow.new("2013/5/13", "24:00", "30:00", false,["25:00", "26:00"]).set_fixed_working_hours("7:00"))
24
24
  end
25
25
 
26
26
  it "深夜時間のトータルは8:00となる" do
@@ -7,7 +7,7 @@ describe TimeRecorder do
7
7
  context "data_sample.csv(Shift_JIS)の通りTimeRecorderが与えられている場合" do
8
8
  before do
9
9
  path_to_csv = File.expand_path(File.dirname(__FILE__)) + "/data_sample.csv"
10
- @time_recorder = TimeRecorder.new(path_to_csv, "Shift_JIS", "従業員番号", "カード番号", "年/月/日", "出勤打刻", "退勤打刻", ["外出打刻", "戻打刻"])
10
+ @time_recorder = TimeRecorder.new(path_to_csv, "Shift_JIS", "従業員番号", "カード番号", "年/月/日", "出勤打刻", "退勤打刻", false,["外出打刻", "戻打刻"])
11
11
  end
12
12
 
13
13
  it "タイムカードのデータが5件あること" do
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: calc_working_hours
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi_U
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-24 00:00:00.000000000 Z
11
+ date: 2017-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  description: 例えば、173:08のような表記の時間を計算するライブラリです
@@ -59,9 +59,9 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - .gitignore
63
- - .rspec
64
- - .travis.yml
62
+ - ".gitignore"
63
+ - ".rspec"
64
+ - ".travis.yml"
65
65
  - Gemfile
66
66
  - LICENSE.txt
67
67
  - README.md
@@ -92,17 +92,17 @@ require_paths:
92
92
  - lib
93
93
  required_ruby_version: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - '>='
95
+ - - ">="
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - '>='
100
+ - - ">="
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
103
  requirements: []
104
104
  rubyforge_project:
105
- rubygems_version: 2.0.3
105
+ rubygems_version: 2.5.1
106
106
  signing_key:
107
107
  specification_version: 4
108
108
  summary: 時間計算