doing 2.1.99 → 2.1.101

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +27 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +8 -2
  5. data/bin/commands/view.rb +5 -0
  6. data/bin/doing +92 -2
  7. data/docs/doc/Array.html +3 -3
  8. data/docs/doc/BooleanTermParser/Clause.html +3 -3
  9. data/docs/doc/BooleanTermParser/Operator.html +3 -3
  10. data/docs/doc/BooleanTermParser/Query.html +3 -3
  11. data/docs/doc/BooleanTermParser/QueryParser.html +3 -3
  12. data/docs/doc/BooleanTermParser/QueryTransformer.html +3 -3
  13. data/docs/doc/BooleanTermParser.html +3 -3
  14. data/docs/doc/Doing/ArrayCleanup.html +3 -3
  15. data/docs/doc/Doing/ArrayNestedHash.html +3 -3
  16. data/docs/doc/Doing/ArrayTags.html +9 -9
  17. data/docs/doc/Doing/ByDayExport.html +3 -3
  18. data/docs/doc/Doing/CSVExport.html +3 -3
  19. data/docs/doc/Doing/CalendarImport.html +3 -3
  20. data/docs/doc/Doing/Change.html +3 -3
  21. data/docs/doc/Doing/Changes.html +3 -3
  22. data/docs/doc/Doing/ChronifyArray.html +3 -3
  23. data/docs/doc/Doing/ChronifyNumeric.html +3 -3
  24. data/docs/doc/Doing/ChronifyString.html +6 -6
  25. data/docs/doc/Doing/Color.html +16 -16
  26. data/docs/doc/Doing/Completion/BashCompletions.html +3 -3
  27. data/docs/doc/Doing/Completion/FigCompletions.html +3 -3
  28. data/docs/doc/Doing/Completion/FishCompletions.html +3 -3
  29. data/docs/doc/Doing/Completion/StringUtils.html +3 -3
  30. data/docs/doc/Doing/Completion/ZshCompletions.html +3 -3
  31. data/docs/doc/Doing/Completion.html +3 -3
  32. data/docs/doc/Doing/Configuration.html +3 -3
  33. data/docs/doc/Doing/DayOneRenderer.html +3 -3
  34. data/docs/doc/Doing/DayoneExport.html +3 -3
  35. data/docs/doc/Doing/DoingExport.html +3 -3
  36. data/docs/doc/Doing/DoingImport.html +3 -3
  37. data/docs/doc/Doing/Entry.html +3 -3
  38. data/docs/doc/Doing/Errors/DoingNoTraceError.html +3 -3
  39. data/docs/doc/Doing/Errors/DoingRuntimeError.html +3 -3
  40. data/docs/doc/Doing/Errors/DoingStandardError.html +3 -3
  41. data/docs/doc/Doing/Errors/EmptyInput.html +3 -3
  42. data/docs/doc/Doing/Errors/HistoryLimitError.html +3 -3
  43. data/docs/doc/Doing/Errors/InvalidPlugin.html +3 -3
  44. data/docs/doc/Doing/Errors/MissingBackupFile.html +3 -3
  45. data/docs/doc/Doing/Errors/NoResults.html +3 -3
  46. data/docs/doc/Doing/Errors/PluginException.html +3 -3
  47. data/docs/doc/Doing/Errors/UserCancelled.html +3 -3
  48. data/docs/doc/Doing/Errors/WrongCommand.html +3 -3
  49. data/docs/doc/Doing/Errors.html +3 -3
  50. data/docs/doc/Doing/HTMLExport.html +3 -3
  51. data/docs/doc/Doing/Hooks.html +3 -3
  52. data/docs/doc/Doing/Item.html +3 -3
  53. data/docs/doc/Doing/ItemDates.html +3 -3
  54. data/docs/doc/Doing/ItemQuery.html +3 -3
  55. data/docs/doc/Doing/ItemState.html +3 -3
  56. data/docs/doc/Doing/ItemTags.html +3 -3
  57. data/docs/doc/Doing/Items.html +3 -3
  58. data/docs/doc/Doing/JSONExport.html +3 -3
  59. data/docs/doc/Doing/JSONImport.html +3 -3
  60. data/docs/doc/Doing/Logger.html +3 -3
  61. data/docs/doc/Doing/MarkdownExport.html +3 -3
  62. data/docs/doc/Doing/Note.html +3 -3
  63. data/docs/doc/Doing/Pager.html +3 -3
  64. data/docs/doc/Doing/Plugins.html +3 -3
  65. data/docs/doc/Doing/Prompt.html +3 -3
  66. data/docs/doc/Doing/PromptChoose.html +3 -3
  67. data/docs/doc/Doing/PromptFZF.html +3 -3
  68. data/docs/doc/Doing/PromptInput.html +3 -3
  69. data/docs/doc/Doing/PromptSTD.html +3 -3
  70. data/docs/doc/Doing/PromptYN.html +3 -3
  71. data/docs/doc/Doing/Section.html +3 -3
  72. data/docs/doc/Doing/StringHighlight.html +3 -3
  73. data/docs/doc/Doing/StringNormalize.html +115 -3
  74. data/docs/doc/Doing/StringQuery.html +4 -4
  75. data/docs/doc/Doing/StringTags.html +3 -3
  76. data/docs/doc/Doing/StringTransform.html +3 -3
  77. data/docs/doc/Doing/StringTruncate.html +3 -3
  78. data/docs/doc/Doing/StringURL.html +3 -3
  79. data/docs/doc/Doing/SymbolNormalize.html +37 -3
  80. data/docs/doc/Doing/TaskPaperExport.html +3 -3
  81. data/docs/doc/Doing/TemplateExport.html +3 -3
  82. data/docs/doc/Doing/TemplateString.html +4 -4
  83. data/docs/doc/Doing/TimingImport.html +3 -3
  84. data/docs/doc/Doing/Types.html +13 -3
  85. data/docs/doc/Doing/Util/Backup.html +3 -3
  86. data/docs/doc/Doing/Util.html +4 -4
  87. data/docs/doc/Doing/Version.html +3 -3
  88. data/docs/doc/Doing/WWID.html +5 -5
  89. data/docs/doc/Doing.html +4 -4
  90. data/docs/doc/FalseClass.html +3 -3
  91. data/docs/doc/GLI/Commands/Help.html +3 -3
  92. data/docs/doc/GLI/Commands/MarkdownDocumentListener.html +3 -3
  93. data/docs/doc/GLI/Commands.html +3 -3
  94. data/docs/doc/GLI.html +3 -3
  95. data/docs/doc/Hash.html +4 -4
  96. data/docs/doc/Numeric.html +3 -3
  97. data/docs/doc/Object.html +3 -3
  98. data/docs/doc/PhraseParser/Operator.html +3 -3
  99. data/docs/doc/PhraseParser/PhraseClause.html +3 -3
  100. data/docs/doc/PhraseParser/Query.html +3 -3
  101. data/docs/doc/PhraseParser/QueryParser.html +3 -3
  102. data/docs/doc/PhraseParser/QueryTransformer.html +3 -3
  103. data/docs/doc/PhraseParser/TermClause.html +3 -3
  104. data/docs/doc/PhraseParser.html +3 -3
  105. data/docs/doc/Status.html +3 -3
  106. data/docs/doc/String.html +4 -4
  107. data/docs/doc/Symbol.html +4 -4
  108. data/docs/doc/Time.html +3 -3
  109. data/docs/doc/TrueClass.html +3 -3
  110. data/docs/doc/_index.html +4 -4
  111. data/docs/doc/class_list.html +3 -6
  112. data/docs/doc/css/full_list.css +3 -3
  113. data/docs/doc/css/style.css +15 -8
  114. data/docs/doc/file.README.html +13 -5
  115. data/docs/doc/file_list.html +2 -5
  116. data/docs/doc/frames.html +1 -1
  117. data/docs/doc/index.html +13 -5
  118. data/docs/doc/js/app.js +267 -348
  119. data/docs/doc/js/full_list.js +24 -52
  120. data/docs/doc/method_list.html +403 -382
  121. data/docs/doc/top-level-namespace.html +3 -3
  122. data/doing.rdoc +65 -1
  123. data/lib/completion/_doing.zsh +9 -9
  124. data/lib/completion/doing.bash +16 -16
  125. data/lib/completion/doing.fish +8 -0
  126. data/lib/completion/doing.ts +90 -0
  127. data/lib/doing/add_options.rb +4 -0
  128. data/lib/doing/normalize.rb +25 -0
  129. data/lib/doing/plugins/export/dayone_export.rb +2 -1
  130. data/lib/doing/plugins/export/html_export.rb +1 -1
  131. data/lib/doing/plugins/export/json_export.rb +2 -1
  132. data/lib/doing/plugins/export/markdown_export.rb +2 -1
  133. data/lib/doing/plugins/export/template_export.rb +2 -1
  134. data/lib/doing/types.rb +2 -0
  135. data/lib/doing/version.rb +1 -1
  136. data/lib/doing/wwid/timers.rb +146 -94
  137. data/lib/examples/plugins/wiki_export/wiki_export.rb +1 -1
  138. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 043ab6664348e6b0c9d1d5817e2907e09c4543c507f57f3fecbfaefc64cee9de
