week_of_month 1.2.3.4 → 1.2.4

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.
@@ -0,0 +1,201 @@
1
+ #!/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ require 'test/unit'
5
+ RUBY_VERSION < '1.9' ? require('lib/week_of_month') : require_relative('../../../week_of_month')
6
+
7
+ class TestWeekForTime < Test::Unit::TestCase
8
+ def test_week_of_month
9
+ assert_equal 5, Time.new(2013, 1, 31).week_of_month
10
+
11
+ assert_equal 5, Time.new(2013, 2, 28).week_of_month
12
+
13
+ assert_equal 6, Time.new(2013, 3, 31).week_of_month
14
+
15
+ assert_equal 5, Time.new(2013, 4, 30).week_of_month
16
+
17
+ assert_equal 5, Time.new(2013, 5, 31).week_of_month
18
+
19
+ assert_equal 6, Time.new(2013, 6, 30).week_of_month
20
+
21
+ assert_equal 5, Time.new(2013, 7, 31).week_of_month
22
+
23
+ assert_equal 5, Time.new(2013, 8, 31).week_of_month
24
+
25
+ assert_equal 5, Time.new(2013, 9, 30).week_of_month
26
+
27
+ assert_equal 5, Time.new(2013, 10, 31).week_of_month
28
+
29
+ assert_equal 5, Time.new(2013, 11, 30).week_of_month
30
+
31
+ assert_equal 5, Time.new(2013, 12, 31).week_of_month
32
+ end
33
+
34
+ def test_general_week_of_month
35
+ assert_equal 4, Time.new(2013, 1, 31).general_week_of_month
36
+
37
+ assert_equal 4, Time.new(2013, 2, 28).general_week_of_month
38
+
39
+ assert_equal 5, Time.new(2013, 3, 31).general_week_of_month
40
+
41
+ assert_equal 4, Time.new(2013, 4, 30).general_week_of_month
42
+
43
+ assert_equal 4, Time.new(2013, 5, 31).general_week_of_month
44
+
45
+ assert_equal 5, Time.new(2013, 6, 30).general_week_of_month
46
+
47
+ assert_equal 4, Time.new(2013, 7, 31).general_week_of_month
48
+
49
+ assert_equal 4, Time.new(2013, 8, 31).general_week_of_month
50
+
51
+ assert_equal 5, Time.new(2013, 9, 30).general_week_of_month
52
+
53
+ assert_equal 4, Time.new(2013, 10, 31).general_week_of_month
54
+
55
+ assert_equal 4, Time.new(2013, 11, 30).general_week_of_month
56
+
57
+ assert_equal 5, Time.new(2013, 12, 31).general_week_of_month
58
+ end
59
+
60
+ def test_week_split
61
+ object = Time.new(2013, 1, 10)
62
+ split_for_january = [[nil, nil, 1, 2, 3, 4, 5],
63
+ [6, 7, 8, 9, 10, 11, 12],
64
+ [13, 14, 15, 16, 17, 18, 19],
65
+ [20, 21, 22, 23, 24, 25, 26],
66
+ [27, 28, 29, 30, 31]]
67
+ assert_kind_of Array, object.week_split
68
+ assert_equal split_for_january, object.week_split
69
+
70
+ object = Time.new(2013, 2, 15)
71
+ split_for_october = [[nil, nil, nil, nil, nil, 1, 2],
72
+ [3, 4, 5, 6, 7, 8, 9],
73
+ [10, 11, 12, 13, 14, 15, 16],
74
+ [17, 18, 19, 20, 21, 22, 23],
75
+ [24, 25, 26, 27, 28]]
76
+ assert_kind_of Array, object.week_split
77
+ assert_equal split_for_october, object.week_split
78
+ end
79
+
80
+ def test_first_week?
81
+ assert Time.new(2012, 1, 1).first_week?
82
+ assert !Time.new(2012, 1, 31).first_week?
83
+ end
84
+
85
+ def test_second_week?
86
+ assert Time.new(2013, 1, 6).second_week?
87
+ assert !Time.new(2013, 1, 2).second_week?
88
+ end
89
+
90
+ def test_last_week?
91
+ assert Time.new(2012, 10, 31).last_week?
92
+ assert !Time.new(2012, 10, 20).last_week?
93
+ end
94
+
95
+ def test_total_weeks
96
+ assert_equal 5, Time.new(2012, 10, 31).total_weeks
97
+ assert_equal 6, Time.new(2012, 12, 20).total_weeks
98
+ end
99
+
100
+ def test_week_of_month_in_eng
101
+ assert_equal 'First', Time.new(2012, 12, 1).week_of_month_in_eng
102
+ assert_equal 'Second', Time.new(2012, 12, 4).week_of_month_in_eng
103
+ assert_equal 'Third', Time.new(2012, 12, 9).week_of_month_in_eng
104
+ assert_equal 'Fourth', Time.new(2012, 12, 16).week_of_month_in_eng
105
+ assert_equal 'Fifth', Time.new(2012, 12, 24).week_of_month_in_eng
106
+ assert_equal 'Sixth', Time.new(2012, 12, 31).week_of_month_in_eng
107
+ end
108
+
109
+ def test_week_of_month_in_fr
110
+ assert_equal 'Premier', Time.new(2012, 12, 1).week_of_month_in_fr
111
+ assert_equal 'Deuxième', Time.new(2012, 12, 4).week_of_month_in_fr
112
+ assert_equal 'Troisième', Time.new(2012, 12, 9).week_of_month_in_fr
113
+ assert_equal 'Quatrième', Time.new(2012, 12, 16).week_of_month_in_fr
114
+ assert_equal 'Cinquième', Time.new(2012, 12, 24).week_of_month_in_fr
115
+ assert_equal 'Sixième', Time.new(2012, 12, 31).week_of_month_in_fr
116
+ end
117
+
118
+ def test_week_of_month_in_ger
119
+ assert_equal 'First', Time.new(2012, 12, 1).week_of_month_in_ger
120
+ assert_equal 'Second', Time.new(2012, 12, 4).week_of_month_in_ger
121
+ assert_equal 'Dritten', Time.new(2012, 12, 9).week_of_month_in_ger
122
+ assert_equal 'Vierte', Time.new(2012, 12, 16).week_of_month_in_ger
123
+ assert_equal 'Fünfte', Time.new(2012, 12, 24).week_of_month_in_ger
124
+ assert_equal 'Sechste', Time.new(2012, 12, 31).week_of_month_in_ger
125
+ end
126
+
127
+ def test_week_of_month_in_ja
128
+ assert_equal '第一', Time.new(2012, 12, 1).week_of_month_in_ja
129
+ assert_equal '第二', Time.new(2012, 12, 4).week_of_month_in_ja
130
+ assert_equal '第三', Time.new(2012, 12, 9).week_of_month_in_ja
131
+ assert_equal '第四', Time.new(2012, 12, 16).week_of_month_in_ja
132
+ assert_equal '第五', Time.new(2012, 12, 24).week_of_month_in_ja
133
+ assert_equal '第六', Time.new(2012, 12, 31).week_of_month_in_ja
134
+ end
135
+
136
+ def test_week_end?
137
+ assert !Time.new(2012, 10, 1).week_end?
138
+ assert !Time.new(2012, 10, 31).week_end?
139
+ assert Time.new(2012, 10, 6).week_end?
140
+ assert Time.new(2012, 10, 7).week_end?
141
+ end
142
+
143
+ def test_working_day?
144
+ assert Time.new(2012, 10, 1).working_day?
145
+ assert Time.new(2012, 10, 31).working_day?
146
+ assert !Time.new(2012, 10, 6).working_day?
147
+ assert !Time.new(2012, 10, 7).working_day?
148
+ end
149
+
150
+ def test_days_past_in_week
151
+ assert_equal 2, Time.new(2013, 1, 1).days_past_in_week
152
+ end
153
+
154
+ def test_days_left_in_week
155
+ assert_equal 5, Time.new(2013, 1, 1).days_left_in_week
156
+ end
157
+
158
+ def test_beginning_of_week
159
+ assert_equal Time.new(2012, 11, 25), Time.new(2012, 11, 25).beginning_of_week
160
+ assert_equal Time.new(2012, 11, 25), Time.new(2012, 11, 26).beginning_of_week
161
+ assert_equal Time.new(2012, 11, 25), Time.new(2012, 11, 30).beginning_of_week
162
+ end
163
+
164
+ def test_end_of_week
165
+ assert_equal Time.new(2012, 12, 1), Time.new(2012, 12, 1).end_of_week
166
+ assert_equal Time.new(2012, 12, 8), Time.new(2012, 12, 2).end_of_week
167
+ assert_equal Time.new(2012, 12, 8), Time.new(2012, 12, 3).end_of_week
168
+ assert_equal Time.new(2012, 12, 8), Time.new(2012, 12, 7).end_of_week
169
+ end
170
+
171
+ def test_next_week
172
+ assert_equal Time.new(2012, 12, 8), Time.new(2012, 12, 1).next_week
173
+ assert_equal Time.new(2012, 12, 22), Time.new(2012, 12, 15).next_week
174
+ assert_equal Time.new(2013, 1, 5), Time.new(2012, 12, 29).next_week
175
+ assert_equal Time.new(2012, 12, 26), Time.new(2012, 12, 19).next_week
176
+ end
177
+
178
+ def test_previous_week
179
+ assert_equal Time.new(2012, 12, 1), Time.new(2012, 12, 8).previous_week
180
+ assert_equal Time.new(2012, 12, 15), Time.new(2012, 12, 22).previous_week
181
+ assert_equal Time.new(2012, 12, 29), Time.new(2013, 1, 5).previous_week
182
+ assert_equal Time.new(2012, 12, 19), Time.new(2012, 12, 26).previous_week
183
+ end
184
+
185
+ def test_monday_configured_beginning_of_week
186
+ WeekOfMonth.configuration.monday_active = true
187
+ assert_equal Time.new(2012, 11, 19), Time.new(2012, 11, 25).beginning_of_week
188
+ assert_equal Time.new(2012, 11, 26), Time.new(2012, 11, 26).beginning_of_week
189
+ assert_equal Time.new(2012, 11, 26), Time.new(2012, 11, 30).beginning_of_week
190
+ WeekOfMonth.configuration.monday_active = false
191
+ end
192
+
193
+ def test_monday_configured_end_of_week
194
+ WeekOfMonth.configuration.monday_active = true
195
+ assert_equal Time.new(2012, 12, 2), Time.new(2012, 12, 1).end_of_week
196
+ assert_equal Time.new(2012, 12, 2), Time.new(2012, 12, 2).end_of_week
197
+ assert_equal Time.new(2012, 12, 9), Time.new(2012, 12, 3).end_of_week
198
+ assert_equal Time.new(2012, 12, 9), Time.new(2012, 12, 7).end_of_week
199
+ WeekOfMonth.configuration.monday_active = false
200
+ end
201
+ end
@@ -0,0 +1,13 @@
1
+ #!/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ # @author Sachin Singh
5
+
6
+ require 'test/unit'
7
+ RUBY_VERSION < '1.9' ? require('lib/week_of_month') : require_relative('../../../week_of_month')
8
+
9
+ class TestYearForTime < Test::Unit::TestCase
10
+ def test_years_between_dates
11
+ assert_equal 3, Time.years_between_dates(Time.new(2015, 11, 1), Time.new(2012, 11, 15))
12
+ end
13
+ end
@@ -1,7 +1,7 @@
1
1
  require 'date'
