gb_work_day 0.0.4 → 0.0.6
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 +5 -5
- data/.idea/gb_working_day.iml +11 -78
- data/lib/gb_work_day/core_ext/date.rb +14 -0
- data/lib/gb_work_day/duration.rb +24 -16
- data/lib/gb_work_day/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 06c47230ed0b62eaf183e73881b2e8f516435470a500b1ce703f96cbcf71f414
|
|
4
|
+
data.tar.gz: 055b42d77c11caa155c821bc40662a39d2dca5b13e3e005750e69c0964b395a4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9bd9bb5b0d0d22b4960a109772619edf1600c515d7ec22282664a1ae5292b675a4616d31d1da57c01d0407926b0fc5295217b833c0dae3cb2bf1974a5a00446e
|
|
7
|
+
data.tar.gz: c08aed54bbd3c851a9ac0793a1faed0f242add8f61263e06c94e5817200cf1b1b8eb696da4983aa6cbb24e1aa0d163c5a88939631bb10569e478ccf2edcb88b5
|
data/.idea/gb_working_day.iml
CHANGED
|
@@ -41,40 +41,7 @@
|
|
|
41
41
|
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
|
|
42
42
|
<method />
|
|
43
43
|
</configuration>
|
|
44
|
-
<configuration default="false" name="
|
|
45
|
-
<predefined_log_file id="RUBY_RSPEC" enabled="true" />
|
|
46
|
-
<module name="gb_working_day" />
|
|
47
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
|
48
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
|
|
49
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
|
|
50
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
|
|
51
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
|
|
52
|
-
<envs>
|
|
53
|
-
<env name="JRUBY_OPTS" value="-X+O" />
|
|
54
|
-
</envs>
|
|
55
|
-
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="true" />
|
|
56
|
-
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
|
57
|
-
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
|
|
58
|
-
<COVERAGE_PATTERN ENABLED="true">
|
|
59
|
-
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
|
60
|
-
</COVERAGE_PATTERN>
|
|
61
|
-
</EXTENSION>
|
|
62
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
|
|
63
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/spec/core_ext/time_spec.rb" />
|
|
64
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
|
|
65
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
|
|
66
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="Time extensions" />
|
|
67
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
|
|
68
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
|
|
69
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
|
|
70
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
|
|
71
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
|
|
72
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
|
|
73
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
|
|
74
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
|
|
75
|
-
<method />
|
|
76
|
-
</configuration>
|
|
77
|
-
<configuration default="false" name="GBWorkingDay::Duration should calculate proper date for past: gb_working_day" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true">
|
|
44
|
+
<configuration default="false" name="Date extensions should properly add work duration: gb_working_day" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true">
|
|
78
45
|
<predefined_log_file id="RUBY_RSPEC" enabled="true" />
|
|
79
46
|
<module name="gb_working_day" />
|
|
80
47
|
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
|
@@ -93,10 +60,10 @@
|
|
|
93
60
|
</COVERAGE_PATTERN>
|
|
94
61
|
</EXTENSION>
|
|
95
62
|
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
|
|
96
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/spec/
|
|
63
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/spec/core_ext/date_spec.rb" />
|
|
97
64
|
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
|
|
98
65
|
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
|
|
99
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="
|
|
66
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="Date extensions should properly add work duration" />
|
|
100
67
|
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
|
|
101
68
|
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
|
|
102
69
|
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
|
|
@@ -173,39 +140,6 @@
|
|
|
173
140
|
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
|
|
174
141
|
<method />
|
|
175
142
|
</configuration>
|
|
176
|
-
<configuration default="false" name="Date extensions should properly add work duration: gb_working_day" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true">
|
|
177
|
-
<predefined_log_file id="RUBY_RSPEC" enabled="true" />
|
|
178
|
-
<module name="gb_working_day" />
|
|
179
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
|
180
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
|
|
181
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
|
|
182
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
|
|
183
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
|
|
184
|
-
<envs>
|
|
185
|
-
<env name="JRUBY_OPTS" value="-X+O" />
|
|
186
|
-
</envs>
|
|
187
|
-
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="true" />
|
|
188
|
-
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
|
189
|
-
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
|
|
190
|
-
<COVERAGE_PATTERN ENABLED="true">
|
|
191
|
-
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
|
192
|
-
</COVERAGE_PATTERN>
|
|
193
|
-
</EXTENSION>
|
|
194
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
|
|
195
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/spec/core_ext/date_spec.rb" />
|
|
196
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
|
|
197
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
|
|
198
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="Date extensions should properly add work duration" />
|
|
199
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
|
|
200
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
|
|
201
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
|
|
202
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
|
|
203
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
|
|
204
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
|
|
205
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
|
|
206
|
-
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
|
|
207
|
-
<method />
|
|
208
|
-
</configuration>
|
|
209
143
|
</component>
|
|
210
144
|
<component name="NewModuleRootManager">
|
|
211
145
|
<content url="file://$MODULE_DIR$">
|
|
@@ -215,19 +149,18 @@
|
|
|
215
149
|
</content>
|
|
216
150
|
<orderEntry type="jdk" jdkName="RVM: ruby-2.3.0" jdkType="RUBY_SDK" />
|
|
217
151
|
<orderEntry type="sourceFolder" forTests="false" />
|
|
218
|
-
<orderEntry type="library" scope="PROVIDED" name="activesupport (v4.2.
|
|
219
|
-
<orderEntry type="library" scope="PROVIDED" name="bundler (v1.11.2, RVM: ruby-2.3.0) [gem]" level="application" />
|
|
152
|
+
<orderEntry type="library" scope="PROVIDED" name="activesupport (v4.2.6, RVM: ruby-2.3.0) [gem]" level="application" />
|
|
220
153
|
<orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.2.5, RVM: ruby-2.3.0) [gem]" level="application" />
|
|
221
154
|
<orderEntry type="library" scope="PROVIDED" name="docile (v1.1.5, RVM: ruby-2.3.0) [gem]" level="application" />
|
|
222
155
|
<orderEntry type="library" scope="PROVIDED" name="i18n (v0.7.0, RVM: ruby-2.3.0) [gem]" level="application" />
|
|
223
|
-
<orderEntry type="library" scope="PROVIDED" name="minitest (v5.
|
|
156
|
+
<orderEntry type="library" scope="PROVIDED" name="minitest (v5.9.0, RVM: ruby-2.3.0) [gem]" level="application" />
|
|
224
157
|
<orderEntry type="library" scope="PROVIDED" name="rake (v10.5.0, RVM: ruby-2.3.0) [gem]" level="application" />
|
|
225
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec (v3.
|
|
226
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.
|
|
227
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.
|
|
228
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.
|
|
229
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.
|
|
230
|
-
<orderEntry type="library" scope="PROVIDED" name="simplecov (v0.
|
|
158
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec (v3.1.0, RVM: ruby-2.3.0) [gem]" level="application" />
|
|
159
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.1.7, RVM: ruby-2.3.0) [gem]" level="application" />
|
|
160
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.1.2, RVM: ruby-2.3.0) [gem]" level="application" />
|
|
161
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.1.3, RVM: ruby-2.3.0) [gem]" level="application" />
|
|
162
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.1.2, RVM: ruby-2.3.0) [gem]" level="application" />
|
|
163
|
+
<orderEntry type="library" scope="PROVIDED" name="simplecov (v0.10.0, RVM: ruby-2.3.0) [gem]" level="application" />
|
|
231
164
|
<orderEntry type="library" scope="PROVIDED" name="simplecov-html (v0.10.0, RVM: ruby-2.3.0) [gem]" level="application" />
|
|
232
165
|
<orderEntry type="library" scope="PROVIDED" name="thread_safe (v0.3.5, RVM: ruby-2.3.0) [gem]" level="application" />
|
|
233
166
|
<orderEntry type="library" scope="PROVIDED" name="tzinfo (v1.2.2, RVM: ruby-2.3.0) [gem]" level="application" />
|
|
@@ -49,6 +49,20 @@ class Date
|
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
+
# Return previous working day
|
|
53
|
+
# @return [Time]
|
|
54
|
+
def previous_work_day
|
|
55
|
+
if default_week.free_day? self
|
|
56
|
+
previous_day = self
|
|
57
|
+
while default_week.free_day? previous_day
|
|
58
|
+
previous_day -= 1
|
|
59
|
+
end
|
|
60
|
+
previous_day
|
|
61
|
+
else
|
|
62
|
+
self - GBWorkDay::Duration.new(1, default_week)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
52
66
|
# Get date object for calculating working days
|
|
53
67
|
#
|
|
54
68
|
# @param week [GBWorkDay::WorkWeek] if not set, it will use week set globally. For more check {GBWorkingDay::WorkWeek#current}
|
data/lib/gb_work_day/duration.rb
CHANGED
|
@@ -74,14 +74,14 @@ module GBWorkDay
|
|
|
74
74
|
# Calculates a new Time or Date that is as far in the future
|
|
75
75
|
# as this Duration represents.
|
|
76
76
|
def since(time = ::Time.current)
|
|
77
|
-
sum(
|
|
77
|
+
self.work_days > 0 ? sum(time) : subtract(time)
|
|
78
78
|
end
|
|
79
79
|
alias :from_now :since
|
|
80
80
|
|
|
81
81
|
# Calculates a new Time or Date that is as far in the past
|
|
82
82
|
# as this Duration represents.
|
|
83
83
|
def ago(time = ::Time.current)
|
|
84
|
-
sum(
|
|
84
|
+
self.work_days > 0 ? subtract(time) : sum(time)
|
|
85
85
|
end
|
|
86
86
|
alias :until :ago
|
|
87
87
|
|
|
@@ -91,22 +91,30 @@ module GBWorkDay
|
|
|
91
91
|
|
|
92
92
|
private
|
|
93
93
|
|
|
94
|
-
def sum(
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
time
|
|
94
|
+
def sum(time)
|
|
95
|
+
distance_to_last_monday = (time.wday - 1) % 7
|
|
96
|
+
weekends_count = (distance_to_last_monday + self.work_days.abs) / @week.work_days_per_week
|
|
97
|
+
weekends_length = weekends_count * @week.free_days_per_week
|
|
98
|
+
|
|
99
|
+
sum_normal_days(sum_normal_days(time, weekends_length), self.work_days.abs)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def subtract(time)
|
|
103
|
+
distance_to_eof = distance_to_end_of_week(time)
|
|
104
|
+
weekends_count = (distance_to_eof + self.work_days.abs) / @week.work_days_per_week
|
|
105
|
+
weekends_length = weekends_count * @week.free_days_per_week
|
|
106
|
+
|
|
107
|
+
sum_normal_days(sum_normal_days(time, -weekends_length), -self.work_days.abs)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# @param time [Date|Time]
|
|
111
|
+
# @return distance_to_eof [Integer]
|
|
112
|
+
def distance_to_end_of_week(time)
|
|
113
|
+
(@week.work_days_per_week - time.wday) % (@week.work_days_per_week)
|
|
108
114
|
end
|
|
109
115
|
|
|
116
|
+
# @param time [Date|Time]
|
|
117
|
+
# @param days [Integer]
|
|
110
118
|
def sum_normal_days(time, days)
|
|
111
119
|
if time.is_a? ::Date
|
|
112
120
|
time += days * 1
|
data/lib/gb_work_day/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gb_work_day
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kacper Kawecki
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2018-12-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -139,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
139
139
|
version: '0'
|
|
140
140
|
requirements: []
|
|
141
141
|
rubyforge_project:
|
|
142
|
-
rubygems_version: 2.
|
|
142
|
+
rubygems_version: 2.7.7
|
|
143
143
|
signing_key:
|
|
144
144
|
specification_version: 4
|
|
145
145
|
summary: Library extending Time and Date to do calculations for work days
|