week_of_month 1.2.2.1 → 1.2.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/Gemfile.lock +2 -0
- data/README.rdoc +10 -33
- data/lib/modules/constant.rb +5 -5
- data/lib/modules/month.rb +1 -1
- data/lib/modules/week.rb +29 -6
- data/lib/test/modules/test_constant.rb +13 -10
- data/lib/test/modules/test_day.rb +3 -2
- data/lib/test/modules/test_month.rb +2 -2
- data/lib/test/modules/test_week.rb +31 -2
- data/lib/test/modules/test_year.rb +1 -1
- data/lib/week_of_month.rb +53 -4
- data/license +1 -1
- data/week_of_month.gemspec +2 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb8e17155b66f00d79619774220611769249f90d
|
4
|
+
data.tar.gz: de433fd66043692ee66d04705ec26beec126d91f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 481f139413ab807b87057c916aa09f4f19eea12745cd42058c2395fadc1b28d83fbf7c73de48de71bb18b20eb4ead9111c9ebd8fa7c051dead44c1390d44c26a
|
7
|
+
data.tar.gz: e487771ab29e5c6cb351e70a634e83e6f20c37d2e76f0c4f0bbf18107814c6ad534d63cabbba9dc2aa4a282fc258a7291c9bbec66f647899854ac11b882c9bd5
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/README.rdoc
CHANGED
@@ -11,6 +11,8 @@ or Rails application. To install, simply add the following to your Gemfile:
|
|
11
11
|
|
12
12
|
gem 'week_of_month'
|
13
13
|
|
14
|
+
Run bundle install and don't forget to restart your server after you install a new gem.
|
15
|
+
|
14
16
|
== Usage
|
15
17
|
|
16
18
|
It returns week split of that date's month
|
@@ -25,33 +27,27 @@ or Rails application. To install, simply add the following to your Gemfile:
|
|
25
27
|
|
26
28
|
It returns month's week in which the date lies
|
27
29
|
|
28
|
-
Date.new(2012,1,1).week_of_month
|
29
|
-
=> 1
|
30
|
+
Date.new(2012,1,1).week_of_month => 1
|
30
31
|
|
31
32
|
It return true if date lies in first week of month, else false.
|
32
33
|
|
33
|
-
Date.new(2012,1,1).first_week?
|
34
|
-
=> true
|
34
|
+
Date.new(2012,1,1).first_week? => true
|
35
35
|
|
36
36
|
It returns true if date lies in second week of month, else false.
|
37
37
|
|
38
|
-
Date.new(2012,1,9).second_week?
|
39
|
-
=> true
|
38
|
+
Date.new(2012,1,9).second_week? => true
|
40
39
|
|
41
40
|
It returns true if date lies in last week of month, else false.
|
42
41
|
|
43
|
-
Date.new(2012,1,31).last_week?
|
44
|
-
=> true
|
42
|
+
Date.new(2012,1,31).last_week? => true
|
45
43
|
|
46
44
|
It returns total number of weeks in month.
|
47
45
|
|
48
|
-
Date.new(2012,1,31).total_weeks
|
49
|
-
=> 5
|
46
|
+
Date.new(2012,1,31).total_weeks => 5
|
50
47
|
|
51
48
|
It returns month's week in which the date lies
|
52
49
|
|
53
|
-
Date.new(2012,1,31).week_of_month_in_eng
|
54
|
-
=> "Fifth"
|
50
|
+
Date.new(2012,1,31).week_of_month_in_eng => "Fifth"
|
55
51
|
|
56
52
|
== Tools Being Used
|
57
53
|
|
@@ -87,25 +83,6 @@ august?, september?, october?, november?, december?, last_day_of_month
|
|
87
83
|
|
88
84
|
Fork, fix, then send me a pull request.
|
89
85
|
|
90
|
-
|
91
|
-
|
92
|
-
(The MIT License)
|
93
|
-
|
94
|
-
Copyright (c) 2012-2013 Sachin Singh. See LICENSE for details.
|
95
|
-
|
96
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
97
|
-
of this software and associated documentation files (the ‘Software’), to deal
|
98
|
-
in the Software without restriction, including without limitation the rights
|
99
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
100
|
-
of the Software, and to permit persons to whom the Software is furnished to do so,
|
101
|
-
subject to the following conditions:
|
102
|
-
|
103
|
-
The above copyright notice and this permission notice shall be included in all
|
104
|
-
copies or substantial portions of the Software.
|
86
|
+
## License
|
105
87
|
|
106
|
-
|
107
|
-
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
108
|
-
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
109
|
-
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
110
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
111
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
88
|
+
use MIT license.
|
data/lib/modules/constant.rb
CHANGED
@@ -7,19 +7,19 @@ module WeekOfMonth
|
|
7
7
|
module Constant
|
8
8
|
|
9
9
|
# hash containg english words from one to seventh
|
10
|
-
|
10
|
+
WEEK_OF_MONTH_IN_ENG = { 1 => 'First', 2 => 'Second', 3 => 'Third',
|
11
11
|
4 => 'Fourth', 5 => 'Fifth', 6 => 'Sixth', 7 => 'Seventh'}
|
12
12
|
|
13
13
|
# hash containg french words from one to seventh
|
14
|
-
|
14
|
+
WEEK_OF_MONTH_IN_FR = { 1 => 'First', 2 => 'Second', 3 => 'Third',
|
15
15
|
4 => 'Quatrième', 5 => 'Cinquième', 6 => 'sixième', 7 => 'septième'}
|
16
16
|
|
17
17
|
# hash containg german words from one to seventh
|
18
|
-
|
18
|
+
WEEK_OF_MONTH_IN_GER = { 1 => 'First', 2 => 'Second', 3 => 'Dritten',
|
19
19
|
4 => 'Vierte', 5 => 'Fünfte', 6 => 'Sechste', 7 => 'siebte'}
|
20
20
|
|
21
21
|
# hash containg japneese words from one to seventh
|
22
|
-
|
22
|
+
WEEK_OF_MONTH_IN_JAP = { 1 => '最初', 2 => '秒', 3 => 'サード',
|
23
23
|
4 => '第4回', 5 => '第五', 6=> 'シックス', 7 => '第7' }
|
24
24
|
|
25
25
|
# hash containg month name with days in that month(in non leap yaer)
|
@@ -38,4 +38,4 @@ module WeekOfMonth
|
|
38
38
|
DAYS_IN_SEQUENCE = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday",
|
39
39
|
"Saturday"]
|
40
40
|
end
|
41
|
-
end
|
41
|
+
end
|
data/lib/modules/month.rb
CHANGED
data/lib/modules/week.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# @author Sachion Singh
|
2
2
|
|
3
|
-
|
3
|
+
RUBY_VERSION < '1.9' ? require('modules/constant') : require_relative('constant')
|
4
4
|
|
5
5
|
module WeekOfMonth
|
6
6
|
module Week
|
@@ -16,6 +16,30 @@ module WeekOfMonth
|
|
16
16
|
return (i + 1) if o.include?(self.day)
|
17
17
|
end
|
18
18
|
end
|
19
|
+
|
20
|
+
# November week_split would like this
|
21
|
+
# [[nil, nil, nil, nil, nil, 1, 2],
|
22
|
+
# [3, 4, 5, 6, 7, 8, 9],
|
23
|
+
# [10, 11, 12, 13, 14, 15, 16],
|
24
|
+
# [17, 18, 19, 20, 21, 22, 23],
|
25
|
+
# [24, 25, 26, 27, 28, 29, 30]]
|
26
|
+
#
|
27
|
+
# The First Day of week decide its month of week.
|
28
|
+
# The W1 Nov should be Nov 3 - Nov 9
|
29
|
+
#
|
30
|
+
# Date.new(2012,11,15).general_week_of_month
|
31
|
+
# => 2
|
32
|
+
#
|
33
|
+
# Date.new(2013,11,3).general_week_of_month
|
34
|
+
# => 1
|
35
|
+
# @return [Fixnum]
|
36
|
+
def general_week_of_month
|
37
|
+
if week_split.first.first.nil?
|
38
|
+
week_of_month - 1
|
39
|
+
else
|
40
|
+
week_of_month
|
41
|
+
end
|
42
|
+
end
|
19
43
|
|
20
44
|
# checks whether the given day lies in first week of month
|
21
45
|
# Date.new(2012,11,1).first_week?
|
@@ -84,10 +108,9 @@ module WeekOfMonth
|
|
84
108
|
# Date.new(2012,11,30).week_of_month_in_fr
|
85
109
|
# => "Cinquième"
|
86
110
|
# @return [String]
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
eval "WEEK_IN_#{lang.upcase}[week_of_month]"
|
111
|
+
constants.select{|x| x.to_s.match("WEEK_OF_MONTH_IN_")}.each do |const|
|
112
|
+
define_method(const.to_s.downcase) do
|
113
|
+
eval "#{const.to_s}[week_of_month]"
|
91
114
|
end
|
92
115
|
end
|
93
116
|
|
@@ -176,4 +199,4 @@ module WeekOfMonth
|
|
176
199
|
end
|
177
200
|
|
178
201
|
end
|
179
|
-
end
|
202
|
+
end
|
@@ -2,23 +2,26 @@
|
|
2
2
|
# encoding: utf-8
|
3
3
|
|
4
4
|
require 'test/unit'
|
5
|
-
|
5
|
+
RUBY_VERSION < '1.9' ? require('lib/week_of_month') : require_relative('../../week_of_month')
|
6
|
+
|
6
7
|
|
7
8
|
class TestConstant < Test::Unit::TestCase
|
8
9
|
|
9
10
|
def test_constants_present?
|
10
11
|
[Date,Time].each do |klass|
|
11
|
-
assert klass::
|
12
|
+
assert klass::WEEK_OF_MONTH_IN_ENG
|
12
13
|
|
13
|
-
assert klass::
|
14
|
+
assert klass::WEEK_OF_MONTH_IN_GER
|
14
15
|
|
15
|
-
assert klass::
|
16
|
+
assert klass::WEEK_OF_MONTH_IN_FR
|
16
17
|
|
17
|
-
assert klass::
|
18
|
+
assert klass::WEEK_OF_MONTH_IN_JAP
|
18
19
|
|
19
20
|
assert klass::MONTH_WITH_DAY
|
20
21
|
|
21
22
|
assert klass::MONTH_WITH_SEQUENCE
|
23
|
+
|
24
|
+
assert klass::DAYS_IN_SEQUENCE
|
22
25
|
end
|
23
26
|
end
|
24
27
|
|
@@ -27,22 +30,22 @@ class TestConstant < Test::Unit::TestCase
|
|
27
30
|
assert_equal({ 1 => 'First', 2 => 'Second',
|
28
31
|
3 => 'Third', 4 => 'Fourth',
|
29
32
|
5 => 'Fifth', 6 => 'Sixth',
|
30
|
-
7 =>"Seventh" }, klass::
|
33
|
+
7 =>"Seventh" }, klass::WEEK_OF_MONTH_IN_ENG)
|
31
34
|
|
32
35
|
assert_equal({ 1 => 'First', 2 => 'Second',
|
33
36
|
3 => 'Third', 4 => 'Quatrième',
|
34
37
|
5 => 'Cinquième', 6 => 'sixième',
|
35
|
-
7 => "septième" }, klass::
|
38
|
+
7 => "septième" }, klass::WEEK_OF_MONTH_IN_FR)
|
36
39
|
|
37
40
|
assert_equal({ 1 => 'First', 2 => 'Second',
|
38
41
|
3 => 'Dritten', 4 => 'Vierte',
|
39
42
|
5 => 'Fünfte', 6 => 'Sechste',
|
40
|
-
7 => "siebte" }, klass::
|
43
|
+
7 => "siebte" }, klass::WEEK_OF_MONTH_IN_GER)
|
41
44
|
|
42
45
|
assert_equal({ 1=>'最初', 2 =>'秒',
|
43
46
|
3 =>'サード', 4=> '第4回',
|
44
47
|
5 =>'第五', 6=> 'シックス' ,
|
45
|
-
7 => "第7" } , klass::
|
48
|
+
7 => "第7" } , klass::WEEK_OF_MONTH_IN_JAP)
|
46
49
|
|
47
50
|
assert_equal({ :january => 1, :february => 2, :march => 3,
|
48
51
|
:april => 4, :may => 5, :june => 6, :july => 7,
|
@@ -60,4 +63,4 @@ class TestConstant < Test::Unit::TestCase
|
|
60
63
|
end
|
61
64
|
|
62
65
|
end
|
63
|
-
|
66
|
+
|
@@ -3,12 +3,13 @@
|
|
3
3
|
|
4
4
|
require 'test/unit'
|
5
5
|
|
6
|
-
|
6
|
+
RUBY_VERSION < '1.9' ? require('lib/week_of_month') : require_relative('../../week_of_month')
|
7
7
|
class TestDay < Test::Unit::TestCase
|
8
|
-
|
8
|
+
|
9
9
|
def test_days_array
|
10
10
|
[Date,Time].each do |klass|
|
11
11
|
object = klass.new(2012,2,8)
|
12
|
+
|
12
13
|
days_array_for_february = [nil, nil, nil,1, 2, 3, 4, 5,
|
13
14
|
6, 7, 8, 9, 10, 11, 12, 13, 14,
|
14
15
|
15, 16, 17, 18, 19, 20, 21, 22,
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# encoding: utf-8
|
3
3
|
|
4
4
|
require 'test/unit'
|
5
|
-
|
5
|
+
RUBY_VERSION < '1.9' ? require('lib/week_of_month') : require_relative('../../week_of_month')
|
6
6
|
|
7
7
|
class TestMonth < Test::Unit::TestCase
|
8
8
|
|
@@ -24,7 +24,7 @@ class TestMonth < Test::Unit::TestCase
|
|
24
24
|
|
25
25
|
assert klass.new(2012,8,1).august?
|
26
26
|
|
27
|
-
assert klass.new(2012,9,1).september?
|
27
|
+
assert klass.new(2012,9,1).september?
|
28
28
|
|
29
29
|
assert klass.new(2012,10,1).october?
|
30
30
|
|
@@ -2,7 +2,8 @@
|
|
2
2
|
# encoding: utf-8
|
3
3
|
|
4
4
|
require 'test/unit'
|
5
|
-
|
5
|
+
RUBY_VERSION < '1.9' ? require('lib/week_of_month') : require_relative('../../week_of_month')
|
6
|
+
|
6
7
|
|
7
8
|
class TestWeek < Test::Unit::TestCase
|
8
9
|
|
@@ -33,7 +34,35 @@ class TestWeek < Test::Unit::TestCase
|
|
33
34
|
assert_equal 5, klass.new(2013,12,31).week_of_month
|
34
35
|
end
|
35
36
|
end
|
36
|
-
|
37
|
+
|
38
|
+
def test_general_week_of_month
|
39
|
+
[Date,Time].each do |klass|
|
40
|
+
assert_equal 4, klass.new(2013,1,31).general_week_of_month
|
41
|
+
|
42
|
+
assert_equal 4, klass.new(2013,2,28).general_week_of_month
|
43
|
+
|
44
|
+
assert_equal 5, klass.new(2013,3,31).general_week_of_month
|
45
|
+
|
46
|
+
assert_equal 4, klass.new(2013,4,30).general_week_of_month
|
47
|
+
|
48
|
+
assert_equal 4, klass.new(2013,5,31).general_week_of_month
|
49
|
+
|
50
|
+
assert_equal 5, klass.new(2013,6,30).general_week_of_month
|
51
|
+
|
52
|
+
assert_equal 4, klass.new(2013,7,31).general_week_of_month
|
53
|
+
|
54
|
+
assert_equal 4, klass.new(2013,8,31).general_week_of_month
|
55
|
+
|
56
|
+
assert_equal 5, klass.new(2013,9,30).general_week_of_month
|
57
|
+
|
58
|
+
assert_equal 4, klass.new(2013,10,31).general_week_of_month
|
59
|
+
|
60
|
+
assert_equal 4, klass.new(2013,11,30).general_week_of_month
|
61
|
+
|
62
|
+
assert_equal 5, klass.new(2013,12,31).general_week_of_month
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
37
66
|
def test_week_split
|
38
67
|
[Date,Time].each do |klass|
|
39
68
|
object = klass.new(2013,1,10)
|
data/lib/week_of_month.rb
CHANGED
@@ -1,15 +1,32 @@
|
|
1
1
|
require 'date'
|
2
2
|
require 'time'
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
|
4
|
+
RUBY_VERSION < '1.9' ? require('modules/day') : require_relative('modules/day')
|
5
|
+
RUBY_VERSION < '1.9' ? require('modules/month') : require_relative('modules/month')
|
6
|
+
RUBY_VERSION < '1.9' ? require('modules/week') : require_relative('modules/week')
|
7
|
+
RUBY_VERSION < '1.9' ? require('modules/year') : require_relative('modules/year')
|
7
8
|
|
8
9
|
class Date
|
9
10
|
include WeekOfMonth::Day
|
10
11
|
include WeekOfMonth::Month
|
11
12
|
include WeekOfMonth::Week
|
12
13
|
include WeekOfMonth::Year
|
14
|
+
|
15
|
+
unless method_defined?(:to_date)
|
16
|
+
def to_date
|
17
|
+
::Date.new(year, month, day)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
unless method_defined?(:sunday?)
|
22
|
+
def sunday? ; self.wday == 0; end
|
23
|
+
def monday? ; self.wday == 1; end
|
24
|
+
def tuesday? ; self.wday == 2; end
|
25
|
+
def wednesday? ; self.wday == 3; end
|
26
|
+
def thursday? ; self.wday == 4; end
|
27
|
+
def friday? ; self.wday == 5; end
|
28
|
+
def saturday? ; self.wday == 6; end
|
29
|
+
end
|
13
30
|
end
|
14
31
|
|
15
32
|
class Time
|
@@ -21,4 +38,36 @@ class Time
|
|
21
38
|
def leap?
|
22
39
|
self.to_date.leap?
|
23
40
|
end
|
41
|
+
|
42
|
+
if RUBY_VERSION < '1.9'
|
43
|
+
def self.new(year=Time.now.year, month=Time.now.month, day=Time.now.day, hour=Time.now.hour, min=Time.now.min, sec=Time.now.sec, millisecond=(Time.now.to_f * 1000.0).to_i)
|
44
|
+
Time.local(year, month, day, hour, min, sec, millisecond)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
unless method_defined?(:to_date)
|
49
|
+
def to_date
|
50
|
+
::Date.new(year, month, day)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
unless method_defined?(:sunday?)
|
54
|
+
def sunday? ; self.wday == 0; end
|
55
|
+
def monday? ; self.wday == 1; end
|
56
|
+
def tuesday? ; self.wday == 2; end
|
57
|
+
def wednesday? ; self.wday == 3; end
|
58
|
+
def thursday? ; self.wday == 4; end
|
59
|
+
def friday? ; self.wday == 5; end
|
60
|
+
def saturday? ; self.wday == 6; end
|
61
|
+
end
|
24
62
|
end
|
63
|
+
|
64
|
+
class Hash
|
65
|
+
unless method_defined?(:key)
|
66
|
+
def key(value)
|
67
|
+
result = nil
|
68
|
+
self.each do |k,v| result = k if v == value && result == nil; end if self.values.include?(value)
|
69
|
+
result
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
data/license
CHANGED
data/week_of_month.gemspec
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'week_of_month'
|
3
|
-
s.version = '1.2.
|
4
|
-
s.date = '
|
3
|
+
s.version = '1.2.3.1'
|
4
|
+
s.date = '2014-04-27'
|
5
5
|
s.summary = "Week Of Month!"
|
6
6
|
s.description = "Its gives you week_of_month method on date and time objects, that returns week of the month."
|
7
7
|
s.authors = ["Sachin Singh"]
|
8
8
|
s.email = 'sachin@railsdeveloper.in'
|
9
9
|
s.homepage = 'https://github.com/sachin87/week-of-month'
|
10
|
-
s.summary = %q{}
|
11
10
|
s.files = `git ls-files`.split("\n").sort
|
12
11
|
s.require_paths = ["lib"]
|
13
12
|
s.license = 'MIT'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: week_of_month
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sachin Singh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Its gives you week_of_month method on date and time objects, that returns
|
14
14
|
week of the month.
|
@@ -58,5 +58,5 @@ rubyforge_project:
|
|
58
58
|
rubygems_version: 2.0.3
|
59
59
|
signing_key:
|
60
60
|
specification_version: 4
|
61
|
-
summary:
|
61
|
+
summary: Week Of Month!
|
62
62
|
test_files: []
|