2
2
  require 'time'
3
3
 
4
- # supports both version of ruby 1.8 and 1.9 for loading a file.
4
+ # Supports both version of ruby 1.8 and 1.9 for loading a file.
5
5
  def require_file(file_name)
6
6
  RUBY_VERSION < '1.9' ? require(file_name) : require_relative(file_name)
7
7
  end
@@ -20,9 +20,7 @@ class Date
20
20
  end
21
21
 
22
22
  [Time, Date].each do |klass|
23
-
24
23
  klass.class_eval do
25
-
26
24
  unless method_defined?(:to_date)
27
25
  def to_date
28
26
  ::Date.new(year, month, day)
@@ -31,17 +29,35 @@ end
31
29
 
32
30
  # these methods are already defined in ruby 1.9 and above
33
31
  unless method_defined?(:sunday?)
34
- def sunday? ; self.wday == 0; end
35
- def monday? ; self.wday == 1; end
36
- def tuesday? ; self.wday == 2; end
37
- def wednesday? ; self.wday == 3; end
38
- def thursday? ; self.wday == 4; end
39
- def friday? ; self.wday == 5; end
40
- def saturday? ; self.wday == 6; end
41
- end
32
+ def sunday?
33
+ wday == 0
34
+ end
42
35
 
43
- end
36
+ def monday?
37
+ wday == 1
38
+ end
39
+
40
+ def tuesday?
41
+ wday == 2
42
+ end
43
+
44
+ def wednesday?
45
+ wday == 3
46
+ end
47
+
48
+ def thursday?
49
+ wday == 4
50
+ end
51
+
52
+ def friday?
53
+ wday == 5
54
+ end
44
55
 
