smart_month 1.0.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.
Files changed (90) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README +33 -0
  3. data/Rakefile +51 -0
  4. data/VERSION +1 -0
  5. data/lib/month.rb +26 -0
  6. data/lib/smart_month.rb +11 -0
  7. data/lib/smart_month/calculations.rb +87 -0
  8. data/lib/smart_month/collection.rb +51 -0
  9. data/lib/smart_month/extensions/date.rb +19 -0
  10. data/lib/smart_month/magic.rb +71 -0
  11. data/lib/smart_month/math.rb +41 -0
  12. data/lib/smart_month/rulesets.rb +151 -0
  13. data/lib/smart_month/util.rb +37 -0
  14. data/pkg/smart_month-1.0.0.gem +0 -0
  15. data/rdoc/classes/Date.html +209 -0
  16. data/rdoc/classes/Month.html +189 -0
  17. data/rdoc/classes/SmartMonth.html +136 -0
  18. data/rdoc/classes/SmartMonth/Calculations.html +383 -0
  19. data/rdoc/classes/SmartMonth/Collection.html +306 -0
  20. data/rdoc/classes/SmartMonth/Magic.html +214 -0
  21. data/rdoc/classes/SmartMonth/Magic/MonthFactory.html +178 -0
  22. data/rdoc/classes/SmartMonth/Math.html +311 -0
  23. data/rdoc/classes/SmartMonth/Rulesets.html +419 -0
  24. data/rdoc/classes/SmartMonth/Util.html +302 -0
  25. data/rdoc/classes/Time.html +152 -0
  26. data/rdoc/created.rid +1 -0
  27. data/rdoc/files/README.html +170 -0
  28. data/rdoc/files/lib/month_rb.html +113 -0
  29. data/rdoc/files/lib/smart_month/calculations_rb.html +101 -0
  30. data/rdoc/files/lib/smart_month/collection_rb.html +101 -0
  31. data/rdoc/files/lib/smart_month/extensions/date_rb.html +108 -0
  32. data/rdoc/files/lib/smart_month/magic_rb.html +101 -0
  33. data/rdoc/files/lib/smart_month/math_rb.html +101 -0
  34. data/rdoc/files/lib/smart_month/rulesets_rb.html +108 -0
  35. data/rdoc/files/lib/smart_month/util_rb.html +101 -0
  36. data/rdoc/files/lib/smart_month_rb.html +108 -0
  37. data/rdoc/fr_class_index.html +37 -0
  38. data/rdoc/fr_file_index.html +36 -0
  39. data/rdoc/fr_method_index.html +74 -0
  40. data/rdoc/index.html +24 -0
  41. data/rdoc/rdoc-style.css +208 -0
  42. data/smart_month.gemspec +179 -0
  43. data/test/spec/date/accessor_spec.rb +91 -0
  44. data/test/spec/date/add_month_spec.rb +24 -0
  45. data/test/spec/date/add_spec.rb +23 -0
  46. data/test/spec/date/boat_spec.rb +20 -0
  47. data/test/spec/date/civil_spec.rb +28 -0
  48. data/test/spec/date/commercial_spec.rb +29 -0
  49. data/test/spec/date/constants_spec.rb +41 -0
  50. data/test/spec/date/conversions_spec.rb +153 -0
  51. data/test/spec/date/downto_spec.rb +18 -0
  52. data/test/spec/date/eql_spec.rb +10 -0
  53. data/test/spec/date/gregorian_spec.rb +28 -0
  54. data/test/spec/date/hash_spec.rb +14 -0
  55. data/test/spec/date/infinity_spec.rb +77 -0
  56. data/test/spec/date/julian_spec.rb +52 -0
  57. data/test/spec/date/minus_month_spec.rb +23 -0
  58. data/test/spec/date/minus_spec.rb +30 -0
  59. data/test/spec/date/new_spec.rb +9 -0
  60. data/test/spec/date/neww_spec.rb +9 -0
  61. data/test/spec/date/ordinal_spec.rb +29 -0
  62. data/test/spec/date/parse_spec.rb +149 -0
  63. data/test/spec/date/relationship_spec.rb +20 -0
  64. data/test/spec/date/shared/civil.rb +66 -0
  65. data/test/spec/date/shared/commercial.rb +39 -0
  66. data/test/spec/date/shared/parse.rb +54 -0
  67. data/test/spec/date/shared/parse_eu.rb +30 -0
  68. data/test/spec/date/shared/parse_us.rb +29 -0
  69. data/test/spec/date/step_spec.rb +56 -0
  70. data/test/spec/date/strftime_spec.rb +205 -0
  71. data/test/spec/date/strptime_spec.rb +143 -0
  72. data/test/spec/date/upto_spec.rb +18 -0
  73. data/test/spec/parsedate/parsedate.rb +95 -0
  74. data/test/spec/time/httpdate_spec.rb +21 -0
  75. data/test/spec/time/iso8601_spec.rb +7 -0
  76. data/test/spec/time/rfc2822_spec.rb +7 -0
  77. data/test/spec/time/rfc822_spec.rb +7 -0
  78. data/test/spec/time/shared/rfc2822.rb +65 -0
  79. data/test/spec/time/shared/xmlschema.rb +53 -0
  80. data/test/spec/time/xmlschema_spec.rb +7 -0
  81. data/test/spec_helper.rb +56 -0
  82. data/test/test_helper.rb +4 -0
  83. data/test/unit/calculations_test.rb +82 -0
  84. data/test/unit/collection_test.rb +42 -0
  85. data/test/unit/magic_test.rb +37 -0
  86. data/test/unit/math_test.rb +30 -0
  87. data/test/unit/rulesets_test.rb +94 -0
  88. data/test/unit/samples/test_ruleset.yml +6 -0
  89. data/test/unit/util_test.rb +29 -0
  90. metadata +196 -0
