doing 2.1.11 → 2.1.15

Sign up to get free protection for your applications and to get access to all the features.
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