doing 2.1.21 → 2.1.22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/.yardoc/checksums +13 -13
  3. data/.yardoc/object_types +0 -0
  4. data/.yardoc/objects/root.dat +0 -0
  5. data/CHANGELOG.md +16 -15
  6. data/Gemfile.lock +1 -1
  7. data/README.md +1 -1
  8. data/Rakefile +4 -2
  9. data/bin/doing +44 -44
  10. data/docs/doc/Array.html +7 -35
  11. data/docs/doc/BooleanTermParser/Clause.html +1 -1
  12. data/docs/doc/BooleanTermParser/Operator.html +1 -1
  13. data/docs/doc/BooleanTermParser/Query.html +1 -1
  14. data/docs/doc/BooleanTermParser/QueryParser.html +1 -1
  15. data/docs/doc/BooleanTermParser/QueryTransformer.html +1 -1
  16. data/docs/doc/BooleanTermParser.html +1 -1
  17. data/docs/doc/Doing/Color.html +1 -1
  18. data/docs/doc/Doing/Completion.html +1 -1
  19. data/docs/doc/Doing/Configuration.html +1 -1
  20. data/docs/doc/Doing/Errors/DoingNoTraceError.html +1 -1
  21. data/docs/doc/Doing/Errors/DoingRuntimeError.html +1 -1
  22. data/docs/doc/Doing/Errors/DoingStandardError.html +1 -1
  23. data/docs/doc/Doing/Errors/EmptyInput.html +1 -1
  24. data/docs/doc/Doing/Errors/NoResults.html +1 -1
  25. data/docs/doc/Doing/Errors/PluginException.html +1 -1
  26. data/docs/doc/Doing/Errors/UserCancelled.html +1 -1
  27. data/docs/doc/Doing/Errors/WrongCommand.html +1 -1
  28. data/docs/doc/Doing/Errors.html +1 -1
  29. data/docs/doc/Doing/Hooks.html +1 -1
  30. data/docs/doc/Doing/Item.html +1 -1
  31. data/docs/doc/Doing/Items.html +1 -1
  32. data/docs/doc/Doing/LogAdapter.html +1 -1
  33. data/docs/doc/Doing/Note.html +1 -1
  34. data/docs/doc/Doing/Pager.html +1 -1
  35. data/docs/doc/Doing/Plugins.html +1 -1
  36. data/docs/doc/Doing/Prompt.html +5 -5
  37. data/docs/doc/Doing/Section.html +1 -1
  38. data/docs/doc/Doing/TemplateString.html +2 -2
  39. data/docs/doc/Doing/Util/Backup.html +1 -1
  40. data/docs/doc/Doing/Util.html +1 -1
  41. data/docs/doc/Doing/WWID.html +1 -1
  42. data/docs/doc/Doing.html +4 -4
  43. data/docs/doc/GLI/Commands/MarkdownDocumentListener.html +1 -1
  44. data/docs/doc/GLI/Commands.html +1 -1
  45. data/docs/doc/GLI.html +1 -1
  46. data/docs/doc/Hash.html +76 -4
  47. data/docs/doc/Numeric.html +1 -1
  48. data/docs/doc/PhraseParser/Operator.html +1 -1
  49. data/docs/doc/PhraseParser/PhraseClause.html +1 -1
  50. data/docs/doc/PhraseParser/Query.html +1 -1
  51. data/docs/doc/PhraseParser/QueryParser.html +1 -1
  52. data/docs/doc/PhraseParser/QueryTransformer.html +1 -1
  53. data/docs/doc/PhraseParser/TermClause.html +1 -1
  54. data/docs/doc/PhraseParser.html +1 -1
  55. data/docs/doc/Status.html +1 -1
  56. data/docs/doc/String.html +63 -1
  57. data/docs/doc/Symbol.html +1 -1
  58. data/docs/doc/Time.html +1 -1
  59. data/docs/doc/_index.html +20 -13
  60. data/docs/doc/class_list.html +1 -1
  61. data/docs/doc/file.README.html +2 -2
  62. data/docs/doc/index.html +2 -2
  63. data/docs/doc/method_list.html +238 -214
  64. data/docs/doc/top-level-namespace.html +1 -92
  65. data/doing.rdoc +12 -7
  66. data/lib/doing/array.rb +5 -4
  67. data/lib/doing/array_chronify.rb +4 -3
  68. data/lib/doing/configuration.rb +1 -1
  69. data/lib/doing/hash.rb +21 -3
  70. data/lib/doing/item.rb +2 -2
  71. data/lib/doing/log_adapter.rb +1 -1
  72. data/lib/doing/pager.rb +1 -1
  73. data/lib/doing/plugins/export/template_export.rb +8 -2
  74. data/lib/doing/prompt.rb +4 -2
  75. data/lib/doing/string.rb +10 -1
  76. data/lib/doing/template_string.rb +7 -0
  77. data/lib/doing/types.rb +20 -16
  78. data/lib/doing/version.rb +1 -1
  79. data/lib/doing/wwid.rb +3 -9
  80. data/lib/doing.rb +1 -0
  81. data/lib/helpers/threaded_tests.rb +73 -50
  82. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '06493492d12846e35ddd52120caa601f41113738aa0f927425136334c33f6d4f'