@@ -0,0 +1,383 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: SmartMonth::Calculations</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">SmartMonth::Calculations</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/smart_month/calculations_rb.html">
59
+ lib/smart_month/calculations.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ </table>
66
+ </div>
67
+ <!-- banner header -->
68
+
69
+ <div id="bodyContent">
70
+
71
+
72
+
73
+ <div id="contextContent">
74
+
75
+ <div id="description">
76
+ <p>
77
+ Responsible for all core month/week calculations.
78
+ </p>
79
+
80
+ </div>
81
+
82
+
83
+ </div>
84
+
85
+ <div id="method-list">
86
+ <h3 class="section-bar">Methods</h3>
87
+
88
+ <div class="name-list">
89
+ <a href="#M000030">every</a>&nbsp;&nbsp;
90
+ <a href="#M000029">every!</a>&nbsp;&nbsp;
91
+ <a href="#M000024">first</a>&nbsp;&nbsp;
92
+ <a href="#M000027">fourth</a>&nbsp;&nbsp;
93
+ <a href="#M000028">last</a>&nbsp;&nbsp;
94
+ <a href="#M000032">length</a>&nbsp;&nbsp;
95
+ <a href="#M000025">second</a>&nbsp;&nbsp;
96
+ <a href="#M000031">size</a>&nbsp;&nbsp;
97
+ <a href="#M000026">third</a>&nbsp;&nbsp;
98
+ </div>
99
+ </div>
100
+
101
+ </div>
102
+
103
+
104
+ <!-- if includes -->
105
+
106
+ <div id="section">
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+ <!-- if method_list -->
116
+ <div id="methods">
117
+ <h3 class="section-bar">Public Instance methods</h3>
118
+
119
+ <div id="method-M000030" class="method-detail">
120
+ <a name="M000030"></a>
121
+
122
+ <div class="method-heading">
123
+ <a href="#M000030" class="method-signature">
124
+ <span class="method-name">every</span><span class="method-args">(*days)</span>
125
+ </a>
126
+ </div>
127
+
128
+ <div class="method-description">
129
+ <p>
130
+ this returns the same data as <a
131
+ href="Calculations.html#M000030">every</a>! but removes the hash
132
+ organization of the data.
133
+ </p>
134
+ <p><a class="source-toggle" href="#"
135
+ onclick="toggleCode('M000030-source');return false;">[Source]</a></p>
136
+ <div class="method-source-code" id="M000030-source">
137
+ <pre>
138
+ <span class="ruby-comment cmt"># File lib/smart_month/calculations.rb, line 58</span>
139
+ 58: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">every</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">days</span>)
140
+ 59: <span class="ruby-identifier">days</span> = <span class="ruby-identifier">every!</span>(<span class="ruby-identifier">days</span>)
141
+ 60: (<span class="ruby-identifier">days</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)) <span class="ruby-operator">?</span> <span class="ruby-identifier">days</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">days</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">flatten</span>
142
+ 61: <span class="ruby-keyword kw">end</span>
143
+ </pre>
144
+ </div>
145
+ </div>
146
+ </div>
147
+
148
+ <div id="method-M000029" class="method-detail">
149
+ <a name="M000029"></a>
150
+
151
+ <div class="method-heading">
152
+ <a href="#M000029" class="method-signature">
153
+ <span class="method-name">every!</span><span class="method-args">(*days)</span>
154
+ </a>
155
+ </div>
156
+
157
+ <div class="method-description">
158
+ <p>
159
+ returns an array of dates of the day requested. if an array of dates are
160
+ passed in, a hash of day names containing the corresponding date are
161
+ returned.
162
+ </p>
163
+ <p><a class="source-toggle" href="#"
164
+ onclick="toggleCode('M000029-source');return false;">[Source]</a></p>
165
+ <div class="method-source-code" id="M000029-source">
166
+ <pre>
167
+ <span class="ruby-comment cmt"># File lib/smart_month/calculations.rb, line 34</span>
168
+ 34: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">every!</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">days</span>)
169
+ 35: <span class="ruby-identifier">days</span> = [<span class="ruby-identifier">days</span>].<span class="ruby-identifier">flatten</span>
170
+ 36: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">days</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
171
+ 37: <span class="ruby-identifier">dates</span> = []
172
+ 38: (<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">5</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">week</span><span class="ruby-operator">|</span>
173
+ 39: <span class="ruby-identifier">dates</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">nth_weekday</span>(<span class="ruby-identifier">days</span>.<span class="ruby-identifier">first</span>,<span class="ruby-identifier">week</span>)
174
+ 40: <span class="ruby-keyword kw">end</span>
175
+ 41: <span class="ruby-identifier">dates</span>.<span class="ruby-identifier">compact!</span>
176
+ 42: <span class="ruby-keyword kw">else</span>
177
+ 43: <span class="ruby-identifier">dates</span> = {}
178
+ 44: <span class="ruby-identifier">days</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span>
179
+ 45: <span class="ruby-identifier">day</span> = <span class="ruby-identifier">day</span>.<span class="ruby-identifier">to_sym</span>
180
+ 46: <span class="ruby-identifier">dates</span>[<span class="ruby-identifier">day</span>] = []
181
+ 47: (<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">5</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">week</span><span class="ruby-operator">|</span>
182
+ 48: <span class="ruby-identifier">dates</span>[<span class="ruby-identifier">day</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">nth_weekday</span>(<span class="ruby-identifier">day</span>,<span class="ruby-identifier">week</span>)
183
+ 49: <span class="ruby-keyword kw">end</span>
184
+ 50: <span class="ruby-identifier">dates</span>[<span class="ruby-identifier">day</span>].<span class="ruby-identifier">compact!</span>
185
+ 51: <span class="ruby-keyword kw">end</span>
186
+ 52: <span class="ruby-keyword kw">end</span>
187
+ 53: <span class="ruby-identifier">dates</span>
188
+ 54: <span class="ruby-keyword kw">end</span>
189
+ </pre>
190
+ </div>
191
+ </div>
192
+ </div>
193
+
194
+ <div id="method-M000024" class="method-detail">
195
+ <a name="M000024"></a>
196
+
197
+ <div class="method-heading">
198
+ <a href="#M000024" class="method-signature">
199
+ <span class="method-name">first</span><span class="method-args">(day = nil)</span>
200
+ </a>
201
+ </div>
202
+
203
+ <div class="method-description">
204
+ <p>
205
+ returns the <a href="Calculations.html#M000024">first</a> date of the day
206
+ requested. if no day is defined, it returns the very <a
207
+ href="Calculations.html#M000024">first</a> day of the month.
208
+ </p>
209
+ <p><a class="source-toggle" href="#"
210
+ onclick="toggleCode('M000024-source');return false;">[Source]</a></p>
211
+ <div class="method-source-code" id="M000024-source">
212
+ <pre>
213
+ <span class="ruby-comment cmt"># File lib/smart_month/calculations.rb, line 6</span>
214
+ 6: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">first</span>(<span class="ruby-identifier">day</span> = <span class="ruby-keyword kw">nil</span>)
215
+ 7: (<span class="ruby-identifier">day</span>.<span class="ruby-identifier">nil?</span>) <span class="ruby-operator">?</span> <span class="ruby-ivar">@date</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">nth_weekday</span>(<span class="ruby-identifier">day</span>,<span class="ruby-value">1</span>)
216
+ 8: <span class="ruby-keyword kw">end</span>
217
+ </pre>
218
+ </div>
219
+ </div>
220
+ </div>
221
+
222
+ <div id="method-M000027" class="method-detail">
223
+ <a name="M000027"></a>
224
+
225
+ <div class="method-heading">
226
+ <a href="#M000027" class="method-signature">
227
+ <span class="method-name">fourth</span><span class="method-args">(day)</span>
228
+ </a>
229
+ </div>
230
+
231
+ <div class="method-description">
232
+ <p>
233
+ returns the <a href="Calculations.html#M000027">fourth</a> (or potentially
234
+ <a href="Calculations.html#M000028">last</a>), date of the day requested.
235
+ </p>
236
+ <p><a class="source-toggle" href="#"
237
+ onclick="toggleCode('M000027-source');return false;">[Source]</a></p>
238
+ <div class="method-source-code" id="M000027-source">
239
+ <pre>
240
+ <span class="ruby-comment cmt"># File lib/smart_month/calculations.rb, line 21</span>
241
+ 21: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">fourth</span>(<span class="ruby-identifier">day</span>)
242
+ 22: <span class="ruby-identifier">nth_weekday</span>(<span class="ruby-identifier">day</span>,<span class="ruby-value">4</span>) <span class="ruby-operator">||</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">last</span>(<span class="ruby-identifier">day</span>)
243
+ 23: <span class="ruby-keyword kw">end</span>
244
+ </pre>
245
+ </div>
246
+ </div>
247
+ </div>
248
+
249
+ <div id="method-M000028" class="method-detail">
250
+ <a name="M000028"></a>
251
+
252
+ <div class="method-heading">
253
+ <a href="#M000028" class="method-signature">
254
+ <span class="method-name">last</span><span class="method-args">(day = nil)</span>
255
+ </a>
256
+ </div>
257
+
258
+ <div class="method-description">
259
+ <p>
260
+ returns <a href="Calculations.html#M000028">last</a> date of the day
261
+ requested. if no day is defined, it returns the very <a
262
+ href="Calculations.html#M000028">last</a> day of the month.
263
+ </p>
264
+ <p><a class="source-toggle" href="#"
265
+ onclick="toggleCode('M000028-source');return false;">[Source]</a></p>
266
+ <div class="method-source-code" id="M000028-source">
267
+ <pre>
268
+ <span class="ruby-comment cmt"># File lib/smart_month/calculations.rb, line 27</span>
269
+ 27: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">last</span>(<span class="ruby-identifier">day</span> = <span class="ruby-keyword kw">nil</span>)
270
+ 28: (<span class="ruby-identifier">day</span>.<span class="ruby-identifier">nil?</span>) <span class="ruby-operator">?</span> <span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">year</span>,<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">month</span>,<span class="ruby-value">-1</span>) <span class="ruby-operator">:</span> <span class="ruby-identifier">every</span>(<span class="ruby-identifier">day</span>).<span class="ruby-identifier">last</span>
271
+ 29: <span class="ruby-keyword kw">end</span>
272
+ </pre>
273
+ </div>
274
+ </div>
275
+ </div>
276
+
277
+ <div id="method-M000032" class="method-detail">
278
+ <a name="M000032"></a>
279
+
280
+ <div class="method-heading">
281
+ <span class="method-name">length</span><span class="method-args">()</span>
282
+ </div>
283
+
284
+ <div class="method-description">
285
+ <p>
286
+ Alias for <a href="Calculations.html#M000031">size</a>
287
+ </p>
288
+ </div>
289
+ </div>
290
+
291
+ <div id="method-M000025" class="method-detail">
292
+ <a name="M000025"></a>
293
+
294
+ <div class="method-heading">
295
+ <a href="#M000025" class="method-signature">
296
+ <span class="method-name">second</span><span class="method-args">(day)</span>
297
+ </a>
298
+ </div>
299
+
300
+ <div class="method-description">
301
+ <p>
302
+ returns the <a href="Calculations.html#M000025">second</a> date of the day
303
+ requested.
304
+ </p>
305
+ <p><a class="source-toggle" href="#"
306
+ onclick="toggleCode('M000025-source');return false;">[Source]</a></p>
307
+ <div class="method-source-code" id="M000025-source">
308
+ <pre>
309
+ <span class="ruby-comment cmt"># File lib/smart_month/calculations.rb, line 11</span>
310
+ 11: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">second</span>(<span class="ruby-identifier">day</span>)
311
+ 12: <span class="ruby-identifier">nth_weekday</span>(<span class="ruby-identifier">day</span>,<span class="ruby-value">2</span>)
312
+ 13: <span class="ruby-keyword kw">end</span>
313
+ </pre>
314
+ </div>
315
+ </div>
316
+ </div>
317
+
318
+ <div id="method-M000031" class="method-detail">
319
+ <a name="M000031"></a>
320
+
321
+ <div class="method-heading">
322
+ <a href="#M000031" class="method-signature">
323
+ <span class="method-name">size</span><span class="method-args">()</span>
324
+ </a>
325
+ </div>
326
+
327
+ <div class="method-description">
328
+ <p>
329
+ returns the total number of days in month.
330
+ </p>
331
+ <p><a class="source-toggle" href="#"
332
+ onclick="toggleCode('M000031-source');return false;">[Source]</a></p>
333
+ <div class="method-source-code" id="M000031-source">
334
+ <pre>
335
+ <span class="ruby-comment cmt"># File lib/smart_month/calculations.rb, line 64</span>
336
+ 64: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">size</span>
337
+ 65: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">last</span>.<span class="ruby-identifier">day</span>.<span class="ruby-identifier">to_i</span>
338
+ 66: <span class="ruby-keyword kw">end</span>
339
+ </pre>
340
+ </div>
341
+ </div>
342
+ </div>
343
+
344
+ <div id="method-M000026" class="method-detail">
345
+ <a name="M000026"></a>
346
+
347
+ <div class="method-heading">
348
+ <a href="#M000026" class="method-signature">
349
+ <span class="method-name">third</span><span class="method-args">(day)</span>
350
+ </a>
351
+ </div>
352
+
353
+ <div class="method-description">
354
+ <p>
355
+ returns the <a href="Calculations.html#M000026">third</a> date of the day
356
+ requested.
357
+ </p>
358
+ <p><a class="source-toggle" href="#"
359
+ onclick="toggleCode('M000026-source');return false;">[Source]</a></p>
360
+ <div class="method-source-code" id="M000026-source">
361
+ <pre>
362
+ <span class="ruby-comment cmt"># File lib/smart_month/calculations.rb, line 16</span>
363
+ 16: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">third</span>(<span class="ruby-identifier">day</span>)
364
+ 17: <span class="ruby-identifier">nth_weekday</span>(<span class="ruby-identifier">day</span>,<span class="ruby-value">3</span>)
365
+ 18: <span class="ruby-keyword kw">end</span>
366
+ </pre>
367
+ </div>
368
+ </div>
369
+ </div>
370
+
371
+
372
+ </div>
373
+
374
+
375
+ </div>
376
+
377
+
378
+ <div id="validator-badges">
379
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
380
+ </div>
381
+
382
+ </body>
383
+ </html>
@@ -0,0 +1,306 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: SmartMonth::Collection</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">SmartMonth::Collection</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/smart_month/collection_rb.html">
59
+ lib/smart_month/collection.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ </table>
66
+ </div>
67
+ <!-- banner header -->
68
+
69
+ <div id="bodyContent">
70
+
71
+
72
+
73
+ <div id="contextContent">
74
+
75
+ <div id="description">
76
+ <p>
77
+ Responsible for all collection-based functionality.
78
+ </p>
79
+
80
+ </div>
81
+
82
+
83
+ </div>
84
+
85
+ <div id="method-list">
86
+ <h3 class="section-bar">Methods</h3>
87
+
88
+ <div class="name-list">
89
+ <a href="#M000039">each</a>&nbsp;&nbsp;
90
+ <a href="#M000033">next</a>&nbsp;&nbsp;
91
+ <a href="#M000034">next!</a>&nbsp;&nbsp;
92
+ <a href="#M000036">prev</a>&nbsp;&nbsp;
93
+ <a href="#M000038">prev!</a>&nbsp;&nbsp;
94
+ <a href="#M000035">previous</a>&nbsp;&nbsp;
95
+ <a href="#M000037">previous!</a>&nbsp;&nbsp;
96
+ </div>
97
+ </div>
98
+
99
+ </div>
100
+
101
+
102
+ <!-- if includes -->
103
+
104
+ <div id="section">
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+ <!-- if method_list -->
114
+ <div id="methods">
115
+ <h3 class="section-bar">Public Instance methods</h3>
116
+
117
+ <div id="method-M000039" class="method-detail">
118
+ <a name="M000039"></a>
119
+
120
+ <div class="method-heading">
121
+ <a href="#M000039" class="method-signature">
122
+ <span class="method-name">each</span><span class="method-args">(first = 1, last = self.last.day, &amp;block)</span>
123
+ </a>
124
+ </div>
125
+
126
+ <div class="method-description">
127
+ <p>
128
+ allows us to iterate internally on the days of a given month.
129
+ </p>
130
+ <p><a class="source-toggle" href="#"
131
+ onclick="toggleCode('M000039-source');return false;">[Source]</a></p>
132
+ <div class="method-source-code" id="M000039-source">
133
+ <pre>
134
+ <span class="ruby-comment cmt"># File lib/smart_month/collection.rb, line 44</span>
135
+ 44: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each</span>(<span class="ruby-identifier">first</span> = <span class="ruby-value">1</span>, <span class="ruby-identifier">last</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">last</span>.<span class="ruby-identifier">day</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
136
+ 45: (<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">last</span>.<span class="ruby-identifier">day</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span>
137
+ 46: <span class="ruby-identifier">block</span>.<span class="ruby-identifier">call</span>(<span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">year</span>,<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">month</span>,<span class="ruby-identifier">e</span>))
138
+ 47: <span class="ruby-keyword kw">end</span>
139
+ 48: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>
140
+ 49: <span class="ruby-keyword kw">end</span>
141
+ </pre>
142
+ </div>
143
+ </div>
144
+ </div>
145
+
146
+ <div id="method-M000033" class="method-detail">
147
+ <a name="M000033"></a>
148
+
149
+ <div class="method-heading">
150
+ <a href="#M000033" class="method-signature">
151
+ <span class="method-name">next</span><span class="method-args">()</span>
152
+ </a>
153
+ </div>
154
+
155
+ <div class="method-description">
156
+ <p>
157
+ allows for increment by copy
158
+ </p>
159
+ <p><a class="source-toggle" href="#"
160
+ onclick="toggleCode('M000033-source');return false;">[Source]</a></p>
161
+ <div class="method-source-code" id="M000033-source">
162
+ <pre>
163
+ <span class="ruby-comment cmt"># File lib/smart_month/collection.rb, line 6</span>
164
+ 6: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">next</span>
165
+ 7: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@date</span>.<span class="ruby-identifier">month</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">12</span>
166
+ 8: <span class="ruby-constant">Month</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">1</span>,<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">year</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)
167
+ 9: <span class="ruby-keyword kw">else</span>
168
+ 10: <span class="ruby-constant">Month</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">month</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>,<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">year</span>)
169
+ 11: <span class="ruby-keyword kw">end</span>
170
+ 12: <span class="ruby-keyword kw">end</span>
171
+ </pre>
172
+ </div>
173
+ </div>
174
+ </div>
175
+
176
+ <div id="method-M000034" class="method-detail">
177
+ <a name="M000034"></a>
178
+
179
+ <div class="method-heading">
180
+ <a href="#M000034" class="method-signature">
181
+ <span class="method-name">next!</span><span class="method-args">()</span>
182
+ </a>
183
+ </div>
184
+
185
+ <div class="method-description">
186
+ <p>
187
+ allows for in place incrementing by 1
188
+ </p>
189
+ <p><a class="source-toggle" href="#"
190
+ onclick="toggleCode('M000034-source');return false;">[Source]</a></p>
191
+ <div class="method-source-code" id="M000034-source">
192
+ <pre>
193
+ <span class="ruby-comment cmt"># File lib/smart_month/collection.rb, line 15</span>
194
+ 15: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">next!</span>
195
+ 16: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@date</span>.<span class="ruby-identifier">month</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">12</span>
196
+ 17: <span class="ruby-ivar">@date</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">year</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>,<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">month</span>,<span class="ruby-value">1</span>)
197
+ 18: <span class="ruby-keyword kw">else</span>
198
+ 19: <span class="ruby-ivar">@date</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">year</span>,<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">month</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>,<span class="ruby-value">1</span>)
199
+ 20: <span class="ruby-keyword kw">end</span>
200
+ 21: <span class="ruby-keyword kw">end</span>
201
+ </pre>
202
+ </div>
203
+ </div>
204
+ </div>
205
+
206
+ <div id="method-M000036" class="method-detail">
207
+ <a name="M000036"></a>
208
+
209
+ <div class="method-heading">
210
+ <span class="method-name">prev</span><span class="method-args">()</span>
211
+ </div>
212
+
213
+ <div class="method-description">
214
+ <p>
215
+ Alias for <a href="Collection.html#M000035">previous</a>
216
+ </p>
217
+ </div>
218
+ </div>
219
+
220
+ <div id="method-M000038" class="method-detail">
221
+ <a name="M000038"></a>
222
+
223
+ <div class="method-heading">
224
+ <span class="method-name">prev!</span><span class="method-args">()</span>
225
+ </div>
226
+
227
+ <div class="method-description">
228
+ <p>
229
+ Alias for <a href="Collection.html#M000035">previous</a>!
230
+ </p>
231
+ </div>
232
+ </div>
233
+
234
+ <div id="method-M000035" class="method-detail">
235
+ <a name="M000035"></a>
236
+
237
+ <div class="method-heading">
238
+ <a href="#M000035" class="method-signature">
239
+ <span class="method-name">previous</span><span class="method-args">()</span>
240
+ </a>
241
+ </div>
242
+
243
+ <div class="method-description">
244
+ <p>
245
+ allows for deincrement by copy
246
+ </p>
247
+ <p><a class="source-toggle" href="#"
248
+ onclick="toggleCode('M000035-source');return false;">[Source]</a></p>
249
+ <div class="method-source-code" id="M000035-source">
250
+ <pre>
251
+ <span class="ruby-comment cmt"># File lib/smart_month/collection.rb, line 24</span>
252
+ 24: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">previous</span>
253
+ 25: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@date</span>.<span class="ruby-identifier">month</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
254
+ 26: <span class="ruby-constant">Month</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">12</span>,<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">year</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>)
255
+ 27: <span class="ruby-keyword kw">else</span>
256
+ 28: <span class="ruby-constant">Month</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">month</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>,<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">year</span>)
257
+ 29: <span class="ruby-keyword kw">end</span>
258
+ 30: <span class="ruby-keyword kw">end</span>
259
+ </pre>
260
+ </div>
261
+ </div>
262
+ </div>
263
+
264
+ <div id="method-M000037" class="method-detail">
265
+ <a name="M000037"></a>
266
+
267
+ <div class="method-heading">
268
+ <a href="#M000037" class="method-signature">
269
+ <span class="method-name">previous!</span><span class="method-args">()</span>
270
+ </a>
271
+ </div>
272
+
273
+ <div class="method-description">
274
+ <p>
275
+ allows for in place deincrementing by 1
276
+ </p>
277
+ <p><a class="source-toggle" href="#"
278
+ onclick="toggleCode('M000037-source');return false;">[Source]</a></p>
279
+ <div class="method-source-code" id="M000037-source">
280
+ <pre>
281
+ <span class="ruby-comment cmt"># File lib/smart_month/collection.rb, line 34</span>
282
+ 34: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">previous!</span>
283
+ 35: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@date</span>.<span class="ruby-identifier">month</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
284
+ 36: <span class="ruby-ivar">@date</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">year</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>,<span class="ruby-value">12</span>,<span class="ruby-value">1</span>)
285
+ 37: <span class="ruby-keyword kw">else</span>
286
+ 38: <span class="ruby-ivar">@date</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">year</span>,<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">month</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>,<span class="ruby-value">1</span>)
287
+ 39: <span class="ruby-keyword kw">end</span>
288
+ 40: <span class="ruby-keyword kw">end</span>
289
+ </pre>
290
+ </div>
291
+ </div>
292
+ </div>
293
+
294
+
295
+ </div>
296
+
297
+
298
+ </div>
299
+
300
+
301
+ <div id="validator-badges">
302
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
303
+ </div>
304
+
305
+ </body>
306
+ </html>