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.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -9
- data/.yardopts +4 -0
- data/CHANGELOG.org +8 -3
- data/README.md +685 -0
- data/README.org +205 -155
- data/Rakefile +20 -3
- data/doc/Date.html +153 -0
- data/doc/DateTime.html +148 -0
- data/doc/FatDate/Date/ClassMethods.html +1930 -0
- data/doc/FatDate/Date.html +8319 -0
- data/doc/FatDate/DateTime.html +203 -0
- data/doc/FatDate.html +158 -0
- data/doc/Numeric.html +298 -0
- data/doc/_index.html +167 -0
- data/doc/class_list.html +54 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +58 -0
- data/doc/css/style.css +490 -0
- data/doc/file.README.html +780 -0
- data/doc/file_list.html +59 -0
- data/doc/frames.html +22 -0
- data/doc/index.html +780 -0
- data/doc/js/app.js +395 -0
- data/doc/js/full_list.js +244 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +814 -0
- data/doc/top-level-namespace.html +112 -0
- data/lib/fat_date/date.rb +25 -10
- data/lib/fat_date/date_time.rb +17 -0
- data/lib/fat_date/version.rb +1 -1
- data/lib/fat_date.rb +22 -7
- metadata +41 -3
|
@@ -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
|
+
— 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> »
|
|
40
|
+
<span class='title'><span class='object_link'><a href="../../FatDate.html" title="FatDate (module)">FatDate</a></span></span> » <span class='title'><span class='object_link'><a href="../Date.html" title="FatDate::Date (module)">Date</a></span></span>
|
|
41
|
+
»
|
|
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 "golden number" (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'>=></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'>=></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'>=></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'>=></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'>=></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'>=></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'>=></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'>=></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'>=></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'>=></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'>=></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'>=></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'>=></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'>=></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'>=></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'>=></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'>=></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'>=></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'>=></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) ⇒ ::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) ⇒ ::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 'period spec' <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) ⇒ 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) ⇒ 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) ⇒ ::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) ⇒ 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) ⇒ 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) ⇒ 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) ⇒ 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) ⇒ <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'>'</span><span class='tstring_content'>illegal month number</span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_month'>month</span> <span class='op'><</span> <span class='int'>1</span> <span class='op'>||</span> <span class='id identifier rubyid_month'>month</span> <span class='op'>></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) ⇒ <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'>"</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'>"</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) ⇒ <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
|
+
—
|
|
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
|
+
—
|
|
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
|
+
—
|
|
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'>'</span><span class='tstring_content'>date</span><span class='tstring_end'>'</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'><</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'><=</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) ⇒ <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
|
+
—
|
|
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'>"</span><span class='tstring_content'>cannot convert string '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_dat'>dat</span><span class='embexpr_end'>}</span><span class='tstring_content'>' to a Date or DateTime</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>cannot convert class '</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'>' to a Date or DateTime</span><span class='tstring_end'>"</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) ⇒ <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
|
+
—
|
|
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
|
+
—
|
|
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) ⇒ <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
|
+
—
|
|
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
|
+
—
|
|
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
|
+
—
|
|
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
|
+
—
|
|
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'>'</span><span class='tstring_content'>illegal weekday number</span><span class='tstring_end'>'</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'>></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'>'</span><span class='tstring_content'>illegal month number</span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_month'>month</span> <span class='op'><</span> <span class='int'>1</span> <span class='op'>||</span> <span class='id identifier rubyid_month'>month</span> <span class='op'>></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'>></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'>"</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'>"</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'>'</span><span class='tstring_content'>Argument nth cannot be zero</span><span class='tstring_end'>'</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'>'</span><span class='tstring_content'>Sunday</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Monday</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Tuesday</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Wednesday</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Thursday</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Friday</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Saturday</span><span class='tstring_end'>'</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'>"</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'>"</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) ⇒ <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'>'</span><span class='tstring_content'>9/11/2001</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='comment'>#=> ::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'>'</span><span class='tstring_content'>9/11/01</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='comment'>#=> ::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'>'</span><span class='tstring_content'>9/11/1</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='comment'>#=> 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
|
+
—
|
|
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
|
+
—
|
|
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'>"</span><span class='tstring_content'>date string must be of form 'MM?/DD?/YY(YY)?'</span><span class='tstring_end'>"</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'><</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) ⇒ <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'>"</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'>"</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) ⇒ <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 'period spec' <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_<chunk></code> where <code><chunk></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_<chunk></code> where <code><chunk></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: 'Su', 'su', 'sund', 'sunday', 'surgery', all are
|
|
1410
|
+
valid ways of writing 'Sunday'.</p>
|
|
1411
|
+
|
|
1412
|
+
<p>Each of the foregoing specs may have a 'skip modifier' 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 '<Th', '>Th', '<=Th', or '>=Th' where 'Th'
|
|
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 (<), on or before
|
|
1419
|
+
(<=), after (>), or on or after (>=) the date. So Thanksgiving in
|
|
1420
|
+
2028 could be found with Date.spec('2028-11<=Th', :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'>'</span><span class='tstring_content'>2012-W32</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_iso'>iso</span> <span class='comment'># => "2012-08-06"
|
|
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'>'</span><span class='tstring_content'>2012-W32</span><span class='tstring_end'>'</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'># => "2012-08-12"
|
|
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'>'</span><span class='tstring_content'>W32</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_iso'>iso</span> <span class='comment'># => "2012-08-06" 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'>'</span><span class='tstring_content'>W32</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_iso'>iso</span> <span class='comment'># => "2012-08-04" 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
|
+
—
|
|
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
|
+
—
|
|
1468
|
+
<div class='inline'><p>return the first (:from) or last (:to)
|
|
1469
|
+
date in the spec'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
|
+
—
|
|
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'>"</span><span class='tstring_content'>invalid date spec type: '</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'>'</span><span class='tstring_end'>"</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'>(?<dir>[<>]=?)(?<dow>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'>[<>]=?(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'>'</span><span class='tstring_end'>'</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((?<yr>\d\d\d\d)[-/])?(?<doy>\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'>&.</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'>></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'>"</span><span class='tstring_content'>invalid day-of-year '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_doy'>doy</span><span class='embexpr_end'>}</span><span class='tstring_content'>' (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 '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>'</span><span class='tstring_end'>"</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((?<yr>\d\d\d\d)[-/])?(?<mo>\d\d?)([-/](?<dy>\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'>&.</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'>&.</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'>"</span><span class='tstring_content'>invalid month number (1-12): '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>'</span><span class='tstring_end'>"</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((?<yr>\d\d\d\d)[-/])?(?<wk>\d\d?)W(-(?<dy>\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((?<yr>\d\d\d\d)[-/])?W(?<wk>\d\d?)(-(?<dy>\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'>&.</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'>&.</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'>"</span><span class='tstring_content'>invalid week number (1-53): '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>'</span><span class='tstring_end'>"</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'>&&</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'>"</span><span class='tstring_content'>invalid ISO day number (1-7): '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>'</span><span class='tstring_end'>"</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'>^((?<yr>\d\d\d\d)[-/])?(?<qt>\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'>^((?<yr>\d\d\d\d)[-/])?[Qq](?<qt>\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'>&.</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'>"</span><span class='tstring_content'>invalid quarter number (1-4): '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>'</span><span class='tstring_end'>"</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'>^((?<yr>\d\d\d\d)[-/])?(?<hf>\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'>^((?<yr>\d\d\d\d)[-/])?[Hh](?<hf>\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'>&.</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'>"</span><span class='tstring_content'>invalid half number: '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>'</span><span class='tstring_end'>"</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(?<yr>\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(((?<yr>\d\d\d\d)[-\/])?(?<mo>\d\d?)[-\/])?(?<hf_mo>(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'>&.</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'>&.</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'>"</span><span class='tstring_content'>A</span><span class='tstring_end'>"</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 == "B"
|
|
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((?<yr>\d\d\d\d)[-/])?((?<mo>\d\d?)[-/])?(?<wk>(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'>&.</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'>&.</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'>></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'>"</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'>"</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((?<yr>\d\d\d\d)[-/])?((?<mo>\d\d?)[-/])?((?<nth>[-+]?\d+)(?<dow>(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'>&.</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'>&.</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'>"</span><span class='tstring_content'>invalid month number (1-12): '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_month'>month</span><span class='embexpr_end'>}</span><span class='tstring_content'>' in '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>'</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>invalid ordinal day number (1-5): '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_nth'>nth</span><span class='embexpr_end'>}</span><span class='tstring_content'>' in '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>'</span><span class='tstring_end'>"</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(?<yr>\d\d\d\d[-/])?E(?<off>[+-]\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'>&.</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'>&.</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(?<rel>(to[_-]?|this[_-]?)|(last[_-]?|yester[_-]?|next[_-]?))
|
|
1862
|
+
(?<chunk>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'>'</span><span class='tstring_content'>next</span><span class='tstring_end'>'</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'>"</span><span class='tstring_content'>XXX bad date spec: '</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_spec'>spec</span><span class='embexpr_end'>}</span><span class='tstring_content'>'</span><span class='tstring_end'>"</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'>&&</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'>'</span><span class='tstring_content'>=</span><span class='tstring_end'>'</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'>'</span><span class='tstring_content'><</span><span class='tstring_end'>'</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>
|