4
- data.tar.gz: dbab749f7d5f2b2e313a2fcb7aadf499612c301e4b85239feec87ed919a352c9
3
+ metadata.gz: 7b9d2c7af253157b0d8768ed39cbac5a5faa2e6b4b3a8371baa06584e236befb
4
+ data.tar.gz: b0453b7acfa35182f735bc41d31b6211be147e33e881bf101d94e19017645588
5
5
  SHA512:
6
- metadata.gz: 68224b0001207f76b858ffc6f11e1b7fd186036f931eed3a4270332348cfb8b4c642c98e9997319d0e36836acc7da814ed91cf6da5e2954534b2872b64257440
7
- data.tar.gz: e9eb7c8918cce283add81eeb9389ceae6c038073bd28504b1c1d335bcfd092a997e31262330dcb4c971f9bcd0bfc9a2a3b853a90bb34d4c9aa2967e7f23a0852
6
+ metadata.gz: 0bfe927b3b0ac9d5df34bc555428693e5db38b29f1844c14ed2fe1e0f47936ff1a01f550d647091c5e96c8e9f307ade6d6f538a90d97ee46a0c87375b93a3a5e
7
+ data.tar.gz: 65a23ebb70c2e75aea9052b3298f1ee1cda3e0edcc26e5f76e1080b32b81a2d61591df042d3af79d74919ae48abebb7b20474d278277de67f238c3f964133b54
data/CHANGELOG.md CHANGED
@@ -1,3 +1,30 @@
1
+ ### 2.1.101
2
+
3
+ 2026-03-23 04:02
4
+
5
+ #### NEW
6
+
7
+ - Add `--by` totals grouping (`tags` or `section`) to totals-capable commands so users can switch between tag totals and section totals, including repeated ordering like `--by section --by tags`.
8
+
9
+ #### IMPROVED
10
+
11
+ - The CLI now falls back to `reline` when `readline` is unavailable (for example on Ruby 4 builds) so commands and tests still run.
12
+ - Carry totals grouping through exports so HTML, Markdown, JSON, Day One, template, and wiki outputs reflect the selected grouping.
13
+ - Accept dashed long-option aliases for underscore flags (for example `--only-timed`, `--tag-sort`, and `--tag-order`) while preserving existing underscore forms.
14
+ - Accept dashed subcommand aliases for underscore commands so `doing tag-dir` works the same as `doing tag_dir`.
15
+ - Reduce tag test runtime by removing unnecessary debug-mode CLI invocations in search/tag assertions.
16
+ - `--by` totals grouping now accepts `project` and `p` as aliases for section totals, so `--by section`, `--by project`, and `--by p` behave the same.
17
+
18
+ #### FIXED
19
+
20
+ - Tag totals table (timer_format: human) now expands to fit budget text and pads shorter lines so borders align correctly instead of breaking layout
21
+ - `doing done --from` now correctly handles `12pm to 1pm` and `noon to 1:00pm` without parse errors.
22
+ - Time range values from `--from` are now normalized before date formatting so `done` and `reset` no longer fail with string/time type errors.
23
+ - Non-interactive runs now return default prompt answers without reopening `/dev/tty`, preventing CLI failures in automated test contexts.
24
+ - Keep argument mangling scoped to options/command dispatch so positional string arguments are not rewritten, including tokens after `--`.
25
+ - Correct human totals box rendering so the top border width matches the body/footer width and no longer appears one character too wide.
26
+ - Totals grouping normalization now maps project aliases consistently to section output across command parsing and rendering paths.
27
+
1
28
  ### 2.1.99
