doing 2.1.11 → 2.1.15

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 (92) hide show
  1. checksums.yaml +4 -4
  2. data/.irbrc +1 -0
  3. data/.yardoc/checksums +15 -13
  4. data/.yardoc/object_types +0 -0
  5. data/.yardoc/objects/root.dat +0 -0
  6. data/CHANGELOG.md +44 -1
  7. data/Gemfile.lock +9 -2
  8. data/README.md +56 -19
  9. data/bin/doing +215 -76
  10. data/docs/doc/Array.html +117 -3
  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 +7 -4
  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 +337 -14
  31. data/docs/doc/Doing/Items.html +66 -2
  32. data/docs/doc/Doing/LogAdapter.html +1 -1
  33. data/docs/doc/Doing/Note.html +2 -2
  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 +35 -1
  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 +84 -1
  40. data/docs/doc/Doing/Util.html +1 -1
  41. data/docs/doc/Doing/WWID.html +180 -35
  42. data/docs/doc/Doing.html +3 -3
  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 +1 -1
  47. data/docs/doc/Numeric.html +279 -0
  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 +767 -115
  57. data/docs/doc/Symbol.html +1 -1
  58. data/docs/doc/Time.html +1 -1
  59. data/docs/doc/_index.html +14 -9
  60. data/docs/doc/class_list.html +1 -1
  61. data/docs/doc/file.README.html +41 -15
  62. data/docs/doc/index.html +41 -15
  63. data/docs/doc/method_list.html +407 -279
  64. data/docs/doc/top-level-namespace.html +2 -2
  65. data/docs/index.md +56 -19
  66. data/doing.gemspec +2 -0
  67. data/doing.rdoc +244 -45
  68. data/example_plugin.rb +2 -4
  69. data/lib/completion/_doing.zsh +31 -27
  70. data/lib/completion/doing.bash +50 -39
  71. data/lib/completion/doing.fish +35 -6
  72. data/lib/doing/array_chronify.rb +57 -0
  73. data/lib/doing/configuration.rb +4 -1
  74. data/lib/doing/item.rb +176 -0
  75. data/lib/doing/log_adapter.rb +1 -1
  76. data/lib/doing/numeric_chronify.rb +40 -0
  77. data/lib/doing/plugins/export/dayone_export.rb +1 -1
  78. data/lib/doing/plugins/export/json_export.rb +2 -2
  79. data/lib/doing/plugins/export/template_export.rb +47 -90
  80. data/lib/doing/plugins/import/calendar_import.rb +13 -1
  81. data/lib/doing/plugins/import/doing_import.rb +12 -1
  82. data/lib/doing/plugins/import/timing_import.rb +13 -1
  83. data/lib/doing/prompt.rb +13 -1
  84. data/lib/doing/string.rb +97 -33
  85. data/lib/doing/string_chronify.rb +83 -13
  86. data/lib/doing/time.rb +6 -6
  87. data/lib/doing/util_backup.rb +1 -1
  88. data/lib/doing/version.rb +1 -1
  89. data/lib/doing/wwid.rb +88 -93
  90. data/lib/doing.rb +31 -27
  91. data/lib/examples/plugins/say_export.rb +1 -4
  92. metadata +46 -2
data/doing.rdoc CHANGED
@@ -5,12 +5,12 @@ record of what you've been doing, complete with tag-based time tracking. The
5
5
  command line tool allows you to add entries, annotate with tags and notes, and
6
6
  view your entries with myriad options, with a focus on a "natural" language syntax.
7
7
 
8
- v2.1.10
8
+ v2.1.15
9
9
 
10
10
  === Global Options
11
11
  === --config_file arg
12
12
 
13
- Use a specific configuration file. Deprecated, set $DOING_CONFIG instead.
13
+ Use a specific configuration file. Deprecated, set $DOING_CONFIG instead
14
14
 
15
15
  [Default Value] /Users/ttscoff/.config/doing/config.yml
16
16
 
@@ -90,11 +90,11 @@ Add a new section to the "doing" file
90
90
  ==== Command: <tt>again|resume </tt>