4
- data.tar.gz: 15b0c5c756b8961a162d16b026982a39b02a3e62a7a77f5af96bd7b29551c190
3
+ metadata.gz: '09c53ca468f428a8f5a77060bf395707dace911e06213a00a8e0fe54c03abc38'
4
+ data.tar.gz: 9226dc60c9a2ef22f278e147dd95693b36a01fd4b7df4f0c211c747b21ceaf8c
5
5
  SHA512:
6
- metadata.gz: f95259d7235e5f94d7d7b7f7aad0cd60be16ba56faf861d25bc5977f671a8150f6c57bb2c6d4db46cd855d0977401092cfc09985591d79a52bb97c93f766c866
7
- data.tar.gz: 12ffe984153d6540a471b48db7e82c15bb7d4290ac4e0abca40b58c0a2fefe637ebe8381ad101015e07fc1c0161b7ccd58ecda034467eff581b04bb5fd7266ac
6
+ metadata.gz: 80ecd2f1fe4801b82546ecaf3eb9c6028ac27aa424b77ca0fe7f68d06a240c5670f02e989c228b21270bdb4f3f49e8f7c0dad17901aa9fe90dac6b45e0885fe1
7
+ data.tar.gz: 7e8bef046989f6a3fb5293104f70db7368632488847aff9e4f9a8f1166c399db1df92c773cbbf9a5166c74a40737e1fd016ecfadea9e8ca01e5dda7f278dbf33
data/.yardoc/checksums CHANGED
@@ -1,31 +1,31 @@
1
- lib/doing/hash.rb ec25fdc045980e2498f2f034f29639f57d2fcf0c
2
- lib/doing/item.rb 276880933fef8a4e1ef7a80e92f0f2b029f8a6e7
1
+ lib/doing/hash.rb 4c08dd246aa0ced651a1568832cea1a91a984eb6
2
+ lib/doing/item.rb ffccadf4b6e9e48373a954ad4b690e9c31dfd2cb
3
3
  lib/doing/note.rb bbadd9e34e6dc43a2af1110a5107f46c39d2547f
4
4
  lib/doing/time.rb 60183c3c31532ffea1440c766de0f90042e0fd10
5
5
  lib/doing/util.rb 33ad79455893213a0f2993edec0e158526657f09
6
- lib/doing/wwid.rb bcbcd790a0e6ba7f0c8678bcc720c4960eff44bc
7
- lib/doing/array.rb a17004c4811d239932254f9ed94a6eb10456c8e8
6
+ lib/doing/wwid.rb f28e9675a5c1014452f441e26048375cf127b714
7
+ lib/doing/array.rb c459e484f121abd64c8b3877a447ec7b6a65f9bc
8
8
  lib/doing/hooks.rb acf6e0615ccf1949f84915c979297845242c1205
9
9
  lib/doing/items.rb 69c762d337d9dad2b780cd08cc1c8785310e23ba
10
- lib/doing/pager.rb 7e8475372ff059dd027b880c29fb6a2424c885dc
11
- lib/doing/types.rb e6a01d98e358345ea61437ac4045f0da4a04750c
10
+ lib/doing/pager.rb a5dc55e1163d1b8476617e924a3aee4f9bf8be00
11
+ lib/doing/types.rb a53694ca64c613263b26b7a980c450abc2477242
12
12
  lib/doing/colors.rb b7239a69e10c5df9378a5843441af5b93c1872f8
13
13
  lib/doing/errors.rb af07e482a5389924edc2337749c81cda501098f0
14
- lib/doing/prompt.rb 1c48923fc61d8714e3fc1f24b52fb8f358a8cc24
15
- lib/doing/string.rb 82dcd4c1b3847defa844f2162ffe0af863d60be2
14
+ lib/doing/prompt.rb d241935b209e69a14c55a9c3a035f1751c576b4c
15
+ lib/doing/string.rb ae82fc6e60a490bfb30b5913390d1d375451fe69
16
16
  lib/doing/symbol.rb 309799458a1bc715c2707307c9a62ab26086275e