2
29
 
3
30
  2026-03-21 04:11
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- doing (2.1.99)
4
+ doing (2.1.101)
5
5
  base64 (~> 0.2)
6
6
  chronic (~> 0.10, >= 0.10.2)
7
7
  csv (~> 3.3)
data/README.md CHANGED
@@ -12,7 +12,7 @@ _If you're one of the rare people like me who find this useful, feel free to
12
12
 
13
13
  <!--README-->
14
14
 
15
- The current version of `doing` is <!--VER-->2.1.94<!--END VER-->.
15
+ The current version of `doing` is <!--VER-->2.1.97<!--END VER-->.
16
16
 
17
17
  Find all of the documentation in the [doing wiki][wiki].
18
18
 
@@ -43,6 +43,12 @@ night.
43
43
  Doing has over 30 commands for tracking your status, recording your time, and
44
44
  analyzing the results.
45
45
 
46
+ Recent CLI conveniences:
47
+
48
+ - Totals output now supports `--by` grouping (for example `--by tags` and/or `--by section`, repeatable for ordering).
49
+ - Long flags with underscores also accept dashes (for example `--only_timed` or `--only-timed`).
50
+ - Underscored subcommands also accept dashed aliases (for example `doing tag_dir` or `doing tag-dir`).
51
+
46
52
  See [the wiki][wiki] for installation and usage instructions.