56
+ def saturday?
57
+ wday == 6
58
+ end
59
+ end
60
+ end
45
61
  end
46
62
 
47
63
  class Time
@@ -51,11 +67,11 @@ class Time
51
67
  include WeekOfMonth::Year
52
68
 
53
69
  def leap?
54
- self.to_date.leap?
70
+ to_date.leap?
55
71
  end
56
72
 
57
73
  if RUBY_VERSION < '1.9'
58
- 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)
74
+ 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)
59
75
  Time.local(year, month, day, hour, min, sec, millisecond)
60
76
  end
61
77
  end
@@ -65,19 +81,13 @@ class Hash
65
81
  unless method_defined?(:key)
66
82
  def key(value)
67
83
  result = nil
68
- self.each do |k,v| result = k if v == value && result == nil; end if self.values.include?(value)
84
+ each { |k, v| result = k if v == value && result.nil?; } if values.include?(value)
69
85
  result
70
86
  end
71
87
  end
72
88
  end
73
89
 
74
90
  module WeekOfMonth
75
- class << self
76
- # A WeekOfMonth configuration object. Must act like a hash
77
- # See WeekOfMonth::Configuration.
78
- attr_writer :configuration
79
- end
80
-
81
91
  def self.first_day=(val)
82
92
  @first_day = DAYS_IN_SEQUENCE[val]