17
17
  lib/doing/section.rb 206e119cf818f1e76798753e611180fe77bc299a
18
- lib/doing/version.rb ba9c781ef9a612fecc0e0e96da29f463467b777b
18
+ lib/doing/version.rb 02268018a64ba45e346d12dd6fc027f6cc68e2d3
19
19
  lib/doing/cli_status.rb dbedd454c4cbbd0fed9ef30120f6ec85d18b9356
20
20
  lib/doing/completion.rb c658e7dc7898fb022a21b2bd77bedb958ca3b067
21
- lib/doing/log_adapter.rb 57d831259f48d0757307244d35b87e9ffa9099d9
21
+ lib/doing/log_adapter.rb 62ee66981878bd7285ccf0dfeca90a3d6d2af985
22
22
  lib/doing/util_backup.rb c13f71072581b1f0d2269853611ba09273261bf9
23
- lib/doing/configuration.rb 0eed57f4e26b643863d20f78675e7152d3f4f697
23
+ lib/doing/configuration.rb d9b945a608452cdacb3f92ba711a83b4fecbb795
24
24
  lib/doing/phrase_parser.rb 8f1789d7cf8326d8cc231b4a21505a93f8de20d2
25
- lib/doing/array_chronify.rb 5852b38643aef2e7e796aaf19b2c052a52ee5e2b
25
+ lib/doing/array_chronify.rb b39b40268b1751b18acf6bae4e53885818e45f62
26
26
  lib/doing/plugin_manager.rb cb16a82c3182ef7008359670ab96ff6b39270ccc
27
27
  lib/doing/string_chronify.rb 79d3926e586b2ddeef508d778f76c777bc4ee811
28
- lib/doing/template_string.rb 5f6ef0495082339f2aa1b085ac4c1bdbfeb25be5
28
+ lib/doing/template_string.rb 736f6e7645160f75061db1856a62101238fe8c56
29
29
  lib/doing/numeric_chronify.rb bedeff62a95f8a8ff116e1bf0cc1d9eb2707a900
30
30
  lib/doing/boolean_term_parser.rb 075977892ac5c6e3435cb8877d8b8b68eb1962e3
31
31
  lib/doing/markdown_document_listener.rb 45485f225068a34951ec818a345f642323e5ba35
data/.yardoc/object_types CHANGED
Binary file
Binary file
data/CHANGELOG.md CHANGED
@@ -1,26 +1,27 @@
1
- ### 2.1.21
1
+ ### 2.1.22
2
2
 
3
- 2022-01-20 12:05
3
+ 2022-01-21 14:39
4
4
 
5
- #### NEW
5
+ #### IMPROVED
6
6
 
7
- - Autotag option for interactive `doing select` menu
8
- - (Breaking change) Made the later command an optional plugin, see wiki for how to install (and create) custom commands
9
- - Config setting doing_file_sort (asc or desc) determines the sort order of entries in the actual Doing file. Has no effect on other operations, just allows you to store the file with newest entries at top (desc) or bottom (asc).
7
+ - General improvements to `doing note`, including better handling of piping notes from STDIN, using a Readline input unless `--editor` is specified, changed order of importance for different inputs
8
+ - `doing reset -n` switch is a shortcut for `--no-resume` to avoid removing @done when modifying a start date
9
+ - More duration formats available for config (clock, dhm, hm, m, natural)
10
10
 
11
- #### IMPROVED
11
+ #### FIXED
12
12
 
13
- - Autotag improvements
14
- - If doing is run without a command but with arguments, execute it as if you'd run `doing now`, passing the arguments to that. So you can just write "doing this thing" instead of "doing now this thing", as long as the first word of the arguments is not a recognized command.
13
+ - Fix already initialized warning
14
+ - Don't invoke Readline inputs when the current device is not a TTY
15
+ - View keys being overridden by template keys
16
+ - Tag string routines
17
+ - Error handling additional configs when a config file is specified on command line
18
+
19
+ ### 2.1.21
20
+
21
+ 2022-01-20 12:05
15
22
 
16
23
  #### FIXED
17
24
 
18
- - `doing again` should only mark the original repeating entry @done, not search for the last unfinished entry
19
- - Error when using `doing finish --auto`
20
- - `doing on wed` when today is wednesday not returning results
21
- - Using `config set` with a false value deleted the key from config
22
- - `config set` with true or false value was inserting a quoted string
23
- - Entries were not being sorted (at all) within sections when writing the Doing file
24
25
  - Custom types not available to custom commands
25
26
 