47
53
 
48
54
  ## Launchbar/Alfred
@@ -67,7 +73,7 @@ See the [doing project on BrettTerpstra.com][bt doing] for the download.
67
73
 
68
74
  <!--END GITHUB-->
69
75
  <!--JEKYLL
70
- {% download 117 %}
76
+ {% download 117 %}
71
77
  -->
72
78
 
73
79
  Evan Lovely has created an [Alfred workflow][] as well.
data/bin/commands/view.rb CHANGED
@@ -48,6 +48,10 @@ command :view do |c|
48
48
  c.desc 'Only show items with recorded time intervals (override view settings)'
49
49
  c.switch [:only_timed], default_value: false, negatable: false
50
50
 
51
+ c.desc 'Totals grouping (tags|section). Can be repeated, e.g. --by tags --by section'
52
+ c.arg_name 'GROUP'
53
+ c.flag [:by], must_match: REGEX_TOTALS_BY, multiple: true, type: TotalsBySymbol
54
+
51
55
  c.desc 'Select from a menu of matching entries to perform additional operations'
52
56
  c.switch %i[i interactive], negatable: false, default_value: false
53
57
 
@@ -155,6 +159,7 @@ command :view do |c|
155
159
  opts[:tag_filter] = tag_filter
156
160
  opts[:tag_order] = tag_order
157
161
  opts[:totals] = totals
162
+ opts[:by] = options[:by] if options[:by]
158
163
  opts[:view_template] = title
