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.
- checksums.yaml +4 -4
- data/.gitignore +5 -4
- data/lib/timeboss/calendar.rb +0 -1
- data/lib/timeboss/calendar/day.rb +0 -1
- data/lib/timeboss/calendar/half.rb +0 -1
- data/lib/timeboss/calendar/month.rb +0 -1
- data/lib/timeboss/calendar/parser.rb +0 -1
- data/lib/timeboss/calendar/period.rb +0 -1
- data/lib/timeboss/calendar/quarter.rb +0 -1
- data/lib/timeboss/calendar/support/formatter.rb +2 -2
- data/lib/timeboss/calendar/support/month_basis.rb +0 -2
- data/lib/timeboss/calendar/support/monthly_unit.rb +0 -2
- data/lib/timeboss/calendar/support/navigable.rb +0 -1
- data/lib/timeboss/calendar/support/shiftable.rb +218 -29
- data/lib/timeboss/calendar/support/translatable.rb +92 -0
- data/lib/timeboss/calendar/support/unit.rb +2 -1
- data/lib/timeboss/calendar/waypoints.rb +0 -1
- data/lib/timeboss/calendar/waypoints/absolute.rb +0 -1
- data/lib/timeboss/calendar/waypoints/relative.rb +0 -1
- data/lib/timeboss/calendar/week.rb +0 -1
- data/lib/timeboss/calendar/year.rb +0 -1
- data/lib/timeboss/calendars.rb +0 -1
- data/lib/timeboss/version.rb +1 -1
- metadata +4 -49
- data/doc/TimeBoss.html +0 -146
- data/doc/TimeBoss/Calendar.html +0 -137
- data/doc/TimeBoss/Calendar/Day.html +0 -594
- data/doc/TimeBoss/Calendar/Half.html +0 -396
- data/doc/TimeBoss/Calendar/Month.html +0 -396
- data/doc/TimeBoss/Calendar/Parser.html +0 -386
- data/doc/TimeBoss/Calendar/Period.html +0 -841
- data/doc/TimeBoss/Calendar/Quarter.html +0 -396
- data/doc/TimeBoss/Calendar/Support.html +0 -131
- data/doc/TimeBoss/Calendar/Support/Formatter.html +0 -459
- data/doc/TimeBoss/Calendar/Support/MonthBased.html +0 -591
- data/doc/TimeBoss/Calendar/Support/MonthBasis.html +0 -437
- data/doc/TimeBoss/Calendar/Support/MonthlyUnit.html +0 -591
- data/doc/TimeBoss/Calendar/Support/Navigable.html +0 -723
- data/doc/TimeBoss/Calendar/Support/Shiftable.html +0 -138
- data/doc/TimeBoss/Calendar/Support/Unit.html +0 -1299
- data/doc/TimeBoss/Calendar/Waypoints.html +0 -155
- data/doc/TimeBoss/Calendar/Waypoints/Absolute.html +0 -1378
- data/doc/TimeBoss/Calendar/Waypoints/Relative.html +0 -4308
- data/doc/TimeBoss/Calendar/Week.html +0 -671
- data/doc/TimeBoss/Calendar/Year.html +0 -319
- data/doc/TimeBoss/Calendars.html +0 -336
- data/doc/TimeBoss/Calendars/Broadcast.html +0 -221
- data/doc/TimeBoss/Calendars/Broadcast/Basis.html +0 -278
- data/doc/TimeBoss/Calendars/Entry.html +0 -399
- data/doc/TimeBoss/Support.html +0 -115
- data/doc/TimeBoss/Support/Shellable.html +0 -249
- data/doc/_index.html +0 -416
- data/doc/class_list.html +0 -51
- data/doc/css/common.css +0 -1
- data/doc/css/full_list.css +0 -58
- data/doc/css/style.css +0 -496
- data/doc/file.README.html +0 -299
- data/doc/file_list.html +0 -56
- data/doc/frames.html +0 -17
- data/doc/index.html +0 -299
- data/doc/js/app.js +0 -314
- data/doc/js/full_list.js +0 -216
- data/doc/js/jquery.js +0 -4
- data/doc/method_list.html +0 -1139
- data/doc/top-level-namespace.html +0 -110
- data/lib/timeboss/calendar/support.rb +0 -8
data/doc/file.README.html
DELETED
@@ -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
|
-
— 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> »
|
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'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'>'</span><span class='tstring_content'>timeboss</span><span class='tstring_end'>'</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'>'</span><span class='tstring_content'>timeboss/calendars/broadcast</span><span class='tstring_end'>'</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'># => #<TimeBoss::Calendars::Broadcast:0x007f82d50f0af0 @basis=TimeBoss::Calendars::Broadcast::Basis>
|
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'>'</span><span class='tstring_content'>2019Q4</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='comment'># or '2018', or '2019-12-21', or '2020W32', or '2020M3W2'
|
100
|
-
</span><span class='comment'># => #<TimeBoss::Calendar::Quarter:0x007f82d50e2478>
|
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'># => "2019Q4: 2019-09-30 thru 2019-12-29"
|
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'># => "2019-12-30"
|
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'># => "2020-06-29"
|
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'># => "2020-06-29"
|
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'># => 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'>'</span><span class='tstring_content'>2018-12-31</span><span class='tstring_end'>'</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'># => "2019: 2018-12-31 thru 2019-12-29"
|
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'># => "2019M12: 2019-11-25 thru 2019-12-29"
|
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'># => ["2018-12-31", "2019-12-30"]
|
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'># => "2020M4"
|
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'># => "2020W32"
|
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'>'</span><span class='tstring_content'>2020M24</span><span class='tstring_end'>'</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'># => "2020H1Q2M3W2"
|
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'># => "2020Q2W11"
|
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'># => "2020Q2M3W2"
|
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'>&</span><span class='symbol'>:to_s</span><span class='rparen'>)</span>
|
147
|
-
<span class='comment'># => ["2020M1W1: 2019-12-30 thru 2020-01-05", "2020M1W2: 2020-01-06 thru 2020-01-12", "2020M1W3: 2020-01-13 thru 2020-01-19", "2020M1W4: 2020-01-20 thru 2020-01-26"]
|
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'># => "2020W52: 2020-12-21 thru 2020-12-27"
|
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'># => "Q2 2020"
|
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'>'</span><span class='tstring_content'>2020Q1</span><span class='tstring_end'>'</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'>&</span><span class='symbol'>:name</span><span class='rparen'>)</span>
|
156
|
-
<span class='comment'># => ["2020M1", "2020M2", "2020M3"]
|
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'>'</span><span class='tstring_content'>Q3</span><span class='tstring_end'>'</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'># => "Q3 2015"
|
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'>"</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'>"</span></span>
|
168
|
-
<span class='comment'># => "2020W29: 3 of 2020Q3; 29 of 2020"
|
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'>'</span><span class='tstring_content'>2014W29</span><span class='tstring_end'>'</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'>"</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'>"</span></span>
|
173
|
-
<span class='comment'># => "2020W29: 3 of 2020Q3; 29 of 2020"
|
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'># => "2021W29: 2021-07-12 thru 2021-07-18"
|
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'>'</span><span class='tstring_content'>2020M1 .. 2020M2</span><span class='tstring_end'>'</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'>&</span><span class='symbol'>:title</span><span class='rparen'>)</span>
|
183
|
-
<span class='comment'># => ["Week of December 30, 2019", "Week of January 6, 2020", "Week of January 13, 2020", "Week of January 20, 2020", "Week of January 27, 2020", "Week of February 3, 2020", "Week of February 10, 2020", "Week of February 17, 2020"]
|
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'>&</span><span class='symbol'>:name</span><span class='rparen'>)</span> <span class='comment'># run in 2020Q3
|
186
|
-
</span><span class='comment'># => ["2020M7", "2020M8", "2020M9", "2020M10", "2020M11", "2020M12", "2021M1", "2021M2", "2021M3"]
|
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'>'</span><span class='tstring_content'>2020W3..2020Q1</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
189
|
-
<span class='tstring'><span class='tstring_beg'>"</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'>"</span></span>
|
190
|
-
<span class='comment'># => "2020W3 .. 2020Q1: from 2020-01-13 thru 2020-03-29 (current=false)"
|
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 > next_quarter
|
204
|
-
=> #<TimeBoss::Calendar::Quarter:0x007fe04c16a1c8 @calendar=#<TimeBoss::Calendars::Broadcast:0x007fe04c1a0458 @basis=TimeBoss::Calendars::Broadcast::Basis>, @year_index=2020, @index=4, @start_date=#<Date: 2020-09-28 ((2459121j,0s,0n),+0s,2299161j)>, @end_date=#<Date: 2020-12-27 ((2459211j,0s,0n),+0s,2299161j)>>
|
205
|
-
2.4.1 :002 > last_year
|
206
|
-
=> #<TimeBoss::Calendar::Year:0x007fe04c161ca8 @calendar=#<TimeBoss::Calendars::Broadcast:0x007fe04c1a0458 @basis=TimeBoss::Calendars::Broadcast::Basis>, @year_index=2019, @index=1, @start_date=#<Date: 2018-12-31 ((2458484j,0s,0n),+0s,2299161j)>, @end_date=#<Date: 2019-12-29 ((2458847j,0s,0n),+0s,2299161j)>>
|
207
|
-
2.4.1 :003 > parse('this_quarter .. this_quarter+4').months.map(&:name)
|
208
|
-
=> ["2020M7", "2020M8", "2020M9", "2020M10", "2020M11", "2020M12", "2021M1", "2021M2", "2021M3", "2021M4", "2021M5", "2021M6", "2021M7", "2021M8", "2021M9"]</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'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'>'</span><span class='tstring_content'>timeboss/calendar</span><span class='tstring_end'>'</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'><</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'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'><</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'>>=</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'>'</span><span class='tstring_content'>timeboss/calendars</span><span class='tstring_end'>'</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>
|
data/doc/file_list.html
DELETED
@@ -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>
|
data/doc/frames.html
DELETED
@@ -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>
|
data/doc/index.html
DELETED
@@ -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
|
-
— 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> »
|
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'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'>'</span><span class='tstring_content'>timeboss</span><span class='tstring_end'>'</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'>'</span><span class='tstring_content'>timeboss/calendars/broadcast</span><span class='tstring_end'>'</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'># => #<TimeBoss::Calendars::Broadcast:0x007f82d50f0af0 @basis=TimeBoss::Calendars::Broadcast::Basis>
|
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'>'</span><span class='tstring_content'>2019Q4</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='comment'># or '2018', or '2019-12-21', or '2020W32', or '2020M3W2'
|
100
|
-
</span><span class='comment'># => #<TimeBoss::Calendar::Quarter:0x007f82d50e2478>
|
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'># => "2019Q4: 2019-09-30 thru 2019-12-29"
|
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'># => "2019-12-30"
|
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'># => "2020-06-29"
|
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'># => "2020-06-29"
|
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'># => 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'>'</span><span class='tstring_content'>2018-12-31</span><span class='tstring_end'>'</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'># => "2019: 2018-12-31 thru 2019-12-29"
|
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'># => "2019M12: 2019-11-25 thru 2019-12-29"
|
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'># => ["2018-12-31", "2019-12-30"]
|
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'># => "2020M4"
|
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'># => "2020W32"
|
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'>'</span><span class='tstring_content'>2020M24</span><span class='tstring_end'>'</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'># => "2020H1Q2M3W2"
|
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'># => "2020Q2W11"
|
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'># => "2020Q2M3W2"
|
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'>&</span><span class='symbol'>:to_s</span><span class='rparen'>)</span>
|
147
|
-
<span class='comment'># => ["2020M1W1: 2019-12-30 thru 2020-01-05", "2020M1W2: 2020-01-06 thru 2020-01-12", "2020M1W3: 2020-01-13 thru 2020-01-19", "2020M1W4: 2020-01-20 thru 2020-01-26"]
|
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'># => "2020W52: 2020-12-21 thru 2020-12-27"
|
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'># => "Q2 2020"
|
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'>'</span><span class='tstring_content'>2020Q1</span><span class='tstring_end'>'</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'>&</span><span class='symbol'>:name</span><span class='rparen'>)</span>
|
156
|
-
<span class='comment'># => ["2020M1", "2020M2", "2020M3"]
|
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'>'</span><span class='tstring_content'>Q3</span><span class='tstring_end'>'</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'># => "Q3 2015"
|
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'>"</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'>"</span></span>
|
168
|
-
<span class='comment'># => "2020W29: 3 of 2020Q3; 29 of 2020"
|
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'>'</span><span class='tstring_content'>2014W29</span><span class='tstring_end'>'</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'>"</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'>"</span></span>
|
173
|
-
<span class='comment'># => "2020W29: 3 of 2020Q3; 29 of 2020"
|
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'># => "2021W29: 2021-07-12 thru 2021-07-18"
|
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'>'</span><span class='tstring_content'>2020M1 .. 2020M2</span><span class='tstring_end'>'</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'>&</span><span class='symbol'>:title</span><span class='rparen'>)</span>
|
183
|
-
<span class='comment'># => ["Week of December 30, 2019", "Week of January 6, 2020", "Week of January 13, 2020", "Week of January 20, 2020", "Week of January 27, 2020", "Week of February 3, 2020", "Week of February 10, 2020", "Week of February 17, 2020"]
|
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'>&</span><span class='symbol'>:name</span><span class='rparen'>)</span> <span class='comment'># run in 2020Q3
|
186
|
-
</span><span class='comment'># => ["2020M7", "2020M8", "2020M9", "2020M10", "2020M11", "2020M12", "2021M1", "2021M2", "2021M3"]
|
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'>'</span><span class='tstring_content'>2020W3..2020Q1</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
189
|
-
<span class='tstring'><span class='tstring_beg'>"</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'>"</span></span>
|
190
|
-
<span class='comment'># => "2020W3 .. 2020Q1: from 2020-01-13 thru 2020-03-29 (current=false)"
|
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 > next_quarter
|
204
|
-
=> #<TimeBoss::Calendar::Quarter:0x007fe04c16a1c8 @calendar=#<TimeBoss::Calendars::Broadcast:0x007fe04c1a0458 @basis=TimeBoss::Calendars::Broadcast::Basis>, @year_index=2020, @index=4, @start_date=#<Date: 2020-09-28 ((2459121j,0s,0n),+0s,2299161j)>, @end_date=#<Date: 2020-12-27 ((2459211j,0s,0n),+0s,2299161j)>>
|
205
|
-
2.4.1 :002 > last_year
|
206
|
-
=> #<TimeBoss::Calendar::Year:0x007fe04c161ca8 @calendar=#<TimeBoss::Calendars::Broadcast:0x007fe04c1a0458 @basis=TimeBoss::Calendars::Broadcast::Basis>, @year_index=2019, @index=1, @start_date=#<Date: 2018-12-31 ((2458484j,0s,0n),+0s,2299161j)>, @end_date=#<Date: 2019-12-29 ((2458847j,0s,0n),+0s,2299161j)>>
|
207
|
-
2.4.1 :003 > parse('this_quarter .. this_quarter+4').months.map(&:name)
|
208
|
-
=> ["2020M7", "2020M8", "2020M9", "2020M10", "2020M11", "2020M12", "2021M1", "2021M2", "2021M3", "2021M4", "2021M5", "2021M6", "2021M7", "2021M8", "2021M9"]</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'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'>'</span><span class='tstring_content'>timeboss/calendar</span><span class='tstring_end'>'</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'><</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'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'><</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'>>=</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'>'</span><span class='tstring_content'>timeboss/calendars</span><span class='tstring_end'>'</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>
|