26
27
  ### 2.1.20
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- doing (2.1.21)
4
+ doing (2.1.22)
5
5
  chronic (~> 0.10, >= 0.10.2)
6
6
  deep_merge (~> 1.2, >= 1.2.1)
7
7
  gli (~> 2.20, >= 2.20.1)
data/README.md CHANGED
@@ -8,7 +8,7 @@ _If you're one of the rare people like me who find this useful, feel free to
8
8
 
9
9
  <!--README-->
10
10
 
11
- The current version of `doing` is <!--VER-->2.1.20<!--END VER-->.
11
+ The current version of `doing` is <!--VER-->2.1.21<!--END VER-->.
12
12
 
13
13
  Find all of the documentation in the [doing wiki][wiki].
14
14
 
data/Rakefile CHANGED
@@ -52,9 +52,11 @@ end
52
52
 
53
53
  desc 'Run all tests, threaded'
54
54
  task :test, :pattern, :threads, :max_tests do |_, args|
55
- args.with_defaults(pattern: '*', threads: 24, max_tests: 0)
55
+ args.with_defaults(pattern: '*', threads: 8, max_tests: 0)
56
+ pattern = args[:pattern] =~ /(n[iu]ll?|0|\.)/i ? '*' : args[:pattern]
57
+
56
58
  require_relative 'lib/helpers/threaded_tests'
57
- ThreadedTests.new.run(pattern: args[:pattern], max_threads: args[:threads].to_i, max_tests: args[:max_tests])
59
+ ThreadedTests.new.run(pattern: pattern, max_threads: args[:threads].to_i, max_tests: args[:max_tests])
58
60
  end
59
61
 
60
62
  desc 'Run tests in Docker'
data/bin/doing CHANGED
@@ -4,7 +4,6 @@
4
4
  $LOAD_PATH.unshift File.join(__dir__, '..', 'lib')
5
5
  require 'gli'
6
6
  require 'doing'
7
- require 'doing/types'
8
7
  require 'tempfile'
9
8
  require 'pp'
10
9
 
@@ -26,13 +25,7 @@ version Doing::VERSION
26
25
  hide_commands_without_desc true
27
26
  autocomplete_commands true
28
27
 
29
- InvalidExportType = Class.new(RuntimeError)
30
- MissingConfigFile = Class.new(RuntimeError)
31
- TagArray = Class.new(Array)
32
- DateBeginString = Class.new(DateTime)
33
- DateEndString = Class.new(DateTime)
34
- DateRangeString = Class.new(Array)
35
- DateIntervalString = Class.new(DateTime)
28
+ include Doing::Types
36
29
 
37
30
  colors = Doing::Color
38
31
  wwid = Doing::WWID.new
@@ -134,7 +127,7 @@ desc 'Use a pager when output is longer than screen'
134
127
  switch %i[p pager], default_value: settings['paginate']
135
128
 
136
129
  desc 'Answer yes/no menus with default option'
137
- switch [:default], default_value: false
130
+ switch [:default], default_value: false, negatable: false
138
131
 
139
132
  desc 'Answer all yes/no menus with yes'
140
133
  switch [:yes], negatable: false
@@ -370,7 +363,7 @@ desc 'Add a completed item with @done(date). No argument finishes last entry'
370
363
  long_desc 'Use this command to add an entry after you\'ve already finished it. It will be immediately marked as @done.
371
364
  You can modify the start and end times of the entry using the --back, --took, and --at flags, making it an easy
372
365
  way to add entries in post and maintain accurate (albeit manual) time tracking.'
373
- arg_name 'ENTRY'
366
+ arg_name 'ENTRY', optional: true
374
367
  command %i[done did] do |c|
375
368
  c.example 'doing done', desc: 'Tag the last entry @done'
376
369
  c.example 'doing done I already finished this', desc: 'Add a new entry and immediately mark it @done'
@@ -617,7 +610,7 @@ end
617
610
  # @@finish
618
611
  desc 'Mark last X entries as @done'
619
612
  long_desc 'Marks the last X entries with a @done tag and current date. Does not alter already completed entries.'
620
- arg_name 'COUNT'
613
+ arg_name 'COUNT', optional: true
621
614
  command :finish do |c|
622
615
  c.example 'doing finish', desc: 'Mark the last entry @done'
623
616
  c.example 'doing finish --auto --section Later 10', desc: 'Add @done to any unfinished entries in the last 10 in Later, setting the finish time based on the start time of the task after it'
@@ -897,7 +890,7 @@ long_desc 'The @meanwhile tag allows you to have long-running entries that encom
897
890
  This command makes it easy to start and stop these overarching entries. Just run `doing meanwhile Starting work on this
898
891
  big project` to start a @meanwhile entry, add other entries as you work on the project, then use `doing meanwhile` by
