fat_date 0.1.0 → 0.2.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.
@@ -0,0 +1,1930 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Module: FatDate::Date::ClassMethods
8
+
9
+ &mdash; Documentation by YARD 0.9.38
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="../../css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "FatDate::Date::ClassMethods";
19
+ relpath = '../../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../../_index.html">Index (C)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../../FatDate.html" title="FatDate (module)">FatDate</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Date.html" title="FatDate::Date (module)">Date</a></span></span>
41
+ &raquo;
42
+ <span class="title">ClassMethods</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Module: FatDate::Date::ClassMethods
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ <dl>
80
+ <dt>Defined in:</dt>
81
+ <dd>lib/fat_date/date.rb</dd>
82
+ </dl>
83
+
84
+ </div>
85
+
86
+
87
+
88
+ <h2>
89
+ Utilities
90
+ <small><a href="#" class="constants_summary_toggle">collapse</a></small>
91
+ </h2>
92
+
93
+ <dl class="constants">
94
+
95
+ <dt id="COMMON_YEAR_DAYS_IN_MONTH-constant" class="">COMMON_YEAR_DAYS_IN_MONTH =
96
+ <div class="docstring">
97
+ <div class="discussion">
98
+ <p>An Array of the number of days in each month indexed by month number,
99
+ starting with January = 1, etc.</p>
100
+
101
+
102
+ </div>
103
+ </div>
104
+ <div class="tags">
105
+
106
+
107
+ </div>
108
+ </dt>
109
+ <dd><pre class="code"><span class='lbracket'>[</span>
110
+ <span class='int'>31</span><span class='comma'>,</span>
111
+ <span class='int'>31</span><span class='comma'>,</span>
112
+ <span class='int'>28</span><span class='comma'>,</span>
113
+ <span class='int'>31</span><span class='comma'>,</span>
114
+ <span class='int'>30</span><span class='comma'>,</span>
115
+ <span class='int'>31</span><span class='comma'>,</span>
116
+ <span class='int'>30</span><span class='comma'>,</span>
117
+ <span class='int'>31</span><span class='comma'>,</span>
118
+ <span class='int'>31</span><span class='comma'>,</span>
119
+ <span class='int'>30</span><span class='comma'>,</span>
120
+ <span class='int'>31</span><span class='comma'>,</span>
121
+ <span class='int'>30</span><span class='comma'>,</span>
122
+ <span class='int'>31</span>
123
+ <span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
124
+
125
+ <dt id="GOLDEN_TO_FULLMOON-constant" class="">GOLDEN_TO_FULLMOON =
126
+ <div class="docstring">
127
+ <div class="discussion">
128
+ <p>Map from &quot;golden number&quot; (y % 19) of year to month and day of Pachal
129
+ full moon. From
130
+ <a href="https://www.calendarbede.com/book/calculation-julian-easter-sunday">https://www.calendarbede.com/book/calculation-julian-easter-sunday</a></p>
131
+
132
+
133
+ </div>
134
+ </div>
135
+ <div class="tags">
136
+
137
+
138
+ </div>
139
+ </dt>
140
+ <dd><pre class="code"><span class='lbrace'>{</span>
141
+ <span class='int'>1</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>4</span><span class='comma'>,</span> <span class='int'>5</span><span class='rbracket'>]</span><span class='comma'>,</span>
142
+ <span class='int'>2</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>3</span><span class='comma'>,</span> <span class='int'>25</span><span class='rbracket'>]</span><span class='comma'>,</span>
143
+ <span class='int'>3</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>4</span><span class='comma'>,</span> <span class='int'>13</span><span class='rbracket'>]</span><span class='comma'>,</span>
144
+ <span class='int'>4</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>4</span><span class='comma'>,</span> <span class='int'>2</span><span class='rbracket'>]</span><span class='comma'>,</span>
145
+ <span class='int'>5</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>3</span><span class='comma'>,</span> <span class='int'>22</span><span class='rbracket'>]</span><span class='comma'>,</span>
146
+ <span class='int'>6</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>4</span><span class='comma'>,</span> <span class='int'>10</span><span class='rbracket'>]</span><span class='comma'>,</span>
147
+ <span class='int'>7</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>3</span><span class='comma'>,</span> <span class='int'>30</span><span class='rbracket'>]</span><span class='comma'>,</span>
148
+ <span class='int'>8</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>4</span><span class='comma'>,</span> <span class='int'>18</span><span class='rbracket'>]</span><span class='comma'>,</span>
149
+ <span class='int'>9</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>4</span><span class='comma'>,</span> <span class='int'>7</span><span class='rbracket'>]</span><span class='comma'>,</span>
150
+ <span class='int'>10</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>3</span><span class='comma'>,</span> <span class='int'>27</span><span class='rbracket'>]</span><span class='comma'>,</span>
151
+ <span class='int'>11</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>4</span><span class='comma'>,</span> <span class='int'>15</span><span class='rbracket'>]</span><span class='comma'>,</span>
152
+ <span class='int'>12</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>4</span><span class='comma'>,</span> <span class='int'>4</span><span class='rbracket'>]</span><span class='comma'>,</span>
153
+ <span class='int'>13</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>3</span><span class='comma'>,</span> <span class='int'>24</span><span class='rbracket'>]</span><span class='comma'>,</span>
154
+ <span class='int'>14</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>4</span><span class='comma'>,</span> <span class='int'>12</span><span class='rbracket'>]</span><span class='comma'>,</span>
155
+ <span class='int'>15</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>4</span><span class='comma'>,</span> <span class='int'>1</span><span class='rbracket'>]</span><span class='comma'>,</span>
156
+ <span class='int'>16</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>3</span><span class='comma'>,</span> <span class='int'>21</span><span class='rbracket'>]</span><span class='comma'>,</span>
157
+ <span class='int'>17</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>4</span><span class='comma'>,</span> <span class='int'>9</span><span class='rbracket'>]</span><span class='comma'>,</span>
158
+ <span class='int'>18</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>3</span><span class='comma'>,</span> <span class='int'>29</span><span class='rbracket'>]</span><span class='comma'>,</span>
159
+ <span class='int'>19</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='int'>4</span><span class='comma'>,</span> <span class='int'>17</span><span class='rbracket'>]</span><span class='comma'>,</span>
160
+ <span class='rbrace'>}</span></pre></dd>
161
+
162
+ </dl>
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+
172
+ <h2>
173
+ Parsing
174
+ <small><a href="#" class="summary_toggle">collapse</a></small>
175
+ </h2>
176
+
177
+ <ul class="summary">
178
+
179
+ <li class="public ">
180
+ <span class="summary_signature">
181
+
182
+ <a href="#parse_american-instance_method" title="#parse_american (instance method)">#<strong>parse_american</strong>(str) &#x21d2; ::Date </a>
183
+
184
+
185
+
186
+ </span>
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+ <span class="summary_desc"><div class='inline'><p>Convert a string +str+ with an American style date into a ::Date object.</p>
197
+ </div></span>
198
+
199
+ </li>
200
+
201
+
202
+ <li class="public ">
203
+ <span class="summary_signature">
204
+
205
+ <a href="#spec-instance_method" title="#spec (instance method)">#<strong>spec</strong>(spec, spec_type = :from) &#x21d2; ::Date </a>
206
+
207
+
208
+
209
+ </span>
210
+
211
+
212
+
213
+
214
+
215
+
216
+
217
+
218
+
219
+ <span class="summary_desc"><div class='inline'><p>Convert a &#39;period spec&#39; <code>spec</code> to a ::Date.</p>
220
+ </div></span>
221
+
222
+ </li>
223
+
224
+
225
+ </ul>
226
+
227
+ <h2>
228
+ Utilities
229
+ <small><a href="#" class="summary_toggle">collapse</a></small>
230
+ </h2>
231
+
232
+ <ul class="summary">
233
+
234
+ <li class="public ">
235
+ <span class="summary_signature">
236
+
237
+ <a href="#days_in_month-instance_method" title="#days_in_month (instance method)">#<strong>days_in_month</strong>(year, month) &#x21d2; Object </a>
238
+
239
+
240
+
241
+ </span>
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+ <span class="summary_desc"><div class='inline'></div></span>
252
+
253
+ </li>
254
+
255
+
256
+ <li class="public ">
257
+ <span class="summary_signature">
258
+
259
+ <a href="#dow_to_wday-instance_method" title="#dow_to_wday (instance method)">#<strong>dow_to_wday</strong>(s) &#x21d2; Object </a>
260
+
261
+
262
+
263
+ </span>
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+
272
+
273
+ <span class="summary_desc"><div class='inline'><p>Return the wday number for the given DOW string allowing flexibility on how the days are written.</p>
274
+ </div></span>
275
+
276
+ </li>
277
+
278
+
279
+ <li class="public ">
280
+ <span class="summary_signature">
281
+
282
+ <a href="#easter-instance_method" title="#easter (instance method)">#<strong>easter</strong>(year, reform_year: 1582) &#x21d2; ::Date </a>
283
+
284
+
285
+
286
+ </span>
287
+
288
+
289
+
290
+
291
+
292
+
293
+
294
+
295
+
296
+ <span class="summary_desc"><div class='inline'><p>Return the date of Easter for the Western Church in the given year, accounting for calendar reform.</p>
297
+ </div></span>
298
+
299
+ </li>
300
+
301
+
302
+ <li class="public ">
303
+ <span class="summary_signature">
304
+
305
+ <a href="#ensure-instance_method" title="#ensure (instance method)">#<strong>ensure</strong>(dat) &#x21d2; Date, DateTime </a>
306
+
307
+
308
+
309
+ (also: #ensure_date)
310
+
311
+ </span>
312
+
313
+
314
+
315
+
316
+
317
+
318
+
319
+
320
+
321
+ <span class="summary_desc"><div class='inline'><p>Ensure that date is of class Date based either on a string or Date object or an object that responds to #to_date or #to_datetime.</p>
322
+ </div></span>
323
+
324
+ </li>
325
+
326
+
327
+ <li class="public ">
328
+ <span class="summary_signature">
329
+
330
+ <a href="#mo_name_to_num-instance_method" title="#mo_name_to_num (instance method)">#<strong>mo_name_to_num</strong>(name) &#x21d2; Integer </a>
331
+
332
+
333
+
334
+ </span>
335
+
336
+
337
+
338
+
339
+
340
+
341
+
342
+
343
+
344
+ <span class="summary_desc"><div class='inline'><p>Return the 1-indexed integer that corresponds to a month name.</p>
345
+ </div></span>
346
+
347
+ </li>
348
+
349
+
350
+ <li class="public ">
351
+ <span class="summary_signature">
352
+
353
+ <a href="#nth_wday_in_year_month-instance_method" title="#nth_wday_in_year_month (instance method)">#<strong>nth_wday_in_year_month</strong>(nth, wday, year, month) &#x21d2; Object </a>
354
+
355
+
356
+
357
+ </span>
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+
367
+ <span class="summary_desc"><div class='inline'><p>Return the nth weekday in the given month.</p>
368
+ </div></span>
369
+
370
+ </li>
371
+
372
+
373
+ <li class="public ">
374
+ <span class="summary_signature">
375
+
376
+ <a href="#roman_to_week-instance_method" title="#roman_to_week (instance method)">#<strong>roman_to_week</strong>(s) &#x21d2; Object </a>
377
+
378
+
379
+
380
+ </span>
381
+
382
+
383
+
384
+
385
+
386
+
387
+
388
+
389
+
390
+ <span class="summary_desc"><div class='inline'><p>Return the week number indicated by roman numerals i to vi, regardless of case.</p>
391
+ </div></span>
392
+
393
+ </li>
394
+
395
+
396
+ </ul>
397
+
398
+
399
+
400
+
401
+ <div id="instance_method_details" class="method_details_list">
402
+ <h2>Instance Method Details</h2>
403
+
404
+
405
+ <div class="method_details first">
406
+ <h3 class="signature first" id="days_in_month-instance_method">
407
+
408
+ #<strong>days_in_month</strong>(year, month) &#x21d2; <tt>Object</tt>
409
+
410
+
411
+
412
+
413
+
414
+ </h3><div class="docstring">
415
+ <div class="discussion">
416
+
417
+
418
+ </div>
419
+ </div>
420
+ <div class="tags">
421
+
422
+ <p class="tag_title">Raises:</p>
423
+ <ul class="raise">
424
+
425
+ <li>
426
+
427
+
428
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
429
+
430
+
431
+
432
+ </li>
433
+
434
+ </ul>
435
+
436
+ </div><table class="source_code">
437
+ <tr>
438
+ <td>
439
+ <pre class="lines">
440
+
441
+
442
+ 1773
443
+ 1774
444
+ 1775
445
+ 1776
446
+ 1777
447
+ 1778
448
+ 1779
449
+ 1780
450
+ 1781
451
+ 1782</pre>
452
+ </td>
453
+ <td>
454
+ <pre class="code"><span class="info file"># File 'lib/fat_date/date.rb', line 1773</span>
455
+
456
+ <span class='kw'>def</span> <span class='id identifier rubyid_days_in_month'>days_in_month</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='rparen'>)</span>
457
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>illegal month number</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_month'>month</span> <span class='op'>&lt;</span> <span class='int'>1</span> <span class='op'>||</span> <span class='id identifier rubyid_month'>month</span> <span class='op'>&gt;</span> <span class='int'>12</span>
458
+
459
+ <span class='id identifier rubyid_days'>days</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="#COMMON_YEAR_DAYS_IN_MONTH-constant" title="FatDate::Date::ClassMethods::COMMON_YEAR_DAYS_IN_MONTH (constant)">COMMON_YEAR_DAYS_IN_MONTH</a></span></span><span class='lbracket'>[</span><span class='id identifier rubyid_month'>month</span><span class='rbracket'>]</span>
460
+ <span class='kw'>if</span> <span class='id identifier rubyid_month'>month</span> <span class='op'>==</span> <span class='int'>2</span>
461
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_leap?'>leap?</span> <span class='op'>?</span> <span class='int'>29</span> <span class='op'>:</span> <span class='int'>28</span>
462
+ <span class='kw'>else</span>
463
+ <span class='id identifier rubyid_days'>days</span>
464
+ <span class='kw'>end</span>
465
+ <span class='kw'>end</span></pre>
466
+ </td>
467
+ </tr>
468
+ </table>
469
+ </div>
470
+
471
+ <div class="method_details ">
472
+ <h3 class="signature " id="dow_to_wday-instance_method">
473
+
474
+ #<strong>dow_to_wday</strong>(s) &#x21d2; <tt>Object</tt>
475
+
476
+
477
+
478
+
479
+
480
+ </h3><div class="docstring">
481
+ <div class="discussion">
482
+ <p>Return the wday number for the given DOW string allowing flexibility
483
+ on how the days are written</p>
484
+
485
+
486
+ </div>
487
+ </div>
488
+ <div class="tags">
489
+
490
+
491
+ </div><table class="source_code">
492
+ <tr>
493
+ <td>
494
+ <pre class="lines">
495
+
496
+
497
+ 1876
498
+ 1877
499
+ 1878
500
+ 1879
501
+ 1880
502
+ 1881
503
+ 1882
504
+ 1883
505
+ 1884
506
+ 1885
507
+ 1886
508
+ 1887
509
+ 1888
510
+ 1889
511
+ 1890
512
+ 1891
513
+ 1892
514
+ 1893
515
+ 1894
516
+ 1895</pre>
517
+ </td>
518
+ <td>
519
+ <pre class="code"><span class="info file"># File 'lib/fat_date/date.rb', line 1876</span>
520
+
521
+ <span class='kw'>def</span> <span class='id identifier rubyid_dow_to_wday'>dow_to_wday</span><span class='lparen'>(</span><span class='id identifier rubyid_s'>s</span><span class='rparen'>)</span>
522
+ <span class='kw'>case</span> <span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_clean'>clean</span>
523
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\ASu</span><span class='regexp_end'>/i</span></span>
524
+ <span class='int'>0</span>
525
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\AMo</span><span class='regexp_end'>/i</span></span>
526
+ <span class='int'>1</span>
527
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\ATu</span><span class='regexp_end'>/i</span></span>
528
+ <span class='int'>2</span>
529
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\AWe</span><span class='regexp_end'>/i</span></span>
530
+ <span class='int'>3</span>
531
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\ATh</span><span class='regexp_end'>/i</span></span>
532
+ <span class='int'>4</span>
533
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\AFr</span><span class='regexp_end'>/i</span></span>
534
+ <span class='int'>5</span>
535
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\ASa</span><span class='regexp_end'>/i</span></span>
536
+ <span class='int'>6</span>
537
+ <span class='kw'>else</span>
538
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>There is no weekday named </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_s'>s</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
539
+ <span class='kw'>end</span>
540
+ <span class='kw'>end</span></pre>
541
+ </td>
542
+ </tr>
543
+ </table>
544
+ </div>
545
+
546
+ <div class="method_details ">
547
+ <h3 class="signature " id="easter-instance_method">
548
+
549
+ #<strong>easter</strong>(year, reform_year: 1582) &#x21d2; <tt><span class='object_link'><a href="../../Date.html" title="Date (class)">::Date</a></span></tt>
550
+
551
+
552
+
553
+
554
+
555
+ </h3><div class="docstring">
556
+ <div class="discussion">
557
+ <p>Return the date of Easter for the Western Church in the given year,
558
+ accounting for calendar reform.</p>
559
+
560
+
561
+ </div>
562
+ </div>
563
+ <div class="tags">
564
+ <p class="tag_title">Parameters:</p>
565
+ <ul class="param">
566
+
567
+ <li>
568
+
569
+ <span class='name'>year</span>
570
+
571
+
572
+ <span class='type'>(<tt>Integer</tt>)</span>
573
+
574
+
575
+
576
+ &mdash;
577
+ <div class='inline'><p>the year of interest</p>
578
+ </div>
579
+
580
+ </li>
581
+
582
+ <li>
583
+
584
+ <span class='name'>reform_year</span>
585
+
586
+
587
+ <span class='type'>(<tt>Integer</tt>, <tt>nil</tt>)</span>
588
+
589
+
590
+ <em class="default">(defaults to: <tt>1582</tt>)</em>
591
+
592
+
593
+ &mdash;
594
+ <div class='inline'><p>the year of Gregorian calendar adoption (default: 1582)</p>
595
+ </div>
596
+
597
+ </li>
598
+
599
+ </ul>
600
+
601
+ <p class="tag_title">Returns:</p>
602
+ <ul class="return">
603
+
604
+ <li>
605
+
606
+
607
+ <span class='type'>(<tt><span class='object_link'><a href="../../Date.html" title="Date (class)">::Date</a></span></tt>)</span>
608
+
609
+
610
+
611
+ &mdash;
612
+ <div class='inline'><p>the date of Easter for year</p>
613
+ </div>
614
+
615
+ </li>
616
+
617
+ </ul>
618
+
619
+ </div><table class="source_code">
620
+ <tr>
621
+ <td>
622
+ <pre class="lines">
623
+
624
+
625
+ 1969
626
+ 1970
627
+ 1971
628
+ 1972
629
+ 1973
630
+ 1974
631
+ 1975
632
+ 1976
633
+ 1977
634
+ 1978
635
+ 1979
636
+ 1980
637
+ 1981
638
+ 1982
639
+ 1983
640
+ 1984
641
+ 1985
642
+ 1986
643
+ 1987
644
+ 1988
645
+ 1989
646
+ 1990
647
+ 1991
648
+ 1992
649
+ 1993
650
+ 1994
651
+ 1995
652
+ 1996
653
+ 1997
654
+ 1998
655
+ 1999
656
+ 2000
657
+ 2001
658
+ 2002
659
+ 2003
660
+ 2004
661
+ 2005
662
+ 2006</pre>
663
+ </td>
664
+ <td>
665
+ <pre class="code"><span class="info file"># File 'lib/fat_date/date.rb', line 1969</span>
666
+
667
+ <span class='kw'>def</span> <span class='id identifier rubyid_easter'>easter</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='label'>reform_year:</span> <span class='int'>1582</span><span class='rparen'>)</span>
668
+ <span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>date</span><span class='tstring_end'>&#39;</span></span>
669
+ <span class='id identifier rubyid_year'>year</span> <span class='op'>=</span> <span class='id identifier rubyid_year'>year</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
670
+ <span class='id identifier rubyid_y'>y</span> <span class='op'>=</span> <span class='id identifier rubyid_year'>year</span>
671
+ <span class='comment'># No Easter before the Resurrection!
672
+ </span> <span class='kw'>return</span> <span class='kw'>if</span> <span class='id identifier rubyid_year'>year</span> <span class='op'>&lt;</span> <span class='int'>30</span>
673
+
674
+ <span class='comment'># Note that since the reform took place in October 1582 in Catholic
675
+ </span> <span class='comment'># Europe and in Spetember 1752 in England
676
+ </span> <span class='kw'>if</span> <span class='id identifier rubyid_y'>y</span> <span class='op'>&lt;=</span> <span class='id identifier rubyid_reform_year'>reform_year</span>
677
+ <span class='id identifier rubyid_golden'>golden</span> <span class='op'>=</span> <span class='id identifier rubyid_y'>y</span> <span class='op'>%</span> <span class='int'>19</span> <span class='op'>+</span> <span class='int'>1</span>
678
+ <span class='id identifier rubyid_p_full'>p_full</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span>
679
+ <span class='id identifier rubyid_y'>y</span><span class='comma'>,</span>
680
+ <span class='const'><span class='object_link'><a href="#GOLDEN_TO_FULLMOON-constant" title="FatDate::Date::ClassMethods::GOLDEN_TO_FULLMOON (constant)">GOLDEN_TO_FULLMOON</a></span></span><span class='lbracket'>[</span><span class='id identifier rubyid_golden'>golden</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span>
681
+ <span class='const'><span class='object_link'><a href="#GOLDEN_TO_FULLMOON-constant" title="FatDate::Date::ClassMethods::GOLDEN_TO_FULLMOON (constant)">GOLDEN_TO_FULLMOON</a></span></span><span class='lbracket'>[</span><span class='id identifier rubyid_golden'>golden</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='comma'>,</span>
682
+ <span class='rparen'>)</span>
683
+ <span class='kw'>if</span> <span class='id identifier rubyid_p_full'>p_full</span><span class='period'>.</span><span class='id identifier rubyid_wday'>wday</span><span class='period'>.</span><span class='id identifier rubyid_zero?'>zero?</span>
684
+ <span class='id identifier rubyid_p_full'>p_full</span> <span class='op'>+</span> <span class='int'>7</span><span class='period'>.</span><span class='id identifier rubyid_days'>days</span>
685
+ <span class='kw'>else</span>
686
+ <span class='id identifier rubyid_easter'>easter</span> <span class='op'>=</span> <span class='id identifier rubyid_p_full'>p_full</span>
687
+ <span class='id identifier rubyid_easter'>easter</span> <span class='op'>+=</span> <span class='int'>1</span> <span class='kw'>until</span> <span class='id identifier rubyid_easter'>easter</span><span class='period'>.</span><span class='id identifier rubyid_wday'>wday</span><span class='period'>.</span><span class='id identifier rubyid_zero?'>zero?</span>
688
+ <span class='id identifier rubyid_easter'>easter</span>
689
+ <span class='kw'>end</span>
690
+ <span class='kw'>else</span>
691
+ <span class='comment'># Gregorian calendar calculation (original code)
692
+ </span> <span class='id identifier rubyid_a'>a</span> <span class='op'>=</span> <span class='id identifier rubyid_y'>y</span> <span class='op'>%</span> <span class='int'>19</span>
693
+ <span class='id identifier rubyid_b'>b</span><span class='comma'>,</span> <span class='id identifier rubyid_c'>c</span> <span class='op'>=</span> <span class='id identifier rubyid_y'>y</span><span class='period'>.</span><span class='id identifier rubyid_divmod'>divmod</span><span class='lparen'>(</span><span class='int'>100</span><span class='rparen'>)</span>
694
+ <span class='id identifier rubyid_d'>d</span><span class='comma'>,</span> <span class='id identifier rubyid_e'>e</span> <span class='op'>=</span> <span class='id identifier rubyid_b'>b</span><span class='period'>.</span><span class='id identifier rubyid_divmod'>divmod</span><span class='lparen'>(</span><span class='int'>4</span><span class='rparen'>)</span>
695
+ <span class='id identifier rubyid_f'>f</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_b'>b</span> <span class='op'>+</span> <span class='int'>8</span><span class='rparen'>)</span> <span class='op'>/</span> <span class='int'>25</span>
696
+ <span class='id identifier rubyid_g'>g</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_b'>b</span> <span class='op'>-</span> <span class='id identifier rubyid_f'>f</span> <span class='op'>+</span> <span class='int'>1</span><span class='rparen'>)</span> <span class='op'>/</span> <span class='int'>3</span>
697
+ <span class='id identifier rubyid_h'>h</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='int'>19</span> <span class='op'>*</span> <span class='id identifier rubyid_a'>a</span> <span class='op'>+</span> <span class='id identifier rubyid_b'>b</span> <span class='op'>-</span> <span class='id identifier rubyid_d'>d</span> <span class='op'>-</span> <span class='id identifier rubyid_g'>g</span> <span class='op'>+</span> <span class='int'>15</span><span class='rparen'>)</span> <span class='op'>%</span> <span class='int'>30</span>
698
+ <span class='id identifier rubyid_i'>i</span><span class='comma'>,</span> <span class='id identifier rubyid_k'>k</span> <span class='op'>=</span> <span class='id identifier rubyid_c'>c</span><span class='period'>.</span><span class='id identifier rubyid_divmod'>divmod</span><span class='lparen'>(</span><span class='int'>4</span><span class='rparen'>)</span>
699
+ <span class='id identifier rubyid_l'>l</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='int'>32</span> <span class='op'>+</span> <span class='int'>2</span> <span class='op'>*</span> <span class='id identifier rubyid_e'>e</span> <span class='op'>+</span> <span class='int'>2</span> <span class='op'>*</span> <span class='id identifier rubyid_i'>i</span> <span class='op'>-</span> <span class='id identifier rubyid_h'>h</span> <span class='op'>-</span> <span class='id identifier rubyid_k'>k</span><span class='rparen'>)</span> <span class='op'>%</span> <span class='int'>7</span>
700
+ <span class='id identifier rubyid_m'>m</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_a'>a</span> <span class='op'>+</span> <span class='int'>11</span> <span class='op'>*</span> <span class='id identifier rubyid_h'>h</span> <span class='op'>+</span> <span class='int'>22</span> <span class='op'>*</span> <span class='id identifier rubyid_l'>l</span><span class='rparen'>)</span> <span class='op'>/</span> <span class='int'>451</span>
701
+ <span class='id identifier rubyid_n'>n</span><span class='comma'>,</span> <span class='id identifier rubyid_p'>p</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_h'>h</span> <span class='op'>+</span> <span class='id identifier rubyid_l'>l</span> <span class='op'>-</span> <span class='int'>7</span> <span class='op'>*</span> <span class='id identifier rubyid_m'>m</span> <span class='op'>+</span> <span class='int'>114</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_divmod'>divmod</span><span class='lparen'>(</span><span class='int'>31</span><span class='rparen'>)</span>
702
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_y'>y</span><span class='comma'>,</span> <span class='id identifier rubyid_n'>n</span><span class='comma'>,</span> <span class='id identifier rubyid_p'>p</span> <span class='op'>+</span> <span class='int'>1</span><span class='rparen'>)</span>
703
+ <span class='kw'>end</span>
704
+ <span class='kw'>end</span></pre>
705
+ </td>
706
+ </tr>
707
+ </table>
708
+ </div>
709
+
710
+ <div class="method_details ">
711
+ <h3 class="signature " id="ensure-instance_method">
712
+
713
+ #<strong>ensure</strong>(dat) &#x21d2; <tt><span class='object_link'><a href="../Date.html" title="FatDate::Date (module)">Date</a></span></tt>, <tt><span class='object_link'><a href="../DateTime.html" title="FatDate::DateTime (module)">DateTime</a></span></tt>
714
+
715
+
716
+
717
+ <span class="aliases">Also known as:
718
+ <span class="names"><span id='ensure_date-instance_method'>ensure_date</span></span>
719
+ </span>
720
+
721
+
722
+
723
+ </h3><div class="docstring">
724
+ <div class="discussion">
725
+ <p>Ensure that date is of class Date based either on a string or Date
726
+ object or an object that responds to #to_date or #to_datetime. If the
727
+ given object is a String, use Date.parse to try to convert it.</p>
728
+
729
+ <p>If given a DateTime, it returns the unrounded DateTime; if given a
730
+ Time, it converts it to a DateTime.</p>
731
+
732
+
733
+ </div>
734
+ </div>
735
+ <div class="tags">
736
+ <p class="tag_title">Parameters:</p>
737
+ <ul class="param">
738
+
739
+ <li>
740
+
741
+ <span class='name'>dat</span>
742
+
743
+
744
+ <span class='type'>(<tt>String</tt>, <tt><span class='object_link'><a href="../Date.html" title="FatDate::Date (module)">Date</a></span></tt>, <tt>Time</tt>)</span>
745
+
746
+
747
+
748
+ &mdash;
749
+ <div class='inline'><p>the object to be converted to Date</p>
750
+ </div>
751
+
752
+ </li>
753
+
754
+ </ul>
755
+
756
+ <p class="tag_title">Returns:</p>
757
+ <ul class="return">
758
+
759
+ <li>
760
+
761
+
762
+ <span class='type'>(<tt><span class='object_link'><a href="../Date.html" title="FatDate::Date (module)">Date</a></span></tt>, <tt><span class='object_link'><a href="../DateTime.html" title="FatDate::DateTime (module)">DateTime</a></span></tt>)</span>
763
+
764
+
765
+
766
+ </li>
767
+
768
+ </ul>
769
+
770
+ </div><table class="source_code">
771
+ <tr>
772
+ <td>
773
+ <pre class="lines">
774
+
775
+
776
+ 2017
777
+ 2018
778
+ 2019
779
+ 2020
780
+ 2021
781
+ 2022
782
+ 2023
783
+ 2024
784
+ 2025
785
+ 2026
786
+ 2027
787
+ 2028
788
+ 2029
789
+ 2030
790
+ 2031
791
+ 2032
792
+ 2033
793
+ 2034
794
+ 2035</pre>
795
+ </td>
796
+ <td>
797
+ <pre class="code"><span class="info file"># File 'lib/fat_date/date.rb', line 2017</span>
798
+
799
+ <span class='kw'>def</span> <span class='kw'>ensure</span><span class='lparen'>(</span><span class='id identifier rubyid_dat'>dat</span><span class='rparen'>)</span>
800
+ <span class='kw'>if</span> <span class='id identifier rubyid_dat'>dat</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../Date.html" title="FatDate::Date (module)">Date</a></span></span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_dat'>dat</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../DateTime.html" title="FatDate::DateTime (module)">DateTime</a></span></span><span class='rparen'>)</span>
801
+ <span class='id identifier rubyid_dat'>dat</span>
802
+ <span class='kw'>elsif</span> <span class='id identifier rubyid_dat'>dat</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Time</span><span class='rparen'>)</span>
803
+ <span class='id identifier rubyid_dat'>dat</span><span class='period'>.</span><span class='id identifier rubyid_to_datetime'>to_datetime</span>
804
+ <span class='kw'>elsif</span> <span class='id identifier rubyid_dat'>dat</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:to_datetime</span><span class='rparen'>)</span>
805
+ <span class='id identifier rubyid_dat'>dat</span><span class='period'>.</span><span class='id identifier rubyid_to_datetime'>to_datetime</span>
806
+ <span class='kw'>elsif</span> <span class='id identifier rubyid_dat'>dat</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:to_date</span><span class='rparen'>)</span>
807
+ <span class='id identifier rubyid_dat'>dat</span><span class='period'>.</span><span class='id identifier rubyid_to_date'>to_date</span>
808
+ <span class='kw'>elsif</span> <span class='id identifier rubyid_dat'>dat</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span>
809
+ <span class='kw'>begin</span>
810
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_dat'>dat</span><span class='rparen'>)</span>
811
+ <span class='kw'>rescue</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='op'>::</span><span class='const'>Error</span>
812
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>cannot convert string &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_dat'>dat</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39; to a Date or DateTime</span><span class='tstring_end'>&quot;</span></span>
813
+ <span class='kw'>end</span>
814
+ <span class='kw'>else</span>
815
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>cannot convert class &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_dat'>dat</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39; to a Date or DateTime</span><span class='tstring_end'>&quot;</span></span>
816
+ <span class='kw'>end</span>
817
+ <span class='kw'>end</span></pre>
818
+ </td>
819
+ </tr>
820
+ </table>
821
+ </div>
822
+
823
+ <div class="method_details ">
824
+ <h3 class="signature " id="mo_name_to_num-instance_method">
825
+
826
+ #<strong>mo_name_to_num</strong>(name) &#x21d2; <tt>Integer</tt>
827
+
828
+
829
+
830
+
831
+
832
+ </h3><div class="docstring">
833
+ <div class="discussion">
834
+ <p>Return the 1-indexed integer that corresponds to a month name.</p>
835
+
836
+
837
+ </div>
838
+ </div>
839
+ <div class="tags">
840
+ <p class="tag_title">Parameters:</p>
841
+ <ul class="param">
842
+
843
+ <li>
844
+
845
+ <span class='name'>name</span>
846
+
847
+
848
+ <span class='type'>(<tt>String</tt>)</span>
849
+
850
+
851
+
852
+ &mdash;
853
+ <div class='inline'><p>a name of a month</p>
854
+ </div>
855
+
856
+ </li>
857
+
858
+ </ul>
859
+
860
+ <p class="tag_title">Returns:</p>
861
+ <ul class="return">
862
+
863
+ <li>
864
+
865
+
866
+ <span class='type'>(<tt>Integer</tt>)</span>
867
+
868
+
869
+
870
+ &mdash;
871
+ <div class='inline'><p>the integer integer that corresponds to a month
872
+ name, or nil of no month recognized.</p>
873
+ </div>
874
+
875
+ </li>
876
+
877
+ </ul>
878
+
879
+ </div><table class="source_code">
880
+ <tr>
881
+ <td>
882
+ <pre class="lines">
883
+
884
+
885
+ 1790
886
+ 1791
887
+ 1792
888
+ 1793
889
+ 1794
890
+ 1795
891
+ 1796
892
+ 1797
893
+ 1798
894
+ 1799
895
+ 1800
896
+ 1801
897
+ 1802
898
+ 1803
899
+ 1804
900
+ 1805
901
+ 1806
902
+ 1807
903
+ 1808
904
+ 1809
905
+ 1810
906
+ 1811
907
+ 1812
908
+ 1813
909
+ 1814
910
+ 1815
911
+ 1816
912
+ 1817</pre>
913
+ </td>
914
+ <td>
915
+ <pre class="code"><span class="info file"># File 'lib/fat_date/date.rb', line 1790</span>
916
+
917
+ <span class='kw'>def</span> <span class='id identifier rubyid_mo_name_to_num'>mo_name_to_num</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
918
+ <span class='kw'>case</span> <span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_clean'>clean</span>
919
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Ajan</span><span class='regexp_end'>/i</span></span>
920
+ <span class='int'>1</span>
921
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Afeb</span><span class='regexp_end'>/i</span></span>
922
+ <span class='int'>2</span>
923
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Amar</span><span class='regexp_end'>/i</span></span>
924
+ <span class='int'>3</span>
925
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Aapr</span><span class='regexp_end'>/i</span></span>
926
+ <span class='int'>4</span>
927
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Amay</span><span class='regexp_end'>/i</span></span>
928
+ <span class='int'>5</span>
929
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Ajun</span><span class='regexp_end'>/i</span></span>
930
+ <span class='int'>6</span>
931
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Ajul</span><span class='regexp_end'>/i</span></span>
932
+ <span class='int'>7</span>
933
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Aaug</span><span class='regexp_end'>/i</span></span>
934
+ <span class='int'>8</span>
935
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Asep</span><span class='regexp_end'>/i</span></span>
936
+ <span class='int'>9</span>
937
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Aoct</span><span class='regexp_end'>/i</span></span>
938
+ <span class='int'>10</span>
939
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Anov</span><span class='regexp_end'>/i</span></span>
940
+ <span class='int'>11</span>
941
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Adec</span><span class='regexp_end'>/i</span></span>
942
+ <span class='int'>12</span>
943
+ <span class='kw'>end</span>
944
+ <span class='kw'>end</span></pre>
945
+ </td>
946
+ </tr>
947
+ </table>
948
+ </div>
949
+
950
+ <div class="method_details ">
951
+ <h3 class="signature " id="nth_wday_in_year_month-instance_method">
952
+
953
+ #<strong>nth_wday_in_year_month</strong>(nth, wday, year, month) &#x21d2; <tt>Object</tt>
954
+
955
+
956
+
957
+
958
+
959
+ </h3><div class="docstring">
960
+ <div class="discussion">
961
+ <p>Return the nth weekday in the given month. If n is negative, count from
962
+ last day of month.</p>
963
+
964
+
965
+ </div>
966
+ </div>
967
+ <div class="tags">
968
+ <p class="tag_title">Parameters:</p>
969
+ <ul class="param">
970
+
971
+ <li>
972
+
973
+ <span class='name'>nth</span>
974
+
975
+
976
+ <span class='type'>(<tt>Integer</tt>)</span>
977
+
978
+
979
+
980
+ &mdash;
981
+ <div class='inline'><p>the ordinal number for the weekday</p>
982
+ </div>
983
+
984
+ </li>
985
+
986
+ <li>
987
+
988
+ <span class='name'>wday</span>
989
+
990
+
991
+ <span class='type'>(<tt>Integer</tt>)</span>
992
+
993
+
994
+
995
+ &mdash;
996
+ <div class='inline'><p>the weekday of interest with Sunday 0 to Saturday 6</p>
997
+ </div>
998
+
999
+ </li>
1000
+
1001
+ <li>
1002
+
1003
+ <span class='name'>year</span>
1004
+
1005
+
1006
+ <span class='type'>(<tt>Integer</tt>)</span>
1007
+
1008
+
1009
+
1010
+ &mdash;
1011
+ <div class='inline'><p>the year of interest</p>
1012
+ </div>
1013
+
1014
+ </li>
1015
+
1016
+ <li>
1017
+
1018
+ <span class='name'>month</span>
1019
+
1020
+
1021
+ <span class='type'>(<tt>Integer</tt>)</span>
1022
+
1023
+
1024
+
1025
+ &mdash;
1026
+ <div class='inline'><p>the month of interest with January 1 to December 12</p>
1027
+ </div>
1028
+
1029
+ </li>
1030
+
1031
+ </ul>
1032
+
1033
+ <p class="tag_title">Raises:</p>
1034
+ <ul class="raise">
1035
+
1036
+ <li>
1037
+
1038
+
1039
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
1040
+
1041
+
1042
+
1043
+ </li>
1044
+
1045
+ </ul>
1046
+
1047
+ </div><table class="source_code">
1048
+ <tr>
1049
+ <td>
1050
+ <pre class="lines">
1051
+
1052
+
1053
+ 1826
1054
+ 1827
1055
+ 1828
1056
+ 1829
1057
+ 1830
1058
+ 1831
1059
+ 1832
1060
+ 1833
1061
+ 1834
1062
+ 1835
1063
+ 1836
1064
+ 1837
1065
+ 1838
1066
+ 1839
1067
+ 1840
1068
+ 1841
1069
+ 1842
1070
+ 1843
1071
+ 1844
1072
+ 1845
1073
+ 1846
1074
+ 1847
1075
+ 1848
1076
+ 1849
1077
+ 1850
1078
+ 1851
1079
+ 1852
1080
+ 1853
1081
+ 1854
1082
+ 1855
1083
+ 1856
1084
+ 1857
1085
+ 1858
1086
+ 1859
1087
+ 1860
1088
+ 1861
1089
+ 1862
1090
+ 1863
1091
+ 1864
1092
+ 1865
1093
+ 1866
1094
+ 1867
1095
+ 1868
1096
+ 1869
1097
+ 1870
1098
+ 1871
1099
+ 1872</pre>
1100
+ </td>
1101
+ <td>
1102
+ <pre class="code"><span class="info file"># File 'lib/fat_date/date.rb', line 1826</span>
1103
+
1104
+ <span class='kw'>def</span> <span class='id identifier rubyid_nth_wday_in_year_month'>nth_wday_in_year_month</span><span class='lparen'>(</span><span class='id identifier rubyid_nth'>nth</span><span class='comma'>,</span> <span class='id identifier rubyid_wday'>wday</span><span class='comma'>,</span> <span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='rparen'>)</span>
1105
+ <span class='id identifier rubyid_wday'>wday</span> <span class='op'>=</span> <span class='id identifier rubyid_wday'>wday</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1106
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>illegal weekday number</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_wday'>wday</span><span class='period'>.</span><span class='id identifier rubyid_negative?'>negative?</span> <span class='op'>||</span> <span class='id identifier rubyid_wday'>wday</span> <span class='op'>&gt;</span> <span class='int'>6</span>
1107
+
1108
+ <span class='id identifier rubyid_month'>month</span> <span class='op'>=</span> <span class='id identifier rubyid_month'>month</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1109
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>illegal month number</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_month'>month</span> <span class='op'>&lt;</span> <span class='int'>1</span> <span class='op'>||</span> <span class='id identifier rubyid_month'>month</span> <span class='op'>&gt;</span> <span class='int'>12</span>
1110
+
1111
+ <span class='id identifier rubyid_nth'>nth</span> <span class='op'>=</span> <span class='id identifier rubyid_nth'>nth</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1112
+ <span class='kw'>if</span> <span class='id identifier rubyid_nth'>nth</span><span class='period'>.</span><span class='id identifier rubyid_abs'>abs</span> <span class='op'>&gt;</span> <span class='int'>5</span>
1113
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_nth'>nth</span><span class='period'>.</span><span class='id identifier rubyid_abs'>abs</span><span class='embexpr_end'>}</span><span class='tstring_content'> out of range: can be no more than 5 of any day of the week in any month</span><span class='tstring_end'>&quot;</span></span>
1114
+ <span class='kw'>end</span>
1115
+
1116
+ <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span>
1117
+ <span class='kw'>if</span> <span class='id identifier rubyid_nth'>nth</span><span class='period'>.</span><span class='id identifier rubyid_positive?'>positive?</span>
1118
+ <span class='comment'># Set d to the 1st wday in month
1119
+ </span> <span class='id identifier rubyid_d'>d</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span>
1120
+ <span class='id identifier rubyid_d'>d</span> <span class='op'>+=</span> <span class='int'>1</span> <span class='kw'>while</span> <span class='id identifier rubyid_d'>d</span><span class='period'>.</span><span class='id identifier rubyid_wday'>wday</span> <span class='op'>!=</span> <span class='id identifier rubyid_wday'>wday</span>
1121
+ <span class='comment'># Set d to the nth wday in month
1122
+ </span> <span class='id identifier rubyid_nd'>nd</span> <span class='op'>=</span> <span class='int'>1</span>
1123
+ <span class='kw'>while</span> <span class='id identifier rubyid_nd'>nd</span> <span class='op'>!=</span> <span class='id identifier rubyid_nth'>nth</span>
1124
+ <span class='id identifier rubyid_d'>d</span> <span class='op'>+=</span> <span class='int'>7</span>
1125
+ <span class='id identifier rubyid_nd'>nd</span> <span class='op'>+=</span> <span class='int'>1</span>
1126
+ <span class='kw'>end</span>
1127
+ <span class='id identifier rubyid_d'>d</span>
1128
+ <span class='kw'>elsif</span> <span class='id identifier rubyid_nth'>nth</span><span class='period'>.</span><span class='id identifier rubyid_negative?'>negative?</span>
1129
+ <span class='id identifier rubyid_nth'>nth</span> <span class='op'>=</span> <span class='op'>-</span><span class='id identifier rubyid_nth'>nth</span>
1130
+ <span class='comment'># Set d to the last wday in month
1131
+ </span> <span class='id identifier rubyid_d'>d</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_end_of_month'>end_of_month</span>
1132
+ <span class='id identifier rubyid_d'>d</span> <span class='op'>-=</span> <span class='int'>1</span> <span class='kw'>while</span> <span class='id identifier rubyid_d'>d</span><span class='period'>.</span><span class='id identifier rubyid_wday'>wday</span> <span class='op'>!=</span> <span class='id identifier rubyid_wday'>wday</span>
1133
+ <span class='comment'># Set d to the nth wday in month
1134
+ </span> <span class='id identifier rubyid_nd'>nd</span> <span class='op'>=</span> <span class='int'>1</span>
1135
+ <span class='kw'>while</span> <span class='id identifier rubyid_nd'>nd</span> <span class='op'>!=</span> <span class='id identifier rubyid_nth'>nth</span>
1136
+ <span class='id identifier rubyid_d'>d</span> <span class='op'>-=</span> <span class='int'>7</span>
1137
+ <span class='id identifier rubyid_nd'>nd</span> <span class='op'>+=</span> <span class='int'>1</span>
1138
+ <span class='kw'>end</span>
1139
+ <span class='id identifier rubyid_d'>d</span>
1140
+ <span class='kw'>else</span>
1141
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Argument nth cannot be zero</span><span class='tstring_end'>&#39;</span></span>
1142
+ <span class='kw'>end</span>
1143
+
1144
+ <span class='id identifier rubyid_dow'>dow</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Sunday</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Monday</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Tuesday</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Wednesday</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Thursday</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Friday</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Saturday</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='id identifier rubyid_wday'>wday</span><span class='rbracket'>]</span>
1145
+ <span class='kw'>if</span> <span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_month'>month</span> <span class='op'>!=</span> <span class='id identifier rubyid_month'>month</span>
1146
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>There is no </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_nth'>nth</span><span class='embexpr_end'>}</span><span class='tstring_content'>th </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_dow'>dow</span><span class='embexpr_end'>}</span><span class='tstring_content'> in </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_year'>year</span><span class='embexpr_end'>}</span><span class='tstring_content'>-</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_month'>month</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
1147
+ <span class='kw'>end</span>
1148
+
1149
+ <span class='id identifier rubyid_result'>result</span>
1150
+ <span class='kw'>end</span></pre>
1151
+ </td>
1152
+ </tr>
1153
+ </table>
1154
+ </div>
1155
+
1156
+ <div class="method_details ">
1157
+ <h3 class="signature " id="parse_american-instance_method">
1158
+
1159
+ #<strong>parse_american</strong>(str) &#x21d2; <tt><span class='object_link'><a href="../../Date.html" title="Date (class)">::Date</a></span></tt>
1160
+
1161
+
1162
+
1163
+
1164
+
1165
+ </h3><div class="docstring">
1166
+ <div class="discussion">
1167
+ <p>Convert a string +str+ with an American style date into a ::Date object</p>
1168
+
1169
+ <p>An American style date is of the form <code>MM/DD/YYYY</code>, that is it places the
1170
+ month first, then the day of the month, and finally the year. The European
1171
+ convention is typically to place the day of the month first, <code>DD/MM/YYYY</code>.
1172
+ A date found in the wild can be ambiguous, e.g. 3/5/2014, but a date
1173
+ string known to be using the American convention can be parsed using this
1174
+ method. Both the month and the day can be a single digit. The year can be
1175
+ either 2 or 4 digits, and if given as 2 digits, it adds 2000 to it to give
1176
+ the year.</p>
1177
+
1178
+
1179
+ </div>
1180
+ </div>
1181
+ <div class="tags">
1182
+
1183
+ <div class="examples">
1184
+ <h4 class="tag_title">Examples:</h4>
1185
+
1186
+
1187
+ <pre class="example code"><code><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse_american'>parse_american</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>9/11/2001</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; ::Date(2011, 9, 11)
1188
+ </span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse_american'>parse_american</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>9/11/01</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; ::Date(2011, 9, 11)
1189
+ </span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse_american'>parse_american</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>9/11/1</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; ArgumentError</span></code></pre>
1190
+
1191
+ </div>
1192
+ <p class="tag_title">Parameters:</p>
1193
+ <ul class="param">
1194
+
1195
+ <li>
1196
+
1197
+ <span class='name'>str</span>
1198
+
1199
+
1200
+ <span class='type'>(<tt>String</tt>, <tt>#to_s</tt>)</span>
1201
+
1202
+
1203
+
1204
+ &mdash;
1205
+ <div class='inline'><p>a stringling of the form MM/DD/YYYY</p>
1206
+ </div>
1207
+
1208
+ </li>
1209
+
1210
+ </ul>
1211
+
1212
+ <p class="tag_title">Returns:</p>
1213
+ <ul class="return">
1214
+
1215
+ <li>
1216
+
1217
+
1218
+ <span class='type'>(<tt><span class='object_link'><a href="../../Date.html" title="Date (class)">::Date</a></span></tt>)</span>
1219
+
1220
+
1221
+
1222
+ &mdash;
1223
+ <div class='inline'><p>the date represented by the str paramenter.</p>
1224
+ </div>
1225
+
1226
+ </li>
1227
+
1228
+ </ul>
1229
+
1230
+ </div><table class="source_code">
1231
+ <tr>
1232
+ <td>
1233
+ <pre class="lines">
1234
+
1235
+
1236
+ 1453
1237
+ 1454
1238
+ 1455
1239
+ 1456
1240
+ 1457
1241
+ 1458
1242
+ 1459
1243
+ 1460
1244
+ 1461
1245
+ 1462
1246
+ 1463
1247
+ 1464</pre>
1248
+ </td>
1249
+ <td>
1250
+ <pre class="code"><span class="info file"># File 'lib/fat_date/date.rb', line 1453</span>
1251
+
1252
+ <span class='kw'>def</span> <span class='id identifier rubyid_parse_american'>parse_american</span><span class='lparen'>(</span><span class='id identifier rubyid_str'>str</span><span class='rparen'>)</span>
1253
+ <span class='id identifier rubyid_re'>re</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>\A\s*(\d\d?)\s*[-/]\s*(\d\d?)\s*[-/]\s*((\d\d)?\d\d)\s*\z</span><span class='regexp_end'>}</span></span>
1254
+ <span class='kw'>unless</span> <span class='id identifier rubyid_str'>str</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>=~</span> <span class='id identifier rubyid_re'>re</span>
1255
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>date string must be of form &#39;MM?/DD?/YY(YY)?&#39;</span><span class='tstring_end'>&quot;</span></span>
1256
+ <span class='kw'>end</span>
1257
+
1258
+ <span class='id identifier rubyid_year'>year</span> <span class='op'>=</span> <span class='backref'>$3</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1259
+ <span class='id identifier rubyid_month'>month</span> <span class='op'>=</span> <span class='backref'>$1</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1260
+ <span class='id identifier rubyid_day'>day</span> <span class='op'>=</span> <span class='backref'>$2</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1261
+ <span class='id identifier rubyid_year'>year</span> <span class='op'>+=</span> <span class='int'>2000</span> <span class='kw'>if</span> <span class='id identifier rubyid_year'>year</span> <span class='op'>&lt;</span> <span class='int'>100</span>
1262
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='id identifier rubyid_day'>day</span><span class='rparen'>)</span>
1263
+ <span class='kw'>end</span></pre>
1264
+ </td>
1265
+ </tr>
1266
+ </table>
1267
+ </div>
1268
+
1269
+ <div class="method_details ">
1270
+ <h3 class="signature " id="roman_to_week-instance_method">
1271
+
1272
+ #<strong>roman_to_week</strong>(s) &#x21d2; <tt>Object</tt>
1273
+
1274
+
1275
+
1276
+
1277
+
1278
+ </h3><div class="docstring">
1279
+ <div class="discussion">
1280
+ <p>Return the week number indicated by roman numerals i to vi, regardless
1281
+ of case.</p>
1282
+
1283
+
1284
+ </div>
1285
+ </div>
1286
+ <div class="tags">
1287
+
1288
+
1289
+ </div><table class="source_code">
1290
+ <tr>
1291
+ <td>
1292
+ <pre class="lines">
1293
+
1294
+
1295
+ 1899
1296
+ 1900
1297
+ 1901
1298
+ 1902
1299
+ 1903
1300
+ 1904
1301
+ 1905
1302
+ 1906
1303
+ 1907
1304
+ 1908
1305
+ 1909
1306
+ 1910
1307
+ 1911
1308
+ 1912
1309
+ 1913
1310
+ 1914
1311
+ 1915
1312
+ 1916</pre>
1313
+ </td>
1314
+ <td>
1315
+ <pre class="code"><span class="info file"># File 'lib/fat_date/date.rb', line 1899</span>
1316
+
1317
+ <span class='kw'>def</span> <span class='id identifier rubyid_roman_to_week'>roman_to_week</span><span class='lparen'>(</span><span class='id identifier rubyid_s'>s</span><span class='rparen'>)</span>
1318
+ <span class='kw'>case</span> <span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_clean'>clean</span>
1319
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Ai\z</span><span class='regexp_end'>/i</span></span>
1320
+ <span class='int'>1</span>
1321
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Aii\z</span><span class='regexp_end'>/i</span></span>
1322
+ <span class='int'>2</span>
1323
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Aiii\z</span><span class='regexp_end'>/i</span></span>
1324
+ <span class='int'>3</span>
1325
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Aiv\z</span><span class='regexp_end'>/i</span></span>
1326
+ <span class='int'>4</span>
1327
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Av\z</span><span class='regexp_end'>/i</span></span>
1328
+ <span class='int'>5</span>
1329
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\Avi\z</span><span class='regexp_end'>/i</span></span>
1330
+ <span class='int'>6</span>
1331
+ <span class='kw'>else</span>
1332
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>There is no week number </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_s'>s</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
1333
+ <span class='kw'>end</span>
1334
+ <span class='kw'>end</span></pre>
1335
+ </td>
1336
+ </tr>
1337
+ </table>
1338
+ </div>
1339
+
1340
+ <div class="method_details ">
1341
+ <h3 class="signature " id="spec-instance_method">
1342
+
1343
+ #<strong>spec</strong>(spec, spec_type = :from) &#x21d2; <tt><span class='object_link'><a href="../../Date.html" title="Date (class)">::Date</a></span></tt>
1344
+
1345
+
1346
+
1347
+
1348
+
1349
+ </h3><div class="docstring">
1350
+ <div class="discussion">
1351
+ <p>Convert a &#39;period spec&#39; <code>spec</code> to a ::Date. A date spec is a short-hand way of
1352
+ specifying a calendar period either absolutely or relative to the computer
1353
+ clock. This method returns the first date of that period, when <code>spec_type</code>
1354
+ is set to <code>:from</code>, the default, and returns the last date of the period
1355
+ when <code>spec_type</code> is <code>:to</code>.</p>
1356
+
1357
+ <p>There are a number of forms the <code>spec</code> can take. In each case,
1358
+ <code>::Date.spec</code> returns the first date in the period if <code>spec_type</code> is
1359
+ <code>:from</code> and the last date in the period if <code>spec_type</code> is <code>:to</code>:</p>
1360
+
1361
+ <ul>
1362
+ <li><code>YYYY-MM-DD</code> a particular date, so <code>:from</code> and <code>:to</code> return the same</li>
1363
+ <li><code>YYYY</code> is the whole year <code>YYYY</code>,</li>
1364
+ <li><code>YYYY-1H</code> or <code>YYYY-H1</code> is the first calendar half in year <code>YYYY</code>,</li>
1365
+ <li><code>H2</code> or <code>2H</code> is the second calendar half of the current year,</li>
1366
+ <li><code>YYYY-3Q</code> or <code>YYYY-Q3</code> is the third calendar quarter of year YYYY,</li>
1367
+ <li><code>Q3</code> or <code>3Q</code> is the third calendar quarter in the current year,</li>
1368
+ <li><code>YYYY-04</code> or <code>YYYY-4</code> is April, the fourth month of year <code>YYYY</code>,</li>
1369
+ <li><code>4-12</code> or <code>04-12</code> is the 12th of April in the current year,</li>
1370
+ <li><code>4</code> or <code>04</code> is April in the current year,</li>
1371
+ <li><code>YYYY-W32</code> or <code>YYYY-32W</code> is the 32nd week in year YYYY,</li>
1372
+ <li><code>W32</code> or <code>32W</code> is the 32nd week in the current year,</li>
1373
+ <li><code>W32-4</code> or <code>32W-4</code> is the 4th day of the 32nd week in the current year,</li>
1374
+ <li><code>YYYY-MM-A</code> or <code>YYYY-MM-B</code> is the first or second half of the given month,</li>
1375
+ <li><code>YYYY-MM-i</code> or <code>YYYY-MM-v</code> is the first or fifth week of the given month,</li>
1376
+ <li><code>YYYY-MM-I</code> or <code>YYYY-MM-V</code> is also the first or fifth week of the
1377
+ given month, i.e., case does not matter,</li>
1378
+ <li><code>MM-i</code> or <code>MM-v</code> is the first or fifth week of the current month,</li>
1379
+ <li><code>YYYY-MM-3Tu</code> or <code>YYYY-MM-4Mo</code> or <code>YYYY-MM-3Tue</code> or <code>YYYY-MM-4Mon</code>
1380
+ is the third Tuesdsay and fourth Monday of the given month,</li>
1381
+ <li><code>MM-3Tu</code> or <code>MM-4Mo</code> (<code>MM-3Tue</code> or <code>MM-4Mon</code>) is the third Tuesdsay
1382
+ and fourth Monday of the given month in the current year,</li>
1383
+ <li><code>3Tu</code> or <code>4Mo</code> is the third Tuesdsay and fourth Monday of the current month,</li>
1384
+ <li><code>YYYY-E</code> is Easter of the given year YYYY,</li>
1385
+ <li><code>E</code> is Easter of the current year YYYY,</li>
1386
+ <li><code>YYYY-E+50</code> and <code>YYYY-E-40</code> is 50 days after and 40 days before Easter of the given year,</li>
1387
+ <li><code>E+50</code> and <code>E-40</code> is 50 days after and 40 days before Easter of the current year,</li>
1388
+ <li><code>YYYY-001</code> and <code>YYYY-182</code> is first and 182nd day of the given year,</li>
1389
+ <li><code>001</code> and <code>182</code> is first and 182nd day of the current year,</li>
1390
+ <li><code>this_&lt;chunk&gt;</code> where <code>&lt;chunk&gt;</code> is one of <code>year</code>, <code>half</code>, <code>quarter</code>,
1391
+ <code>bimonth</code>, <code>month</code>, <code>semimonth</code>, <code>biweek</code>, <code>week</code>, or <code>day</code>, the
1392
+ corresponding calendar period in which the current date falls,</li>
1393
+ <li><code>last_&lt;chunk&gt;</code> where <code>&lt;chunk&gt;</code> is one of <code>year</code>, <code>half</code>, <code>quarter</code>,
1394
+ <code>bimonth</code>, <code>month</code>, <code>semimonth</code>, <code>biweek</code>, <code>week</code>, or <code>day</code>, the
1395
+ corresponding calendar period immediately before the one in which the
1396
+ current date falls,</li>
1397
+ <li><code>today</code> is the same as <code>this_day</code>,</li>
1398
+ <li><code>yesterday</code> is the same as <code>last_day</code>,</li>
1399
+ <li><code>forever</code> is the period from ::Date::BOT to ::Date::EOT, essentially all
1400
+ dates of commercial interest, and</li>
1401
+ <li><code>never</code> causes the method to return nil.</li>
1402
+ </ul>
1403
+
1404
+ <p>In all of the above example specs, the letter used for calendar
1405
+ chunks, <code>W</code>, <code>Q</code>, and <code>H</code> can be written in lower case as well, as can
1406
+ roman numeral week numbers. Also, you can use <code>/</code> to separate date
1407
+ components instead of <code>-</code>. Likewise, days of the week can be any
1408
+ string, upper or lower case, that starts with at least two letters of
1409
+ the day-of-week name: &#39;Su&#39;, &#39;su&#39;, &#39;sund&#39;, &#39;sunday&#39;, &#39;surgery&#39;, all are
1410
+ valid ways of writing &#39;Sunday&#39;.</p>
1411
+
1412
+ <p>Each of the foregoing specs may have a &#39;skip modifier&#39; appended to it
1413
+ for finding the following or preceding day-of-week from that date
1414
+ given by the main spec. A skip modifier is a construction appended to
1415
+ a date spec of the form &#39;<Th', '>Th&#39;, &#39;&lt;=Th&#39;, or &#39;&gt;=Th&#39; where &#39;Th&#39;
1416
+ could be the name of any day-of-the-week, as described in the
1417
+ foregoing paragraph. It means that /starting from the date determined
1418
+ by the date spec/, find the first Thursday before (&lt;), on or before
1419
+ (&lt;=), after (&gt;), or on or after (&gt;=) the date. So Thanksgiving in
1420
+ 2028 could be found with Date.spec(&#39;2028-11&lt;=Th&#39;, :to), i.e.,
1421
+ the last Thursday on or before the last day of November, 2028.</p>
1422
+
1423
+
1424
+ </div>
1425
+ </div>
1426
+ <div class="tags">
1427
+
1428
+ <div class="examples">
1429
+ <h4 class="tag_title">Examples:</h4>
1430
+
1431
+
1432
+ <pre class="example code"><code><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_spec'>spec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2012-W32</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_iso'>iso</span> <span class='comment'># =&gt; &quot;2012-08-06&quot;
1433
+ </span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_spec'>spec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2012-W32</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='symbol'>:to</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_iso'>iso</span> <span class='comment'># =&gt; &quot;2012-08-12&quot;
1434
+ </span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_spec'>spec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>W32</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_iso'>iso</span> <span class='comment'># =&gt; &quot;2012-08-06&quot; if executed in 2012
1435
+ </span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_spec'>spec</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>W32</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_iso'>iso</span> <span class='comment'># =&gt; &quot;2012-08-04&quot; if executed in 2014</span></code></pre>
1436
+
1437
+ </div>
1438
+ <p class="tag_title">Parameters:</p>
1439
+ <ul class="param">
1440
+
1441
+ <li>
1442
+
1443
+ <span class='name'>spec</span>
1444
+
1445
+
1446
+ <span class='type'>(<tt>String</tt>, <tt>#to_s</tt>)</span>
1447
+
1448
+
1449
+
1450
+ &mdash;
1451
+ <div class='inline'><p>the spec to be interpreted as a calendar period</p>
1452
+ </div>
1453
+
1454
+ </li>
1455
+
1456
+ <li>
1457
+
1458
+ <span class='name'>spec_type</span>
1459
+
1460
+
1461
+ <span class='type'>(<tt>Symbol</tt>, <tt>:from</tt>, <tt>:to</tt>)</span>
1462
+
1463
+
1464
+ <em class="default">(defaults to: <tt>:from</tt>)</em>
1465
+
1466
+
1467
+ &mdash;
1468
+ <div class='inline'><p>return the first (:from) or last (:to)
1469
+ date in the spec&#39;s period respectively</p>
1470
+ </div>
1471
+
1472
+ </li>
1473
+
1474
+ </ul>
1475
+
1476
+ <p class="tag_title">Returns:</p>
1477
+ <ul class="return">
1478
+
1479
+ <li>
1480
+
1481
+
1482
+ <span class='type'>(<tt><span class='object_link'><a href="../../Date.html" title="Date (class)">::Date</a></span></tt>)</span>
1483
+
1484
+
1485
+
1486
+ &mdash;
1487
+ <div class='inline'><p>date that is the first (:from) or last (:to) in the period
1488
+ designated by spec</p>
1489
+ </div>
1490
+
1491
+ </li>
1492
+
1493
+ </ul>
1494
+
1495
+ </div><table class="source_code">
1496
+ <tr>
1497
+ <td>
1498
+ <pre class="lines">
1499
+
1500
+
1501
+ 1549
1502
+ 1550
1503
+ 1551
1504
+ 1552
1505
+ 1553
1506
+ 1554
1507
+ 1555
1508
+ 1556
1509
+ 1557
1510
+ 1558
1511
+ 1559
1512
+ 1560
1513
+ 1561
1514
+ 1562
1515
+ 1563
1516
+ 1564
1517
+ 1565
1518
+ 1566
1519
+ 1567
1520
+ 1568
1521
+ 1569
1522
+ 1570
1523
+ 1571
1524
+ 1572
1525
+ 1573
1526
+ 1574
1527
+ 1575
1528
+ 1576
1529
+ 1577
1530
+ 1578
1531
+ 1579
1532
+ 1580
1533
+ 1581
1534
+ 1582
1535
+ 1583
1536
+ 1584
1537
+ 1585
1538
+ 1586
1539
+ 1587
1540
+ 1588
1541
+ 1589
1542
+ 1590
1543
+ 1591
1544
+ 1592
1545
+ 1593
1546
+ 1594
1547
+ 1595
1548
+ 1596
1549
+ 1597
1550
+ 1598
1551
+ 1599
1552
+ 1600
1553
+ 1601
1554
+ 1602
1555
+ 1603
1556
+ 1604
1557
+ 1605
1558
+ 1606
1559
+ 1607
1560
+ 1608
1561
+ 1609
1562
+ 1610
1563
+ 1611
1564
+ 1612
1565
+ 1613
1566
+ 1614
1567
+ 1615
1568
+ 1616
1569
+ 1617
1570
+ 1618
1571
+ 1619
1572
+ 1620
1573
+ 1621
1574
+ 1622
1575
+ 1623
1576
+ 1624
1577
+ 1625
1578
+ 1626
1579
+ 1627
1580
+ 1628
1581
+ 1629
1582
+ 1630
1583
+ 1631
1584
+ 1632
1585
+ 1633
1586
+ 1634
1587
+ 1635
1588
+ 1636
1589
+ 1637
1590
+ 1638
1591
+ 1639
1592
+ 1640
1593
+ 1641
1594
+ 1642
1595
+ 1643
1596
+ 1644
1597
+ 1645
1598
+ 1646
1599
+ 1647
1600
+ 1648
1601
+ 1649
1602
+ 1650
1603
+ 1651
1604
+ 1652
1605
+ 1653
1606
+ 1654
1607
+ 1655
1608
+ 1656
1609
+ 1657
1610
+ 1658
1611
+ 1659
1612
+ 1660
1613
+ 1661
1614
+ 1662
1615
+ 1663
1616
+ 1664
1617
+ 1665
1618
+ 1666
1619
+ 1667
1620
+ 1668
1621
+ 1669
1622
+ 1670
1623
+ 1671
1624
+ 1672
1625
+ 1673
1626
+ 1674
1627
+ 1675
1628
+ 1676
1629
+ 1677
1630
+ 1678
1631
+ 1679
1632
+ 1680
1633
+ 1681
1634
+ 1682
1635
+ 1683
1636
+ 1684
1637
+ 1685
1638
+ 1686
1639
+ 1687
1640
+ 1688
1641
+ 1689
1642
+ 1690
1643
+ 1691
1644
+ 1692
1645
+ 1693
1646
+ 1694
1647
+ 1695
1648
+ 1696
1649
+ 1697
1650
+ 1698
1651
+ 1699
1652
+ 1700
1653
+ 1701
1654
+ 1702
1655
+ 1703
1656
+ 1704
1657
+ 1705
1658
+ 1706
1659
+ 1707
1660
+ 1708
1661
+ 1709
1662
+ 1710
1663
+ 1711
1664
+ 1712
1665
+ 1713
1666
+ 1714
1667
+ 1715
1668
+ 1716
1669
+ 1717
1670
+ 1718
1671
+ 1719
1672
+ 1720
1673
+ 1721
1674
+ 1722
1675
+ 1723
1676
+ 1724
1677
+ 1725
1678
+ 1726
1679
+ 1727
1680
+ 1728
1681
+ 1729
1682
+ 1730
1683
+ 1731
1684
+ 1732
1685
+ 1733
1686
+ 1734
1687
+ 1735
1688
+ 1736
1689
+ 1737
1690
+ 1738
1691
+ 1739
1692
+ 1740
1693
+ 1741
1694
+ 1742
1695
+ 1743
1696
+ 1744
1697
+ 1745
1698
+ 1746
1699
+ 1747
1700
+ 1748
1701
+ 1749
1702
+ 1750
1703
+ 1751
1704
+ 1752</pre>
1705
+ </td>
1706
+ <td>
1707
+ <pre class="code"><span class="info file"># File 'lib/fat_date/date.rb', line 1549</span>
1708
+
1709
+ <span class='kw'>def</span> <span class='id identifier rubyid_spec'>spec</span><span class='lparen'>(</span><span class='id identifier rubyid_spec'>spec</span><span class='comma'>,</span> <span class='id identifier rubyid_spec_type'>spec_type</span> <span class='op'>=</span> <span class='symbol'>:from</span><span class='rparen'>)</span>
1710
+ <span class='id identifier rubyid_spec'>spec</span> <span class='op'>=</span> <span class='id identifier rubyid_spec'>spec</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span><span class='period'>.</span><span class='id identifier rubyid_clean'>clean</span>
1711
+ <span class='kw'>unless</span> <span class='qsymbols_beg'>%i[</span><span class='tstring_content'>from</span><span class='words_sep'> </span><span class='tstring_content'>to</span><span class='tstring_end'>]</span></span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_spec_type'>spec_type</span><span class='rparen'>)</span>
1712
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>invalid date spec type: &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec_type'>spec_type</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39;</span><span class='tstring_end'>&quot;</span></span>
1713
+ <span class='kw'>end</span>
1714
+
1715
+ <span class='id identifier rubyid_today'>today</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_today'>today</span>
1716
+ <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_md'>md</span> <span class='op'>=</span> <span class='id identifier rubyid_spec'>spec</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(?&lt;dir&gt;[&lt;&gt;]=?)(?&lt;dow&gt;Su|Mo|Tu|We|Th|Fr|Sa)[a-z]*\z</span><span class='regexp_end'>/i</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
1717
+ <span class='id identifier rubyid_skip_to'>skip_to</span> <span class='op'>=</span> <span class='id identifier rubyid_md'>md</span><span class='lbracket'>[</span><span class='symbol'>:dow</span><span class='rbracket'>]</span>
1718
+ <span class='id identifier rubyid_skip_dir'>skip_dir</span> <span class='op'>=</span> <span class='id identifier rubyid_md'>md</span><span class='lbracket'>[</span><span class='symbol'>:dir</span><span class='rbracket'>]</span>
1719
+ <span class='id identifier rubyid_spec'>spec</span> <span class='op'>=</span> <span class='id identifier rubyid_spec'>spec</span><span class='period'>.</span><span class='id identifier rubyid_sub'>sub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>[&lt;&gt;]=?(Su|Mo|Tu|We|Th|Fr|Sa)[a-z]*\z</span><span class='regexp_end'>/i</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
1720
+ <span class='kw'>else</span>
1721
+ <span class='id identifier rubyid_skip_to'>skip_to</span> <span class='op'>=</span> <span class='kw'>nil</span>
1722
+ <span class='id identifier rubyid_skip_dir'>skip_dir</span> <span class='op'>=</span> <span class='kw'>nil</span>
1723
+ <span class='kw'>end</span>
1724
+ <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span>
1725
+ <span class='kw'>case</span> <span class='id identifier rubyid_spec'>spec</span>
1726
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>\A((?&lt;yr&gt;\d\d\d\d)[-/])?(?&lt;doy&gt;\d\d\d)\z</span><span class='regexp_end'>}</span></span>
1727
+ <span class='comment'># With 3-digit YYYY-ddd, return the day-of-year
1728
+ </span> <span class='id identifier rubyid_year'>year</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:yr</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>||</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_today'>today</span><span class='period'>.</span><span class='id identifier rubyid_year'>year</span>
1729
+ <span class='id identifier rubyid_doy'>doy</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:doy</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1730
+ <span class='id identifier rubyid_max_doy'>max_doy</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_gregorian_leap?'>gregorian_leap?</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='int'>366</span> <span class='op'>:</span> <span class='int'>365</span>
1731
+ <span class='kw'>if</span> <span class='id identifier rubyid_doy'>doy</span> <span class='op'>&gt;</span> <span class='id identifier rubyid_max_doy'>max_doy</span>
1732
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>invalid day-of-year &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_doy'>doy</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39; (1..</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_max_doy'>max_doy</span><span class='embexpr_end'>}</span><span class='tstring_content'>) in &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39;</span><span class='tstring_end'>&quot;</span></span>
1733
+ <span class='kw'>end</span>
1734
+
1735
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='int'>1</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='id identifier rubyid_doy'>doy</span> <span class='op'>-</span> <span class='int'>1</span>
1736
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>\A((?&lt;yr&gt;\d\d\d\d)[-/])?(?&lt;mo&gt;\d\d?)([-/](?&lt;dy&gt;\d\d?))?\z</span><span class='regexp_end'>}</span></span>
1737
+ <span class='comment'># MM, YYYY-MM, MM-DD
1738
+ </span> <span class='id identifier rubyid_year'>year</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:yr</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>||</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_today'>today</span><span class='period'>.</span><span class='id identifier rubyid_year'>year</span>
1739
+ <span class='id identifier rubyid_month'>month</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:mo</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1740
+ <span class='id identifier rubyid_day'>day</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:dy</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_to_i'>to_i</span>
1741
+ <span class='kw'>unless</span> <span class='lbracket'>[</span><span class='int'>1</span><span class='comma'>,</span> <span class='int'>2</span><span class='comma'>,</span> <span class='int'>3</span><span class='comma'>,</span> <span class='int'>4</span><span class='comma'>,</span> <span class='int'>5</span><span class='comma'>,</span> <span class='int'>6</span><span class='comma'>,</span> <span class='int'>7</span><span class='comma'>,</span> <span class='int'>8</span><span class='comma'>,</span> <span class='int'>9</span><span class='comma'>,</span> <span class='int'>10</span><span class='comma'>,</span> <span class='int'>11</span><span class='comma'>,</span> <span class='int'>12</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_month'>month</span><span class='rparen'>)</span>
1742
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>invalid month number (1-12): &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39;</span><span class='tstring_end'>&quot;</span></span>
1743
+ <span class='kw'>end</span>
1744
+
1745
+ <span class='kw'>if</span> <span class='id identifier rubyid_day'>day</span>
1746
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='id identifier rubyid_day'>day</span><span class='rparen'>)</span>
1747
+ <span class='kw'>elsif</span> <span class='id identifier rubyid_spec_type'>spec_type</span> <span class='op'>==</span> <span class='symbol'>:from</span>
1748
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span>
1749
+ <span class='kw'>else</span>
1750
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_end_of_month'>end_of_month</span>
1751
+ <span class='kw'>end</span>
1752
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>\A((?&lt;yr&gt;\d\d\d\d)[-/])?(?&lt;wk&gt;\d\d?)W(-(?&lt;dy&gt;\d))?\z</span><span class='regexp_end'>}xi</span></span><span class='comma'>,</span>
1753
+ <span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>\A((?&lt;yr&gt;\d\d\d\d)[-/])?W(?&lt;wk&gt;\d\d?)(-(?&lt;dy&gt;\d))?\z</span><span class='regexp_end'>}xi</span></span>
1754
+ <span class='comment'># Commercial week numbers. The first commercial week of the year is
1755
+ </span> <span class='comment'># the one that includes the first Thursday of that year. In the
1756
+ </span> <span class='comment'># Gregorian calendar, this is equivalent to the week which includes
1757
+ </span> <span class='comment'># January 4. This appears to be the equivalent of ISO 8601 week
1758
+ </span> <span class='comment'># number as described at https://en.wikipedia.org/wiki/ISO_week_date
1759
+ </span> <span class='id identifier rubyid_year'>year</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:yr</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_to_i'>to_i</span>
1760
+ <span class='id identifier rubyid_week_num'>week_num</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:wk</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1761
+ <span class='id identifier rubyid_day'>day</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:dy</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_to_i'>to_i</span>
1762
+ <span class='kw'>unless</span> <span class='lparen'>(</span><span class='int'>1</span><span class='op'>..</span><span class='int'>53</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_cover?'>cover?</span><span class='lparen'>(</span><span class='id identifier rubyid_week_num'>week_num</span><span class='rparen'>)</span>
1763
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>invalid week number (1-53): &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39;</span><span class='tstring_end'>&quot;</span></span>
1764
+ <span class='kw'>end</span>
1765
+ <span class='kw'>if</span> <span class='id identifier rubyid_day'>day</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='lparen'>(</span><span class='int'>1</span><span class='op'>..</span><span class='int'>7</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_cover?'>cover?</span><span class='lparen'>(</span><span class='id identifier rubyid_day'>day</span><span class='rparen'>)</span>
1766
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>invalid ISO day number (1-7): &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39;</span><span class='tstring_end'>&quot;</span></span>
1767
+ <span class='kw'>end</span>
1768
+
1769
+ <span class='kw'>if</span> <span class='id identifier rubyid_spec_type'>spec_type</span> <span class='op'>==</span> <span class='symbol'>:from</span>
1770
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_commercial'>commercial</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span> <span class='op'>?</span> <span class='id identifier rubyid_year'>year</span> <span class='op'>:</span> <span class='id identifier rubyid_today'>today</span><span class='period'>.</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_week_num'>week_num</span><span class='comma'>,</span> <span class='id identifier rubyid_day'>day</span> <span class='op'>?</span> <span class='id identifier rubyid_day'>day</span> <span class='op'>:</span> <span class='int'>1</span><span class='rparen'>)</span>
1771
+ <span class='kw'>else</span>
1772
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_commercial'>commercial</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span> <span class='op'>?</span> <span class='id identifier rubyid_year'>year</span> <span class='op'>:</span> <span class='id identifier rubyid_today'>today</span><span class='period'>.</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_week_num'>week_num</span><span class='comma'>,</span> <span class='id identifier rubyid_day'>day</span> <span class='op'>?</span> <span class='id identifier rubyid_day'>day</span> <span class='op'>:</span> <span class='int'>7</span><span class='rparen'>)</span>
1773
+ <span class='kw'>end</span>
1774
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>^((?&lt;yr&gt;\d\d\d\d)[-/])?(?&lt;qt&gt;\d)[Qq]$</span><span class='regexp_end'>}</span></span><span class='comma'>,</span> <span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>^((?&lt;yr&gt;\d\d\d\d)[-/])?[Qq](?&lt;qt&gt;\d)$</span><span class='regexp_end'>}</span></span>
1775
+ <span class='comment'># Year-Quarter
1776
+ </span> <span class='id identifier rubyid_year'>year</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:yr</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>||</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_today'>today</span><span class='period'>.</span><span class='id identifier rubyid_year'>year</span>
1777
+ <span class='id identifier rubyid_quarter'>quarter</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:qt</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1778
+ <span class='kw'>unless</span> <span class='lbracket'>[</span><span class='int'>1</span><span class='comma'>,</span> <span class='int'>2</span><span class='comma'>,</span> <span class='int'>3</span><span class='comma'>,</span> <span class='int'>4</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_quarter'>quarter</span><span class='rparen'>)</span>
1779
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>invalid quarter number (1-4): &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39;</span><span class='tstring_end'>&quot;</span></span>
1780
+ <span class='kw'>end</span>
1781
+
1782
+ <span class='id identifier rubyid_month'>month</span> <span class='op'>=</span> <span class='id identifier rubyid_quarter'>quarter</span> <span class='op'>*</span> <span class='int'>3</span>
1783
+ <span class='kw'>if</span> <span class='id identifier rubyid_spec_type'>spec_type</span> <span class='op'>==</span> <span class='symbol'>:from</span>
1784
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_beginning_of_quarter'>beginning_of_quarter</span>
1785
+ <span class='kw'>else</span>
1786
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_end_of_quarter'>end_of_quarter</span>
1787
+ <span class='kw'>end</span>
1788
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>^((?&lt;yr&gt;\d\d\d\d)[-/])?(?&lt;hf&gt;\d)[Hh]$</span><span class='regexp_end'>}</span></span><span class='comma'>,</span> <span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>^((?&lt;yr&gt;\d\d\d\d)[-/])?[Hh](?&lt;hf&gt;\d)$</span><span class='regexp_end'>}</span></span>
1789
+ <span class='comment'># Year-Half
1790
+ </span> <span class='id identifier rubyid_year'>year</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:yr</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>||</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_today'>today</span><span class='period'>.</span><span class='id identifier rubyid_year'>year</span>
1791
+ <span class='id identifier rubyid_half'>half</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:hf</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1792
+ <span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>invalid half number: &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39;</span><span class='tstring_end'>&quot;</span></span>
1793
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='id identifier rubyid_msg'>msg</span> <span class='kw'>unless</span> <span class='lbracket'>[</span><span class='int'>1</span><span class='comma'>,</span> <span class='int'>2</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_half'>half</span><span class='rparen'>)</span>
1794
+
1795
+ <span class='id identifier rubyid_month'>month</span> <span class='op'>=</span> <span class='id identifier rubyid_half'>half</span> <span class='op'>*</span> <span class='int'>6</span>
1796
+ <span class='kw'>if</span> <span class='id identifier rubyid_spec_type'>spec_type</span> <span class='op'>==</span> <span class='symbol'>:from</span>
1797
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='int'>15</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_beginning_of_half'><span class='object_link'><a href="../Date.html#beginning_of_half-instance_method" title="FatDate::Date#beginning_of_half (method)">beginning_of_half</a></span></span>
1798
+ <span class='kw'>else</span>
1799
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_end_of_half'><span class='object_link'><a href="../Date.html#end_of_half-instance_method" title="FatDate::Date#end_of_half (method)">end_of_half</a></span></span>
1800
+ <span class='kw'>end</span>
1801
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\A(?&lt;yr&gt;\d\d\d\d)\z</span><span class='regexp_end'>/</span></span>
1802
+ <span class='comment'># Year only
1803
+ </span> <span class='id identifier rubyid_year'>year</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:yr</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1804
+ <span class='kw'>if</span> <span class='id identifier rubyid_spec_type'>spec_type</span> <span class='op'>==</span> <span class='symbol'>:from</span>
1805
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='int'>1</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span>
1806
+ <span class='kw'>else</span>
1807
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='int'>12</span><span class='comma'>,</span> <span class='int'>31</span><span class='rparen'>)</span>
1808
+ <span class='kw'>end</span>
1809
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>\A(((?&lt;yr&gt;\d\d\d\d)[-\/])?(?&lt;mo&gt;\d\d?)[-\/])?(?&lt;hf_mo&gt;(A|B))\z</span><span class='regexp_end'>}i</span></span>
1810
+ <span class='comment'># Year, month, half-month, designated with A or B
1811
+ </span> <span class='id identifier rubyid_year'>year</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:yr</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>||</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_today'>today</span><span class='period'>.</span><span class='id identifier rubyid_year'>year</span>
1812
+ <span class='id identifier rubyid_month'>month</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:mo</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>||</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_today'>today</span><span class='period'>.</span><span class='id identifier rubyid_month'>month</span>
1813
+ <span class='id identifier rubyid_hf_mo'>hf_mo</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:hf_mo</span><span class='rbracket'>]</span>
1814
+ <span class='kw'>if</span> <span class='id identifier rubyid_hf_mo'>hf_mo</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>A</span><span class='tstring_end'>&quot;</span></span>
1815
+ <span class='id identifier rubyid_spec_type'>spec_type</span> <span class='op'>==</span> <span class='symbol'>:from</span> <span class='op'>?</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='int'>15</span><span class='rparen'>)</span>
1816
+ <span class='kw'>else</span>
1817
+ <span class='comment'># hf_mo == &quot;B&quot;
1818
+ </span> <span class='id identifier rubyid_spec_type'>spec_type</span> <span class='op'>==</span> <span class='symbol'>:from</span> <span class='op'>?</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='int'>16</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='int'>16</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_end_of_month'>end_of_month</span>
1819
+ <span class='kw'>end</span>
1820
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>\A((?&lt;yr&gt;\d\d\d\d)[-/])?((?&lt;mo&gt;\d\d?)[-/])?(?&lt;wk&gt;(i|ii|iii|iv|v|vi))\z</span><span class='regexp_end'>}i</span></span>
1821
+ <span class='comment'># Year, month, week-of-month, partial-or-whole, designated with lowercase Roman
1822
+ </span> <span class='id identifier rubyid_year'>year</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:yr</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>||</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_today'>today</span><span class='period'>.</span><span class='id identifier rubyid_year'>year</span>
1823
+ <span class='id identifier rubyid_month'>month</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:mo</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>||</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_today'>today</span><span class='period'>.</span><span class='id identifier rubyid_month'>month</span>
1824
+ <span class='id identifier rubyid_wk'>wk</span> <span class='op'>=</span> <span class='id identifier rubyid_roman_to_week'>roman_to_week</span><span class='lparen'>(</span><span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:wk</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1825
+ <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span>
1826
+ <span class='kw'>if</span> <span class='id identifier rubyid_spec_type'>spec_type</span> <span class='op'>==</span> <span class='symbol'>:from</span>
1827
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_beginning_of_week'>beginning_of_week</span> <span class='op'>+</span> <span class='lparen'>(</span><span class='id identifier rubyid_wk'>wk</span> <span class='op'>-</span> <span class='int'>1</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_weeks'>weeks</span>
1828
+ <span class='kw'>else</span>
1829
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_end_of_week'>end_of_week</span> <span class='op'>+</span> <span class='lparen'>(</span><span class='id identifier rubyid_wk'>wk</span> <span class='op'>-</span> <span class='int'>1</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_weeks'>weeks</span>
1830
+ <span class='kw'>end</span>
1831
+ <span class='comment'># If beginning of week of the 1st is in prior month, return the 1st
1832
+ </span> <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_result'>result</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span>
1833
+ <span class='comment'># If the whole week of the result is in the next month, there was no such week
1834
+ </span> <span class='kw'>if</span> <span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_beginning_of_week'>beginning_of_week</span><span class='period'>.</span><span class='id identifier rubyid_month'>month</span> <span class='op'>&gt;</span> <span class='id identifier rubyid_month'>month</span>
1835
+ <span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='id identifier rubyid_sprintf'>sprintf</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>no week number </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_wk'>wk</span><span class='embexpr_end'>}</span><span class='tstring_content'> in %04d-%02d</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='rparen'>)</span>
1836
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='id identifier rubyid_msg'>msg</span>
1837
+ <span class='kw'>else</span>
1838
+ <span class='comment'># But if part of the result week is in this month, return end of month
1839
+ </span> <span class='lbracket'>[</span><span class='id identifier rubyid_result'>result</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_end_of_month'>end_of_month</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_min'>min</span>
1840
+ <span class='kw'>end</span>
1841
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>\A((?&lt;yr&gt;\d\d\d\d)[-/])?((?&lt;mo&gt;\d\d?)[-/])?((?&lt;nth&gt;[-+]?\d+)(?&lt;dow&gt;(Su|Mo|Tu|We|Th|Fr|Sa)[a-z]*))\z</span><span class='regexp_end'>}i</span></span>
1842
+ <span class='comment'># Year, month, ordinal dow name
1843
+ </span> <span class='id identifier rubyid_year'>year</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:yr</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>||</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_today'>today</span><span class='period'>.</span><span class='id identifier rubyid_year'>year</span>
1844
+ <span class='id identifier rubyid_month'>month</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:mo</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>||</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_today'>today</span><span class='period'>.</span><span class='id identifier rubyid_month'>month</span>
1845
+ <span class='id identifier rubyid_nth'>nth</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:nth</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
1846
+ <span class='id identifier rubyid_wday'>wday</span> <span class='op'>=</span> <span class='id identifier rubyid_dow_to_wday'>dow_to_wday</span><span class='lparen'>(</span><span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:dow</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1847
+ <span class='kw'>unless</span> <span class='lparen'>(</span><span class='int'>1</span><span class='op'>..</span><span class='int'>12</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_cover?'>cover?</span><span class='lparen'>(</span><span class='id identifier rubyid_month'>month</span><span class='rparen'>)</span>
1848
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>invalid month number (1-12): &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_month'>month</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39; in &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39;</span><span class='tstring_end'>&quot;</span></span>
1849
+ <span class='kw'>end</span>
1850
+ <span class='kw'>unless</span> <span class='lparen'>(</span><span class='int'>1</span><span class='op'>..</span><span class='int'>5</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_cover?'>cover?</span><span class='lparen'>(</span><span class='id identifier rubyid_nth'>nth</span><span class='period'>.</span><span class='id identifier rubyid_abs'>abs</span><span class='rparen'>)</span>
1851
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>invalid ordinal day number (1-5): &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_nth'>nth</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39; in &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39;</span><span class='tstring_end'>&quot;</span></span>
1852
+ <span class='kw'>end</span>
1853
+
1854
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_nth_wday_in_year_month'>nth_wday_in_year_month</span><span class='lparen'>(</span><span class='id identifier rubyid_nth'>nth</span><span class='comma'>,</span> <span class='id identifier rubyid_wday'>wday</span><span class='comma'>,</span> <span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_month'>month</span><span class='rparen'>)</span>
1855
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>\A(?&lt;yr&gt;\d\d\d\d[-/])?E(?&lt;off&gt;[+-]\d+)?\z</span><span class='regexp_end'>}i</span></span>
1856
+ <span class='comment'># Easter for the given year, current year (if no year component),
1857
+ </span> <span class='comment'># optionally plus or minus a day offset
1858
+ </span> <span class='id identifier rubyid_year'>year</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:yr</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>||</span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_today'>today</span><span class='period'>.</span><span class='id identifier rubyid_year'>year</span>
1859
+ <span class='id identifier rubyid_offset'>offset</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:off</span><span class='rbracket'>]</span><span class='op'>&amp;.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>||</span> <span class='int'>0</span>
1860
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_easter'>easter</span><span class='lparen'>(</span><span class='id identifier rubyid_year'>year</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='id identifier rubyid_offset'>offset</span>
1861
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>\A(?&lt;rel&gt;(to[_-]?|this[_-]?)|(last[_-]?|yester[_-]?|next[_-]?))
1862
+ (?&lt;chunk&gt;morrow|day|week|biweek|fortnight|semimonth|bimonth|month|quarter|half|year)\z</span><span class='regexp_end'>}xi</span></span>
1863
+ <span class='id identifier rubyid_rel'>rel</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:rel</span><span class='rbracket'>]</span>
1864
+ <span class='id identifier rubyid_chunk'>chunk</span> <span class='op'>=</span> <span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_last_match'>last_match</span><span class='lbracket'>[</span><span class='symbol'>:chunk</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
1865
+ <span class='kw'>if</span> <span class='id identifier rubyid_chunk'>chunk</span><span class='period'>.</span><span class='id identifier rubyid_match?'>match?</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>morrow</span><span class='regexp_end'>/i</span></span><span class='rparen'>)</span>
1866
+ <span class='id identifier rubyid_chunk'>chunk</span> <span class='op'>=</span> <span class='symbol'>:day</span>
1867
+ <span class='id identifier rubyid_rel'>rel</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>next</span><span class='tstring_end'>&#39;</span></span>
1868
+ <span class='kw'>end</span>
1869
+ <span class='kw'>if</span> <span class='id identifier rubyid_chunk'>chunk</span><span class='period'>.</span><span class='id identifier rubyid_match?'>match?</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>fortnight</span><span class='regexp_end'>/i</span></span><span class='rparen'>)</span>
1870
+ <span class='id identifier rubyid_chunk'>chunk</span> <span class='op'>=</span> <span class='symbol'>:biweek</span>
1871
+ <span class='kw'>end</span>
1872
+ <span class='id identifier rubyid_start'>start</span> <span class='op'>=</span>
1873
+ <span class='kw'>if</span> <span class='id identifier rubyid_rel'>rel</span><span class='period'>.</span><span class='id identifier rubyid_match?'>match?</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>this|to</span><span class='regexp_end'>/i</span></span><span class='rparen'>)</span>
1874
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_today'>today</span>
1875
+ <span class='kw'>elsif</span> <span class='id identifier rubyid_rel'>rel</span><span class='period'>.</span><span class='id identifier rubyid_match?'>match?</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>next</span><span class='regexp_end'>/i</span></span><span class='rparen'>)</span>
1876
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_today'>today</span><span class='period'>.</span><span class='id identifier rubyid_add_chunk'>add_chunk</span><span class='lparen'>(</span><span class='id identifier rubyid_chunk'>chunk</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span>
1877
+ <span class='kw'>else</span>
1878
+ <span class='comment'># rel.match?(/last|yester/i)
1879
+ </span> <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='period'>.</span><span class='id identifier rubyid_today'>today</span><span class='period'>.</span><span class='id identifier rubyid_add_chunk'>add_chunk</span><span class='lparen'>(</span><span class='id identifier rubyid_chunk'>chunk</span><span class='comma'>,</span> <span class='op'>-</span><span class='int'>1</span><span class='rparen'>)</span>
1880
+ <span class='kw'>end</span>
1881
+ <span class='kw'>if</span> <span class='id identifier rubyid_spec_type'>spec_type</span> <span class='op'>==</span> <span class='symbol'>:from</span>
1882
+ <span class='id identifier rubyid_start'>start</span><span class='period'>.</span><span class='id identifier rubyid_beginning_of_chunk'>beginning_of_chunk</span><span class='lparen'>(</span><span class='id identifier rubyid_chunk'>chunk</span><span class='rparen'>)</span>
1883
+ <span class='kw'>else</span>
1884
+ <span class='id identifier rubyid_start'>start</span><span class='period'>.</span><span class='id identifier rubyid_end_of_chunk'>end_of_chunk</span><span class='lparen'>(</span><span class='id identifier rubyid_chunk'>chunk</span><span class='rparen'>)</span>
1885
+ <span class='kw'>end</span>
1886
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^forever</span><span class='regexp_end'>/i</span></span>
1887
+ <span class='kw'>if</span> <span class='id identifier rubyid_spec_type'>spec_type</span> <span class='op'>==</span> <span class='symbol'>:from</span>
1888
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Date.html#BOT-constant" title="FatDate::Date::BOT (constant)">BOT</a></span></span>
1889
+ <span class='kw'>else</span>
1890
+ <span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Date.html" title="Date (class)">Date</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Date.html#EOT-constant" title="FatDate::Date::EOT (constant)">EOT</a></span></span>
1891
+ <span class='kw'>end</span>
1892
+ <span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^never</span><span class='regexp_end'>/i</span></span>
1893
+ <span class='kw'>nil</span>
1894
+ <span class='kw'>else</span>
1895
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>XXX bad date spec: &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39;</span><span class='tstring_end'>&quot;</span></span>
1896
+ <span class='kw'>end</span>
1897
+
1898
+ <span class='comment'># Now, skip to the next or preceding skip day if skip_to is defined.
1899
+ </span> <span class='kw'>if</span> <span class='id identifier rubyid_skip_to'>skip_to</span>
1900
+ <span class='id identifier rubyid_wday'>wday</span> <span class='op'>=</span> <span class='id identifier rubyid_dow_to_wday'>dow_to_wday</span><span class='lparen'>(</span><span class='id identifier rubyid_skip_to'>skip_to</span><span class='rparen'>)</span>
1901
+ <span class='kw'>if</span> <span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_wday'>wday</span> <span class='op'>==</span> <span class='id identifier rubyid_wday'>wday</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_skip_dir'>skip_dir</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>=</span><span class='tstring_end'>&#39;</span></span>
1902
+ <span class='kw'>true</span> <span class='comment'># Do nothing
1903
+ </span> <span class='kw'>elsif</span> <span class='id identifier rubyid_skip_dir'>skip_dir</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>&lt;</span><span class='tstring_end'>&#39;</span></span>
1904
+ <span class='comment'># Find prior date with dow
1905
+ </span> <span class='id identifier rubyid_result'>result</span> <span class='op'>-=</span> <span class='int'>1</span><span class='period'>.</span><span class='id identifier rubyid_day'>day</span> <span class='kw'>while</span> <span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_wday'>wday</span> <span class='op'>!=</span> <span class='id identifier rubyid_wday'>wday</span>
1906
+ <span class='kw'>else</span>
1907
+ <span class='comment'># Find subsequent date with dow
1908
+ </span> <span class='id identifier rubyid_result'>result</span> <span class='op'>+=</span> <span class='int'>1</span><span class='period'>.</span><span class='id identifier rubyid_day'>day</span> <span class='kw'>while</span> <span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_wday'>wday</span> <span class='op'>!=</span> <span class='id identifier rubyid_wday'>wday</span>
1909
+ <span class='kw'>end</span>
1910
+ <span class='kw'>end</span>
1911
+ <span class='id identifier rubyid_result'>result</span>
1912
+ <span class='kw'>end</span></pre>
1913
+ </td>
1914
+ </tr>
1915
+ </table>
1916
+ </div>
1917
+
1918
+ </div>
1919
+
1920
+ </div>
1921
+
1922
+ <div id="footer">
1923
+ Generated on Wed Dec 24 05:26:32 2025 by
1924
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1925
+ 0.9.38 (ruby-3.4.1).
1926
+ </div>
1927
+
1928
+ </div>
1929
+ </body>
1930
+ </html>