timeboss 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -4
  3. data/lib/timeboss/calendar.rb +0 -1
  4. data/lib/timeboss/calendar/day.rb +0 -1
  5. data/lib/timeboss/calendar/half.rb +0 -1
  6. data/lib/timeboss/calendar/month.rb +0 -1
  7. data/lib/timeboss/calendar/parser.rb +0 -1
  8. data/lib/timeboss/calendar/period.rb +0 -1
  9. data/lib/timeboss/calendar/quarter.rb +0 -1
  10. data/lib/timeboss/calendar/support/formatter.rb +2 -2
  11. data/lib/timeboss/calendar/support/month_basis.rb +0 -2
  12. data/lib/timeboss/calendar/support/monthly_unit.rb +0 -2
  13. data/lib/timeboss/calendar/support/navigable.rb +0 -1
  14. data/lib/timeboss/calendar/support/shiftable.rb +218 -29
  15. data/lib/timeboss/calendar/support/translatable.rb +92 -0
  16. data/lib/timeboss/calendar/support/unit.rb +2 -1
  17. data/lib/timeboss/calendar/waypoints.rb +0 -1
  18. data/lib/timeboss/calendar/waypoints/absolute.rb +0 -1
  19. data/lib/timeboss/calendar/waypoints/relative.rb +0 -1
  20. data/lib/timeboss/calendar/week.rb +0 -1
  21. data/lib/timeboss/calendar/year.rb +0 -1
  22. data/lib/timeboss/calendars.rb +0 -1
  23. data/lib/timeboss/version.rb +1 -1
  24. metadata +4 -49
  25. data/doc/TimeBoss.html +0 -146
  26. data/doc/TimeBoss/Calendar.html +0 -137
  27. data/doc/TimeBoss/Calendar/Day.html +0 -594
  28. data/doc/TimeBoss/Calendar/Half.html +0 -396
  29. data/doc/TimeBoss/Calendar/Month.html +0 -396
  30. data/doc/TimeBoss/Calendar/Parser.html +0 -386
  31. data/doc/TimeBoss/Calendar/Period.html +0 -841
  32. data/doc/TimeBoss/Calendar/Quarter.html +0 -396
  33. data/doc/TimeBoss/Calendar/Support.html +0 -131
  34. data/doc/TimeBoss/Calendar/Support/Formatter.html +0 -459
  35. data/doc/TimeBoss/Calendar/Support/MonthBased.html +0 -591
  36. data/doc/TimeBoss/Calendar/Support/MonthBasis.html +0 -437
  37. data/doc/TimeBoss/Calendar/Support/MonthlyUnit.html +0 -591
  38. data/doc/TimeBoss/Calendar/Support/Navigable.html +0 -723
  39. data/doc/TimeBoss/Calendar/Support/Shiftable.html +0 -138
  40. data/doc/TimeBoss/Calendar/Support/Unit.html +0 -1299
  41. data/doc/TimeBoss/Calendar/Waypoints.html +0 -155
  42. data/doc/TimeBoss/Calendar/Waypoints/Absolute.html +0 -1378
  43. data/doc/TimeBoss/Calendar/Waypoints/Relative.html +0 -4308
  44. data/doc/TimeBoss/Calendar/Week.html +0 -671
  45. data/doc/TimeBoss/Calendar/Year.html +0 -319
  46. data/doc/TimeBoss/Calendars.html +0 -336
  47. data/doc/TimeBoss/Calendars/Broadcast.html +0 -221
  48. data/doc/TimeBoss/Calendars/Broadcast/Basis.html +0 -278
  49. data/doc/TimeBoss/Calendars/Entry.html +0 -399
  50. data/doc/TimeBoss/Support.html +0 -115
  51. data/doc/TimeBoss/Support/Shellable.html +0 -249
  52. data/doc/_index.html +0 -416
  53. data/doc/class_list.html +0 -51
  54. data/doc/css/common.css +0 -1
  55. data/doc/css/full_list.css +0 -58
  56. data/doc/css/style.css +0 -496
  57. data/doc/file.README.html +0 -299
  58. data/doc/file_list.html +0 -56
  59. data/doc/frames.html +0 -17
  60. data/doc/index.html +0 -299
  61. data/doc/js/app.js +0 -314
  62. data/doc/js/full_list.js +0 -216
  63. data/doc/js/jquery.js +0 -4
  64. data/doc/method_list.html +0 -1139
  65. data/doc/top-level-namespace.html +0 -110
  66. data/lib/timeboss/calendar/support.rb +0 -8