899
892
  itself to mark the entry as @done.'
900
- arg_name 'ENTRY'
893
+ arg_name 'ENTRY', optional: true
901
894
  command :meanwhile do |c|
902
895
  c.example 'doing meanwhile "Long task that will have others after it before it\'s done"', desc: 'Add a new long-running entry, completing any current @meanwhile entry'
903
896
  c.example 'doing meanwhile', desc: 'Finish any open @meanwhile entry'
@@ -987,7 +980,7 @@ long_desc %(
987
980
 
988
981
  Use -e to load the last entry in a text editor where you can append a note.
989
982
  )
990
- arg_name 'NOTE_TEXT'
983
+ arg_name 'NOTE_TEXT', optional: true
991
984
  command :note do |c|
992
985
  c.example 'doing note', desc: 'Open the last entry in $EDITOR to append a note'
993
986
  c.example 'doing note "Just a quick annotation"', desc: 'Add a quick note to the last entry'
@@ -1055,7 +1048,6 @@ command :note do |c|
1055
1048
  options[:search] = search
1056
1049
  end
1057
1050
 
1058
-
1059
1051
  last_entry = wwid.last_entry(options)
1060
1052
 
1061
1053
  unless last_entry
@@ -1065,37 +1057,37 @@ command :note do |c|
1065
1057
 
1066
1058
  last_note = last_entry.note || Doing::Note.new
1067
1059
  new_note = Doing::Note.new
1068
- ask_note = options[:ask] ? Doing::Prompt.read_lines(prompt: 'Add a note') : ''
1069
1060
 
1070
- if options[:editor] || (args.empty? && $stdin.stat.size.zero? && !options[:remove] && !options[:ask])
1071
- raise MissingEditor, 'No EDITOR variable defined in environment' if Doing::Util.default_editor.nil?
1061
+ if $stdin.stat.size.positive?
1062
+ new_note.add($stdin.read.strip)
1063
+ end
1072
1064
 
1073
- input = !args.empty? ? args.join(' ') : ''
1065
+ unless args.empty?
1066
+ new_note.add(args.join(' '))
1067
+ end
1068
+
1069
+ if options[:editor]
1070
+ raise MissingEditor, 'No EDITOR variable defined in environment' if Doing::Util.default_editor.nil?
1074
1071
 
1075
1072
  if options[:remove]
1076
- prev_input = Doing::Note.new
1073
+ input = Doing::Note.new
1077
1074
  else
1078
- prev_input = last_entry.note || Doing::Note.new
1075
+ input = last_entry.note || Doing::Note.new
1079
1076
  end
1080
1077
 
1078
+ input.add(new_note)
1081
1079
 
1082
- input = prev_input.add(input)
1083
- input.add(ask_note) unless ask_note.empty?
1084
-
1085
- input = wwid.fork_editor(prev_input.strip_lines.join("\n"), message: nil).strip
1086
- note = input
1080
+ new_note = Doing::Note.new(wwid.fork_editor(input.strip_lines.join("\n"), message: nil).strip)
1087
1081
  options[:remove] = true
1088
- new_note.add(note)
1089
- elsif !args.empty?
1090
- new_note.add(args.join(' '))
1091
- elsif $stdin.stat.size.positive?
1092
- new_note.add($stdin.read.strip)
1093
- else
1094
- raise EmptyInput, 'You must provide content when adding a note' unless options[:remove] || !ask_note.empty?
1082
+ end
1095
1083
 
1084
+ if (new_note.empty? && !options[:remove]) || options[:ask]
1085
+ $stderr.puts last_note unless last_note.empty?
1086
+ $stderr.puts new_note unless new_note.empty?
1087
+ new_note.add(Doing::Prompt.read_lines(prompt: 'Add a note'))
1096
1088
  end
1097
1089
 
1098
- new_note.add(ask_note) unless ask_note.empty?
1090
+ raise EmptyInput, 'You must provide content when adding a note' unless options[:remove] || !new_note.empty?
1099
1091
 
1100
1092
  if last_note.equal?(new_note)
1101
1093
  Doing.logger.debug('Skipped:', 'No note change')
@@ -1233,7 +1225,7 @@ desc 'Reset the start time of an entry'
1233
1225
  long_desc 'Update the start time of the last entry or the last entry matching a tag/search filter.
1234
1226
  If no argument is provided, the start time will be reset to the current time.
1235
1227
  If a date string is provided as an argument, the start time will be set to the parsed result.'
