standup_md 0.2.0 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,614 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta charset="UTF-8">
6
+
7
+ <title>class StandupMD::File - RDoc Documentation</title>
8
+
9
+ <script type="text/javascript">
10
+ var rdoc_rel_prefix = "../";
11
+ var index_rel_prefix = "../";
12
+ </script>
13
+
14
+ <script src="../js/navigation.js" defer></script>
15
+ <script src="../js/search.js" defer></script>
16
+ <script src="../js/search_index.js" defer></script>
17
+ <script src="../js/searcher.js" defer></script>
18
+ <script src="../js/darkfish.js" defer></script>
19
+
20
+ <link href="../css/fonts.css" rel="stylesheet">
21
+ <link href="../css/rdoc.css" rel="stylesheet">
22
+
23
+
24
+
25
+
26
+ <body id="top" role="document" class="class">
27
+ <nav role="navigation">
28
+ <div id="project-navigation">
29
+ <div id="home-section" role="region" title="Quick navigation" class="nav-section">
30
+ <h2>
31
+ <a href="../index.html" rel="home">Home</a>
32
+ </h2>
33
+
34
+ <div id="table-of-contents-navigation">
35
+ <a href="../table_of_contents.html#pages">Pages</a>
36
+ <a href="../table_of_contents.html#classes">Classes</a>
37
+ <a href="../table_of_contents.html#methods">Methods</a>
38
+ </div>
39
+ </div>
40
+
41
+ <div id="search-section" role="search" class="project-section initially-hidden">
42
+ <form action="#" method="get" accept-charset="utf-8">
43
+ <div id="search-field-wrapper">
44
+ <input id="search-field" role="combobox" aria-label="Search"
45
+ aria-autocomplete="list" aria-controls="search-results"
46
+ type="text" name="search" placeholder="Search" spellcheck="false"
47
+ title="Type to search, Up and Down to navigate, Enter to load">
48
+ </div>
49
+
50
+ <ul id="search-results" aria-label="Search Results"
51
+ aria-busy="false" aria-expanded="false"
52
+ aria-atomic="false" class="initially-hidden"></ul>
53
+ </form>
54
+ </div>
55
+
56
+ </div>
57
+
58
+
59
+
60
+ <div id="class-metadata">
61
+
62
+ <div id="parent-class-section" class="nav-section">
63
+ <h3>Parent</h3>
64
+
65
+
66
+ <p class="link">Object
67
+
68
+ </div>
69
+
70
+
71
+
72
+ <!-- Method Quickref -->
73
+ <div id="method-list-section" class="nav-section">
74
+ <h3>Methods</h3>
75
+
76
+ <ul class="link-list" role="directory">
77
+
78
+ <li ><a href="#method-c-config">::config</a>
79
+
80
+ <li ><a href="#method-c-find">::find</a>
81
+
82
+ <li ><a href="#method-c-find_by_date">::find_by_date</a>
83
+
84
+ <li ><a href="#method-c-load">::load</a>
85
+
86
+ <li ><a href="#method-c-new">::new</a>
87
+
88
+ <li ><a href="#method-i-exist-3F">#exist?</a>
89
+
90
+ <li ><a href="#method-i-load">#load</a>
91
+
92
+ <li ><a href="#method-i-loaded-3F">#loaded?</a>
93
+
94
+ <li ><a href="#method-i-new-3F">#new?</a>
95
+
96
+ <li ><a href="#method-i-write">#write</a>
97
+
98
+ </ul>
99
+ </div>
100
+
101
+ </div>
102
+ </nav>
103
+
104
+ <main role="main" aria-labelledby="class-StandupMD::File">
105
+ <h1 id="class-StandupMD::File" class="class">
106
+ class StandupMD::File
107
+ </h1>
108
+
109
+ <section class="description">
110
+
111
+ <p>Class for handling reading and writing standup files.</p>
112
+
113
+ </section>
114
+
115
+
116
+ <section id="5Buntitled-5D" class="documentation-section">
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+ <section class="attribute-method-details" class="method-section">
125
+ <header>
126
+ <h3>Attributes</h3>
127
+ </header>
128
+
129
+
130
+ <div id="attribute-i-entries" class="method-detail">
131
+ <div class="method-heading attribute-method-heading">
132
+ <span class="method-name">entries</span><span
133
+ class="attribute-access-type">[R]</span>
134
+ </div>
135
+
136
+ <div class="method-description">
137
+
138
+ <p>The list of entries in the file.</p>
139
+
140
+ <p>@return [StandupMP::EntryList]</p>
141
+
142
+ </div>
143
+ </div>
144
+
145
+ <div id="attribute-i-name" class="method-detail">
146
+ <div class="method-heading attribute-method-heading">
147
+ <span class="method-name">name</span><span
148
+ class="attribute-access-type">[R]</span>
149
+ </div>
150
+
151
+ <div class="method-description">
152
+
153
+ <p>The name of the file.</p>
154
+
155
+ <p>@return [String]</p>
156
+
157
+ </div>
158
+ </div>
159
+
160
+ </section>
161
+
162
+
163
+
164
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section">
165
+ <header>
166
+ <h3>Public Class Methods</h3>
167
+ </header>
168
+
169
+
170
+ <div id="method-c-config" class="method-detail ">
171
+
172
+ <div class="method-heading">
173
+ <span class="method-name">config</span><span
174
+ class="method-args">()</span>
175
+
176
+ <span class="method-click-advice">click to toggle source</span>
177
+
178
+ </div>
179
+
180
+
181
+ <div class="method-description">
182
+
183
+ <p>Access to the class&#39;s configuration.</p>
184
+
185
+ <p>@return [StandupMD::Config::EntryList]</p>
186
+
187
+
188
+
189
+
190
+ <div class="method-source-code" id="config-source">
191
+ <pre><span class="ruby-comment"># File lib/standup_md/file.rb, line 18</span>
192
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">config</span>
193
+ <span class="ruby-ivar">@config</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">StandupMD</span>.<span class="ruby-identifier">config</span>.<span class="ruby-identifier">file</span>
194
+ <span class="ruby-keyword">end</span></pre>
195
+ </div>
196
+
197
+ </div>
198
+
199
+
200
+
201
+
202
+ </div>
203
+
204
+
205
+ <div id="method-c-find" class="method-detail ">
206
+
207
+ <div class="method-heading">
208
+ <span class="method-name">find</span><span
209
+ class="method-args">(file_name)</span>
210
+
211
+ <span class="method-click-advice">click to toggle source</span>
212
+
213
+ </div>
214
+
215
+
216
+ <div class="method-description">
217
+
218
+ <p>Find standup file in directory by file name.</p>
219
+
220
+ <p>@param [String] File_naem</p>
221
+
222
+
223
+
224
+
225
+ <div class="method-source-code" id="find-source">
226
+ <pre><span class="ruby-comment"># File lib/standup_md/file.rb, line 36</span>
227
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">find</span>(<span class="ruby-identifier">file_name</span>)
228
+ <span class="ruby-identifier">file</span> = <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">entries</span>(<span class="ruby-identifier">config</span>.<span class="ruby-identifier">directory</span>).<span class="ruby-identifier">bsearch</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">file_name</span> }
229
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">file</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">config</span>.<span class="ruby-identifier">create</span>
230
+ <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;File #{file_name} not found.&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">config</span>.<span class="ruby-identifier">create</span>
231
+ <span class="ruby-keyword">end</span>
232
+ <span class="ruby-identifier">new</span>(<span class="ruby-identifier">file_name</span>)
233
+ <span class="ruby-keyword">end</span></pre>
234
+ </div>
235
+
236
+ </div>
237
+
238
+
239
+
240
+
241
+ </div>
242
+
243
+
244
+ <div id="method-c-find_by_date" class="method-detail ">
245
+
246
+ <div class="method-heading">
247
+ <span class="method-name">find_by_date</span><span
248
+ class="method-args">(date)</span>
249
+
250
+ <span class="method-click-advice">click to toggle source</span>
251
+
252
+ </div>
253
+
254
+
255
+ <div class="method-description">
256
+
257
+ <p>Find standup file in directory by Date object.</p>
258
+
259
+ <p>@param [Date] date</p>
260
+
261
+
262
+
263
+
264
+ <div class="method-source-code" id="find_by_date-source">
265
+ <pre><span class="ruby-comment"># File lib/standup_md/file.rb, line 48</span>
266
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">find_by_date</span>(<span class="ruby-identifier">date</span>)
267
+ <span class="ruby-keyword">unless</span> <span class="ruby-identifier">date</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Date</span>)
268
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;Argument must be a Date object&quot;</span>
269
+ <span class="ruby-keyword">end</span>
270
+ <span class="ruby-identifier">find</span>(<span class="ruby-identifier">date</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-identifier">config</span>.<span class="ruby-identifier">name_format</span>))
271
+ <span class="ruby-keyword">end</span></pre>
272
+ </div>
273
+
274
+ </div>
275
+
276
+
277
+
278
+
279
+ </div>
280
+
281
+
282
+ <div id="method-c-load" class="method-detail ">
283
+
284
+ <div class="method-heading">
285
+ <span class="method-name">load</span><span
286
+ class="method-args">(file_name)</span>
287
+
288
+ <span class="method-click-advice">click to toggle source</span>
289
+
290
+ </div>
291
+
292
+
293
+ <div class="method-description">
294
+
295
+ <p>Convenience method for calling <a href="File.html#method-c-find"><code>File.find(file_name)</code></a>.load</p>
296
+
297
+ <p>@param [String] file_name</p>
298
+
299
+ <p>@return [StandupMD::File]</p>
300
+
301
+
302
+
303
+
304
+ <div class="method-source-code" id="load-source">
305
+ <pre><span class="ruby-comment"># File lib/standup_md/file.rb, line 28</span>
306
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">load</span>(<span class="ruby-identifier">file_name</span>)
307
+ <span class="ruby-identifier">new</span>(<span class="ruby-identifier">file_name</span>).<span class="ruby-identifier">load</span>
308
+ <span class="ruby-keyword">end</span></pre>
309
+ </div>
310
+
311
+ </div>
312
+
313
+
314
+
315
+
316
+ </div>
317
+
318
+
319
+ <div id="method-c-new" class="method-detail ">
320
+
321
+ <div class="method-heading">
322
+ <span class="method-name">new</span><span
323
+ class="method-args">(file_name)</span>
324
+
325
+ <span class="method-click-advice">click to toggle source</span>
326
+
327
+ </div>
328
+
329
+
330
+ <div class="method-description">
331
+
332
+ <p>Constructs the instance.</p>
333
+
334
+ <p>@param [String] file_name</p>
335
+
336
+ <p>@return [StandupMP::File]</p>
337
+
338
+
339
+
340
+
341
+ <div class="method-source-code" id="new-source">
342
+ <pre><span class="ruby-comment"># File lib/standup_md/file.rb, line 73</span>
343
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">file_name</span>)
344
+ <span class="ruby-ivar">@config</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">config</span>
345
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">file_name</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">SEPARATOR</span>)
346
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>,
347
+ <span class="ruby-node">&quot;#{file_name} contains directory. Please use `StandupMD.config.file.directory=`&quot;</span>
348
+ <span class="ruby-keyword">end</span>
349
+
350
+ <span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-ivar">@config</span>.<span class="ruby-identifier">directory</span>)
351
+ <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Dir #{@config.directory} not found.&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">create</span>
352
+ <span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir_p</span>(<span class="ruby-ivar">@config</span>.<span class="ruby-identifier">directory</span>)
353
+ <span class="ruby-keyword">end</span>
354
+
355
+ <span class="ruby-ivar">@name</span> = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-ivar">@config</span>.<span class="ruby-identifier">directory</span>, <span class="ruby-identifier">file_name</span>))
356
+
357
+ <span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">file?</span>(<span class="ruby-ivar">@name</span>)
358
+ <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;File #{@name} not found.&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">create</span>
359
+ <span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">touch</span>(<span class="ruby-ivar">@name</span>)
360
+ <span class="ruby-keyword">end</span>
361
+
362
+ <span class="ruby-ivar">@new</span> = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">zero?</span>(<span class="ruby-ivar">@name</span>)
363
+ <span class="ruby-ivar">@loaded</span> = <span class="ruby-keyword">false</span>
364
+ <span class="ruby-keyword">end</span></pre>
365
+ </div>
366
+
367
+ </div>
368
+
369
+
370
+
371
+
372
+ </div>
373
+
374
+
375
+ </section>
376
+
377
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
378
+ <header>
379
+ <h3>Public Instance Methods</h3>
380
+ </header>
381
+
382
+
383
+ <div id="method-i-exist-3F" class="method-detail ">
384
+
385
+ <div class="method-heading">
386
+ <span class="method-name">exist?</span><span
387
+ class="method-args">()</span>
388
+
389
+ <span class="method-click-advice">click to toggle source</span>
390
+
391
+ </div>
392
+
393
+
394
+ <div class="method-description">
395
+
396
+ <p>Does the file exist?</p>
397
+
398
+ <p>@return [Boolean] true if exists</p>
399
+
400
+
401
+
402
+
403
+ <div class="method-source-code" id="exist-3F-source">
404
+ <pre><span class="ruby-comment"># File lib/standup_md/file.rb, line 116</span>
405
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">exist?</span>
406
+ <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">name</span>)
407
+ <span class="ruby-keyword">end</span></pre>
408
+ </div>
409
+
410
+ </div>
411
+
412
+
413
+
414
+
415
+ </div>
416
+
417
+
418
+ <div id="method-i-load" class="method-detail ">
419
+
420
+ <div class="method-heading">
421
+ <span class="method-name">load</span><span
422
+ class="method-args">()</span>
423
+
424
+ <span class="method-click-advice">click to toggle source</span>
425
+
426
+ </div>
427
+
428
+
429
+ <div class="method-description">
430
+
431
+ <p>Loads the file&#39;s contents. TODO clean up this method.</p>
432
+
433
+ <p>@return [StandupMD::FileList]</p>
434
+
435
+
436
+
437
+
438
+ <div class="method-source-code" id="load-source">
439
+ <pre><span class="ruby-comment"># File lib/standup_md/file.rb, line 125</span>
440
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">load</span>
441
+ <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;File #{name} does not exist.&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">file?</span>(<span class="ruby-identifier">name</span>)
442
+ <span class="ruby-identifier">entry_list</span> = <span class="ruby-constant">EntryList</span>.<span class="ruby-identifier">new</span>
443
+ <span class="ruby-identifier">record</span> = {}
444
+ <span class="ruby-identifier">section_type</span> = <span class="ruby-string">&#39;&#39;</span>
445
+ <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">foreach</span>(<span class="ruby-identifier">name</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
446
+ <span class="ruby-identifier">line</span>.<span class="ruby-identifier">chomp!</span>
447
+ <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">empty?</span>
448
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">is_header?</span>(<span class="ruby-identifier">line</span>)
449
+ <span class="ruby-keyword">unless</span> <span class="ruby-identifier">record</span>.<span class="ruby-identifier">empty?</span>
450
+ <span class="ruby-identifier">entry_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">new_entry</span>(<span class="ruby-identifier">record</span>)
451
+ <span class="ruby-identifier">record</span> = {}
452
+ <span class="ruby-keyword">end</span>
453
+ <span class="ruby-identifier">record</span>[<span class="ruby-string">&#39;header&#39;</span>] = <span class="ruby-identifier">line</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp">%r{^\#{#{@config.header_depth}}\s*}</span>, <span class="ruby-string">&#39;&#39;</span>)
454
+ <span class="ruby-identifier">section_type</span> = <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">notes_header</span>
455
+ <span class="ruby-identifier">record</span>[<span class="ruby-identifier">section_type</span>] = []
456
+ <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">is_sub_header?</span>(<span class="ruby-identifier">line</span>)
457
+ <span class="ruby-identifier">section_type</span> = <span class="ruby-identifier">determine_section_type</span>(<span class="ruby-identifier">line</span>)
458
+ <span class="ruby-identifier">record</span>[<span class="ruby-identifier">section_type</span>] = []
459
+ <span class="ruby-keyword">else</span>
460
+ <span class="ruby-identifier">record</span>[<span class="ruby-identifier">section_type</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-identifier">bullet_character_regex</span>, <span class="ruby-string">&#39;&#39;</span>)
461
+ <span class="ruby-keyword">end</span>
462
+ <span class="ruby-keyword">end</span>
463
+ <span class="ruby-identifier">entry_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">new_entry</span>(<span class="ruby-identifier">record</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">record</span>.<span class="ruby-identifier">empty?</span>
464
+ <span class="ruby-ivar">@loaded</span> = <span class="ruby-keyword">true</span>
465
+ <span class="ruby-ivar">@entries</span> = <span class="ruby-identifier">entry_list</span>.<span class="ruby-identifier">sort</span>
466
+ <span class="ruby-keyword">self</span>
467
+ <span class="ruby-keyword">rescue</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">e</span>
468
+ <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;File malformation: #{e}&quot;</span>
469
+ <span class="ruby-keyword">end</span></pre>
470
+ </div>
471
+
472
+ </div>
473
+
474
+
475
+
476
+
477
+ </div>
478
+
479
+
480
+ <div id="method-i-loaded-3F" class="method-detail ">
481
+
482
+ <div class="method-heading">
483
+ <span class="method-name">loaded?</span><span
484
+ class="method-args">()</span>
485
+
486
+ <span class="method-click-advice">click to toggle source</span>
487
+
488
+ </div>
489
+
490
+
491
+ <div class="method-description">
492
+
493
+ <p>Has the file been loaded?</p>
494
+
495
+ <p>@return [Boolean] true if loaded</p>
496
+
497
+
498
+
499
+
500
+ <div class="method-source-code" id="loaded-3F-source">
501
+ <pre><span class="ruby-comment"># File lib/standup_md/file.rb, line 108</span>
502
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">loaded?</span>
503
+ <span class="ruby-ivar">@loaded</span>
504
+ <span class="ruby-keyword">end</span></pre>
505
+ </div>
506
+
507
+ </div>
508
+
509
+
510
+
511
+
512
+ </div>
513
+
514
+
515
+ <div id="method-i-new-3F" class="method-detail ">
516
+
517
+ <div class="method-heading">
518
+ <span class="method-name">new?</span><span
519
+ class="method-args">()</span>
520
+
521
+ <span class="method-click-advice">click to toggle source</span>
522
+
523
+ </div>
524
+
525
+
526
+ <div class="method-description">
527
+
528
+ <p>Was the file just now created?</p>
529
+
530
+ <p>@return [Boolean] true if new</p>
531
+
532
+
533
+
534
+
535
+ <div class="method-source-code" id="new-3F-source">
536
+ <pre><span class="ruby-comment"># File lib/standup_md/file.rb, line 100</span>
537
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">new?</span>
538
+ <span class="ruby-ivar">@new</span>
539
+ <span class="ruby-keyword">end</span></pre>
540
+ </div>
541
+
542
+ </div>
543
+
544
+
545
+
546
+
547
+ </div>
548
+
549
+
550
+ <div id="method-i-write" class="method-detail ">
551
+
552
+ <div class="method-heading">
553
+ <span class="method-name">write</span><span
554
+ class="method-args">(dates = {})</span>
555
+
556
+ <span class="method-click-advice">click to toggle source</span>
557
+
558
+ </div>
559
+
560
+
561
+ <div class="method-description">
562
+
563
+ <p>Writes a new entry to the file if the first entry in the file isn&#39;t today. This method is destructive; if a file for entries in the date range already exists, it will be clobbered with the entries in the range.</p>
564
+
565
+ <p>@param [Hash] start_and_end_date</p>
566
+
567
+ <p>@return [Boolean] true if successful</p>
568
+
569
+
570
+
571
+
572
+ <div class="method-source-code" id="write-source">
573
+ <pre><span class="ruby-comment"># File lib/standup_md/file.rb, line 164</span>
574
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">write</span>(<span class="ruby-identifier">dates</span> = {})
575
+ <span class="ruby-identifier">sorted_entries</span> = <span class="ruby-identifier">entries</span>.<span class="ruby-identifier">sort</span>
576
+ <span class="ruby-identifier">start_date</span> = <span class="ruby-identifier">dates</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-value">:start_date</span>, <span class="ruby-identifier">sorted_entries</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">date</span>)
577
+ <span class="ruby-identifier">end_date</span> = <span class="ruby-identifier">dates</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-value">:end_date</span>, <span class="ruby-identifier">sorted_entries</span>.<span class="ruby-identifier">last</span>.<span class="ruby-identifier">date</span>)
578
+ <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">name</span>, <span class="ruby-string">&#39;w&#39;</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span>
579
+ <span class="ruby-identifier">sorted_entries</span>.<span class="ruby-identifier">filter</span>(<span class="ruby-identifier">start_date</span>, <span class="ruby-identifier">end_date</span>).<span class="ruby-identifier">sort_reverse</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
580
+ <span class="ruby-identifier">f</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">header</span>(<span class="ruby-identifier">entry</span>.<span class="ruby-identifier">date</span>)
581
+ <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">sub_header_order</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attr</span><span class="ruby-operator">|</span>
582
+ <span class="ruby-identifier">tasks</span> = <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">attr</span>)
583
+ <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">tasks</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">empty?</span>
584
+ <span class="ruby-identifier">f</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">sub_header</span>(<span class="ruby-ivar">@config</span>.<span class="ruby-identifier">send</span>(<span class="ruby-node">&quot;#{attr}_header&quot;</span>).<span class="ruby-identifier">capitalize</span>)
585
+ <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">puts</span> <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">bullet_character</span> <span class="ruby-operator">+</span> <span class="ruby-string">&#39; &#39;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">task</span> }
586
+ <span class="ruby-keyword">end</span>
587
+ <span class="ruby-identifier">f</span>.<span class="ruby-identifier">puts</span>
588
+ <span class="ruby-keyword">end</span>
589
+ <span class="ruby-keyword">end</span>
590
+ <span class="ruby-keyword">true</span>
591
+ <span class="ruby-keyword">end</span></pre>
592
+ </div>
593
+
594
+ </div>
595
+
596
+
597
+
598
+
599
+ </div>
600
+
601
+
602
+ </section>
603
+
604
+ </section>
605
+
606
+ </main>
607
+
608
+
609
+ <footer id="validator-badges" role="contentinfo">
610
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
611
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.2.1.
612
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
613
+ </footer>
614
+