@@ -1,299 +0,0 @@
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
- File: README
8
-
9
- &mdash; Documentation by YARD 0.9.25
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 = "README";
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="file_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</a> &raquo;
40
- <span class="title">File: README</span>
41
-
42
- </div>
43
-
44
- <div id="search">
45
-
46
- <a class="full_list_link" id="class_list_link"
47
- href="class_list.html">
48
-
49
- <svg width="24" height="24">
50
- <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
51
- <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
52
- <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
53
- </svg>
54
- </a>
55
-
56
- </div>
57
- <div class="clear"></div>
58
- </div>
59
-
60
- <div id="content"><div id='filecontents'>
61
- <h1 id="label-TimeBoss+rdoc-image-3Ahttps-3A-2F-2Ftravis-ci.com-2Fkevinstuffandthings-2Ftimeboss.svg-3Fbranch-3Dmaster+rdoc-image-3Ahttps-3A-2F-2Fbadge.fury.io-2Frb-2Ftimeboss.svg">TimeBoss <a href="https://travis-ci.com/kevinstuffandthings/timeboss"><img src="https://travis-ci.com/kevinstuffandthings/timeboss.svg?branch=master"></a> <a href="https://badge.fury.io/rb/timeboss"><img src="https://badge.fury.io/rb/timeboss.svg"></a></h1>
62
-
63
- <p>A gem providing convenient navigation of the <a
64
- href="https://en.wikipedia.org/wiki/Broadcast_calendar">Broadcast
65
- Calendar</a>. Originally developed for <a
66
- href="https://simulmedia.com">Simulmedia</a>.</p>
67
-
68
- <h2 id="label-Installation">Installation</h2>
69
-
70
- <p>Add this line to your application&#39;s Gemfile:</p>
71
-
72
- <pre class="code ruby"><code class="ruby"><span class='comment'># update with the version of your choice
73
- </span><span class='id identifier rubyid_gem'>gem</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>timeboss</span><span class='tstring_end'>&#39;</span></span>
74
- </code></pre>
75
-
76
- <p>And then execute:</p>
77
-
78
- <pre class="code ruby"><code class="ruby">$ bundle install</code></pre>
79
-
80
- <p>Or install it yourself as:</p>
81
-
82
- <pre class="code ruby"><code class="ruby">$ gem install timeboss</code></pre>
83
-
84
- <h2 id="label-Usage">Usage</h2>
85
-
86
- <p>Supports <code>year</code>, <code>half</code>, <code>quarter</code>,
87
- <code>month</code>, <code>week</code>, and <code>day</code>.</p>
88
-
89
- <p>Prepare your calendar for use:</p>
90
-
91
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>timeboss/calendars/broadcast</span><span class='tstring_end'>&#39;</span></span>
92
-
93
- <span class='id identifier rubyid_calendar'>calendar</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="TimeBoss.html" title="TimeBoss (module)">TimeBoss</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="TimeBoss/Calendars.html" title="TimeBoss::Calendars (module)">Calendars</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="TimeBoss/Calendars/Broadcast.html" title="TimeBoss::Calendars::Broadcast (class)">Broadcast</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="TimeBoss/Calendars/Broadcast.html#initialize-instance_method" title="TimeBoss::Calendars::Broadcast#initialize (method)">new</a></span></span>
94
- <span class='comment'># =&gt; #&lt;TimeBoss::Calendars::Broadcast:0x007f82d50f0af0 @basis=TimeBoss::Calendars::Broadcast::Basis&gt;
95
- </span></code></pre>
96
-
97
- <p>You can ask simple questions of the calendar:</p>
98
-
99
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_period'>period</span> <span class='op'>=</span> <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2019Q4</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'># or &#39;2018&#39;, or &#39;2019-12-21&#39;, or &#39;2020W32&#39;, or &#39;2020M3W2&#39;
100
- </span><span class='comment'># =&gt; #&lt;TimeBoss::Calendar::Quarter:0x007f82d50e2478&gt;
101
- </span><span class='id identifier rubyid_period'>period</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
102
- <span class='comment'># =&gt; &quot;2019Q4: 2019-09-30 thru 2019-12-29&quot;
103
- </span><span class='id identifier rubyid_period'>period</span><span class='period'>.</span><span class='id identifier rubyid_next'>next</span><span class='period'>.</span><span class='id identifier rubyid_start_date'>start_date</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='comment'># try previous, too!
104
- </span><span class='comment'># =&gt; &quot;2019-12-30&quot;
105
- </span><span class='lparen'>(</span><span class='id identifier rubyid_period'>period</span> <span class='op'>+</span> <span class='int'>3</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_start_date'>start_date</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='comment'># try subtraction, too!
106
- </span><span class='comment'># =&gt; &quot;2020-06-29&quot;
107
- </span><span class='id identifier rubyid_period'>period</span><span class='period'>.</span><span class='id identifier rubyid_offset'>offset</span><span class='lparen'>(</span><span class='int'>3</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_start_date'>start_date</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='comment'># works with negatives, too!
108
- </span><span class='comment'># =&gt; &quot;2020-06-29&quot;
109
- </span><span class='id identifier rubyid_period'>period</span><span class='period'>.</span><span class='id identifier rubyid_current?'>current?</span> <span class='comment'># does today fall within this period?
110
- </span><span class='comment'># =&gt; false
111
- </span>
112
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_year_for'>year_for</span><span class='lparen'>(</span><span class='const'>Date</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2018-12-31</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
113
- <span class='comment'># =&gt; &quot;2019: 2018-12-31 thru 2019-12-29&quot;
114
- </span>
115
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_month'>this_month</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='comment'># your results may vary
116
- </span><span class='comment'># =&gt; &quot;2019M12: 2019-11-25 thru 2019-12-29&quot;
117
- </span>
118
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_years_back'>years_back</span><span class='lparen'>(</span><span class='int'>2</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_y'>y</span><span class='op'>|</span> <span class='id identifier rubyid_y'>y</span><span class='period'>.</span><span class='id identifier rubyid_start_date'>start_date</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='rbrace'>}</span> <span class='comment'># run in 2020
119
- </span><span class='comment'># =&gt; [&quot;2018-12-31&quot;, &quot;2019-12-30&quot;]
120
- </span>
121
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_months_ago'>months_ago</span><span class='lparen'>(</span><span class='int'>3</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='comment'># run in 2020M7
122
- </span><span class='comment'># =&gt; &quot;2020M4&quot;
123
- </span>
124
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_weeks_ahead'>weeks_ahead</span><span class='lparen'>(</span><span class='int'>3</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='comment'># run in 2020W29
125
- </span><span class='comment'># =&gt; &quot;2020W32&quot;
126
- </span></code></pre>
127
-
128
- <p>The resulting periods can be formatted a variety of (parsable) ways:</p>
129
-
130
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_entry'>entry</span> <span class='op'>=</span> <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2020M24</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
131
- <span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_format'>format</span>
132
- <span class='comment'># =&gt; &quot;2020H1Q2M3W2&quot;
133
- </span>
134
- <span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_format'>format</span><span class='lparen'>(</span><span class='symbol'>:quarter</span><span class='rparen'>)</span>
135
- <span class='comment'># =&gt; &quot;2020Q2W11&quot;
136
- </span>
137
- <span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_format'>format</span><span class='lparen'>(</span><span class='symbol'>:quarter</span><span class='comma'>,</span> <span class='symbol'>:month</span><span class='rparen'>)</span>
138
- <span class='comment'># =&gt; &quot;2020Q2M3W2&quot;
139
- </span></code></pre>
140
-
141
- <p><em>Note: all parsable descriptors should be ordered by chronological
142
- specificity (from least to most)</em></p>
143
-
144
- <p>Each type of period can give you information about its constituent periods:</p>
145
-
146
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_month'>this_month</span><span class='period'>.</span><span class='id identifier rubyid_weeks'>weeks</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:to_s</span><span class='rparen'>)</span>
147
- <span class='comment'># =&gt; [&quot;2020M1W1: 2019-12-30 thru 2020-01-05&quot;, &quot;2020M1W2: 2020-01-06 thru 2020-01-12&quot;, &quot;2020M1W3: 2020-01-13 thru 2020-01-19&quot;, &quot;2020M1W4: 2020-01-20 thru 2020-01-26&quot;]
148
- </span>
149
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_year'>this_year</span><span class='period'>.</span><span class='id identifier rubyid_weeks'>weeks</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
150
- <span class='comment'># =&gt; &quot;2020W52: 2020-12-21 thru 2020-12-27&quot;
151
- </span>
152
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_last_month'>last_month</span><span class='period'>.</span><span class='id identifier rubyid_quarter'>quarter</span><span class='period'>.</span><span class='id identifier rubyid_title'>title</span> <span class='comment'># today is 2020-07-15
153
- </span><span class='comment'># =&gt; &quot;Q2 2020&quot;
154
- </span>
155
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2020Q1</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_months'>months</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:name</span><span class='rparen'>)</span>
156
- <span class='comment'># =&gt; [&quot;2020M1&quot;, &quot;2020M2&quot;, &quot;2020M3&quot;]
157
- </span></code></pre>
158
-
159
- <p>Period shifting is easy. Note that the shifts are relative to today, not
160
- the base date. A shift examines the base period to find its offset into the
161
- shifting period size, and project it relative to now.</p>
162
-
163
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Q3</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_years_ago'>years_ago</span><span class='lparen'>(</span><span class='int'>5</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_title'>title</span>
164
- <span class='comment'># =&gt; &quot;Q3 2015&quot;
165
- </span>
166
- <span class='id identifier rubyid_week'>week</span> <span class='op'>=</span> <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_week'>this_week</span> <span class='comment'># run 2020W29
167
- </span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_in_quarter'>in_quarter</span><span class='embexpr_end'>}</span><span class='tstring_content'> of </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_quarter'>quarter</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>; </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_in_year'>in_year</span><span class='embexpr_end'>}</span><span class='tstring_content'> of </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_year'>year</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
168
- <span class='comment'># =&gt; &quot;2020W29: 3 of 2020Q3; 29 of 2020&quot;
169
- </span>
170
- <span class='comment'># run 2020W29, this generates the same as above, because shifts are relative to date run!
171
- </span><span class='id identifier rubyid_week'>week</span> <span class='op'>=</span> <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2014W29</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_this_week'>this_week</span>
172
- <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_in_quarter'>in_quarter</span><span class='embexpr_end'>}</span><span class='tstring_content'> of </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_quarter'>quarter</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>; </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_in_year'>in_year</span><span class='embexpr_end'>}</span><span class='tstring_content'> of </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_year'>year</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
173
- <span class='comment'># =&gt; &quot;2020W29: 3 of 2020Q3; 29 of 2020&quot;
174
- </span>
175
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_week'>this_week</span><span class='period'>.</span><span class='id identifier rubyid_next_year'>next_year</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='comment'># run 2020W29
176
- </span><span class='comment'># =&gt; &quot;2021W29: 2021-07-12 thru 2021-07-18&quot;
177
- </span></code></pre>
178
-
179
- <p>Complicated range expressions can be parsed using the <code>..</code> range
180
- operator, or evaluated with <code>thru</code>:</p>
181
-
182
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2020M1 .. 2020M2</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_weeks'>weeks</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:title</span><span class='rparen'>)</span>
183
- <span class='comment'># =&gt; [&quot;Week of December 30, 2019&quot;, &quot;Week of January 6, 2020&quot;, &quot;Week of January 13, 2020&quot;, &quot;Week of January 20, 2020&quot;, &quot;Week of January 27, 2020&quot;, &quot;Week of February 3, 2020&quot;, &quot;Week of February 10, 2020&quot;, &quot;Week of February 17, 2020&quot;]
184
- </span>
185
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_quarter'>this_quarter</span><span class='period'>.</span><span class='id identifier rubyid_thru'>thru</span><span class='lparen'>(</span><span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_quarter'>this_quarter</span><span class='op'>+</span><span class='int'>2</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_months'>months</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:name</span><span class='rparen'>)</span> <span class='comment'># run in 2020Q3
186
- </span><span class='comment'># =&gt; [&quot;2020M7&quot;, &quot;2020M8&quot;, &quot;2020M9&quot;, &quot;2020M10&quot;, &quot;2020M11&quot;, &quot;2020M12&quot;, &quot;2021M1&quot;, &quot;2021M2&quot;, &quot;2021M3&quot;]
187
- </span>
188
- <span class='id identifier rubyid_period'>period</span> <span class='op'>=</span> <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2020W3..2020Q1</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
189
- <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_period'>period</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>: from </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_period'>period</span><span class='period'>.</span><span class='id identifier rubyid_start_date'>start_date</span><span class='embexpr_end'>}</span><span class='tstring_content'> thru </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_period'>period</span><span class='period'>.</span><span class='id identifier rubyid_end_date'>end_date</span><span class='embexpr_end'>}</span><span class='tstring_content'> (current=</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_period'>period</span><span class='period'>.</span><span class='id identifier rubyid_current?'>current?</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span>
190
- <span class='comment'># =&gt; &quot;2020W3 .. 2020Q1: from 2020-01-13 thru 2020-03-29 (current=false)&quot;
191
- </span></code></pre>
192
-
193
- <p>The examples above are just samples. Try different periods, operators, etc.</p>
194
-
195
- <h3 id="label-Shell">Shell</h3>
196
-
197
- <p>To open an IRB shell for the broadcast calendar, use the <code>tbsh</code>
198
- executable, or the <code>timeboss:calendars:broadcast:shell</code> rake
199
- task. You will find yourself in the context of an instantiated
200
- <code>TimeBoss::Calendars::Broadcast</code> object:</p>
201
-
202
- <pre class="code ruby"><code class="ruby">$ tbsh
203
- 2.4.1 :001 &gt; next_quarter
204
- =&gt; #&lt;TimeBoss::Calendar::Quarter:0x007fe04c16a1c8 @calendar=#&lt;TimeBoss::Calendars::Broadcast:0x007fe04c1a0458 @basis=TimeBoss::Calendars::Broadcast::Basis&gt;, @year_index=2020, @index=4, @start_date=#&lt;Date: 2020-09-28 ((2459121j,0s,0n),+0s,2299161j)&gt;, @end_date=#&lt;Date: 2020-12-27 ((2459211j,0s,0n),+0s,2299161j)&gt;&gt;
205
- 2.4.1 :002 &gt; last_year
206
- =&gt; #&lt;TimeBoss::Calendar::Year:0x007fe04c161ca8 @calendar=#&lt;TimeBoss::Calendars::Broadcast:0x007fe04c1a0458 @basis=TimeBoss::Calendars::Broadcast::Basis&gt;, @year_index=2019, @index=1, @start_date=#&lt;Date: 2018-12-31 ((2458484j,0s,0n),+0s,2299161j)&gt;, @end_date=#&lt;Date: 2019-12-29 ((2458847j,0s,0n),+0s,2299161j)&gt;&gt;
207
- 2.4.1 :003 &gt; parse(&#39;this_quarter .. this_quarter+4&#39;).months.map(&amp;:name)
208
- =&gt; [&quot;2020M7&quot;, &quot;2020M8&quot;, &quot;2020M9&quot;, &quot;2020M10&quot;, &quot;2020M11&quot;, &quot;2020M12&quot;, &quot;2021M1&quot;, &quot;2021M2&quot;, &quot;2021M3&quot;, &quot;2021M4&quot;, &quot;2021M5&quot;, &quot;2021M6&quot;, &quot;2021M7&quot;, &quot;2021M8&quot;, &quot;2021M9&quot;]</code></pre>
209
-
210
- <p><em>Having trouble with the shell? If you are using the examples from the
211
- <a href="#Usage">Usage</a> section, keep in mind that the shell is already
212
- in the context of the calendar – so you don&#39;t need to specify the
213
- receiver!</em></p>
214
-
215
- <h2 id="label-Creating+new+calendars">Creating new calendars</h2>
216
-
217
- <p>To create a custom calendar, simply extend the
218
- <code>TimeBoss::Calendar</code> class, and implement a new
219
- <code>TimeBoss::Calendar::Support::MonthBasis</code> for it.</p>
220
-
221
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>timeboss/calendar</span><span class='tstring_end'>&#39;</span></span>
222
-
223
- <span class='kw'>module</span> <span class='const'>MyCalendars</span>
224
- <span class='kw'>class</span> <span class='const'>AugustFiscal</span> <span class='op'>&lt;</span> <span class='const'><span class='object_link'><a href="TimeBoss.html" title="TimeBoss (module)">TimeBoss</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="TimeBoss/Calendar.html" title="TimeBoss::Calendar (class)">Calendar</a></span></span>
225
- <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span>
226
- <span class='comment'># For each calendar, operation, the class will be instantiated with an ordinal value
227
- </span> <span class='comment'># for `year` and `month`. It is the instance&#39;s job to translate those ordinals into
228
- </span> <span class='comment'># `start_date` and `end_date` values, based on the desired behavior of the calendar.
229
- </span> <span class='comment'># With month rules defined, TimeBoss will be able to navigate all the relative periods
230
- </span> <span class='comment'># within the calendar.
231
- </span> <span class='kw'>super</span><span class='lparen'>(</span><span class='label'>basis:</span> <span class='const'>Basis</span><span class='rparen'>)</span>
232
- <span class='kw'>end</span>
233
-
234
- <span class='id identifier rubyid_private'>private</span>
235
-
236
- <span class='kw'>class</span> <span class='const'>Basis</span> <span class='op'>&lt;</span> <span class='const'><span class='object_link'><a href="TimeBoss.html" title="TimeBoss (module)">TimeBoss</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="TimeBoss/Calendar.html" title="TimeBoss::Calendar (class)">Calendar</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="TimeBoss/Calendar/Support.html" title="TimeBoss::Calendar::Support (module)">Support</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="TimeBoss/Calendar/Support/MonthBasis.html" title="TimeBoss::Calendar::Support::MonthBasis (class)">MonthBasis</a></span></span>
237
- <span class='comment'># In this example, August is the first month of the fiscal year. So an incoming 2020/1
238
- </span> <span class='comment'># value would translate to a gregorian 2019/8.
239
- </span> <span class='const'>START_MONTH</span> <span class='op'>=</span> <span class='int'>8</span>
240
-
241
- <span class='kw'>def</span> <span class='id identifier rubyid_start_date'>start_date</span>
242
- <span class='ivar'>@_start_date</span> <span class='op'>||=</span> <span class='kw'>begin</span>
243
- <span class='id identifier rubyid_date'>date</span> <span class='op'>=</span> <span class='const'>Date</span><span class='period'>.</span><span class='id identifier rubyid_civil'>civil</span><span class='lparen'>(</span><span class='id identifier rubyid_year_index'>year_index</span><span class='comma'>,</span> <span class='id identifier rubyid_month_index'>month_index</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span>
244
- <span class='id identifier rubyid_date'>date</span> <span class='op'>-</span> <span class='lparen'>(</span><span class='id identifier rubyid_date'>date</span><span class='period'>.</span><span class='id identifier rubyid_wday'>wday</span> <span class='op'>+</span> <span class='int'>7</span><span class='rparen'>)</span> <span class='op'>%</span> <span class='int'>7</span> <span class='comment'># In this calendar, months start Sunday.
245
- </span> <span class='kw'>end</span>
246
- <span class='kw'>end</span>
247
-
248
- <span class='kw'>def</span> <span class='id identifier rubyid_end_date'>end_date</span>
249
- <span class='ivar'>@_end_date</span> <span class='op'>||=</span> <span class='kw'>begin</span>
250
- <span class='id identifier rubyid_date'>date</span> <span class='op'>=</span> <span class='const'>Date</span><span class='period'>.</span><span class='id identifier rubyid_civil'>civil</span><span class='lparen'>(</span><span class='id identifier rubyid_year_index'>year_index</span><span class='comma'>,</span> <span class='id identifier rubyid_month_index'>month_index</span><span class='comma'>,</span> <span class='op'>-</span><span class='int'>1</span><span class='rparen'>)</span>
251
- <span class='id identifier rubyid_date'>date</span> <span class='op'>-</span> <span class='lparen'>(</span><span class='id identifier rubyid_date'>date</span><span class='period'>.</span><span class='id identifier rubyid_wday'>wday</span> <span class='op'>+</span> <span class='int'>1</span><span class='rparen'>)</span>
252
- <span class='kw'>end</span>
253
- <span class='kw'>end</span>
254
-
255
- <span class='id identifier rubyid_private'>private</span>
256
-
257
- <span class='kw'>def</span> <span class='id identifier rubyid_month_index'>month_index</span>
258
- <span class='lparen'>(</span><span class='lparen'>(</span><span class='id identifier rubyid_month'>month</span> <span class='op'>+</span> <span class='const'>START_MONTH</span> <span class='op'>-</span> <span class='int'>2</span><span class='rparen'>)</span> <span class='op'>%</span> <span class='int'>12</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='int'>1</span>
259
- <span class='kw'>end</span>
260
-
261
- <span class='kw'>def</span> <span class='id identifier rubyid_year_index'>year_index</span>
262
- <span class='id identifier rubyid_month'>month</span> <span class='op'>&gt;=</span> <span class='const'>START_MONTH</span> <span class='op'>?</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='int'>1</span>
263
- <span class='kw'>end</span>
264
- <span class='kw'>end</span>
265
- <span class='kw'>end</span>
266
- <span class='kw'>end</span>
267
- </code></pre>
268
-
269
- <p>With the new calendar implemented, it can be accessed in one of 2 ways:</p>
270
- <ul><li>
271
- <p>via traditional instantiation:</p>
272
-
273
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_calendar'>calendar</span> <span class='op'>=</span> <span class='const'>MyCalendars</span><span class='op'>::</span><span class='const'>AugustFiscal</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
274
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_year'>this_year</span>
275
- </code></pre>
276
- </li><li>
277
- <p>via <code>TimeBoss::Calendars</code>:</p>
278
-
279
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>timeboss/calendars</span><span class='tstring_end'>&#39;</span></span>
280
- <span class='id identifier rubyid_calendar'>calendar</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="TimeBoss.html" title="TimeBoss (module)">TimeBoss</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="TimeBoss/Calendars.html" title="TimeBoss::Calendars (module)">Calendars</a></span></span><span class='lbracket'>[</span><span class='symbol'>:august_fiscal</span><span class='rbracket'>]</span>
281
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_year'>this_year</span>
282
- </code></pre>
283
- </li></ul>
284
-
285
- <h2 id="label-TODO">TODO</h2>
286
- <ul><li>
287
- <p>[ ] Add comprehensive documentation</p>
288
- </li></ul>
289
- </div></div>
290
-
291
- <div id="footer">
292
- Generated on Sun Jul 19 10:12:10 2020 by
293
- <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
294
- 0.9.25 (ruby-2.4.1).
295
- </div>
296
-
297
- </div>
298
- </body>
299
- </html>
@@ -1,56 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
5
- <meta charset="utf-8" />
6
-
7
- <link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" />
8
-
9
- <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" />
10
-
11
-
12
-
13
- <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
14
-
15
- <script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
16
-
17
-
18
- <title>File List</title>
19
- <base id="base_target" target="_parent" />
20
- </head>
21
- <body>
22
- <div id="content">
23
- <div class="fixed_header">
24
- <h1 id="full_list_header">File List</h1>
25
- <div id="full_list_nav">
26
-
27
- <span><a target="_self" href="class_list.html">
28
- Classes
29
- </a></span>
30
-
31
- <span><a target="_self" href="method_list.html">
32
- Methods
33
- </a></span>
34
-
35
- <span><a target="_self" href="file_list.html">
36
- Files
37
- </a></span>
38
-
39
- </div>
40
-
41
- <div id="search">Search: <input type="text" /></div>
42
- </div>
43
-
44
- <ul id="full_list" class="file">
45
-
46
-
47
- <li id="object_README" class="odd">
48
- <div class="item"><span class="object_link"><a href="index.html" title="README">README</a></span></div>
49
- </li>
50
-
51
-
52
-
53
- </ul>
54
- </div>
55
- </body>
56
- </html>
@@ -1,17 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8">
5
- <title>Documentation by YARD 0.9.25</title>
6
- </head>
7
- <script type="text/javascript">
8
- var match = unescape(window.location.hash).match(/^#!(.+)/);
9
- var name = match ? match[1] : 'index.html';
10
- name = name.replace(/^(\w+):\/\//, '').replace(/^\/\//, '');
11
- window.top.location = name;
12
- </script>
13
- <noscript>
14
- <h1>Oops!</h1>
15
- <h2>YARD requires JavaScript!</h2>
16
- </noscript>
17
- </html>
@@ -1,299 +0,0 @@
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
- File: README
8
-
9
- &mdash; Documentation by YARD 0.9.25
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 = "README";
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</a> &raquo;
40
- <span class="title">File: README</span>
41
-
42
- </div>
43
-
44
- <div id="search">
45
-
46
- <a class="full_list_link" id="class_list_link"
47
- href="class_list.html">
48
-
49
- <svg width="24" height="24">
50
- <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
51
- <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
52
- <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
53
- </svg>
54
- </a>
55
-
56
- </div>
57
- <div class="clear"></div>
58
- </div>
59
-
60
- <div id="content"><div id='filecontents'>
61
- <h1 id="label-TimeBoss+rdoc-image-3Ahttps-3A-2F-2Ftravis-ci.com-2Fkevinstuffandthings-2Ftimeboss.svg-3Fbranch-3Dmaster+rdoc-image-3Ahttps-3A-2F-2Fbadge.fury.io-2Frb-2Ftimeboss.svg">TimeBoss <a href="https://travis-ci.com/kevinstuffandthings/timeboss"><img src="https://travis-ci.com/kevinstuffandthings/timeboss.svg?branch=master"></a> <a href="https://badge.fury.io/rb/timeboss"><img src="https://badge.fury.io/rb/timeboss.svg"></a></h1>
62
-
63
- <p>A gem providing convenient navigation of the <a
64
- href="https://en.wikipedia.org/wiki/Broadcast_calendar">Broadcast
65
- Calendar</a>. Originally developed for <a
66
- href="https://simulmedia.com">Simulmedia</a>.</p>
67
-
68
- <h2 id="label-Installation">Installation</h2>
69
-
70
- <p>Add this line to your application&#39;s Gemfile:</p>
71
-
72
- <pre class="code ruby"><code class="ruby"><span class='comment'># update with the version of your choice
73
- </span><span class='id identifier rubyid_gem'>gem</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>timeboss</span><span class='tstring_end'>&#39;</span></span>
74
- </code></pre>
75
-
76
- <p>And then execute:</p>
77
-
78
- <pre class="code ruby"><code class="ruby">$ bundle install</code></pre>
79
-
80
- <p>Or install it yourself as:</p>
81
-
82
- <pre class="code ruby"><code class="ruby">$ gem install timeboss</code></pre>
83
-
84
- <h2 id="label-Usage">Usage</h2>
85
-
86
- <p>Supports <code>year</code>, <code>half</code>, <code>quarter</code>,
87
- <code>month</code>, <code>week</code>, and <code>day</code>.</p>
88
-
89
- <p>Prepare your calendar for use:</p>
90
-
91
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>timeboss/calendars/broadcast</span><span class='tstring_end'>&#39;</span></span>
92
-
93
- <span class='id identifier rubyid_calendar'>calendar</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="TimeBoss.html" title="TimeBoss (module)">TimeBoss</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="TimeBoss/Calendars.html" title="TimeBoss::Calendars (module)">Calendars</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="TimeBoss/Calendars/Broadcast.html" title="TimeBoss::Calendars::Broadcast (class)">Broadcast</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="TimeBoss/Calendars/Broadcast.html#initialize-instance_method" title="TimeBoss::Calendars::Broadcast#initialize (method)">new</a></span></span>
94
- <span class='comment'># =&gt; #&lt;TimeBoss::Calendars::Broadcast:0x007f82d50f0af0 @basis=TimeBoss::Calendars::Broadcast::Basis&gt;
95
- </span></code></pre>
96
-
97
- <p>You can ask simple questions of the calendar:</p>
98
-
99
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_period'>period</span> <span class='op'>=</span> <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2019Q4</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'># or &#39;2018&#39;, or &#39;2019-12-21&#39;, or &#39;2020W32&#39;, or &#39;2020M3W2&#39;
100
- </span><span class='comment'># =&gt; #&lt;TimeBoss::Calendar::Quarter:0x007f82d50e2478&gt;
101
- </span><span class='id identifier rubyid_period'>period</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
102
- <span class='comment'># =&gt; &quot;2019Q4: 2019-09-30 thru 2019-12-29&quot;
103
- </span><span class='id identifier rubyid_period'>period</span><span class='period'>.</span><span class='id identifier rubyid_next'>next</span><span class='period'>.</span><span class='id identifier rubyid_start_date'>start_date</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='comment'># try previous, too!
104
- </span><span class='comment'># =&gt; &quot;2019-12-30&quot;
105
- </span><span class='lparen'>(</span><span class='id identifier rubyid_period'>period</span> <span class='op'>+</span> <span class='int'>3</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_start_date'>start_date</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='comment'># try subtraction, too!
106
- </span><span class='comment'># =&gt; &quot;2020-06-29&quot;
107
- </span><span class='id identifier rubyid_period'>period</span><span class='period'>.</span><span class='id identifier rubyid_offset'>offset</span><span class='lparen'>(</span><span class='int'>3</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_start_date'>start_date</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='comment'># works with negatives, too!
108
- </span><span class='comment'># =&gt; &quot;2020-06-29&quot;
109
- </span><span class='id identifier rubyid_period'>period</span><span class='period'>.</span><span class='id identifier rubyid_current?'>current?</span> <span class='comment'># does today fall within this period?
110
- </span><span class='comment'># =&gt; false
111
- </span>
112
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_year_for'>year_for</span><span class='lparen'>(</span><span class='const'>Date</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2018-12-31</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
113
- <span class='comment'># =&gt; &quot;2019: 2018-12-31 thru 2019-12-29&quot;
114
- </span>
115
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_month'>this_month</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='comment'># your results may vary
116
- </span><span class='comment'># =&gt; &quot;2019M12: 2019-11-25 thru 2019-12-29&quot;
117
- </span>
118
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_years_back'>years_back</span><span class='lparen'>(</span><span class='int'>2</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_y'>y</span><span class='op'>|</span> <span class='id identifier rubyid_y'>y</span><span class='period'>.</span><span class='id identifier rubyid_start_date'>start_date</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='rbrace'>}</span> <span class='comment'># run in 2020
119
- </span><span class='comment'># =&gt; [&quot;2018-12-31&quot;, &quot;2019-12-30&quot;]
120
- </span>
121
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_months_ago'>months_ago</span><span class='lparen'>(</span><span class='int'>3</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='comment'># run in 2020M7
122
- </span><span class='comment'># =&gt; &quot;2020M4&quot;
123
- </span>
124
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_weeks_ahead'>weeks_ahead</span><span class='lparen'>(</span><span class='int'>3</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='comment'># run in 2020W29
125
- </span><span class='comment'># =&gt; &quot;2020W32&quot;
126
- </span></code></pre>
127
-
128
- <p>The resulting periods can be formatted a variety of (parsable) ways:</p>
129
-
130
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_entry'>entry</span> <span class='op'>=</span> <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2020M24</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
131
- <span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_format'>format</span>
132
- <span class='comment'># =&gt; &quot;2020H1Q2M3W2&quot;
133
- </span>
134
- <span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_format'>format</span><span class='lparen'>(</span><span class='symbol'>:quarter</span><span class='rparen'>)</span>
135
- <span class='comment'># =&gt; &quot;2020Q2W11&quot;
136
- </span>
137
- <span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_format'>format</span><span class='lparen'>(</span><span class='symbol'>:quarter</span><span class='comma'>,</span> <span class='symbol'>:month</span><span class='rparen'>)</span>
138
- <span class='comment'># =&gt; &quot;2020Q2M3W2&quot;
139
- </span></code></pre>
140
-
141
- <p><em>Note: all parsable descriptors should be ordered by chronological
142
- specificity (from least to most)</em></p>
143
-
144
- <p>Each type of period can give you information about its constituent periods:</p>
145
-
146
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_month'>this_month</span><span class='period'>.</span><span class='id identifier rubyid_weeks'>weeks</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:to_s</span><span class='rparen'>)</span>
147
- <span class='comment'># =&gt; [&quot;2020M1W1: 2019-12-30 thru 2020-01-05&quot;, &quot;2020M1W2: 2020-01-06 thru 2020-01-12&quot;, &quot;2020M1W3: 2020-01-13 thru 2020-01-19&quot;, &quot;2020M1W4: 2020-01-20 thru 2020-01-26&quot;]
148
- </span>
149
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_year'>this_year</span><span class='period'>.</span><span class='id identifier rubyid_weeks'>weeks</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
150
- <span class='comment'># =&gt; &quot;2020W52: 2020-12-21 thru 2020-12-27&quot;
151
- </span>
152
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_last_month'>last_month</span><span class='period'>.</span><span class='id identifier rubyid_quarter'>quarter</span><span class='period'>.</span><span class='id identifier rubyid_title'>title</span> <span class='comment'># today is 2020-07-15
153
- </span><span class='comment'># =&gt; &quot;Q2 2020&quot;
154
- </span>
155
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2020Q1</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_months'>months</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:name</span><span class='rparen'>)</span>
156
- <span class='comment'># =&gt; [&quot;2020M1&quot;, &quot;2020M2&quot;, &quot;2020M3&quot;]
157
- </span></code></pre>
158
-
159
- <p>Period shifting is easy. Note that the shifts are relative to today, not
160
- the base date. A shift examines the base period to find its offset into the
161
- shifting period size, and project it relative to now.</p>
162
-
163
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Q3</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_years_ago'>years_ago</span><span class='lparen'>(</span><span class='int'>5</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_title'>title</span>
164
- <span class='comment'># =&gt; &quot;Q3 2015&quot;
165
- </span>
166
- <span class='id identifier rubyid_week'>week</span> <span class='op'>=</span> <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_week'>this_week</span> <span class='comment'># run 2020W29
167
- </span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_in_quarter'>in_quarter</span><span class='embexpr_end'>}</span><span class='tstring_content'> of </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_quarter'>quarter</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>; </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_in_year'>in_year</span><span class='embexpr_end'>}</span><span class='tstring_content'> of </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_year'>year</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
168
- <span class='comment'># =&gt; &quot;2020W29: 3 of 2020Q3; 29 of 2020&quot;
169
- </span>
170
- <span class='comment'># run 2020W29, this generates the same as above, because shifts are relative to date run!
171
- </span><span class='id identifier rubyid_week'>week</span> <span class='op'>=</span> <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2014W29</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_this_week'>this_week</span>
172
- <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_in_quarter'>in_quarter</span><span class='embexpr_end'>}</span><span class='tstring_content'> of </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_quarter'>quarter</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>; </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_in_year'>in_year</span><span class='embexpr_end'>}</span><span class='tstring_content'> of </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_week'>week</span><span class='period'>.</span><span class='id identifier rubyid_year'>year</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
173
- <span class='comment'># =&gt; &quot;2020W29: 3 of 2020Q3; 29 of 2020&quot;
174
- </span>
175
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_week'>this_week</span><span class='period'>.</span><span class='id identifier rubyid_next_year'>next_year</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='comment'># run 2020W29
176
- </span><span class='comment'># =&gt; &quot;2021W29: 2021-07-12 thru 2021-07-18&quot;
177
- </span></code></pre>
178
-
179
- <p>Complicated range expressions can be parsed using the <code>..</code> range
180
- operator, or evaluated with <code>thru</code>:</p>
181
-
182
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2020M1 .. 2020M2</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_weeks'>weeks</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:title</span><span class='rparen'>)</span>
183
- <span class='comment'># =&gt; [&quot;Week of December 30, 2019&quot;, &quot;Week of January 6, 2020&quot;, &quot;Week of January 13, 2020&quot;, &quot;Week of January 20, 2020&quot;, &quot;Week of January 27, 2020&quot;, &quot;Week of February 3, 2020&quot;, &quot;Week of February 10, 2020&quot;, &quot;Week of February 17, 2020&quot;]
184
- </span>
185
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_quarter'>this_quarter</span><span class='period'>.</span><span class='id identifier rubyid_thru'>thru</span><span class='lparen'>(</span><span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_quarter'>this_quarter</span><span class='op'>+</span><span class='int'>2</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_months'>months</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:name</span><span class='rparen'>)</span> <span class='comment'># run in 2020Q3
186
- </span><span class='comment'># =&gt; [&quot;2020M7&quot;, &quot;2020M8&quot;, &quot;2020M9&quot;, &quot;2020M10&quot;, &quot;2020M11&quot;, &quot;2020M12&quot;, &quot;2021M1&quot;, &quot;2021M2&quot;, &quot;2021M3&quot;]
187
- </span>
188
- <span class='id identifier rubyid_period'>period</span> <span class='op'>=</span> <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2020W3..2020Q1</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
189
- <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_period'>period</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>: from </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_period'>period</span><span class='period'>.</span><span class='id identifier rubyid_start_date'>start_date</span><span class='embexpr_end'>}</span><span class='tstring_content'> thru </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_period'>period</span><span class='period'>.</span><span class='id identifier rubyid_end_date'>end_date</span><span class='embexpr_end'>}</span><span class='tstring_content'> (current=</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_period'>period</span><span class='period'>.</span><span class='id identifier rubyid_current?'>current?</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span>
190
- <span class='comment'># =&gt; &quot;2020W3 .. 2020Q1: from 2020-01-13 thru 2020-03-29 (current=false)&quot;
191
- </span></code></pre>
192
-
193
- <p>The examples above are just samples. Try different periods, operators, etc.</p>
194
-
195
- <h3 id="label-Shell">Shell</h3>
196
-
197
- <p>To open an IRB shell for the broadcast calendar, use the <code>tbsh</code>
198
- executable, or the <code>timeboss:calendars:broadcast:shell</code> rake
199
- task. You will find yourself in the context of an instantiated
200
- <code>TimeBoss::Calendars::Broadcast</code> object:</p>
201
-
202
- <pre class="code ruby"><code class="ruby">$ tbsh
203
- 2.4.1 :001 &gt; next_quarter
204
- =&gt; #&lt;TimeBoss::Calendar::Quarter:0x007fe04c16a1c8 @calendar=#&lt;TimeBoss::Calendars::Broadcast:0x007fe04c1a0458 @basis=TimeBoss::Calendars::Broadcast::Basis&gt;, @year_index=2020, @index=4, @start_date=#&lt;Date: 2020-09-28 ((2459121j,0s,0n),+0s,2299161j)&gt;, @end_date=#&lt;Date: 2020-12-27 ((2459211j,0s,0n),+0s,2299161j)&gt;&gt;
205
- 2.4.1 :002 &gt; last_year
206
- =&gt; #&lt;TimeBoss::Calendar::Year:0x007fe04c161ca8 @calendar=#&lt;TimeBoss::Calendars::Broadcast:0x007fe04c1a0458 @basis=TimeBoss::Calendars::Broadcast::Basis&gt;, @year_index=2019, @index=1, @start_date=#&lt;Date: 2018-12-31 ((2458484j,0s,0n),+0s,2299161j)&gt;, @end_date=#&lt;Date: 2019-12-29 ((2458847j,0s,0n),+0s,2299161j)&gt;&gt;
207
- 2.4.1 :003 &gt; parse(&#39;this_quarter .. this_quarter+4&#39;).months.map(&amp;:name)
208
- =&gt; [&quot;2020M7&quot;, &quot;2020M8&quot;, &quot;2020M9&quot;, &quot;2020M10&quot;, &quot;2020M11&quot;, &quot;2020M12&quot;, &quot;2021M1&quot;, &quot;2021M2&quot;, &quot;2021M3&quot;, &quot;2021M4&quot;, &quot;2021M5&quot;, &quot;2021M6&quot;, &quot;2021M7&quot;, &quot;2021M8&quot;, &quot;2021M9&quot;]</code></pre>
209
-
210
- <p><em>Having trouble with the shell? If you are using the examples from the
211
- <a href="#Usage">Usage</a> section, keep in mind that the shell is already
212
- in the context of the calendar – so you don&#39;t need to specify the
213
- receiver!</em></p>
214
-
215
- <h2 id="label-Creating+new+calendars">Creating new calendars</h2>
216
-
217
- <p>To create a custom calendar, simply extend the
218
- <code>TimeBoss::Calendar</code> class, and implement a new
219
- <code>TimeBoss::Calendar::Support::MonthBasis</code> for it.</p>
220
-
221
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>timeboss/calendar</span><span class='tstring_end'>&#39;</span></span>
222
-
223
- <span class='kw'>module</span> <span class='const'>MyCalendars</span>
224
- <span class='kw'>class</span> <span class='const'>AugustFiscal</span> <span class='op'>&lt;</span> <span class='const'><span class='object_link'><a href="TimeBoss.html" title="TimeBoss (module)">TimeBoss</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="TimeBoss/Calendar.html" title="TimeBoss::Calendar (class)">Calendar</a></span></span>
225
- <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span>
226
- <span class='comment'># For each calendar, operation, the class will be instantiated with an ordinal value
227
- </span> <span class='comment'># for `year` and `month`. It is the instance&#39;s job to translate those ordinals into
228
- </span> <span class='comment'># `start_date` and `end_date` values, based on the desired behavior of the calendar.
229
- </span> <span class='comment'># With month rules defined, TimeBoss will be able to navigate all the relative periods
230
- </span> <span class='comment'># within the calendar.
231
- </span> <span class='kw'>super</span><span class='lparen'>(</span><span class='label'>basis:</span> <span class='const'>Basis</span><span class='rparen'>)</span>
232
- <span class='kw'>end</span>
233
-
234
- <span class='id identifier rubyid_private'>private</span>
235
-
236
- <span class='kw'>class</span> <span class='const'>Basis</span> <span class='op'>&lt;</span> <span class='const'><span class='object_link'><a href="TimeBoss.html" title="TimeBoss (module)">TimeBoss</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="TimeBoss/Calendar.html" title="TimeBoss::Calendar (class)">Calendar</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="TimeBoss/Calendar/Support.html" title="TimeBoss::Calendar::Support (module)">Support</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="TimeBoss/Calendar/Support/MonthBasis.html" title="TimeBoss::Calendar::Support::MonthBasis (class)">MonthBasis</a></span></span>
237
- <span class='comment'># In this example, August is the first month of the fiscal year. So an incoming 2020/1
238
- </span> <span class='comment'># value would translate to a gregorian 2019/8.
239
- </span> <span class='const'>START_MONTH</span> <span class='op'>=</span> <span class='int'>8</span>
240
-
241
- <span class='kw'>def</span> <span class='id identifier rubyid_start_date'>start_date</span>
242
- <span class='ivar'>@_start_date</span> <span class='op'>||=</span> <span class='kw'>begin</span>
243
- <span class='id identifier rubyid_date'>date</span> <span class='op'>=</span> <span class='const'>Date</span><span class='period'>.</span><span class='id identifier rubyid_civil'>civil</span><span class='lparen'>(</span><span class='id identifier rubyid_year_index'>year_index</span><span class='comma'>,</span> <span class='id identifier rubyid_month_index'>month_index</span><span class='comma'>,</span> <span class='int'>1</span><span class='rparen'>)</span>
244
- <span class='id identifier rubyid_date'>date</span> <span class='op'>-</span> <span class='lparen'>(</span><span class='id identifier rubyid_date'>date</span><span class='period'>.</span><span class='id identifier rubyid_wday'>wday</span> <span class='op'>+</span> <span class='int'>7</span><span class='rparen'>)</span> <span class='op'>%</span> <span class='int'>7</span> <span class='comment'># In this calendar, months start Sunday.
245
- </span> <span class='kw'>end</span>
246
- <span class='kw'>end</span>
247
-
248
- <span class='kw'>def</span> <span class='id identifier rubyid_end_date'>end_date</span>
249
- <span class='ivar'>@_end_date</span> <span class='op'>||=</span> <span class='kw'>begin</span>
250
- <span class='id identifier rubyid_date'>date</span> <span class='op'>=</span> <span class='const'>Date</span><span class='period'>.</span><span class='id identifier rubyid_civil'>civil</span><span class='lparen'>(</span><span class='id identifier rubyid_year_index'>year_index</span><span class='comma'>,</span> <span class='id identifier rubyid_month_index'>month_index</span><span class='comma'>,</span> <span class='op'>-</span><span class='int'>1</span><span class='rparen'>)</span>
251
- <span class='id identifier rubyid_date'>date</span> <span class='op'>-</span> <span class='lparen'>(</span><span class='id identifier rubyid_date'>date</span><span class='period'>.</span><span class='id identifier rubyid_wday'>wday</span> <span class='op'>+</span> <span class='int'>1</span><span class='rparen'>)</span>
252
- <span class='kw'>end</span>
253
- <span class='kw'>end</span>
254
-
255
- <span class='id identifier rubyid_private'>private</span>
256
-
257
- <span class='kw'>def</span> <span class='id identifier rubyid_month_index'>month_index</span>
258
- <span class='lparen'>(</span><span class='lparen'>(</span><span class='id identifier rubyid_month'>month</span> <span class='op'>+</span> <span class='const'>START_MONTH</span> <span class='op'>-</span> <span class='int'>2</span><span class='rparen'>)</span> <span class='op'>%</span> <span class='int'>12</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='int'>1</span>
259
- <span class='kw'>end</span>
260
-
261
- <span class='kw'>def</span> <span class='id identifier rubyid_year_index'>year_index</span>
262
- <span class='id identifier rubyid_month'>month</span> <span class='op'>&gt;=</span> <span class='const'>START_MONTH</span> <span class='op'>?</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='int'>1</span>
263
- <span class='kw'>end</span>
264
- <span class='kw'>end</span>
265
- <span class='kw'>end</span>
266
- <span class='kw'>end</span>
267
- </code></pre>
268
-
269
- <p>With the new calendar implemented, it can be accessed in one of 2 ways:</p>
270
- <ul><li>
271
- <p>via traditional instantiation:</p>
272
-
273
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_calendar'>calendar</span> <span class='op'>=</span> <span class='const'>MyCalendars</span><span class='op'>::</span><span class='const'>AugustFiscal</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
274
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_year'>this_year</span>
275
- </code></pre>
276
- </li><li>
277
- <p>via <code>TimeBoss::Calendars</code>:</p>
278
-
279
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>timeboss/calendars</span><span class='tstring_end'>&#39;</span></span>
280
- <span class='id identifier rubyid_calendar'>calendar</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="TimeBoss.html" title="TimeBoss (module)">TimeBoss</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="TimeBoss/Calendars.html" title="TimeBoss::Calendars (module)">Calendars</a></span></span><span class='lbracket'>[</span><span class='symbol'>:august_fiscal</span><span class='rbracket'>]</span>
281
- <span class='id identifier rubyid_calendar'>calendar</span><span class='period'>.</span><span class='id identifier rubyid_this_year'>this_year</span>
282
- </code></pre>
283
- </li></ul>
284
-
285
- <h2 id="label-TODO">TODO</h2>
286
- <ul><li>
287
- <p>[ ] Add comprehensive documentation</p>
288
- </li></ul>
289
- </div></div>
290
-
291
- <div id="footer">
292
- Generated on Sun Jul 19 10:12:10 2020 by
293
- <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
294
- 0.9.25 (ruby-2.4.1).
295
- </div>
296
-
297
- </div>
298
- </body>
299
- </html>