159
164
 
160
165
  Doing::Pager.page @wwid.list_section(opts)
data/bin/doing CHANGED
@@ -6,8 +6,6 @@ require 'gli'
6
6
  require 'doing/help_monkey_patch'
7
7
  require 'doing/add_options'
8
8
  require 'doing'
9
- require 'tempfile'
10
- require 'pp'
11
9
 
12
10
  def class_exists?(class_name)
13
11
  klass = Module.const_get(class_name)
@@ -24,6 +22,91 @@ end
24
22
  include GLI::App
25
23
  include Doing::Errors
26
24
 
25
+ # Known long options that are declared with underscores in this CLI.
26
+ # Allow dashed aliases (e.g. --only-timed) by rewriting them before GLI parses.
27
+ UNDERSCORE_LONG_OPTIONS = Set.new(
28
+ %w[
29
+ bundle_id
30
+ config_file
31
+ config_template
32
+ doing_file
33
+ finish_last
34
+ only_timed
35
+ save_to
36
+ tag_order
37
+ tag_sort
38
+ ]
39
+ ).freeze
40
+
41
+ def normalize_dashed_aliases!(argv)
42
+ argv.each_with_index do |token, idx|
43
+ break if token == '--'
44
+ next unless token.start_with?('--')
45
+
46
+ m = token.match(/\A--(?<name>[^=]+)(?<suffix>=.*)?\z/)
47
+ next unless m
48
+
49
+ name = m['name']
50
+ suffix = m['suffix'] || ''
51
+
52
+ if name.start_with?('no-')
53
+ option_name = name.sub(/\Ano-/, '').tr('-', '_')
54
+ next unless UNDERSCORE_LONG_OPTIONS.include?(option_name)
55
+
56
+ argv[idx] = "--no-#{option_name}#{suffix}"
57
+ else
58
+ option_name = name.tr('-', '_')
59
+ next unless UNDERSCORE_LONG_OPTIONS.include?(option_name)
60
+
61
+ argv[idx] = "--#{option_name}#{suffix}"
62
+ end
63
+ end
64
+ end
65
+
66
+ GLOBAL_OPTIONS_WITH_VALUES = Set.new(%w[
67
+ config_file
68
+ doing_file
69
+ ]).freeze
70
+
71
+ GLOBAL_SHORT_OPTIONS_WITH_VALUES = Set.new(%w[
72
+ f
73
+ ]).freeze
74
+
75
+ def normalize_dashed_command_alias!(argv, underscore_commands)
76
+ idx = 0
77
+ while idx < argv.length
78
+ token = argv[idx]
79
+ break if token == '--'
80
+
81
+ if token.start_with?('--')
82
+ if token.include?('=')
83
+ idx += 1
84
+ next
85
+ end
86
+
87
+ option_name = token.sub(/\A--/, '').tr('-', '_')
88
+ idx += if GLOBAL_OPTIONS_WITH_VALUES.include?(option_name)
89
+ 2
90
+ else
91
+ 1
92
+ end
93
+ next
94
+ end
95
+
96
+ if token.start_with?('-') && token != '-'
97
+ short = token.sub(/\A-/, '')
98
+ consumes_value = GLOBAL_SHORT_OPTIONS_WITH_VALUES.include?(short) ||
99
+ GLOBAL_SHORT_OPTIONS_WITH_VALUES.any? { |opt| short.start_with?(opt) && short.length > 1 }
100
+ idx += consumes_value ? 2 : 1
101
+ next
102
+ end
103
+
104
+ normalized = token.tr('-', '_')
105
+ argv[idx] = normalized if token.include?('-') && underscore_commands.include?(normalized)
106
+ break
107
+ end
108
+ end
109
+
27
110
  version Doing::VERSION
28
111
  hide_commands_without_desc true
29
112
  autocomplete_commands false
