sixarm_ruby_week 1.1.8 → 1.2.2
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Rakefile +0 -1
- data/lib/sixarm_ruby_week.rb +1 -1
- data/lib/sixarm_ruby_week/week.rb +397 -0
- data/test/sixarm_ruby_week_test.rb +1 -0
- data/test/sixarm_ruby_week_test/week_test.rb +26 -18
- metadata +24 -9
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6db74a3428b9b9ed56a05421475ee480c6c1255b
|
4
|
+
data.tar.gz: 4851889f70cfdabc6aab495f1ae3bf8ed93b0730
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e319af65dc9fad712d7f12a41d3818329e92c59420e5494299167d993b7f068b3e2736ae6953398dc9b24bdc52628fcc662b3865d6d48eb462c748542deae6dd
|
7
|
+
data.tar.gz: 47d14753e907060beab0089de0383fc449d27fd9645381b6ac2e7e5906ac2be872c35403a59d9d8b03e11c9e3490c02d12cc2c5dad66f5c822dd1b3385c6fb8d
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/Rakefile
CHANGED
data/lib/sixarm_ruby_week.rb
CHANGED
@@ -0,0 +1,397 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
=begin rdoc
|
3
|
+
Week class.
|
4
|
+
=end
|
5
|
+
|
6
|
+
require "date"
|
7
|
+
|
8
|
+
class Week
|
9
|
+
|
10
|
+
attr :date
|
11
|
+
|
12
|
+
# Initialize the week with a date.
|
13
|
+
#
|
14
|
+
# Example:
|
15
|
+
#
|
16
|
+
# require "date"
|
17
|
+
# date = Date.today
|
18
|
+
# week = Week.new(date)
|
19
|
+
#
|
20
|
+
# Return:
|
21
|
+
#
|
22
|
+
# * [Week] The new week
|
23
|
+
#
|
24
|
+
def initialize(date)
|
25
|
+
@date = date
|
26
|
+
end
|
27
|
+
|
28
|
+
# Return the week's date, coverted to a string.
|
29
|
+
#
|
30
|
+
# Example:
|
31
|
+
#
|
32
|
+
# date = Date.parse("2015-12-31")
|
33
|
+
# week = Week.new(date)
|
34
|
+
# week.to_s #=> "2015-12-31"
|
35
|
+
#
|
36
|
+
# Return:
|
37
|
+
#
|
38
|
+
# * [String] The week's date, coverted to a string.
|
39
|
+
#
|
40
|
+
def to_s
|
41
|
+
@date.to_s
|
42
|
+
end
|
43
|
+
|
44
|
+
###
|
45
|
+
#
|
46
|
+
# Instantiations
|
47
|
+
#
|
48
|
+
###
|
49
|
+
|
50
|
+
# Return the week that starts today
|
51
|
+
#
|
52
|
+
# Example:
|
53
|
+
#
|
54
|
+
# week = Week.now
|
55
|
+
#
|
56
|
+
def self.now
|
57
|
+
Week.new(Date.today)
|
58
|
+
end
|
59
|
+
|
60
|
+
# Parse date text to a week.
|
61
|
+
#
|
62
|
+
# Example:
|
63
|
+
#
|
64
|
+
# week = Week.parse("2015-12-31")
|
65
|
+
#
|
66
|
+
# Return:
|
67
|
+
#
|
68
|
+
# * [Week] A new week.
|
69
|
+
#
|
70
|
+
def self.parse(date_text)
|
71
|
+
Week.new(Date.parse(date_text))
|
72
|
+
end
|
73
|
+
|
74
|
+
###
|
75
|
+
#
|
76
|
+
# Comparable
|
77
|
+
#
|
78
|
+
###
|
79
|
+
|
80
|
+
# Return a hash for object comparison.
|
81
|
+
#
|
82
|
+
# This is simply the hash of the date, which means
|
83
|
+
# that two week objects created with the same date
|
84
|
+
# always compare equally.
|
85
|
+
#
|
86
|
+
# Example:
|
87
|
+
#
|
88
|
+
# date = Date.today
|
89
|
+
# date.hash #=> 1655958911300557206
|
90
|
+
# week = Week.new(date)
|
91
|
+
# week.hash #=> 1655958911300557206
|
92
|
+
#
|
93
|
+
# Return:
|
94
|
+
#
|
95
|
+
# * [Fixnum] The week's date's object hash number.
|
96
|
+
#
|
97
|
+
def hash
|
98
|
+
date.hash
|
99
|
+
end
|
100
|
+
|
101
|
+
# Return week1.date == week2.date
|
102
|
+
#
|
103
|
+
# Example:
|
104
|
+
#
|
105
|
+
# a = Week.now
|
106
|
+
# b = Week.now
|
107
|
+
# a == b #=> true
|
108
|
+
#
|
109
|
+
# Return:
|
110
|
+
#
|
111
|
+
# * [true,false]
|
112
|
+
#
|
113
|
+
def ==(other)
|
114
|
+
self.date == other.date
|
115
|
+
end
|
116
|
+
|
117
|
+
# Return week1.date.eql? week2.date
|
118
|
+
#
|
119
|
+
# Example:
|
120
|
+
#
|
121
|
+
# a = Week.now
|
122
|
+
# b = Week.now
|
123
|
+
# a.eql? b #=> true
|
124
|
+
#
|
125
|
+
# Return:
|
126
|
+
#
|
127
|
+
# * [true,false]
|
128
|
+
#
|
129
|
+
alias :eql? :==
|
130
|
+
|
131
|
+
# Return week1.date <=> week2.date
|
132
|
+
#
|
133
|
+
# a = Week.now
|
134
|
+
# b = Week.now
|
135
|
+
# a <=> b #=> 0
|
136
|
+
#
|
137
|
+
# Return:
|
138
|
+
#
|
139
|
+
# * [-1,0,1]
|
140
|
+
#
|
141
|
+
def <=>(other)
|
142
|
+
return self.date <=> other.date
|
143
|
+
end
|
144
|
+
|
145
|
+
|
146
|
+
# Return week1.date < week2.date
|
147
|
+
#
|
148
|
+
# Example:
|
149
|
+
#
|
150
|
+
# a = Week.new(date)
|
151
|
+
# b = Week.new(date - 1)
|
152
|
+
# a < b #=> true
|
153
|
+
#
|
154
|
+
# Return:
|
155
|
+
#
|
156
|
+
# * [true,false]
|
157
|
+
#
|
158
|
+
def <(other)
|
159
|
+
self.date < other.date
|
160
|
+
end
|
161
|
+
|
162
|
+
|
163
|
+
# Return week1.date <= week2.date
|
164
|
+
#
|
165
|
+
# Example:
|
166
|
+
#
|
167
|
+
# a = Week.new(date)
|
168
|
+
# b = Week.new(date - 1)
|
169
|
+
# a <= b #=> true
|
170
|
+
#
|
171
|
+
# Return:
|
172
|
+
#
|
173
|
+
# * [true,false]
|
174
|
+
#
|
175
|
+
def <=(other)
|
176
|
+
self.date <= other.date
|
177
|
+
end
|
178
|
+
|
179
|
+
|
180
|
+
# Return week1.date > week2.date
|
181
|
+
#
|
182
|
+
# Example:
|
183
|
+
#
|
184
|
+
# a = Week.new(date)
|
185
|
+
# b = Week.new(date + 1)
|
186
|
+
# a > b #=> true
|
187
|
+
#
|
188
|
+
# Return:
|
189
|
+
#
|
190
|
+
# * [true,false]
|
191
|
+
#
|
192
|
+
def >(other)
|
193
|
+
self.date > other.date
|
194
|
+
end
|
195
|
+
|
196
|
+
|
197
|
+
# Return week1.date >= week2.date
|
198
|
+
#
|
199
|
+
# Example:
|
200
|
+
#
|
201
|
+
# a = Week.new(date)
|
202
|
+
# b = Week.new(date + 1)
|
203
|
+
# a >= b #=> true
|
204
|
+
#
|
205
|
+
# Return:
|
206
|
+
#
|
207
|
+
# * [true,false]
|
208
|
+
#
|
209
|
+
def >=(other)
|
210
|
+
self.date >= other.date
|
211
|
+
end
|
212
|
+
|
213
|
+
###
|
214
|
+
#
|
215
|
+
# Math
|
216
|
+
#
|
217
|
+
###
|
218
|
+
|
219
|
+
# Addition: week + other => week
|
220
|
+
#
|
221
|
+
# Return a date object pointing at other weeks after self.
|
222
|
+
#
|
223
|
+
# The other should be a numeric value.
|
224
|
+
#
|
225
|
+
# Example:
|
226
|
+
#
|
227
|
+
# week = Week.new(date)
|
228
|
+
# week + 3 #=> three weeks later
|
229
|
+
#
|
230
|
+
# Return:
|
231
|
+
#
|
232
|
+
# * [Week]
|
233
|
+
#
|
234
|
+
def +(other)
|
235
|
+
if other.is_a? Numeric
|
236
|
+
return Week.new(date + (other.to_i * 7))
|
237
|
+
else
|
238
|
+
raise TypeError
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
# Subtraction: week - other => week or integer
|
243
|
+
#
|
244
|
+
# If the other is a numeric value, return a week object pointing other weeks before self.
|
245
|
+
#
|
246
|
+
# If the other is a week object, then return the difference between the two weeks.
|
247
|
+
#
|
248
|
+
# Example:
|
249
|
+
#
|
250
|
+
# week = Week.new(date)
|
251
|
+
# week - 3 => three weeks earlier
|
252
|
+
#
|
253
|
+
# Example:
|
254
|
+
#
|
255
|
+
# a = Week.new(date)
|
256
|
+
# b = Week.new(date + 21)
|
257
|
+
# b - a => 3
|
258
|
+
#
|
259
|
+
# Return:
|
260
|
+
#
|
261
|
+
# * [Week]
|
262
|
+
#
|
263
|
+
def -(other)
|
264
|
+
if other.is_a? Numeric
|
265
|
+
return Week.new(date - (other * 7))
|
266
|
+
elsif other.is_a? Week
|
267
|
+
return ((self.date - other.date) / 7).round
|
268
|
+
else
|
269
|
+
raise TypeError
|
270
|
+
end
|
271
|
+
end
|
272
|
+
|
273
|
+
###
|
274
|
+
#
|
275
|
+
# Enumerable
|
276
|
+
#
|
277
|
+
###
|
278
|
+
|
279
|
+
# Return the previous week, i.e. seven days earlier.
|
280
|
+
#
|
281
|
+
# Example:
|
282
|
+
#
|
283
|
+
# week = Week.new(date)
|
284
|
+
# week.previous #=> seven days earlier
|
285
|
+
#
|
286
|
+
# Return:
|
287
|
+
#
|
288
|
+
# * [Week] The previous week
|
289
|
+
#
|
290
|
+
def previous
|
291
|
+
return self - 1
|
292
|
+
end
|
293
|
+
|
294
|
+
# Return the next week, i.e. seven days later.
|
295
|
+
#
|
296
|
+
# Example:
|
297
|
+
#
|
298
|
+
# week = Week.new(date)
|
299
|
+
# week.next #=> seven days later.
|
300
|
+
#
|
301
|
+
# Return:
|
302
|
+
#
|
303
|
+
# * [Week] The next week
|
304
|
+
#
|
305
|
+
def next
|
306
|
+
return self + 1
|
307
|
+
end
|
308
|
+
|
309
|
+
###
|
310
|
+
#
|
311
|
+
# Ranges
|
312
|
+
#
|
313
|
+
###
|
314
|
+
|
315
|
+
# Return the first date of this week.
|
316
|
+
#
|
317
|
+
# Example:
|
318
|
+
#
|
319
|
+
# week = Week.new(date)
|
320
|
+
# week.first_date #=> date
|
321
|
+
#
|
322
|
+
# Aliases:
|
323
|
+
#
|
324
|
+
# week.begin_date
|
325
|
+
# week.start_date
|
326
|
+
#
|
327
|
+
## Return:
|
328
|
+
#
|
329
|
+
# * [Date] week.date
|
330
|
+
#
|
331
|
+
def first_date
|
332
|
+
@date
|
333
|
+
end
|
334
|
+
|
335
|
+
alias :begin_date :first_date
|
336
|
+
alias :start_date :first_date
|
337
|
+
|
338
|
+
# Return the last date of this week.
|
339
|
+
#
|
340
|
+
# Return
|
341
|
+
#
|
342
|
+
# Example:
|
343
|
+
#
|
344
|
+
# week = Week.new(date)
|
345
|
+
# week.last_date #=> date + 6
|
346
|
+
#
|
347
|
+
# Aliases:
|
348
|
+
#
|
349
|
+
# week.end_date
|
350
|
+
# week.stop_date
|
351
|
+
#
|
352
|
+
# Return:
|
353
|
+
#
|
354
|
+
# * [Date] week.date + 6
|
355
|
+
#
|
356
|
+
def last_date
|
357
|
+
@date + 6
|
358
|
+
end
|
359
|
+
|
360
|
+
alias :end_date :last_date
|
361
|
+
alias :stop_date :last_date
|
362
|
+
|
363
|
+
# Return the date range of the week.
|
364
|
+
#
|
365
|
+
# This returns start_date..end_date.
|
366
|
+
#
|
367
|
+
# Example:
|
368
|
+
#
|
369
|
+
# week = Week.now
|
370
|
+
# week.date_range => Range(2012-01-02..2012-01-08)
|
371
|
+
#
|
372
|
+
# Return:
|
373
|
+
#
|
374
|
+
# * [Range] start_date..stop_date
|
375
|
+
#
|
376
|
+
def date_range
|
377
|
+
start_date..stop_date
|
378
|
+
end
|
379
|
+
|
380
|
+
# Does the week includes the date?
|
381
|
+
#
|
382
|
+
# Example:
|
383
|
+
#
|
384
|
+
# date = Date.today
|
385
|
+
# week = Week.new(date)
|
386
|
+
# week.include?(date + 1) => true
|
387
|
+
# week.include?(date + 7) => false
|
388
|
+
#
|
389
|
+
# Return:
|
390
|
+
#
|
391
|
+
# * [true/false]
|
392
|
+
#
|
393
|
+
def include?(date)
|
394
|
+
(start_date..end_date).include?(date)
|
395
|
+
end
|
396
|
+
|
397
|
+
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
require "sixarm_ruby_week_test"
|
3
|
-
require "sixarm_ruby_week/week"
|
4
3
|
|
5
4
|
describe Week do
|
6
5
|
|
@@ -309,53 +308,62 @@ describe Week do
|
|
309
308
|
|
310
309
|
end
|
311
310
|
|
312
|
-
describe "#
|
311
|
+
describe "#first_date" do
|
313
312
|
|
314
313
|
it "=> Date" do
|
315
|
-
WEEK.
|
314
|
+
WEEK.first_date.must_be_kind_of Date
|
316
315
|
end
|
317
316
|
|
318
317
|
it "=> the initialzation date" do
|
319
|
-
WEEK.
|
318
|
+
WEEK.first_date.must_equal DATE
|
320
319
|
end
|
321
320
|
|
322
|
-
|
323
|
-
|
321
|
+
end
|
322
|
+
|
324
323
|
describe "#begin_date" do
|
325
324
|
|
326
|
-
it "
|
327
|
-
WEEK.begin_date.
|
325
|
+
it "alias" do
|
326
|
+
WEEK.method(:begin_date) == WEEK.method(:first_date)
|
328
327
|
end
|
329
328
|
|
330
|
-
|
331
|
-
|
329
|
+
end
|
330
|
+
|
331
|
+
describe "#start_date" do
|
332
|
+
|
333
|
+
it "alias" do
|
334
|
+
WEEK.method(:start_date) == WEEK.method(:first_date)
|
332
335
|
end
|
333
336
|
|
334
337
|
end
|
335
|
-
|
336
|
-
describe "#
|
338
|
+
|
339
|
+
describe "#last_date" do
|
337
340
|
|
338
341
|
it "=> Date" do
|
339
|
-
WEEK.
|
342
|
+
WEEK.last_date.must_be_kind_of Date
|
340
343
|
end
|
341
344
|
|
342
345
|
it "=> six days after the initialization date" do
|
343
|
-
WEEK.
|
346
|
+
WEEK.last_date.must_equal DATE + 6
|
344
347
|
end
|
345
348
|
|
346
349
|
end
|
347
350
|
|
348
351
|
describe "#end_date" do
|
349
352
|
|
350
|
-
it "
|
351
|
-
WEEK.end_date.
|
353
|
+
it "alias" do
|
354
|
+
WEEK.method(:end_date) == WEEK.method(:last_date)
|
352
355
|
end
|
353
356
|
|
354
|
-
|
355
|
-
|
357
|
+
end
|
358
|
+
|
359
|
+
describe "#stop_date" do
|
360
|
+
|
361
|
+
it "alias" do
|
362
|
+
WEEK.method(:stop_date) == WEEK.method(:last_date)
|
356
363
|
end
|
357
364
|
|
358
365
|
end
|
366
|
+
|
359
367
|
|
360
368
|
describe "#date_range" do
|
361
369
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sixarm_ruby_week
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SixArm
|
@@ -44,7 +44,7 @@ cert_chain:
|
|
44
44
|
2AC9FOGkybW6DJEFSFFMlNk0IILsa/gNp8ufGuTVLWF9FUUdMNK+TMbghnifT8/1
|
45
45
|
n+ES/gQPOnvmVkLDGw==
|
46
46
|
-----END CERTIFICATE-----
|
47
|
-
date:
|
47
|
+
date: 2017-08-13 00:00:00.000000000 Z
|
48
48
|
dependencies:
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: minitest
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "<"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '6'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sixarm_ruby_minitest_extensions
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.0.5
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.0.5
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rake
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,15 +148,17 @@ extra_rdoc_files: []
|
|
134
148
|
files:
|
135
149
|
- Rakefile
|
136
150
|
- lib/sixarm_ruby_week.rb
|
151
|
+
- lib/sixarm_ruby_week/week.rb
|
137
152
|
- test/sixarm_ruby_week_test.rb
|
138
153
|
- test/sixarm_ruby_week_test/week_test.rb
|
139
154
|
homepage: http://sixarm.com/
|
140
155
|
licenses:
|
141
|
-
-
|
142
|
-
-
|
156
|
+
- Apache-2.0
|
157
|
+
- Artistic-2.0
|
158
|
+
- BSD-3-Clause
|
159
|
+
- GPL-3.0
|
143
160
|
- MIT
|
144
|
-
-
|
145
|
-
- Various
|
161
|
+
- MPL-2.0
|
146
162
|
metadata: {}
|
147
163
|
post_install_message:
|
148
164
|
rdoc_options: []
|
@@ -160,11 +176,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
160
176
|
version: '0'
|
161
177
|
requirements: []
|
162
178
|
rubyforge_project:
|
163
|
-
rubygems_version: 2.
|
179
|
+
rubygems_version: 2.6.12
|
164
180
|
signing_key:
|
165
181
|
specification_version: 4
|
166
|
-
summary: SixArm.com
|
182
|
+
summary: SixArm.com → Ruby → Week
|
167
183
|
test_files:
|
168
184
|
- test/sixarm_ruby_week_test.rb
|
169
185
|
- test/sixarm_ruby_week_test/week_test.rb
|
170
|
-
has_rdoc: true
|
metadata.gz.sig
CHANGED
Binary file
|