koyomi 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/koyomi.rb +1 -0
- data/lib/koyomi/calendar.rb +12 -2
- data/lib/koyomi/helper.rb +8 -0
- data/lib/koyomi/helper/date.rb +30 -0
- data/lib/koyomi/helper/init.rb +5 -0
- data/lib/koyomi/version.rb +1 -1
- data/test/units.rb +1 -0
- data/test/units/test_date.rb +25 -0
- metadata +6 -1
data/lib/koyomi.rb
CHANGED
data/lib/koyomi/calendar.rb
CHANGED
@@ -7,12 +7,22 @@ class Koyomi::Calendar < Koyomi::Period
|
|
7
7
|
#--------------------#
|
8
8
|
# constant
|
9
9
|
DEFAULT_WEEK_START = :mon
|
10
|
+
WEEK_DAYS = 7
|
10
11
|
WEEK_START_RANGE = (0..6)
|
11
12
|
WEEK_START_STRING = [:sun, :mon, :tue, :wed, :thu, :fri, :sat]
|
12
13
|
|
13
14
|
#--------------------#
|
14
15
|
# class methods
|
15
16
|
|
17
|
+
# create Koyomi::Calendar instance from date.
|
18
|
+
#
|
19
|
+
# @param [Date] date
|
20
|
+
# @param [Object] week_start
|
21
|
+
# @return [Koyomi::Calendar]
|
22
|
+
def self.of(date, week_start = nil)
|
23
|
+
self.new(date.year, date.month, week_start)
|
24
|
+
end
|
25
|
+
|
16
26
|
# week index
|
17
27
|
#
|
18
28
|
# @param [Object] value
|
@@ -112,7 +122,7 @@ class Koyomi::Calendar < Koyomi::Period
|
|
112
122
|
def week_starts(date, week_start = nil)
|
113
123
|
week_start ||= self.week_start
|
114
124
|
diff = date.wday - self.class.windex(week_start)
|
115
|
-
date - diff - (diff < 0 ?
|
125
|
+
date - diff - (diff < 0 ? WEEK_DAYS : 0)
|
116
126
|
end
|
117
127
|
|
118
128
|
# week end date
|
@@ -121,6 +131,6 @@ class Koyomi::Calendar < Koyomi::Period
|
|
121
131
|
# @param [Object] week_start
|
122
132
|
# @return [Date]
|
123
133
|
def week_ends(date, week_start = nil)
|
124
|
-
week_starts(date, week_start) +
|
134
|
+
week_starts(date, week_start) + WEEK_DAYS - 1
|
125
135
|
end
|
126
136
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require "date"
|
4
|
+
require "koyomi/calendar"
|
5
|
+
|
6
|
+
module Koyomi::Helper::Date
|
7
|
+
# check week end?
|
8
|
+
#
|
9
|
+
# @param [Date] date
|
10
|
+
# @param [Object] week_start
|
11
|
+
# @return [Boolean]
|
12
|
+
def week_ends?(date, week_start = nil)
|
13
|
+
wdays = Koyomi::Calendar::WEEK_DAYS
|
14
|
+
week_start ||= Koyomi::Calendar::DEFAULT_WEEK_START
|
15
|
+
week_ends = (Koyomi::Calendar.windex(week_start) + wdays - 1) % wdays
|
16
|
+
date.wday == week_ends
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class Date
|
21
|
+
include Koyomi::Helper::Date
|
22
|
+
|
23
|
+
# check week end?
|
24
|
+
#
|
25
|
+
# @param [Object] week_start
|
26
|
+
# @return [Boolean]
|
27
|
+
def week_end?(week_start = nil)
|
28
|
+
week_ends?(self, week_start)
|
29
|
+
end
|
30
|
+
end
|
data/lib/koyomi/version.rb
CHANGED
data/test/units.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
class TestKoyomiDate < Test::Unit::TestCase
|
4
|
+
context "Koyomi::Date" do
|
5
|
+
setup do
|
6
|
+
@date = Date.new(2012, 12, 16)
|
7
|
+
@wdays = Koyomi::Calendar::WEEK_START_STRING
|
8
|
+
end # setup
|
9
|
+
|
10
|
+
should "correct week end" do
|
11
|
+
cal = Koyomi::Calendar.of(@date)
|
12
|
+
|
13
|
+
cal.each do |date|
|
14
|
+
@wdays.each do |wd|
|
15
|
+
if (date + 1).wday == @wdays.index(wd)
|
16
|
+
assert(date.week_end?(wd))
|
17
|
+
else
|
18
|
+
assert(!date.week_end?(wd))
|
19
|
+
end
|
20
|
+
end # each wd
|
21
|
+
end # each date
|
22
|
+
end # should "correct week end"
|
23
|
+
|
24
|
+
end # context "Koyomi::Date"
|
25
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: koyomi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -42,6 +42,9 @@ files:
|
|
42
42
|
- koyomi.gemspec
|
43
43
|
- lib/koyomi.rb
|
44
44
|
- lib/koyomi/calendar.rb
|
45
|
+
- lib/koyomi/helper.rb
|
46
|
+
- lib/koyomi/helper/date.rb
|
47
|
+
- lib/koyomi/helper/init.rb
|
45
48
|
- lib/koyomi/init.rb
|
46
49
|
- lib/koyomi/month.rb
|
47
50
|
- lib/koyomi/period.rb
|
@@ -49,6 +52,7 @@ files:
|
|
49
52
|
- test/init.rb
|
50
53
|
- test/units.rb
|
51
54
|
- test/units/test_calendar.rb
|
55
|
+
- test/units/test_date.rb
|
52
56
|
- test/units/test_month.rb
|
53
57
|
homepage: ''
|
54
58
|
licenses: []
|
@@ -78,5 +82,6 @@ test_files:
|
|
78
82
|
- test/init.rb
|
79
83
|
- test/units.rb
|
80
84
|
- test/units/test_calendar.rb
|
85
|
+
- test/units/test_date.rb
|
81
86
|
- test/units/test_month.rb
|
82
87
|
has_rdoc:
|