@@ -88,6 +171,10 @@ accept TagSortSymbol do |value|
88
171
  value.normalize_tag_sort(Doing.config.fetch('tag_sort', :name))
89
172
  end
90
173
 
174
+ accept TotalsBySymbol do |value|
175
+ value.normalize_totals_by(:tags)
176
+ end
177
+
91
178
  accept ExportTemplate do |value|
92
179
  raise Doing::Errors::InvalidPlugin.new('output', value) if value !~ Doing::Plugins.plugin_regex(type: :export)
93
180
 
@@ -344,6 +431,9 @@ end
344
431
 
345
432
  commands_from File.expand_path(Doing.setting('plugins.command_path')) if Doing.setting('plugins.command_path')
346
433
 
434
+ normalize_dashed_aliases!(ARGV)
435
+ underscore_commands = commands.keys.map(&:to_s).select { |name| name.include?('_') }.to_set
436
+ normalize_dashed_command_alias!(ARGV, underscore_commands)
347
437
  @command = ARGV[0]
348
438
 
349
439
  exit run(ARGV)
data/docs/doc/Array.html CHANGED
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: Array
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -350,9 +350,9 @@ has content</p>
350
350
  </div>
351
351
 
352
352
  <div id="footer">
353
- Generated on Sat Mar 21 04:13:33 2026 by
353
+ Generated on Mon Mar 23 04:05:02 2026 by
354
354
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
355
- 0.9.38 (ruby-4.0.1).
355
+ 0.9.36 (ruby-4.0.2).
356
356
  </div>
357
357
 
358
358
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: BooleanTermParser::Clause
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -283,9 +283,9 @@
283
283
  </div>
284
284
 
285
285
  <div id="footer">
286
- Generated on Sat Mar 21 04:13:33 2026 by
286
+ Generated on Mon Mar 23 04:05:02 2026 by
287
287
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
288
- 0.9.38 (ruby-4.0.1).
288
+ 0.9.36 (ruby-4.0.2).
289
289
  </div>
290
290
 
291
291
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: BooleanTermParser::Operator
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -162,9 +162,9 @@
162
162
  </div>
163
163
 
164
164
  <div id="footer">
165
- Generated on Sat Mar 21 04:13:33 2026 by
165
+ Generated on Mon Mar 23 04:05:02 2026 by
166
166
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
167
- 0.9.38 (ruby-4.0.1).
167
+ 0.9.36 (ruby-4.0.2).
168
168
  </div>
169
169
 
170
170
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: BooleanTermParser::Query
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -407,9 +407,9 @@
407
407
  </div>
408
408
 
409
409
  <div id="footer">
410
- Generated on Sat Mar 21 04:13:33 2026 by
410
+ Generated on Mon Mar 23 04:05:02 2026 by
411
411
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
412
- 0.9.38 (ruby-4.0.1).
412
+ 0.9.36 (ruby-4.0.2).
413
413
  </div>
414
414
 
415
415
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: BooleanTermParser::QueryParser
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -125,9 +125,9 @@ parser. In order to do that, a new &quot;clause&quot; node is added to the parse
125
125
  </div>
126
126
 
127
127
  <div id="footer">
128
- Generated on Sat Mar 21 04:13:33 2026 by
128
+ Generated on Mon Mar 23 04:05:02 2026 by
129
129
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
130
- 0.9.38 (ruby-4.0.1).
130
+ 0.9.36 (ruby-4.0.2).
131
131
  </div>
132
132
 
133
133
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: BooleanTermParser::QueryTransformer
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -114,9 +114,9 @@
114
114
  </div>
115
115
 
116
116
  <div id="footer">
117
- Generated on Sat Mar 21 04:13:33 2026 by
117
+ Generated on Mon Mar 23 04:05:02 2026 by
118
118
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
119
- 0.9.38 (ruby-4.0.1).
119
+ 0.9.36 (ruby-4.0.2).
120
120
  </div>
121
121
 
122
122
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Module: BooleanTermParser
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -105,9 +105,9 @@
105
105
  </div>