83
93
  end
@@ -85,17 +95,4 @@ module WeekOfMonth
85
95
  def self.first_day
86
96
  @first_day ||= 0
87
97
  end
88
-
89
- def self.configuration
90
- @configuration ||= Configuration.new
91
- end
92
-
93
- def self.configuration=(config)
94
- @configuration = config
95
- end
96
-
97
- def self.configure
98
- yield configuration
99
- end
100
98
  end
101
-
data/license CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2012-2016 Sachin Singh
3
+ Copyright (c) 2012-2017 Sachin Singh
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -7,14 +7,14 @@ Gem::Specification.new do |s|
7
7
  s.version = WeekOfMonth::VERSION
8
8
  s.summary = 'Week of month!'
9
9
  s.description = 'Its gives you week_of_month method on date and time objects, that returns week of the month.'
10
- s.authors = %w(Sachin87 Tommyixi Matt-- berikin pablorusso AstonJ swapnilchincholkar hitendrasingh ilake)
11
- s.email = %w(sachin@railsdeveloper.in sachin.y87@gmail.com singhsachin87@yahoo.com)
10
+ s.authors = %w[Sachin87 Tommyixi Matt-- berikin pablorusso AstonJ swapnilchincholkar hitendrasingh ilake fursich]
11
+ s.email = %w[sachin.y87@gmail.com]
12
12
  s.homepage = 'https://github.com/sachin87/week-of-month'
13
13
  s.files = `git ls-files`.split("\n").sort
14
14
  s.require_paths = ['lib']
15
15
  s.license = 'MIT'
16
16
 
17
- s.add_development_dependency 'rake', '>= 10.1.0'
18
- s.add_development_dependency 'bundler', '>= 1.0'
19
- s.add_development_dependency 'test-unit'
17
+ s.add_development_dependency 'rake', '>= 12.0.0'
18
+ s.add_development_dependency 'bundler', '>= 1.15.0'
19
+ s.add_development_dependency 'test-unit', '>= 3.2.3'
20
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: week_of_month
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3.4
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sachin87
@@ -13,10 +13,11 @@ authors:
13
13
  - swapnilchincholkar