1236
- arg_name 'DATE_STRING'
1228
+ arg_name 'DATE_STRING', optional: true
1237
1229
  command %i[reset begin] do |c|
1238
1230
  c.example 'doing reset', desc: 'Reset the start time of the last entry to the current time'
1239
1231
  c.example 'doing reset --tag project1', desc: 'Reset the start time of the most recent entry tagged @project1 to the current time'
@@ -1247,6 +1239,9 @@ command %i[reset begin] do |c|
1247
1239
  c.desc 'Resume entry (remove @done)'
1248
1240
  c.switch %i[r resume], default_value: true
1249
1241
 
1242
+ c.desc 'Change start date but do not remove @done (shortcut for --no-resume)'
1243
+ c.switch [:n]
1244
+
1250
1245
  c.desc 'Reset last entry matching tag. Wildcards allowed (*, ?)'
1251
1246
  c.arg_name 'TAG'
1252
1247
  c.flag [:tag]
@@ -2551,17 +2546,17 @@ command :view do |c|
2551
2546
  view = wwid.get_view(title)
2552
2547
 
2553
2548
  if view
2554
- page_title = view.key?('title') ? view['title'] : title.cap_first
2549
+ page_title = view['title'] || title.cap_first
2555
2550
  only_timed = if (view.key?('only_timed') && view['only_timed']) || options[:only_timed]
2556
2551
  true
2557
2552
  else
2558
2553
  false
2559
2554
  end
2560
2555
 
2561
- template = view.key?('template') ? view['template'] : nil
2562
- date_format = view.key?('date_format') ? view['date_format'] : nil
2556
+ template = view['template'] || nil
2557
+ date_format = view['date_format'] || nil
2563
2558
 
2564
- tags_color = view.key?('tags_color') ? view['tags_color'] : nil
2559
+ tags_color = view['tags_color'] || nil
2565
2560
  tag_filter = false
2566
2561
  if options[:tag]
2567
2562
  tag_filter = { 'tags' => [], 'bool' => 'OR' }
@@ -2591,19 +2586,19 @@ command :view do |c|
2591
2586
  section = if options[:section]
2592
2587
  section
2593
2588
  else
2594
- view.key?('section') ? view['section'] : settings['current_section']
2589
+ view['section'] || settings['current_section']
2595
2590
  end
2596
- order = view.key?('order') ? view['order'].normalize_order : 'asc'
2591
+ order = view['order']&.normalize_order || 'asc'
2597
2592
 
2598
2593
  totals = if options[:totals]
2599
2594
  true
2600
2595
  else
2601
- view.key?('totals') ? view['totals'] : false
2596
+ view['totals'] || false
2602
2597
  end
2603
2598
  tag_order = if options[:tag_order]
2604
2599
  options[:tag_order].normalize_order
2605
2600
  else
2606
- view.key?('tag_order') ? view['tag_order'].normalize_order : 'asc'
2601
+ view['tag_order']&.normalize_order || 'asc'
2607
2602
  end
2608
2603
 
2609
2604
  options[:times] = true if totals
@@ -3654,7 +3649,7 @@ pre do |global, _command, _options, _args|
3654
3649
  Doing::Pager.paginate = global[:pager]
3655
3650
 
3656
3651
  $stdout.puts "doing v#{Doing::VERSION}" if global[:version]
3657
- unless STDOUT.isatty
3652
+ unless $stdout.isatty
3658
3653
  Doing::Color.coloring = global[:pager] ? global[:color] : false
3659
3654
  else
3660
3655
  Doing::Color.coloring = global[:color]
@@ -3704,7 +3699,12 @@ around do |global, command, options, arguments, code|
3704
3699
  Doing::Prompt.force_answer = false
3705
3700
  Doing.config.force_answer = false
3706
3701
  else
3707
- Doing::Prompt.default_answer = global[:default]
3702
+ Doing::Prompt.default_answer = if $stdout.isatty
3703
+ global[:default]
3704
+ else
3705
+ true
3706
+ end
3707
+
3708
3708
  Doing.config.force_answer = global[:default] ? true : false
3709
3709
  end
3710
3710
 
data/docs/doc/Array.html CHANGED
@@ -512,22 +512,6 @@ with</p>
512
512
  <p class="tag_title">Parameters:</p>
513
513
  <ul class="param">
514
514
 
515
- <li>
516
-
517
- <span class='name'>time</span>
518
-
519
-
520
- <span class='type'>(<tt><span class='object_link'><a href="" title="Array (class)">Array</a></span></tt>)</span>
521
-
522
-
523
-
524
- &mdash;
525
- <div class='inline'><p>Array of [days, hours,
526
- minutes]</p>
527
- </div>
528
-
529
- </li>
530
-
531
515
  <li>