91
91
  Repeat last entry as new entry
92
92
 
93
- This command is designed to allow multiple time intervals to be created for an entry by duplicating it with a new start (and end, eventually) time.
93
+ This command is designed to allow multiple time intervals to be created for an entry by duplicating it with a new start (and end, eventually) time
94
94
  ===== Options
95
95
  ===== --bool BOOLEAN
96
96
 
97
- Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans.
97
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
98
98
 
99
99
  [Default Value] PATTERN
100
100
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
@@ -117,7 +117,7 @@ Add new entry to section (default: same section as repeated entry)
117
117
 
118
118
  ===== -n|--note TEXT
119
119
 
120
- Note
120
+ Add a note
121
121
 
122
122
  [Default Value] None
123
123
 
@@ -139,11 +139,24 @@ Repeat last entry matching search. Surround with
139
139
 
140
140
  ===== --tag TAG
141
141
 
142
- Repeat last entry matching tags. Combine multiple tags with a comma. Wildcards allowed (*, ?).
142
+ Repeat last entry matching tags. Combine multiple tags with a comma. Wildcards allowed (*, ?)
143
143
 
144
144
  [Default Value] None
145
145
 
146
146
 
147
+ ===== --val QUERY
148
+
149
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
150
+
151
+ [Default Value] None
152
+ [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
153
+
154
+
155
+ ===== --ask
156
+ Prompt for note via multi-line input
157
+
158
+
159
+
147
160
  ===== -e|--editor
148
161
  Edit duplicated entry with vim before adding
149
162
 
@@ -182,7 +195,7 @@ Archive entries older than date
182
195
 
183
196
  ===== --bool BOOLEAN
184
197
 
185
- Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans.
198
+ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
186
199
 
187
200
  [Default Value] PATTERN
188
201
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
@@ -220,11 +233,19 @@ Move entries to
220
233
 
221
234
  ===== --tag TAG
222
235
 
223
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?). Added for compatibility with other commands.
236
+ Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?). Added for compatibility with other commands
224
237
 
225
238
  [Default Value] None
226
239
 
227
240
 