14
14
  - hitendrasingh
15
15
  - ilake
16
+ - fursich
16
17
  autorequire:
17
18
  bindir: bin
18
19
  cert_chain: []
19
- date: 2016-01-02 00:00:00.000000000 Z
20
+ date: 2017-09-06 00:00:00.000000000 Z
20
21
  dependencies:
21
22
  - !ruby/object:Gem::Dependency
22
23
  name: rake
@@ -24,54 +25,53 @@ dependencies:
24
25
  requirements:
25
26
  - - ">="
26
27
  - !ruby/object:Gem::Version
27
- version: 10.1.0
28
+ version: 12.0.0
28
29
  type: :development
29
30
  prerelease: false
30
31
  version_requirements: !ruby/object:Gem::Requirement
31
32
  requirements:
32
33
  - - ">="
33
34
  - !ruby/object:Gem::Version
34
- version: 10.1.0
35
+ version: 12.0.0
35
36
  - !ruby/object:Gem::Dependency
36
37
  name: bundler
37
38
  requirement: !ruby/object:Gem::Requirement
38
39
  requirements:
39
40
  - - ">="
40
41
  - !ruby/object:Gem::Version
41
- version: '1.0'
42
+ version: 1.15.0
42
43
  type: :development
43
44
  prerelease: false
44
45
  version_requirements: !ruby/object:Gem::Requirement
45
46
  requirements:
46
47
  - - ">="
47
48
  - !ruby/object:Gem::Version
48
- version: '1.0'
49
+ version: 1.15.0
49
50
  - !ruby/object:Gem::Dependency
50
51
  name: test-unit
51
52
  requirement: !ruby/object:Gem::Requirement
52
53
  requirements:
53
54
  - - ">="
54
55
  - !ruby/object:Gem::Version
55
- version: '0'
56
+ version: 3.2.3
56
57
  type: :development
57
58
  prerelease: false
58
59
  version_requirements: !ruby/object:Gem::Requirement
59
60
  requirements:
60
61
  - - ">="
61
62
  - !ruby/object:Gem::Version
62
- version: '0'
63
+ version: 3.2.3
63
64
  description: Its gives you week_of_month method on date and time objects, that returns
64
65
  week of the month.
65
66
  email:
66
- - sachin@railsdeveloper.in
67
67
  - sachin.y87@gmail.com
68
- - singhsachin87@yahoo.com
69
68
  executables: []
70
69
  extensions: []
71
70
  extra_rdoc_files: []
72
71
  files:
73
72
  - ".bundle/install.log"
74
73
  - ".gitignore"
74
+ - ".rvmrc"
75
75
  - Gemfile
76
76
  - Gemfile.lock
77
77
  - README.md
@@ -83,11 +83,16 @@ files:
83
83
  - lib/modules/version.rb
84
84
  - lib/modules/week.rb
85
85
  - lib/modules/year.rb
86
- - lib/test/modules/test_constant.rb
87
- - lib/test/modules/test_day.rb
88
- - lib/test/modules/test_month.rb
89
- - lib/test/modules/test_week.rb
90
- - lib/test/modules/test_year.rb
86
+ - lib/test/modules/date/test_constant.rb
87
+ - lib/test/modules/date/test_day.rb
88
+ - lib/test/modules/date/test_month.rb
89
+ - lib/test/modules/date/test_week.rb
90
+ - lib/test/modules/date/test_year.rb
91
+ - lib/test/modules/time/test_constant.rb
92
+ - lib/test/modules/time/test_day.rb
93
+ - lib/test/modules/time/test_month.rb
94
+ - lib/test/modules/time/test_week.rb
95
+ - lib/test/modules/time/test_year.rb
91
96
  - lib/week_of_month.rb
92
97
  - license
93
98
  - week_of_month.gemspec
@@ -111,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
116
  version: '0'
112
117
  requirements: []
113
118
  rubyforge_project:
114
- rubygems_version: 2.4.6
119
+ rubygems_version: 2.6.11
115
120
  signing_key:
116
121
  specification_version: 4
117
122
  summary: Week of month!