106
106
 
107
107
  <div id="footer">
108
- Generated on Sat Mar 21 04:13:32 2026 by
108
+ Generated on Mon Mar 23 04:05:02 2026 by
109
109
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
110
- 0.9.38 (ruby-4.0.1).
110
+ 0.9.36 (ruby-4.0.2).
111
111
  </div>
112
112
 
113
113
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Module: Doing::ArrayCleanup
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -306,9 +306,9 @@ removes empty elements</p>
306
306
  </div>
307
307
 
308
308
  <div id="footer">
309
- Generated on Sat Mar 21 04:13:32 2026 by
309
+ Generated on Mon Mar 23 04:05:01 2026 by
310
310
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
311
- 0.9.38 (ruby-4.0.1).
311
+ 0.9.36 (ruby-4.0.2).
312
312
  </div>
313
313
 
314
314
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Module: Doing::ArrayNestedHash
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -188,9 +188,9 @@
188
188
  </div>
189
189
 
190
190
  <div id="footer">
191
- Generated on Sat Mar 21 04:13:32 2026 by
191
+ Generated on Mon Mar 23 04:05:02 2026 by
192
192
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
193
- 0.9.38 (ruby-4.0.1).
193
+ 0.9.36 (ruby-4.0.2).
194
194
  </div>
195
195
 
196
196
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Module: Doing::ArrayTags
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -328,11 +328,11 @@ with</p>
328
328
  <div class="tags">
329
329
 
330
330
  <div class="examples">
331
- <h4 class="tag_title">Examples:</h4>
331
+ <p class="tag_title">Examples:</p>
332
332
 
333
333
 
334
- <h5 class="example_title"><div class='inline'><p>Convert an array of tags to strings</p>
335
- </div></h5>
334
+ <p class="example_title"><div class='inline'><p>Convert an array of tags to strings</p>
335
+ </div></p>
336
336
 
337
337
  <pre class="example code"><code><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>@one</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>@two</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>three</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_tags'>to_tags</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>one</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>two</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>three</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span></code></pre>
338
338
 
@@ -378,11 +378,11 @@ with</p>
378
378
  <div class="tags">
379
379
 
380
380
  <div class="examples">
381
- <h4 class="tag_title">Examples:</h4>
381
+ <p class="tag_title">Examples:</p>
382
382
 
383
383
 
384
- <h5 class="example_title"><div class='inline'><p>Convert an array of strings with or without @ symbols</p>
385
- </div></h5>
384
+ <p class="example_title"><div class='inline'><p>Convert an array of strings with or without @ symbols</p>
385
+ </div></p>
386
386
 
387
387
  <pre class="example code"><code><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>one</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>@two</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>three</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_tags'>to_tags</span> <span class='op'>=&gt;</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>@one</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>@two</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>@three</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span></code></pre>
388
388
 
@@ -414,9 +414,9 @@ with</p>
414
414
  </div>
415
415
 
416
416
  <div id="footer">
417
- Generated on Sat Mar 21 04:13:32 2026 by
417
+ Generated on Mon Mar 23 04:05:01 2026 by
418
418
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
419
- 0.9.38 (ruby-4.0.1).
419
+ 0.9.36 (ruby-4.0.2).
420
420
  </div>
421
421
 
422
422
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: Doing::ByDayExport
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -196,9 +196,9 @@
196
196
  </div>
197
197
 
198
198
  <div id="footer">
199
- Generated on Sat Mar 21 04:13:33 2026 by
199
+ Generated on Mon Mar 23 04:05:02 2026 by
200
200
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
201
- 0.9.38 (ruby-4.0.1).
201
+ 0.9.36 (ruby-4.0.2).
202
202
  </div>
203
203
 
204
204
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: Doing::CSVExport
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -256,9 +256,9 @@
256
256
  </div>
257
257
 
258
258
  <div id="footer">