241
+ ===== --val QUERY
242
+
243
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
244
+
245
+ [Default Value] None
246
+ [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
247
+
248
+
228
249
  ===== --[no-]label
229
250
  Label moved items with @from(SECTION_NAME)
230
251
 
@@ -303,11 +324,11 @@ Autotag last entry (or entries) not marked @done
303
324
  ==== Command: <tt>cancel COUNT</tt>
304
325
  End last X entries with no time tracked
305
326
 
306
- Adds @done tag without datestamp so no elapsed time is recorded. Alias for `doing finish --no-date`.
327
+ Adds @done tag without datestamp so no elapsed time is recorded. Alias for `doing finish --no-date`
307
328
  ===== Options
308
329
  ===== --bool BOOLEAN
309
330
 
310
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans.
331
+ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
311
332
 
312
333
  [Default Value] PATTERN
313
334
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
@@ -337,11 +358,19 @@ Cancel the last X entries matching search filter, surround with slashes for rege
337
358
 
338
359
  ===== --tag TAG
339
360
 
340
- Cancel the last X entries containing TAG. Separate multiple tags with comma (--tag=tag1,tag2). Wildcards allowed (*, ?).
361
+ Cancel the last X entries containing TAG. Separate multiple tags with comma (--tag=tag1,tag2). Wildcards allowed (*, ?)
341
362
 
342
363
  [Default Value] None
343
364
 
344
365
 
366
+ ===== --val QUERY
367
+
368
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
369
+
370
+ [Default Value] None
371
+ [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
372
+
373
+
345
374
  ===== -a|--archive
346
375
  Archive entries
347
376
 
@@ -493,7 +522,7 @@ Update default config file, adding any missing keys
493
522
 
494
523
  [Default Command] edit
495
524
  ==== Command: <tt>done|did ENTRY</tt>
496
- Add a completed item with @done(date). No argument finishes last entry.
525
+ Add a completed item with @done(date). No argument finishes last entry
497
526
 
498
527
  Use this command to add an entry after you've already finished it. It will be immediately marked as @done.
499
528
  You can modify the start and end times of the entry using the --back, --took, and --at flags, making it an easy
@@ -528,7 +557,7 @@ Section
528
557
  [Default Value] None
529
558
 
530
559
 
531
- ===== -t|--took INTERVAL
560
+ ===== -t|--took|--for INTERVAL
532
561
 
533
562
  Set completion date to start date plus interval (XX[mhd] or HH:MM).
534
563
  If used without the --back option, the start date will be moved back to allow
@@ -542,6 +571,11 @@ Immediately archive the entry
542
571
 
543
572
 
544
573
 
574
+ ===== --ask
575
+ Prompt for note via multi-line input
576
+
577
+
578
+
545
579
  ===== --[no-]date
546
580
  Include date
547
581
 
@@ -583,7 +617,7 @@ Backdate completed date to date string [4pm|20m|2h|yesterday noon]
583
617
 
584
618
  ===== --bool BOOLEAN
585
619
 
586
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans.
620
+ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
587
621
 
588
622
  [Default Value] PATTERN
589
623
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
@@ -611,7 +645,7 @@ Finish the last X entries matching search filter, surround with slashes for rege
611
645
  [Default Value] None
612
646
 
613
647
 
614
- ===== -t|--took INTERVAL
648
+ ===== -t|--took|--for INTERVAL
615
649
 
616
650
  Set the completed date to the start date plus XX[hmd]
617
651
 
@@ -626,6 +660,14 @@ Finish the last X entries containing TAG.
626
660
  [Default Value] None
627
661
 
628
662
 
663
+ ===== --val QUERY
664
+
665
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
666
+
667
+ [Default Value] None
668
+ [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
669
+
670
+
629
671
  ===== -a|--archive
630
672
  Archive entries
631
673
 
@@ -677,18 +719,26 @@ To search with regular expressions, single quote the string and surround with sl
677
719
  ===== Options
678
720
  ===== --after DATE_STRING
679
721
 
680
- Search entries newer than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day.
722
+ Search entries newer than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
681
723
 
682
724
  [Default Value] None
683
725
 
684
726
 
685
727
  ===== --before DATE_STRING
686
728
 
687
- Search entries older than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day.
729
+ Search entries older than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
688
730
 
689
731
  [Default Value] None
690
732
 
691
733
 
734
+ ===== --bool arg
735
+
736
+ Combine multiple tags or value queries using AND, OR, or NOT
737
+
738
+ [Default Value] AND
739
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
740
+
741
+
692
742
  ===== --case TYPE
693
743
 
694
744
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
@@ -731,11 +781,29 @@ Sort tags by (name|time)
731
781
  [Must Match] (?i-mx:^(?:name|time)$)
732
782
 
733
783
 
784
+ ===== --val QUERY
785
+
786
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
787
+
788
+ [Default Value] None
789
+ [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
790
+
791
+
792
+ ===== -d|--delete
793
+ Delete matching entries
794
+
795
+
796
+
734
797
  ===== --[no-]duration
735
798
  Show elapsed time on entries without @done tag
736
799
 
737
800
 
738
801
 
802
+ ===== -e|--editor
803
+ Edit matching entries with vim
804
+
805
+
806
+
739
807
  ===== -i|--interactive
740
808
  Display an interactive menu of results to perform further operations
741
809
 
@@ -833,7 +901,7 @@ Only import items matching search. Surround with slashes for regex (/query/), st
833
901
  [Default Value] None
834
902
 
835
903
 
836
- ===== --tag TAGS
904
+ ===== -t|--tag TAGS
837
905
 
838
906
  Tag all imported entries
839
907
 
@@ -880,7 +948,7 @@ allowing `doing last` to target historical entries.
880
948
  ===== Options
881
949
  ===== --bool BOOLEAN
882
950
 
883
- Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans.
951
+ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
884
952
 
885
953
  [Default Value] PATTERN
886
954
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
@@ -910,9 +978,22 @@ Search filter, surround with slashes for regex (/query/), start with single quot
910
978
 
911
979
  ===== --tag TAG
912
980
 
913
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?).
981
+ Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?)
982
+
983
+ [Default Value] None
984
+
985
+
986
+ ===== --val QUERY
987
+
988
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
914
989
 
915
990
  [Default Value] None
991
+ [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
992
+
993
+
994
+ ===== -d|--delete
995
+ Delete the last entry
996
+
916
997
 
917
998
 
918
999
  ===== --[no-]duration
@@ -954,6 +1035,11 @@ Note
954
1035
  [Default Value] None
955
1036
 
956
1037
 
1038
+ ===== --ask
1039
+ Prompt for note via multi-line input
1040
+
1041
+
1042
+
957
1043
  ===== -e|--editor
958
1044
  Edit entry with vim
959
1045
 
@@ -966,7 +1052,7 @@ Mark last entry as flagged
966
1052
  ===== Options
967
1053
  ===== --bool BOOLEAN
968
1054
 
969
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans.
1055
+ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
970
1056
 
971
1057
  [Default Value] PATTERN
972
1058
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
@@ -1010,6 +1096,14 @@ Flag the last entry containing TAG.
1010
1096
  [Default Value] None
1011
1097
 
1012
1098
 
1099
+ ===== --val QUERY
1100
+
1101
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1102
+
1103
+ [Default Value] None
1104
+ [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
1105
+
1106
+
1013
1107
  ===== -d|--date
1014
1108
  Include current date/time with tag
1015
1109
 
@@ -1079,6 +1173,11 @@ Archive previous @meanwhile entry
1079
1173
 
1080
1174
 
1081
1175
 
1176
+ ===== --ask
1177
+ Prompt for note via multi-line input
1178
+
1179
+
1180
+
1082
1181
  ===== -e|--editor
1083
1182
  Edit entry with vim
1084
1183
 
@@ -1095,7 +1194,7 @@ If -r is provided with no other arguments, the last note is removed.
1095
1194
  ===== Options
1096
1195
  ===== --bool BOOLEAN
1097
1196
 
1098
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans.
1197
+ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
1099
1198
 
1100
1199
  [Default Value] PATTERN
1101
1200
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
@@ -1125,11 +1224,24 @@ Add/remove note from last entry matching search filter, surround with slashes fo
1125
1224
 
1126
1225
  ===== --tag TAG
1127
1226
 
1128
- Add/remove note from last entry matching tag. Wildcards allowed (*, ?).
1227
+ Add/remove note from last entry matching tag. Wildcards allowed (*, ?)
1129
1228
 
1130
1229
  [Default Value] None
1131
1230
 
1132
1231
 
1232
+ ===== --val QUERY
1233
+
1234
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1235
+
1236
+ [Default Value] None
1237
+ [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
1238
+
1239
+
1240
+ ===== --ask
1241
+ Prompt for note via multi-line input
1242
+
1243
+
1244
+
1133
1245
  ===== -e|--editor
1134
1246
  Edit entry with vim
1135
1247
 
@@ -1185,6 +1297,11 @@ Section
1185
1297
  [Default Value] None
1186
1298
 
1187
1299
 
1300
+ ===== --ask
1301
+ Prompt for note via multi-line input
1302
+
1303
+
1304
+
1188
1305
  ===== -e|--editor
1189
1306
  Edit entry with vim
1190
1307
 
@@ -1337,7 +1454,7 @@ If a date string is provided as an argument, the start time will be set to the p
1337
1454
  ===== Options
1338
1455
  ===== --bool BOOLEAN
1339
1456
 
1340
- Boolean (AND|OR|NOT) with which to combine multiple tag filters
1457
+ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
1341
1458
 
1342
1459
  [Default Value] PATTERN
1343
1460
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
@@ -1367,11 +1484,19 @@ Reset last entry matching search filter, surround with slashes for regex (e.g. "
1367
1484
 
1368
1485
  ===== --tag TAG
1369
1486
 
1370
- Reset last entry matching tag. Wildcards allowed (*, ?).
1487
+ Reset last entry matching tag. Wildcards allowed (*, ?)
1371
1488
 
1372
1489
  [Default Value] None
1373
1490
 
1374
1491
 
1492
+ ===== --val QUERY
1493
+
1494
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1495
+
1496
+ [Default Value] None
1497
+ [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
1498
+
1499
+
1375
1500
  ===== -i|--interactive
1376
1501
  Select from a menu of matching entries
1377
1502
 
@@ -1409,7 +1534,7 @@ Rotate entries older than date
1409
1534
 
1410
1535
  ===== --bool BOOLEAN
1411
1536
 
1412
- Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans.
1537
+ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
1413
1538
 
1414
1539
  [Default Value] PATTERN
1415
1540
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
@@ -1447,9 +1572,17 @@ Search filter
1447
1572
 
1448
1573
  ===== --tag TAG
1449
1574
 
1450
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?). Added for compatibility with other commands.
1575
+ Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?). Added for compatibility with other commands
1576
+
1577
+ [Default Value] None
1578
+
1579
+
1580
+ ===== --val QUERY
1581
+
1582
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1451
1583
 
1452
1584
  [Default Value] None
1585
+ [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
1453
1586
 
1454
1587
 
1455
1588
  ===== --not
@@ -1483,7 +1616,7 @@ selected entries.
1483
1616
 
1484
1617
  Search in the menu by typing:
1485
1618
 
1486
- sbtrkt fuzzy-match Items that match sbtrkt
1619
+ sbtrkt fuzzy-match Items that match s*b*t*r*k*t
1487
1620
 
1488
1621
  'wild exact-match (quoted) Items that include wild
1489
1622
 
@@ -1491,14 +1624,14 @@ sbtrkt fuzzy-match Items that match sbtrkt
1491
1624
  ===== Options
1492
1625
  ===== --after DATE_STRING
1493
1626
 
1494
- Select from entries newer than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day.
1627
+ Select from entries newer than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
1495
1628
 
1496
1629
  [Default Value] None
1497
1630
 
1498
1631
 
1499
1632
  ===== --before DATE_STRING
1500
1633
 
1501
- Select from entries older than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day.
1634
+ Select from entries older than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
1502
1635
 
1503
1636
  [Default Value] None
1504
1637
 
@@ -1537,7 +1670,7 @@ Output entries to format (csv|dayone|dayone-days|dayone-entries|doing|html|json|
1537
1670
  [Default Value] None
1538
1671
 
1539
1672
 
1540
- ===== -q|--query|--search QUERY
1673
+ ===== -q|--query QUERY
1541
1674
 
1542
1675
  Initial search query for filtering. Matching is fuzzy. For exact matching, start query with a single quote, e.g. `--query "'search"
1543
1676
 
@@ -1558,6 +1691,13 @@ Save selected entries to file using --output format
1558
1691
  [Default Value] None
1559
1692
 
1560
1693
 
1694
+ ===== --search QUERY
1695
+
1696
+ Select from entries matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
1697
+
1698
+ [Default Value] None
1699
+
1700
+
1561
1701
  ===== -t|--tag TAG
1562
1702
 
1563
1703
  Tag selected entries
@@ -1565,6 +1705,14 @@ Tag selected entries
1565
1705
  [Default Value] None
1566
1706
 
1567
1707
 
1708
+ ===== --val QUERY
1709
+
1710
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1711
+
1712
+ [Default Value] None
1713
+ [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
1714
+
1715
+
1568
1716
  ===== -a|--archive
1569
1717
  Archive selected items
1570
1718
 
@@ -1601,12 +1749,12 @@ Add flag to selected item(s)
1601
1749
 
1602
1750
 
1603
1751
  ===== --force
1604
- Perform action without confirmation.
1752
+ Perform action without confirmation
1605
1753
 
1606
1754
 
1607
1755
 
1608
1756
  ===== --[no-]menu
1609
- Use --no-menu to skip the interactive menu. Use with --query to filter items and act on results automatically. Test with `--output doing` to preview matches.
1757
+ Use --no-menu to skip the interactive menu. Use with --query to filter items and act on results automatically. Test with `--output doing` to preview matches
1610
1758
 
1611
1759
 
1612
1760
 
@@ -1644,14 +1792,14 @@ Age (oldest|newest)
1644
1792
 
1645
1793
  ===== --after DATE_STRING
1646
1794
 
1647
- Show entries newer than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day.
1795
+ Show entries newer than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
1648
1796
 
1649
1797
  [Default Value] None
1650
1798
 
1651
1799
 
1652
1800
  ===== -b|--bool BOOLEAN
1653
1801
 
1654
- Tag boolean (AND,OR,NOT). Use PATTERN to parse + and - as booleans.
1802
+ Tag boolean (AND,OR,NOT). Use PATTERN to parse + and - as booleans
1655
1803
 
1656
1804
  [Default Value] PATTERN
1657
1805
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
@@ -1659,7 +1807,7 @@ Tag boolean (AND,OR,NOT). Use PATTERN to parse + and - as booleans.
1659
1807
 
1660
1808
  ===== --before DATE_STRING
1661
1809
 
1662
- Show entries older than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day.
1810
+ Show entries older than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
1663
1811
 
1664
1812
  [Default Value] None
1665
1813
 
@@ -1716,7 +1864,7 @@ Search filter, surround with slashes for regex (/query/), start with single quot
1716
1864
 
1717
1865
  ===== --tag TAG
1718
1866
 
1719
- Tag filter, combine multiple tags with a comma. Use `--tag pick` for a menu of available tags. Wildcards allowed (*, ?). Added for compatibility with other commands.
1867
+ Tag filter, combine multiple tags with a comma. Use `--tag pick` for a menu of available tags. Wildcards allowed (*, ?). Added for compatibility with other commands
1720
1868
 
1721
1869
  [Default Value] None
1722
1870
 
@@ -1737,6 +1885,14 @@ Sort tags by (name|time)
1737
1885
  [Must Match] (?i-mx:^(?:name|time))
1738
1886
 
1739
1887
 
1888
+ ===== --val QUERY
1889
+
1890
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1891
+
1892
+ [Default Value] None
1893
+ [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
1894
+
1895
+
1740
1896
  ===== --[no-]duration
1741
1897
  Show elapsed time on entries without @done tag
1742
1898
 
@@ -1839,7 +1995,7 @@ Add (or remove) tags from the last entry, or from multiple entries
1839
1995
  ===== Options
1840
1996
  ===== --bool BOOLEAN
1841
1997
 
1842
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans.
1998
+ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
1843
1999
 
1844
2000
  [Default Value] PATTERN
1845
2001
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
@@ -1890,6 +2046,21 @@ Tag the last X entries containing TAG.
1890
2046
  [Default Value] None
1891
2047
 
1892
2048
 
2049
+ ===== -v|--value VALUE
2050
+
2051
+ Include a value, e.g. @tag(value)
2052
+
2053
+ [Default Value] None
2054
+
2055
+
2056
+ ===== --val QUERY
2057
+
2058
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
2059
+
2060
+ [Default Value] None
2061
+ [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
2062
+
2063
+
1893
2064
  ===== -a|--autotag
1894
2065
  Autotag entries based on autotag configuration in ~/.config/doing/config.yml
1895
2066
 
@@ -1935,6 +2106,18 @@ Force exact search string matching (case sensitive)
1935
2106
 
1936
2107
 
1937
2108
 
2109
+ ==== Command: <tt>tag_dir TAG [TAG..]</tt>
2110
+ Set the default tags for the current directory
2111
+
2112
+ Adds default_tags to a .doingrc file in the current directory. Any entry created in this directory or its
2113
+ subdirectories will be tagged with the default tags. You can modify these any time using the `config set` commnand or
2114
+ manually editing the .doingrc file.
2115
+ ===== Options
2116
+ ===== -r|--remove
2117
+ Remove all default_tags from the local .doingrc
2118
+
2119
+
2120
+
1938
2121
  ==== Command: <tt>tags </tt>
1939
2122
  List all tags in the current Doing file
1940
2123
 
@@ -1942,7 +2125,7 @@ List all tags in the current Doing file
1942
2125
  ===== Options
1943
2126
  ===== --bool BOOLEAN
1944
2127
 
1945
- Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans.
2128
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1946
2129
 
1947
2130
  [Default Value] PATTERN
1948
2131
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
@@ -1989,9 +2172,17 @@ Sort by name or count
1989
2172
 
1990
2173
  ===== --tag TAG
1991
2174
 
1992
- Get tags for entries matching tags. Combine multiple tags with a comma. Wildcards allowed (*, ?).
2175
+ Get tags for entries matching tags. Combine multiple tags with a comma. Wildcards allowed (*, ?)
2176
+
2177
+ [Default Value] None
2178
+
2179
+
2180
+ ===== --val QUERY
2181
+
2182
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1993
2183
 
1994
2184
  [Default Value] None
2185
+ [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
1995
2186
 
1996
2187
 
1997
2188
  ===== -c|--[no-]counts
@@ -2138,7 +2329,7 @@ Select from recent backups
2138
2329
 
2139
2330
 
2140
2331
  ===== -r|--[no-]redo
2141
- Redo last undo. Note: you cannot undo a redo.
2332
+ Redo last undo. Note: you cannot undo a redo
2142
2333
 
2143
2334
 
2144
2335
 
@@ -2150,7 +2341,7 @@ Command line options override view configuration.
2150
2341
  ===== Options
2151
2342
  ===== --after DATE_STRING
2152
2343
 
2153
- View entries newer than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day.
2344
+ View entries newer than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
2154
2345
 
2155
2346
  [Default Value] None
2156
2347
 
@@ -2164,7 +2355,7 @@ Age (oldest|newest)
2164
2355
 
2165
2356
  ===== -b|--bool BOOLEAN
2166
2357
 
2167
- Tag boolean (AND,OR,NOT). Use PATTERN to parse + and - as booleans.
2358
+ Tag boolean (AND,OR,NOT). Use PATTERN to parse + and - as booleans
2168
2359
 
2169
2360
  [Default Value] PATTERN
2170
2361
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
@@ -2172,7 +2363,7 @@ Tag boolean (AND,OR,NOT). Use PATTERN to parse + and - as booleans.
2172
2363
 
2173
2364
  ===== --before DATE_STRING
2174
2365
 
2175
- View entries older than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day.
2366
+ View entries older than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
2176
2367
 
2177
2368
  [Default Value] None
2178
2369
 
@@ -2228,7 +2419,7 @@ Search filter, surround with slashes for regex (/query/), start with single quot
2228
2419
 
2229
2420
  ===== --tag TAG
2230
2421
 
2231
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?).
2422
+ Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?)
2232
2423
 
2233
2424
  [Default Value] None
2234
2425
 
@@ -2249,6 +2440,14 @@ Sort tags by (name|time)
2249
2440
  [Must Match] (?i-mx:^(?:name|time)$)
2250
2441
 
2251
2442
 
2443
+ ===== --val QUERY
2444
+
2445
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
2446
+
2447
+ [Default Value] None
2448
+ [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
2449
+
2450
+
2252
2451
  ===== --[no-]color
2253
2452
  Include colors in output
2254
2453
 
data/example_plugin.rb CHANGED
@@ -152,11 +152,9 @@ module Doing
152
152
  finished_at = i.end_date
153
153
  took += finished_at.strftime('%A %B %e at %I:%M%p')
154
154
 
155
- d, h, m = wwid.format_time(interval)
155
+
156
156
  took += ' and it took'
157
- took += " #{d.to_i} days" if d.to_i.positive?
158
- took += " #{h.to_i} hours" if h.to_i.positive?
159
- took += " #{m.to_i} minutes" if m.to_i.positive?
157
+ took += interval.time_string(format: :natural)
160
158
  end
161
159
  end
162
160