532
516
 
533
517
  <span class='name'>format</span>
@@ -540,7 +524,8 @@ minutes]</p>
540
524
 
541
525
 
542
526
  &mdash;
543
- <div class='inline'><p>The format, :dhm, :hm, :m, :clock, :natural</p>
527
+ <div class='inline'><p>The format, :dhm, :hm,
528
+ :m, :clock, :natural</p>
544
529
  </div>
545
530
 
546
531
  </li>
@@ -594,28 +579,15 @@ minutes]</p>
594
579
  <div class="discussion">
595
580
  <p>Convert strings to @tags</p>
596
581
 
582
+ <p>[&#39;one&#39;, &#39;@two&#39;, &#39;three&#39;].to_tags</p>
583
+
584
+ <h1 id="one-two-three">=&gt; [&#39;@one&#39;, &#39;@two&#39;, &#39;@three&#39;]</h1>
585
+
597
586
 
598
587
  </div>
599
588
  </div>
600
589
  <div class="tags">
601
590
 
602
- <div class="examples">
603
- <p class="tag_title">Examples:</p>
604
-
605
-
606
- <p class="example_title"><div class='inline'><p><code>[&#39;one&#39;, &#39;@two&#39;, &#39;three&#39;].to_tags</code></p>
607
- </div></p>
608
-
609
- <pre class="example code"><code></code></pre>
610
-
611
-
612
- <p class="example_title"><div class='inline'><p><code>=&gt; [&#39;@one&#39;, &#39;@two&#39;, &#39;@three&#39;]</code></p>
613
- </div></p>
614
-
615
- <pre class="example code"><code></code></pre>
616
-
617
- </div>
618
-
619
591
  <p class="tag_title">Returns:</p>
620
592
  <ul class="return">
621
593
 
@@ -654,7 +626,7 @@ minutes]</p>
654
626
  </div>
655
627
 
656
628
  <div id="footer">
657
- Generated on Thu Jan 20 12:10:33 2022 by
629
+ Generated on Fri Jan 21 14:53:33 2022 by
658
630
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
659
631
  0.9.27 (ruby-3.0.1).
660
632
  </div>
@@ -283,7 +283,7 @@
283
283
  </div>
284
284
 
285
285
  <div id="footer">
286
- Generated on Thu Jan 20 12:10:33 2022 by
286
+ Generated on Fri Jan 21 14:53:34 2022 by
287
287
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
288
288
  0.9.27 (ruby-3.0.1).
289
289
  </div>
@@ -162,7 +162,7 @@
162
162
  </div>
163
163
 
164
164
  <div id="footer">
165
- Generated on Thu Jan 20 12:10:33 2022 by
165
+ Generated on Fri Jan 21 14:53:34 2022 by
166
166
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
167
167
  0.9.27 (ruby-3.0.1).
168
168
  </div>
@@ -407,7 +407,7 @@
407
407
  </div>
408
408
 
409
409
  <div id="footer">
410
- Generated on Thu Jan 20 12:10:33 2022 by
410
+ Generated on Fri Jan 21 14:53:34 2022 by
411
411
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
412
412
  0.9.27 (ruby-3.0.1).
413
413
  </div>
@@ -125,7 +125,7 @@ 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 Thu Jan 20 12:10:33 2022 by
128
+ Generated on Fri Jan 21 14:53:34 2022 by
129
129
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
130
130
  0.9.27 (ruby-3.0.1).
131
131
  </div>
@@ -114,7 +114,7 @@
114
114
  </div>
115
115
 
116
116
  <div id="footer">
117
- Generated on Thu Jan 20 12:10:33 2022 by
117
+ Generated on Fri Jan 21 14:53:34 2022 by
118
118
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
119
119
  0.9.27 (ruby-3.0.1).
120
120
  </div>
@@ -105,7 +105,7 @@
105
105
  </div>
106
106
 
107
107
  <div id="footer">
108
- Generated on Thu Jan 20 12:10:33 2022 by
108
+ Generated on Fri Jan 21 14:53:33 2022 by
109
109
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
110
110
  0.9.27 (ruby-3.0.1).
111
111
  </div>
@@ -512,7 +512,7 @@ ANSI-sequences are stripped from the string.</p>
512
512
  </div>
513
513
 
514
514
  <div id="footer">
515
- Generated on Thu Jan 20 12:10:33 2022 by
515
+ Generated on Fri Jan 21 14:53:33 2022 by
516
516
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
517
517
  0.9.27 (ruby-3.0.1).
518
518
  </div>
@@ -206,7 +206,7 @@ stdout</p>
206
206
  </div>
207
207
 
208
208
  <div id="footer">
209
- Generated on Thu Jan 20 12:10:33 2022 by
209
+ Generated on Fri Jan 21 14:53:33 2022 by
210
210
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
211
211
  0.9.27 (ruby-3.0.1).
212
212
  </div>
@@ -1106,7 +1106,7 @@ matched, first match wins)</p>
1106
1106
  </div>
1107
1107
 
1108
1108
  <div id="footer">
1109
- Generated on Thu Jan 20 12:10:33 2022 by
1109
+ Generated on Fri Jan 21 14:53:34 2022 by
1110
1110
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1111
1111
  0.9.27 (ruby-3.0.1).
1112
1112
  </div>
@@ -176,7 +176,7 @@
176
176
  </div>
177
177
 
178
178
  <div id="footer">
179
- Generated on Thu Jan 20 12:10:33 2022 by
179
+ Generated on Fri Jan 21 14:53:33 2022 by
180
180
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
181
181
  0.9.27 (ruby-3.0.1).
182
182
  </div>
@@ -176,7 +176,7 @@
176
176
  </div>
177
177
 
178
178
  <div id="footer">
179
- Generated on Thu Jan 20 12:10:33 2022 by
179
+ Generated on Fri Jan 21 14:53:33 2022 by
180
180
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
181
181
  0.9.27 (ruby-3.0.1).
182
182
  </div>
@@ -176,7 +176,7 @@
176
176
  </div>
177
177
 
178
178
  <div id="footer">
179
- Generated on Thu Jan 20 12:10:33 2022 by
179
+ Generated on Fri Jan 21 14:53:33 2022 by
180
180
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
181
181
  0.9.27 (ruby-3.0.1).
182
182
  </div>
@@ -176,7 +176,7 @@
176
176
  </div>
177
177
 
178
178
  <div id="footer">
179
- Generated on Thu Jan 20 12:10:33 2022 by
179
+ Generated on Fri Jan 21 14:53:33 2022 by
180
180
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
181
181
  0.9.27 (ruby-3.0.1).
182
182
  </div>
@@ -176,7 +176,7 @@
176
176
  </div>
177
177
 
178
178
  <div id="footer">
179
- Generated on Thu Jan 20 12:10:33 2022 by
179
+ Generated on Fri Jan 21 14:53:33 2022 by
180
180
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
181
181
  0.9.27 (ruby-3.0.1).
182
182
  </div>
@@ -238,7 +238,7 @@
238
238
  </div>
239
239
 
240
240
  <div id="footer">
241
- Generated on Thu Jan 20 12:10:33 2022 by
241
+ Generated on Fri Jan 21 14:53:33 2022 by
242
242
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
243
243
  0.9.27 (ruby-3.0.1).
244
244
  </div>
@@ -176,7 +176,7 @@
176
176
  </div>
177
177
 
178
178
  <div id="footer">
179
- Generated on Thu Jan 20 12:10:33 2022 by
179
+ Generated on Fri Jan 21 14:53:33 2022 by
180
180
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
181
181
  0.9.27 (ruby-3.0.1).
182
182
  </div>
@@ -176,7 +176,7 @@
176
176
  </div>
177
177
 
178
178
  <div id="footer">
179
- Generated on Thu Jan 20 12:10:33 2022 by
179
+ Generated on Fri Jan 21 14:53:33 2022 by
180
180
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
181
181
  0.9.27 (ruby-3.0.1).
182
182
  </div>
@@ -181,7 +181,7 @@
181
181
  </div>
182
182
 
183
183
  <div id="footer">
184
- Generated on Thu Jan 20 12:10:33 2022 by
184
+ Generated on Fri Jan 21 14:53:33 2022 by
185
185
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
186
186
  0.9.27 (ruby-3.0.1).
187
187
  </div>
@@ -354,7 +354,7 @@
354
354
  </div>
355
355
 
356
356
  <div id="footer">
357
- Generated on Thu Jan 20 12:10:33 2022 by
357
+ Generated on Fri Jan 21 14:53:33 2022 by
358
358
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
359
359
  0.9.27 (ruby-3.0.1).
360
360
  </div>
@@ -2195,7 +2195,7 @@ thus should not receive a date on the @done tag</p>
2195
2195
  </div>
2196
2196
 
2197
2197
  <div id="footer">
2198
- Generated on Thu Jan 20 12:10:33 2022 by
2198
+ Generated on Fri Jan 21 14:53:33 2022 by
2199
2199
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
2200
2200
  0.9.27 (ruby-3.0.1).
2201
2201
  </div>