sixarm_ruby_week 1.1.0

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.
data/.gemtest ADDED
File without changes
data/CHANGELOG.txt ADDED
@@ -0,0 +1,4 @@
1
+ CHANGELOG
2
+
3
+ 2012-02-24 1.1.0 Add methods .now, #includes?, #previous, #next, #start_date, #end_date, and improve examples
4
+ 2012-02-23 1.0.0 Updates for gem publishing
data/INSTALL.txt ADDED
@@ -0,0 +1,32 @@
1
+
2
+ = SixArm.com Ruby Gem Install
3
+
4
+
5
+ First-time users: add our gem certificate and source.
6
+ When you do this once, it works for all our gems.
7
+
8
+ sudo wget http://sixarm.com/sixarm.pem
9
+ sudo gem cert --add sixarm.pem
10
+ sudo gem sources --add http://sixarm.com
11
+
12
+ Install the gem with advanced options.
13
+
14
+ sudo gem install sixarm_ruby_week --test --trust-policy HighSecurity
15
+
16
+
17
+ == Notes
18
+
19
+ Do you have any questions, comments, suggestions, or feedback?
20
+ Let us know, we're happy to help. Our email is sixarm@sixarm.com
21
+
22
+ Do you want to create your own high security gems?
23
+ Learn how at http://www.rubygems.org/read/chapter/21
24
+
25
+ To see your current gem certificate list:
26
+
27
+ sudo gem cert --list
28
+
29
+ Our cert looks like this:
30
+
31
+ /C=US/ST=California/L=San Francisco/O=SixArm/CN=sixarm.com
32
+
data/LICENSE.txt ADDED
@@ -0,0 +1,25 @@
1
+ LICENSE
2
+
3
+ You may choose any of these open source licenses:
4
+
5
+ - Apache License
6
+ - BSD License
7
+ - CreativeCommons License, Non-commercial Share Alike
8
+ - GNU General Public License Version 2 (GPL 2)
9
+ - GNU Lesser General Public License (LGPL)
10
+ - MIT License
11
+ - Perl Artistic License
12
+ - Ruby License
13
+
14
+ The software is provided "as is", without warranty of any kind,
15
+ express or implied, including but not limited to the warranties of
16
+ merchantability, fitness for a particular purpose and noninfringement.
17
+
18
+ In no event shall the authors or copyright holders be liable for any
19
+ claim, damages or other liability, whether in an action of contract,
20
+ tort or otherwise, arising from, out of or in connection with the
21
+ software or the use or other dealings in the software.
22
+
23
+ This license is for the included software that is created by SixArm;
24
+ some of the included software may have its own licenses, copyrights,
25
+ authors, etc. and these do take precedence over the SixArm license.
data/README.rdoc ADDED
@@ -0,0 +1,31 @@
1
+ = SixArm.com » Ruby » Week model based on Ruby Date
2
+
3
+ Author:: Joel Parker Henderson, joel@joelparkerhenderson.com
4
+ Copyright:: Copyright (c) 2006-2012 Joel Parker Henderson
5
+ License:: See LICENSE.txt file
6
+
7
+ This gem models a week, based on the built-in Ruby Date class.
8
+
9
+ == Examples
10
+
11
+ week = Week.parse('2012-01-02')
12
+ week.to_s => '2012-01-02'
13
+
14
+ == Example Enumerable
15
+
16
+ week.previous.to_s => '2011-12-26'
17
+ week.next.to_s => '2012-01-16'
18
+
19
+ == Example Math
20
+
21
+ (week - 3).to_s => '2011-12-12'
22
+ (week + 3).to_s => '2012-01-24'
23
+
24
+ == Example Range Helpers
25
+
26
+ week.start_date.to_s => '2012-01-02'
27
+ week.end_date.to_s => '2012-01-09'
28
+ week.includes?(Date.parse('2012-01-05')) => true
29
+
30
+
31
+
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'rake'
3
+ require 'rake/testtask'
4
+
5
+ Rake::TestTask.new(:test) do |t|
6
+ t.libs << 'lib' << 'test'
7
+ t.pattern = 'test/*.rb'
8
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.0.0
@@ -0,0 +1,213 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin rdoc
3
+ Please see README.rdoc
4
+ =end
5
+
6
+ require 'date'
7
+
8
+
9
+ class Week
10
+
11
+ attr :date
12
+
13
+ def initialize(date)
14
+ @date = date
15
+ end
16
+
17
+
18
+ # Return date.to_s
19
+
20
+ def to_s
21
+ @date.to_s
22
+ end
23
+
24
+
25
+ ### Instantiations
26
+
27
+
28
+ # Return the week that starts today
29
+
30
+ def self.now
31
+ Week.new(Date.today)
32
+ end
33
+
34
+
35
+ # Parse date text to a week.
36
+ #
37
+ # @example
38
+ # week = Week.parse('2012-01-02')
39
+
40
+ def self.parse(date_text)
41
+ Week.new(Date.parse(date_text))
42
+ end
43
+
44
+
45
+ ### Comparable
46
+
47
+
48
+ # Return the hash for object comparison.
49
+ #
50
+ # This is simply the has of the date, which means
51
+ # that two week objects created with the same date
52
+ # will compare equally.
53
+
54
+ def hash
55
+ date.hash
56
+ end
57
+
58
+
59
+ # Return week1.date == week2.date
60
+
61
+ def ==(other)
62
+ self.date == other.date
63
+ end
64
+
65
+
66
+ # Return week1.date.eql? week2.date
67
+
68
+ def eql?(other)
69
+ self.date == other.date
70
+ end
71
+
72
+
73
+ # Return week1.date <=> week2.date
74
+
75
+ def <=>(other)
76
+ return self.date <=> other.date
77
+ end
78
+
79
+
80
+ # Return week1.date < week2.date
81
+
82
+ def <(other)
83
+ self.date < other.date
84
+ end
85
+
86
+
87
+ # Return week1.date <= week2.date
88
+
89
+ def <=(other)
90
+ self.date <= other.date
91
+ end
92
+
93
+
94
+ # Return week1.date > week2.date
95
+
96
+ def >(other)
97
+ self.date > other.date
98
+ end
99
+
100
+
101
+ # Return week1.date >= week2.date
102
+
103
+ def >=(other)
104
+ self.date >= other.date
105
+ end
106
+
107
+
108
+ ### Math
109
+
110
+
111
+ # Addition: week + other => week
112
+ #
113
+ # Return a date object pointing other weeks after self.
114
+ # The other should be a numeric value.
115
+ #
116
+ # @example
117
+ # week = Week.parse('2012-01-02')
118
+ # week + 3 => three weeks later
119
+
120
+ def +(other)
121
+ if other.is_a? Numeric
122
+ return Week.new(date + (other.to_i * 7))
123
+ else
124
+ raise TypeError
125
+ end
126
+ end
127
+
128
+
129
+ # Subtraction: week - other => week or integer
130
+ #
131
+ # If the other is a numeric value, return a week object pointing other weeks before self.
132
+ #
133
+ # If the other is a week object, then return the difference between the two weeks.
134
+ #
135
+ # @example
136
+ # date = date.parse('2012-01-02')
137
+ # week = Week.new(date)
138
+ # week - 3 => three weeks earlier
139
+ #
140
+ # @example
141
+ # date = date.parse('2012-01-02')
142
+ # start_week = Week.new(date)
143
+ # end_week = Week.new(date + 21)
144
+ # end_week - start_week => 3
145
+
146
+ def -(other)
147
+ if other.is_a? Numeric
148
+ return Week.new(date - (other * 7))
149
+ elsif other.is_a? Week
150
+ return ((self.date - other.date) / 7).round
151
+ else
152
+ raise TypeError
153
+ end
154
+ end
155
+
156
+
157
+ ### Enumerable
158
+
159
+ # Return the previous week, i.e. seven day earlier.
160
+
161
+ def previous
162
+ return self - 1
163
+ end
164
+
165
+
166
+ # Return the next week, i.e. seven day later.
167
+
168
+ def next
169
+ return self + 1
170
+ end
171
+
172
+
173
+ ### Ranges
174
+
175
+
176
+ # Return the start date of this week.
177
+ # This is the same as week.date.
178
+ #
179
+ # @example
180
+ # week = Week.parse('2012-01-02')
181
+ # week.start_date.to_s => '2012-01-02'
182
+
183
+ def start_date
184
+ @date
185
+ end
186
+
187
+
188
+
189
+ # Return the end date of this week.
190
+ # This is the same as week.date + 6 days
191
+ #
192
+ # @example
193
+ # week = Week.parse('2012-01-02')
194
+ # week.end_date.to_s => '2012-01-09'
195
+
196
+ def end_date
197
+ @date + 6
198
+ end
199
+
200
+
201
+ # Return true iif the week includes the date, i.e. if the date is in start_date..end_date
202
+ #
203
+ # @example
204
+ # week = Week.parse('2012-01-02')
205
+ # week.includes?(Date.parse('2012-01-05')) => true
206
+ # week.includes?(Date.parse('2012-01-10')) => false
207
+
208
+ def includes?(date)
209
+ (start_date..end_date).include?(date)
210
+ end
211
+
212
+
213
+ end
@@ -0,0 +1,137 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'test/unit'
3
+ require 'simplecov'
4
+ SimpleCov.start
5
+ require 'sixarm_ruby_week'
6
+
7
+ class WeekTest < Test::Unit::TestCase
8
+
9
+ DATE = Date.parse('2012-01-02')
10
+ WEEK = Week.new(DATE)
11
+ WEEK_PREV = Week.new(DATE-7)
12
+ WEEK_NEXT = Week.new(DATE+7)
13
+
14
+ def test_initialize
15
+ assert_equal(WEEK.date.cwyear, 2012)
16
+ assert_equal(WEEK.date.cweek, 1)
17
+ assert_equal(WEEK.date.cwday, 1)
18
+ end
19
+
20
+ def test_date
21
+ assert_equal(DATE, WEEK.date)
22
+ end
23
+
24
+ def test_to_s
25
+ assert_equal('2012-01-02', WEEK.to_s)
26
+ end
27
+
28
+ def test_now
29
+ assert_equal(Date.today, Week.now.date)
30
+ end
31
+
32
+ def test_parse
33
+ week = Week.parse('2012-01-02')
34
+ assert_equal(DATE, week.date)
35
+ end
36
+
37
+ def test_hash
38
+ assert_equal(DATE.hash, WEEK.hash)
39
+ end
40
+
41
+ def test_eq
42
+ assert(WEEK == Week.new(DATE))
43
+ assert(!(WEEK == Week.new(DATE+1)))
44
+ end
45
+
46
+ def test_eql
47
+ assert(WEEK.eql? Week.new(DATE))
48
+ assert(!(WEEK.eql? Week.new(DATE+1)))
49
+ end
50
+
51
+ def test_compare
52
+ assert_equal(-1, WEEK <=> WEEK_NEXT)
53
+ assert_equal( 0, WEEK <=> WEEK)
54
+ assert_equal( 1, WEEK <=> WEEK_PREV)
55
+ end
56
+
57
+ def test_lt
58
+ assert(!(WEEK < WEEK_PREV))
59
+ assert(!(WEEK < WEEK))
60
+ assert(WEEK < WEEK_NEXT)
61
+ end
62
+
63
+ def test_lte
64
+ assert(!(WEEK <= WEEK_PREV))
65
+ assert(WEEK <= WEEK)
66
+ assert(WEEK < WEEK_NEXT)
67
+ end
68
+
69
+ def test_gt
70
+ assert(WEEK > WEEK_PREV)
71
+ assert(!(WEEK > WEEK))
72
+ assert(!(WEEK > WEEK_NEXT))
73
+ end
74
+
75
+ def test_gte
76
+ assert(WEEK > WEEK_PREV)
77
+ assert(WEEK >= WEEK)
78
+ assert(!(WEEK > WEEK_NEXT))
79
+ end
80
+
81
+ def test_plus_with_numeric
82
+ assert_equal(WEEK_NEXT, WEEK + 1)
83
+ assert_not_equal(WEEK_NEXT, WEEK + 2)
84
+ end
85
+
86
+ def test_plus_with_bad_type
87
+ assert_raise TypeError do
88
+ WEEK + "foo"
89
+ end
90
+ end
91
+
92
+ def test_minus_with_numeric
93
+ assert_equal(WEEK_PREV, WEEK - 1)
94
+ assert_not_equal(WEEK_PREV, WEEK + 2)
95
+ end
96
+
97
+ def test_minus_with_week
98
+ assert_equal(1, WEEK - WEEK_PREV)
99
+ assert_equal(0, WEEK - WEEK)
100
+ assert_equal(-1, WEEK - WEEK_NEXT)
101
+ end
102
+
103
+ def test_minus_with_bad_type
104
+ assert_raise TypeError do
105
+ WEEK - "foo"
106
+ end
107
+ end
108
+
109
+ def test_previous
110
+ assert_equal(WEEK_PREV, WEEK.previous)
111
+ end
112
+
113
+ def test_next
114
+ assert_equal(WEEK_NEXT, WEEK.next)
115
+ end
116
+
117
+ def test_start_date
118
+ assert_equal(DATE, WEEK.start_date)
119
+ end
120
+
121
+ def test_end_date
122
+ assert_equal(DATE + 6, WEEK.end_date)
123
+ end
124
+
125
+ def test_includes
126
+ assert(!(WEEK.includes? DATE-1))
127
+ assert(WEEK.includes? DATE+0)
128
+ assert(WEEK.includes? DATE+1)
129
+ assert(WEEK.includes? DATE+2)
130
+ assert(WEEK.includes? DATE+3)
131
+ assert(WEEK.includes? DATE+4)
132
+ assert(WEEK.includes? DATE+5)
133
+ assert(WEEK.includes? DATE+6)
134
+ assert(!(WEEK.includes? DATE+7))
135
+ end
136
+
137
+ end
data.tar.gz.sig ADDED
@@ -0,0 +1 @@
1
+ M�� h�9�l�ź$�-�,�C�V�n�H��u%��܂0�˘��kD��ֺ�A�_�3́-׭�=>�1����?�R:��:��oЎ����ɸ4�۽�h9ٚWP�ȍ��Z�M�T.E:2by:��
metadata ADDED
@@ -0,0 +1,94 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sixarm_ruby_week
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - SixArm
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain:
12
+ - ! '-----BEGIN CERTIFICATE-----
13
+
14
+ MIIDBDCCAm2gAwIBAgIJAKPwEETU5bHoMA0GCSqGSIb3DQEBBQUAMGAxCzAJBgNV
15
+
16
+ BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
17
+
18
+ c2NvMQ8wDQYDVQQKEwZTaXhBcm0xEzARBgNVBAMTCnNpeGFybS5jb20wHhcNMTAx
19
+
20
+ MjEzMjMyNzEzWhcNMTMwOTA4MjMyNzEzWjBgMQswCQYDVQQGEwJVUzETMBEGA1UE
21
+
22
+ CBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEPMA0GA1UEChMG
23
+
24
+ U2l4QXJtMRMwEQYDVQQDEwpzaXhhcm0uY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GN
25
+
26
+ ADCBiQKBgQC94mD9JDwBsunsOI0VR3CXXbOWg9cWaWciwFyJNFiM7A9I8KPLfXUw
27
+
28
+ QC4czUe5ZuG4WHvinrWhkrCK+1dWBqoEClxdF/FoKO5a+tonGCjjmfy81JmFjjyx
29
+
30
+ eTsjsHyvw+Qik9kpf9aj6+pnkNrVswgNHVea2o9yabbEiS6VSeJWoQIDAQABo4HF
31
+
32
+ MIHCMB0GA1UdDgQWBBQzPJtqmSgc53eDN7aSzDQwr9TALDCBkgYDVR0jBIGKMIGH
33
+
34
+ gBQzPJtqmSgc53eDN7aSzDQwr9TALKFkpGIwYDELMAkGA1UEBhMCVVMxEzARBgNV
35
+
36
+ BAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xDzANBgNVBAoT
37
+
38
+ BlNpeEFybTETMBEGA1UEAxMKc2l4YXJtLmNvbYIJAKPwEETU5bHoMAwGA1UdEwQF
39
+
40
+ MAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAooEexP/oPam1TP71SyuhxMb+uTrZbSQe
41
+
42
+ jVB+ExRwWadGwaNPUA56d39qwavwP+iu+3JpeonNMVvbWXF5naCX/dNFIeREHzER
43
+
44
+ ZDRQYMqru9TEMna6HD9zpcstF7vwThGovlOQ+3Y6plQ4nMzipXcZ9THqs65PIL0q
45
+
46
+ eabwpCbAopo=
47
+
48
+ -----END CERTIFICATE-----
49
+
50
+ '
51
+ date: 2012-02-25 00:00:00.000000000 Z
52
+ dependencies: []
53
+ description:
54
+ email: sixarm@sixarm.com
55
+ executables: []
56
+ extensions: []
57
+ extra_rdoc_files: []
58
+ files:
59
+ - .gemtest
60
+ - CHANGELOG.txt
61
+ - INSTALL.txt
62
+ - LICENSE.txt
63
+ - Rakefile
64
+ - README.rdoc
65
+ - VERSION
66
+ - lib/sixarm_ruby_week.rb
67
+ - test/sixarm_ruby_week_test.rb
68
+ homepage: http://sixarm.com/
69
+ licenses: []
70
+ post_install_message:
71
+ rdoc_options: []
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ requirements: []
87
+ rubyforge_project:
88
+ rubygems_version: 1.8.11
89
+ signing_key:
90
+ specification_version: 3
91
+ summary: SixArm.com » Ruby » Week is seven days from Monday onward
92
+ test_files:
93
+ - test/sixarm_ruby_week_test.rb
94
+ has_rdoc: true
metadata.gz.sig ADDED
@@ -0,0 +1 @@
1
+ �O<��V��S�39����׍T��R\���J��(�m�Q� �2%-���r����,����T�,rV<�\9`��()��\��-�(�O��r'�#Ik��B�b�H#ѵtE?���諍\!