259
- Generated on Sat Mar 21 04:13:33 2026 by
259
+ Generated on Mon Mar 23 04:05:02 2026 by
260
260
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
261
- 0.9.38 (ruby-4.0.1).
261
+ 0.9.36 (ruby-4.0.2).
262
262
  </div>
263
263
 
264
264
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: Doing::CalendarImport
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -222,9 +222,9 @@
222
222
  </div>
223
223
 
224
224
  <div id="footer">
225
- Generated on Sat Mar 21 04:13:33 2026 by
225
+ Generated on Mon Mar 23 04:05:02 2026 by
226
226
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
227
- 0.9.38 (ruby-4.0.1).
227
+ 0.9.36 (ruby-4.0.2).
228
228
  </div>
229
229
 
230
230
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: Doing::Change
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -678,9 +678,9 @@
678
678
  </div>
679
679
 
680
680
  <div id="footer">
681
- Generated on Sat Mar 21 04:13:33 2026 by
681
+ Generated on Mon Mar 23 04:05:02 2026 by
682
682
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
683
- 0.9.38 (ruby-4.0.1).
683
+ 0.9.36 (ruby-4.0.2).
684
684
  </div>
685
685
 
686
686
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: Doing::Changes
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -458,9 +458,9 @@
458
458
  </div>
459
459
 
460
460
  <div id="footer">
461
- Generated on Sat Mar 21 04:13:33 2026 by
461
+ Generated on Mon Mar 23 04:05:02 2026 by
462
462
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
463
- 0.9.38 (ruby-4.0.1).
463
+ 0.9.36 (ruby-4.0.2).
464
464
  </div>
465
465
 
466
466
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Module: Doing::ChronifyArray
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -337,9 +337,9 @@
337
337
  </div>
338
338
 
339
339
  <div id="footer">
340
- Generated on Sat Mar 21 04:13:32 2026 by
340
+ Generated on Mon Mar 23 04:05:01 2026 by
341
341
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
342
- 0.9.38 (ruby-4.0.1).
342
+ 0.9.36 (ruby-4.0.2).
343
343
  </div>
344
344
 
345
345
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Module: Doing::ChronifyNumeric
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -261,9 +261,9 @@ hours into days</p>
261
261
  </div>
262
262
 
263
263
  <div id="footer">
264
- Generated on Sat Mar 21 04:13:32 2026 by
264
+ Generated on Mon Mar 23 04:05:01 2026 by
265
265
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
266
- 0.9.38 (ruby-4.0.1).
266
+ 0.9.36 (ruby-4.0.2).
267
267
  </div>
268
268
 
269
269
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Module: Doing::ChronifyString
8
8
 
9
- &mdash; Documentation by YARD 0.9.38
9
+ &mdash; Documentation by YARD 0.9.36
10
10
 
11
11
  </title>
12
12
 
@@ -540,11 +540,11 @@ given, end time is nil.</p>
540
540
  <div class="tags">
541
541
 
542
542
  <div class="examples">
543
- <h4 class="tag_title">Examples:</h4>
543
+ <p class="tag_title">Examples:</p>
544
544
 
545
545
 
546
- <h5 class="example_title"><div class='inline'><p>Process a natural language date range</p>
547
- </div></h5>
546
+ <p class="example_title"><div class='inline'><p>Process a natural language date range</p>
547
+ </div></p>
548
548
 
549
549
  <pre class="example code"><code><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>mon 3pm to mon 5pm</span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_split_date_range'>split_date_range</span></code></pre>
550
550
 
@@ -672,9 +672,9 @@ array</p>
672
672
  </div>
673
673
 
674
674
  <div id="footer">
675
- Generated on Sat Mar 21 04:13:32 2026 by
675
+ Generated on Mon Mar 23 04:05:01 2026 by
676
676
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
677
- 0.9.38 (ruby-4.0.1).
677
+ 0.9.36 (ruby-4.0.2).
678
678
  </div>
679
679
 
680
680
  </div>