doing 2.1.24 → 2.1.25
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardoc/checksums +11 -10
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/CHANGELOG.md +17 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/Rakefile +2 -1
- data/bin/doing +81 -37
- data/docs/doc/Array.html +70 -7
- data/docs/doc/BooleanTermParser/Clause.html +5 -5
- data/docs/doc/BooleanTermParser/Operator.html +4 -4
- data/docs/doc/BooleanTermParser/Query.html +8 -8
- data/docs/doc/BooleanTermParser/QueryParser.html +2 -2
- data/docs/doc/BooleanTermParser/QueryTransformer.html +2 -2
- data/docs/doc/BooleanTermParser.html +1 -1
- data/docs/doc/Doing/Color.html +4 -4
- data/docs/doc/Doing/Completion.html +2 -2
- data/docs/doc/Doing/Configuration.html +14 -16
- data/docs/doc/Doing/Errors/DoingNoTraceError.html +2 -2
- data/docs/doc/Doing/Errors/DoingRuntimeError.html +2 -2
- data/docs/doc/Doing/Errors/DoingStandardError.html +2 -2
- data/docs/doc/Doing/Errors/EmptyInput.html +2 -2
- data/docs/doc/Doing/Errors/NoResults.html +2 -2
- data/docs/doc/Doing/Errors/PluginException.html +3 -3
- data/docs/doc/Doing/Errors/UserCancelled.html +2 -2
- data/docs/doc/Doing/Errors/WrongCommand.html +2 -2
- data/docs/doc/Doing/Errors.html +1 -1
- data/docs/doc/Doing/Hooks.html +6 -6
- data/docs/doc/Doing/Item.html +50 -16
- data/docs/doc/Doing/Items.html +10 -10
- data/docs/doc/Doing/LogAdapter.html +24 -24
- data/docs/doc/Doing/Note.html +7 -7
- data/docs/doc/Doing/Pager.html +4 -4
- data/docs/doc/Doing/Plugins.html +7 -7
- data/docs/doc/Doing/Prompt.html +14 -14
- data/docs/doc/Doing/Section.html +6 -6
- data/docs/doc/Doing/TemplateString.html +8 -8
- data/docs/doc/Doing/Types.html +6 -1
- data/docs/doc/Doing/Util/Backup.html +10 -10
- data/docs/doc/Doing/Util.html +15 -15
- data/docs/doc/Doing/WWID.html +65 -53
- data/docs/doc/Doing.html +3 -3
- data/docs/doc/GLI/Commands/Help.html +3 -3
- data/docs/doc/GLI/Commands/MarkdownDocumentListener.html +17 -17
- data/docs/doc/GLI/Commands.html +1 -1
- data/docs/doc/GLI.html +1 -1
- data/docs/doc/Hash.html +45 -11
- data/docs/doc/Numeric.html +5 -5
- data/docs/doc/PhraseParser/Operator.html +4 -4
- data/docs/doc/PhraseParser/PhraseClause.html +5 -5
- data/docs/doc/PhraseParser/Query.html +10 -10
- data/docs/doc/PhraseParser/QueryParser.html +2 -2
- data/docs/doc/PhraseParser/QueryTransformer.html +2 -2
- data/docs/doc/PhraseParser/TermClause.html +5 -5
- data/docs/doc/PhraseParser.html +1 -1
- data/docs/doc/Status.html +7 -7
- data/docs/doc/String.html +107 -44
- data/docs/doc/Symbol.html +8 -8
- data/docs/doc/Time.html +6 -6
- data/docs/doc/_index.html +41 -18
- data/docs/doc/class_list.html +1 -1
- data/docs/doc/file.README.html +2 -2
- data/docs/doc/index.html +2 -2
- data/docs/doc/method_list.html +369 -313
- data/docs/doc/top-level-namespace.html +2 -2
- data/doing.rdoc +19 -11
- data/example_plugin.rb +2 -2
- data/lib/completion/_doing.zsh +12 -12
- data/lib/completion/doing.bash +2 -2
- data/lib/completion/doing.fish +9 -8
- data/lib/doing/changelog/changes.rb +1 -1
- data/lib/doing/configuration.rb +4 -6
- data/lib/doing/good.rb +64 -0
- data/lib/doing/hash.rb +4 -0
- data/lib/doing/hooks.rb +3 -3
- data/lib/doing/item.rb +14 -10
- data/lib/doing/plugins/import/calendar_import.rb +1 -1
- data/lib/doing/plugins/import/doing_import.rb +1 -1
- data/lib/doing/plugins/import/timing_import.rb +1 -1
- data/lib/doing/string.rb +1 -1
- data/lib/doing/template_string.rb +2 -2
- data/lib/doing/types.rb +1 -0
- data/lib/doing/util.rb +10 -10
- data/lib/doing/version.rb +1 -1
- data/lib/doing/wwid.rb +40 -18
- data/lib/doing.rb +1 -0
- data/lib/helpers/threaded_tests.rb +35 -64
- data/lib/helpers/threaded_tests_string.rb +50 -0
- metadata +4 -2
@@ -86,7 +86,7 @@
|
|
86
86
|
|
87
87
|
|
88
88
|
|
89
|
-
<strong class="classes">Classes:</strong> <span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span>, <span class='object_link'><a href="Hash.html" title="Hash (class)">Hash</a></span>, <span class='object_link'><a href="Numeric.html" title="Numeric (class)">Numeric</a></span>, <span class='object_link'><a href="String.html" title="String (class)">String</a></span>, <span class='object_link'><a href="Symbol.html" title="Symbol (class)">Symbol</a></span>, <span class='object_link'><a href="Time.html" title="Time (class)">Time</a></span>
|
89
|
+
<strong class="classes">Classes:</strong> <span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span>, <span class='object_link'><a href="FalseClass.html" title="FalseClass (class)">FalseClass</a></span>, <span class='object_link'><a href="Hash.html" title="Hash (class)">Hash</a></span>, <span class='object_link'><a href="Numeric.html" title="Numeric (class)">Numeric</a></span>, <span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span>, <span class='object_link'><a href="String.html" title="String (class)">String</a></span>, <span class='object_link'><a href="Symbol.html" title="Symbol (class)">Symbol</a></span>, <span class='object_link'><a href="Time.html" title="Time (class)">Time</a></span>, <span class='object_link'><a href="TrueClass.html" title="TrueClass (class)">TrueClass</a></span>
|
90
90
|
|
91
91
|
|
92
92
|
</p>
|
@@ -102,7 +102,7 @@
|
|
102
102
|
</div>
|
103
103
|
|
104
104
|
<div id="footer">
|
105
|
-
Generated on
|
105
|
+
Generated on Sun Jan 23 09:24:04 2022 by
|
106
106
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
107
107
|
0.9.27 (ruby-3.0.1).
|
108
108
|
</div>
|
data/doing.rdoc
CHANGED
@@ -5,7 +5,7 @@ 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.
|
8
|
+
v2.1.25
|
9
9
|
|
10
10
|
=== Global Options
|
11
11
|
=== --config_file arg
|
@@ -165,7 +165,7 @@ Prompt for note via multi-line input
|
|
165
165
|
|
166
166
|
|
167
167
|
===== -e|--editor
|
168
|
-
Edit duplicated entry with vim before adding
|
168
|
+
Edit duplicated entry with /opt/homebrew/bin/vim before adding
|
169
169
|
|
170
170
|
|
171
171
|
|
@@ -625,7 +625,7 @@ Include date
|
|
625
625
|
|
626
626
|
|
627
627
|
===== -e|--editor
|
628
|
-
Edit entry with vim (with no arguments, edits the last entry)
|
628
|
+
Edit entry with /opt/homebrew/bin/vim (with no arguments, edits the last entry)
|
629
629
|
|
630
630
|
|
631
631
|
|
@@ -857,7 +857,7 @@ Show elapsed time on entries without @done tag
|
|
857
857
|
|
858
858
|
|
859
859
|
===== -e|--editor
|
860
|
-
Edit matching entries with vim
|
860
|
+
Edit matching entries with /opt/homebrew/bin/vim
|
861
861
|
|
862
862
|
|
863
863
|
|
@@ -1078,7 +1078,7 @@ Show elapsed time if entry is not tagged @done
|
|
1078
1078
|
|
1079
1079
|
|
1080
1080
|
===== -e|--editor
|
1081
|
-
Edit entry with vim
|
1081
|
+
Edit entry with /opt/homebrew/bin/vim
|
1082
1082
|
|
1083
1083
|
|
1084
1084
|
|
@@ -1122,7 +1122,7 @@ Prompt for note via multi-line input
|
|
1122
1122
|
|
1123
1123
|
|
1124
1124
|
===== -e|--editor
|
1125
|
-
Edit entry with vim
|
1125
|
+
Edit entry with /opt/homebrew/bin/vim
|
1126
1126
|
|
1127
1127
|
|
1128
1128
|
|
@@ -1260,7 +1260,7 @@ Prompt for note via multi-line input
|
|
1260
1260
|
|
1261
1261
|
|
1262
1262
|
===== -e|--editor
|
1263
|
-
Edit entry with vim
|
1263
|
+
Edit entry with /opt/homebrew/bin/vim
|
1264
1264
|
|
1265
1265
|
|
1266
1266
|
|
@@ -1324,7 +1324,7 @@ Prompt for note via multi-line input
|
|
1324
1324
|
|
1325
1325
|
|
1326
1326
|
===== -e|--editor
|
1327
|
-
Edit entry with vim
|
1327
|
+
Edit entry with /opt/homebrew/bin/vim
|
1328
1328
|
|
1329
1329
|
|
1330
1330
|
|
@@ -1357,7 +1357,7 @@ A parenthetical at the end of the entry will be converted to a note.
|
|
1357
1357
|
|
1358
1358
|
Run without arguments to create a new entry interactively.
|
1359
1359
|
|
1360
|
-
Run with --editor to create a new entry using vim.
|
1360
|
+
Run with --editor to create a new entry using /opt/homebrew/bin/vim.
|
1361
1361
|
===== Options
|
1362
1362
|
===== -b|--back|--started DATE_STRING
|
1363
1363
|
|
@@ -1366,6 +1366,14 @@ Backdate start time [4pm|20m|2h|"yesterday noon"]
|
|
1366
1366
|
[Default Value] None
|
1367
1367
|
|
1368
1368
|
|
1369
|
+
===== --from TIME_RANGE
|
1370
|
+
|
1371
|
+
Set a start and optionally end time as a date range ("from 1pm to 2:30pm").
|
1372
|
+
If an end time is provided, a dated @done tag will be added
|
1373
|
+
|
1374
|
+
[Default Value] None
|
1375
|
+
|
1376
|
+
|
1369
1377
|
===== -n|--note TEXT
|
1370
1378
|
|
1371
1379
|
Include a note
|
@@ -1386,7 +1394,7 @@ Prompt for note via multi-line input
|
|
1386
1394
|
|
1387
1395
|
|
1388
1396
|
===== -e|--editor
|
1389
|
-
Edit entry with vim
|
1397
|
+
Edit entry with /opt/homebrew/bin/vim
|
1390
1398
|
|
1391
1399
|
|
1392
1400
|
|
@@ -1457,7 +1465,7 @@ Show time totals at the end of output
|
|
1457
1465
|
Open the "doing" file in an editor
|
1458
1466
|
|
1459
1467
|
`doing open` defaults to using the editors->doing_file setting
|
1460
|
-
in /Users/ttscoff/.config/doing/config.yml (
|
1468
|
+
in /Users/ttscoff/.config/doing/config.yml (/opt/homebrew/bin/vim).
|
1461
1469
|
===== Options
|
1462
1470
|
===== -a|--app APP_NAME
|
1463
1471
|
|
data/example_plugin.rb
CHANGED
@@ -123,7 +123,7 @@ module Doing
|
|
123
123
|
## @return [String] Rendered output
|
124
124
|
##
|
125
125
|
def self.render(wwid, items, variables: {})
|
126
|
-
return
|
126
|
+
return unless items.good?
|
127
127
|
|
128
128
|
# the :options key includes the flags passed to the
|
129
129
|
# command that called the plugin use `puts
|
@@ -164,7 +164,7 @@ module Doing
|
|
164
164
|
|
165
165
|
if wwid.config['export_templates'].key?('say')
|
166
166
|
cfg_tpl = wwid.config['export_templates']['say']
|
167
|
-
tpl = cfg_tpl
|
167
|
+
tpl = cfg_tpl if cfg_tpl.good?
|
168
168
|
end
|
169
169
|
output = tpl.dup
|
170
170
|
output.gsub!(/%date/, date)
|
data/lib/completion/_doing.zsh
CHANGED
@@ -70,10 +70,10 @@ function _doing() {
|
|
70
70
|
args=( )
|
71
71
|
;;
|
72
72
|
again)
|
73
|
-
args=( "(--ask)--ask}[Prompt for note via multi-line input]" "(--started=)--started=}[Backdate start date by interval or set to time [4pm|20m|2h|"yesterday noon"]]" "(--bool=)--bool=}[Boolean used to combine multiple tags]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-e,--editor}"[Edit duplicated entry with vim before adding]" {-i,--interactive}"[Select item to resume from a menu of matching entries]" "(--in=)--in=}[Add new entry to section]" {-n,--note=}"[Add a note]" "(--not)--not}[Resume items that *dont* match search/tag filterst* match search/tag filters]" {-s,--section=}"[Get last entry from a specific section]" "(--search=)--search=}[Repeat last entry matching search]" "(--tag=)--tag=}[Repeat last entry matching tags]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
|
73
|
+
args=( "(--ask)--ask}[Prompt for note via multi-line input]" "(--started=)--started=}[Backdate start date by interval or set to time [4pm|20m|2h|"yesterday noon"]]" "(--bool=)--bool=}[Boolean used to combine multiple tags]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-e,--editor}"[Edit duplicated entry with /opt/homebrew/bin/vim before adding]" {-i,--interactive}"[Select item to resume from a menu of matching entries]" "(--in=)--in=}[Add new entry to section]" {-n,--note=}"[Add a note]" "(--not)--not}[Resume items that *dont* match search/tag filterst* match search/tag filters]" {-s,--section=}"[Get last entry from a specific section]" "(--search=)--search=}[Repeat last entry matching search]" "(--tag=)--tag=}[Repeat last entry matching tags]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
|
74
74
|
;;
|
75
75
|
resume)
|
76
|
-
args=( "(--ask)--ask}[Prompt for note via multi-line input]" "(--started=)--started=}[Backdate start date by interval or set to time [4pm|20m|2h|"yesterday noon"]]" "(--bool=)--bool=}[Boolean used to combine multiple tags]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-e,--editor}"[Edit duplicated entry with vim before adding]" {-i,--interactive}"[Select item to resume from a menu of matching entries]" "(--in=)--in=}[Add new entry to section]" {-n,--note=}"[Add a note]" "(--not)--not}[Resume items that *dont* match search/tag filterst* match search/tag filters]" {-s,--section=}"[Get last entry from a specific section]" "(--search=)--search=}[Repeat last entry matching search]" "(--tag=)--tag=}[Repeat last entry matching tags]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
|
76
|
+
args=( "(--ask)--ask}[Prompt for note via multi-line input]" "(--started=)--started=}[Backdate start date by interval or set to time [4pm|20m|2h|"yesterday noon"]]" "(--bool=)--bool=}[Boolean used to combine multiple tags]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-e,--editor}"[Edit duplicated entry with /opt/homebrew/bin/vim before adding]" {-i,--interactive}"[Select item to resume from a menu of matching entries]" "(--in=)--in=}[Add new entry to section]" {-n,--note=}"[Add a note]" "(--not)--not}[Resume items that *dont* match search/tag filterst* match search/tag filters]" {-s,--section=}"[Get last entry from a specific section]" "(--search=)--search=}[Repeat last entry matching search]" "(--tag=)--tag=}[Repeat last entry matching tags]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
|
77
77
|
;;
|
78
78
|
archive)
|
79
79
|
args=( "(--before=)--before=}[Archive entries older than date]" "(--bool=)--bool=}[Tag boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-k,--keep=}"[How many items to keep]" "(--label)--label}[Label moved items with @from(SECTION_NAME)]" "(--not)--not}[Show items that *dont* match search stringt* match search string]" "(--search=)--search=}[Search filter]" {-t,--to=}"[Move entries to]" "(--tag=)--tag=}[Tag filter]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
|
@@ -106,19 +106,19 @@ function _doing() {
|
|
106
106
|
args=( {-d,--dump}"[DEPRECATED]" {-u,--update}"[DEPRECATED]" )
|
107
107
|
;;
|
108
108
|
done)
|
109
|
-
args=( {-a,--archive}"[Immediately archive the entry]" "(--ask)--ask}[Prompt for note via multi-line input]" "(--finished=)--finished=}[Set finish date to specific date/time]" "(--started=)--started=}[Backdate start date by interval or set to time [4pm|20m|2h|"yesterday noon"]]" "(--date)--date}[Include date]" {-e,--editor}"[Edit entry with vim]" "(--from=)--from=}[Start and end times as a date/time range `doing done --from "1am to 8am"`]" {-n,--note=}"[Include a note]" {-r,--remove}"[Remove @done tag]" {-s,--section=}"[Section]" "(--for=)--for=}[Set completion date to start date plus interval]" {-u,--unfinished}"[Finish last entry not already marked @done]" )
|
109
|
+
args=( {-a,--archive}"[Immediately archive the entry]" "(--ask)--ask}[Prompt for note via multi-line input]" "(--finished=)--finished=}[Set finish date to specific date/time]" "(--started=)--started=}[Backdate start date by interval or set to time [4pm|20m|2h|"yesterday noon"]]" "(--date)--date}[Include date]" {-e,--editor}"[Edit entry with /opt/homebrew/bin/vim]" "(--from=)--from=}[Start and end times as a date/time range `doing done --from "1am to 8am"`]" {-n,--note=}"[Include a note]" {-r,--remove}"[Remove @done tag]" {-s,--section=}"[Section]" "(--for=)--for=}[Set completion date to start date plus interval]" {-u,--unfinished}"[Finish last entry not already marked @done]" )
|
110
110
|
;;
|
111
111
|
did)
|
112
|
-
args=( {-a,--archive}"[Immediately archive the entry]" "(--ask)--ask}[Prompt for note via multi-line input]" "(--finished=)--finished=}[Set finish date to specific date/time]" "(--started=)--started=}[Backdate start date by interval or set to time [4pm|20m|2h|"yesterday noon"]]" "(--date)--date}[Include date]" {-e,--editor}"[Edit entry with vim]" "(--from=)--from=}[Start and end times as a date/time range `doing done --from "1am to 8am"`]" {-n,--note=}"[Include a note]" {-r,--remove}"[Remove @done tag]" {-s,--section=}"[Section]" "(--for=)--for=}[Set completion date to start date plus interval]" {-u,--unfinished}"[Finish last entry not already marked @done]" )
|
112
|
+
args=( {-a,--archive}"[Immediately archive the entry]" "(--ask)--ask}[Prompt for note via multi-line input]" "(--finished=)--finished=}[Set finish date to specific date/time]" "(--started=)--started=}[Backdate start date by interval or set to time [4pm|20m|2h|"yesterday noon"]]" "(--date)--date}[Include date]" {-e,--editor}"[Edit entry with /opt/homebrew/bin/vim]" "(--from=)--from=}[Start and end times as a date/time range `doing done --from "1am to 8am"`]" {-n,--note=}"[Include a note]" {-r,--remove}"[Remove @done tag]" {-s,--section=}"[Section]" "(--for=)--for=}[Set completion date to start date plus interval]" {-u,--unfinished}"[Finish last entry not already marked @done]" )
|
113
113
|
;;
|
114
114
|
finish)
|
115
115
|
args=( {-a,--archive}"[Archive entries]" "(--finished=)--finished=}[Set finish date to specific date/time]" "(--auto)--auto}[Auto-generate finish dates from next entrys start times start time]" "(--started=)--started=}[Backdate completed date to date string [4pm|20m|2h|yesterday noon]]" "(--bool=)--bool=}[Boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" "(--date)--date}[Include date]" {-i,--interactive}"[Select item(s) to finish from a menu of matching entries]" "(--not)--not}[Finish items that *dont* match search/tag filterst* match search/tag filters]" {-r,--remove}"[Remove done tag]" {-s,--section=}"[Section]" "(--search=)--search=}[Finish the last X entries matching search filter]" "(--for=)--for=}[Set the completed date to the start date plus XX[hmd]]" "(--tag=)--tag=}[Finish the last X entries containing TAG]" {-u,--unfinished}"[Finish last entry]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
|
116
116
|
;;
|
117
117
|
grep)
|
118
|
-
args=( "(--after=)--after=}[Search entries newer than date]" "(--before=)--before=}[Search entries older than date]" "(--bool=)--bool=}[Combine multiple tags or value queries using AND]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" "(--config_template=)--config_template=}[Output using a template from configuration]" {-d,--delete}"[Delete matching entries]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" {-e,--editor}"[Edit matching entries with vim]" "(--from=)--from=}[Date range to show]" {-h,--hilite}"[Highlight search matches in output]" {-i,--interactive}"[Display an interactive menu of results to perform further operations]" "(--not)--not}[Show items that *dont* match search stringt* match search string]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--template=)--template=}[Override output format with a template string containing %placeholders]" "(--totals)--totals}[Show intervals with totals at the end of output]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact string matching]" )
|
118
|
+
args=( "(--after=)--after=}[Search entries newer than date]" "(--before=)--before=}[Search entries older than date]" "(--bool=)--bool=}[Combine multiple tags or value queries using AND]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" "(--config_template=)--config_template=}[Output using a template from configuration]" {-d,--delete}"[Delete matching entries]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" {-e,--editor}"[Edit matching entries with /opt/homebrew/bin/vim]" "(--from=)--from=}[Date range to show]" {-h,--hilite}"[Highlight search matches in output]" {-i,--interactive}"[Display an interactive menu of results to perform further operations]" "(--not)--not}[Show items that *dont* match search stringt* match search string]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--template=)--template=}[Override output format with a template string containing %placeholders]" "(--totals)--totals}[Show intervals with totals at the end of output]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact string matching]" )
|
119
119
|
;;
|
120
120
|
search)
|
121
|
-
args=( "(--after=)--after=}[Search entries newer than date]" "(--before=)--before=}[Search entries older than date]" "(--bool=)--bool=}[Combine multiple tags or value queries using AND]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" "(--config_template=)--config_template=}[Output using a template from configuration]" {-d,--delete}"[Delete matching entries]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" {-e,--editor}"[Edit matching entries with vim]" "(--from=)--from=}[Date range to show]" {-h,--hilite}"[Highlight search matches in output]" {-i,--interactive}"[Display an interactive menu of results to perform further operations]" "(--not)--not}[Show items that *dont* match search stringt* match search string]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--template=)--template=}[Override output format with a template string containing %placeholders]" "(--totals)--totals}[Show intervals with totals at the end of output]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact string matching]" )
|
121
|
+
args=( "(--after=)--after=}[Search entries newer than date]" "(--before=)--before=}[Search entries older than date]" "(--bool=)--bool=}[Combine multiple tags or value queries using AND]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" "(--config_template=)--config_template=}[Output using a template from configuration]" {-d,--delete}"[Delete matching entries]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" {-e,--editor}"[Edit matching entries with /opt/homebrew/bin/vim]" "(--from=)--from=}[Date range to show]" {-h,--hilite}"[Highlight search matches in output]" {-i,--interactive}"[Display an interactive menu of results to perform further operations]" "(--not)--not}[Show items that *dont* match search stringt* match search string]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--template=)--template=}[Override output format with a template string containing %placeholders]" "(--totals)--totals}[Show intervals with totals at the end of output]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact string matching]" )
|
122
122
|
;;
|
123
123
|
help)
|
124
124
|
args=( )
|
@@ -127,10 +127,10 @@ function _doing() {
|
|
127
127
|
args=( "(--after=)--after=}[Import entries newer than date]" "(--autotag)--autotag}[Autotag entries]" "(--before=)--before=}[Import entries older than date]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-f,--from=}"[Date range to import]" "(--not)--not}[Import items that *dont* match search/tag/date filterst* match search/tag/date filters]" "(--only_timed)--only_timed}[Only import items with recorded time intervals]" "(--overlap)--overlap}[Allow entries that overlap existing times]" "(--prefix=)--prefix=}[Prefix entries with]" {-s,--section=}"[Target section]" "(--search=)--search=}[Only import items matching search]" {-t,--tag=}"[Tag all imported entries]" "(--type=)--type=}[Import type]" {-x,--exact}"[Force exact search string matching]" )
|
128
128
|
;;
|
129
129
|
last)
|
130
|
-
args=( "(--bool=)--bool=}[Tag boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" "(--config_template=)--config_template=}[Output using a template from configuration]" {-d,--delete}"[Delete the last entry]" "(--duration)--duration}[Show elapsed time if entry is not tagged @done]" {-e,--editor}"[Edit entry with vim]" {-h,--hilite}"[Highlight search matches in output]" "(--not)--not}[Show items that *dont* match search string or tag filtert* match search string or tag filter]" {-s,--section=}"[Specify a section]" "(--search=)--search=}[Search filter]" "(--tag=)--tag=}[Tag filter]" "(--template=)--template=}[Override output format with a template string containing %placeholders]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
|
130
|
+
args=( "(--bool=)--bool=}[Tag boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" "(--config_template=)--config_template=}[Output using a template from configuration]" {-d,--delete}"[Delete the last entry]" "(--duration)--duration}[Show elapsed time if entry is not tagged @done]" {-e,--editor}"[Edit entry with /opt/homebrew/bin/vim]" {-h,--hilite}"[Highlight search matches in output]" "(--not)--not}[Show items that *dont* match search string or tag filtert* match search string or tag filter]" {-s,--section=}"[Specify a section]" "(--search=)--search=}[Search filter]" "(--tag=)--tag=}[Tag filter]" "(--template=)--template=}[Override output format with a template string containing %placeholders]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
|
131
131
|
;;
|
132
132
|
later)
|
133
|
-
args=( "(--ask)--ask}[Prompt for note via multi-line input]" "(--started=)--started=}[Backdate start time to date string [4pm|20m|2h|yesterday noon]]" {-e,--editor}"[Edit entry with vim]" {-n,--note=}"[Note]" )
|
133
|
+
args=( "(--ask)--ask}[Prompt for note via multi-line input]" "(--started=)--started=}[Backdate start time to date string [4pm|20m|2h|yesterday noon]]" {-e,--editor}"[Edit entry with /opt/homebrew/bin/vim]" {-n,--note=}"[Note]" )
|
134
134
|
;;
|
135
135
|
mark)
|
136
136
|
args=( "(--bool=)--bool=}[Boolean]" {-c,--count=}"[How many recent entries to tag]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-d,--date}"[Include current date/time with tag]" "(--force)--force}[Dont ask permission to flag all entries when count is 0t ask permission to flag all entries when count is 0]" {-i,--interactive}"[Select item(s) to flag from a menu of matching entries]" "(--not)--not}[Flag items that *dont* match search/tag/date filterst* match search/tag/date filters]" {-r,--remove}"[Remove flag]" {-s,--section=}"[Section]" "(--search=)--search=}[Flag the last entry matching search filter]" "(--tag=)--tag=}[Flag the last entry containing TAG]" {-u,--unfinished}"[Flag last entry]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
|
@@ -139,16 +139,16 @@ function _doing() {
|
|
139
139
|
args=( "(--bool=)--bool=}[Boolean]" {-c,--count=}"[How many recent entries to tag]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-d,--date}"[Include current date/time with tag]" "(--force)--force}[Dont ask permission to flag all entries when count is 0t ask permission to flag all entries when count is 0]" {-i,--interactive}"[Select item(s) to flag from a menu of matching entries]" "(--not)--not}[Flag items that *dont* match search/tag/date filterst* match search/tag/date filters]" {-r,--remove}"[Remove flag]" {-s,--section=}"[Section]" "(--search=)--search=}[Flag the last entry matching search filter]" "(--tag=)--tag=}[Flag the last entry containing TAG]" {-u,--unfinished}"[Flag last entry]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
|
140
140
|
;;
|
141
141
|
meanwhile)
|
142
|
-
args=( {-a,--archive}"[Archive previous @meanwhile entry]" "(--ask)--ask}[Prompt for note via multi-line input]" "(--started=)--started=}[Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]]" {-e,--editor}"[Edit entry with vim]" {-n,--note=}"[Note]" {-s,--section=}"[Section]" )
|
142
|
+
args=( {-a,--archive}"[Archive previous @meanwhile entry]" "(--ask)--ask}[Prompt for note via multi-line input]" "(--started=)--started=}[Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]]" {-e,--editor}"[Edit entry with /opt/homebrew/bin/vim]" {-n,--note=}"[Note]" {-s,--section=}"[Section]" )
|
143
143
|
;;
|
144
144
|
note)
|
145
|
-
args=( "(--ask)--ask}[Prompt for note via multi-line input]" "(--bool=)--bool=}[Boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-e,--editor}"[Edit entry with vim]" {-i,--interactive}"[Select item for new note from a menu of matching entries]" "(--not)--not}[Add note to item that *doesnt* match search/tag filterst* match search/tag filters]" {-r,--remove}"[Replace/Remove last entrys notes note]" {-s,--section=}"[Section]" "(--search=)--search=}[Add/remove note from last entry matching search filter]" "(--tag=)--tag=}[Add/remove note from last entry matching tag]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
|
145
|
+
args=( "(--ask)--ask}[Prompt for note via multi-line input]" "(--bool=)--bool=}[Boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-e,--editor}"[Edit entry with /opt/homebrew/bin/vim]" {-i,--interactive}"[Select item for new note from a menu of matching entries]" "(--not)--not}[Add note to item that *doesnt* match search/tag filterst* match search/tag filters]" {-r,--remove}"[Replace/Remove last entrys notes note]" {-s,--section=}"[Section]" "(--search=)--search=}[Add/remove note from last entry matching search filter]" "(--tag=)--tag=}[Add/remove note from last entry matching tag]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
|
146
146
|
;;
|
147
147
|
now)
|
148
|
-
args=( "(--ask)--ask}[Prompt for note via multi-line input]" "(--started=)--started=}[Backdate start time [4pm|20m|2h|"yesterday noon"]]" {-e,--editor}"[Edit entry with vim]" {-f,--finish_last}"[Timed entry]" {-n,--note=}"[Include a note]" {-s,--section=}"[Section]" )
|
148
|
+
args=( "(--ask)--ask}[Prompt for note via multi-line input]" "(--started=)--started=}[Backdate start time [4pm|20m|2h|"yesterday noon"]]" {-e,--editor}"[Edit entry with /opt/homebrew/bin/vim]" {-f,--finish_last}"[Timed entry]" "(--from=)--from=}[Set a start and optionally end time as a date range]" {-n,--note=}"[Include a note]" {-s,--section=}"[Section]" )
|
149
149
|
;;
|
150
150
|
next)
|
151
|
-
args=( "(--ask)--ask}[Prompt for note via multi-line input]" "(--started=)--started=}[Backdate start time [4pm|20m|2h|"yesterday noon"]]" {-e,--editor}"[Edit entry with vim]" {-f,--finish_last}"[Timed entry]" {-n,--note=}"[Include a note]" {-s,--section=}"[Section]" )
|
151
|
+
args=( "(--ask)--ask}[Prompt for note via multi-line input]" "(--started=)--started=}[Backdate start time [4pm|20m|2h|"yesterday noon"]]" {-e,--editor}"[Edit entry with /opt/homebrew/bin/vim]" {-f,--finish_last}"[Timed entry]" "(--from=)--from=}[Set a start and optionally end time as a date range]" {-n,--note=}"[Include a note]" {-s,--section=}"[Section]" )
|
152
152
|
;;
|
153
153
|
on)
|
154
154
|
args=( "(--config_template=)--config_template=}[Output using a template from configuration]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" {-o,--output=}"[Output to export format]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--template=)--template=}[Override output format with a template string containing %placeholders]" "(--totals)--totals}[Show time totals at the end of output]" )
|
data/lib/completion/doing.bash
CHANGED
@@ -191,9 +191,9 @@ _doing_note() {
|
|
191
191
|
_doing_now() {
|
192
192
|
|
193
193
|
if [[ "$token" == --* ]]; then
|
194
|
-
COMPREPLY=( $( compgen -W '--ask --started --editor --finish_last --note --section' -- $token ) )
|
194
|
+
COMPREPLY=( $( compgen -W '--ask --started --editor --finish_last --from --note --section' -- $token ) )
|
195
195
|
elif [[ "$token" == -* ]]; then
|
196
|
-
COMPREPLY=( $( compgen -W '-e -f -n -s --ask --started --editor --finish_last --note --section' -- $token ) )
|
196
|
+
COMPREPLY=( $( compgen -W '-e -f -n -s --ask --started --editor --finish_last --from --note --section' -- $token ) )
|
197
197
|
|
198
198
|
fi
|
199
199
|
}
|
data/lib/completion/doing.fish
CHANGED
@@ -181,7 +181,7 @@ complete -c doing -l ask -f -n '__fish_doing_using_command again resume' -d Pr
|
|
181
181
|
complete -c doing -l started -f -r -n '__fish_doing_using_command again resume' -d Backdate\ start\ date\ by\ interval\ or\ set\ to\ time\ \[4pm\|20m\|2h\|\"yesterday\ noon\"\]
|
182
182
|
complete -c doing -l bool -f -r -n '__fish_doing_using_command again resume' -d Boolean\ used\ to\ combine\ multiple\ tags
|
183
183
|
complete -c doing -l case -f -r -n '__fish_doing_using_command again resume' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
|
184
|
-
complete -c doing -l editor -s e -f -n '__fish_doing_using_command again resume' -d Edit\ duplicated\ entry\ with\ vim\ before\ adding
|
184
|
+
complete -c doing -l editor -s e -f -n '__fish_doing_using_command again resume' -d Edit\ duplicated\ entry\ with\ /opt/homebrew/bin/vim\ before\ adding
|
185
185
|
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command again resume' -d Select\ item\ to\ resume\ from\ a\ menu\ of\ matching\ entries
|
186
186
|
complete -c doing -l in -f -r -n '__fish_doing_using_command again resume' -d Add\ new\ entry\ to\ section
|
187
187
|
complete -c doing -l note -s n -f -r -n '__fish_doing_using_command again resume' -d Add\ a\ note
|
@@ -233,7 +233,7 @@ complete -c doing -l ask -f -n '__fish_doing_using_command done did' -d Prompt
|
|
233
233
|
complete -c doing -l finished -f -r -n '__fish_doing_using_command done did' -d Set\ finish\ date\ to\ specific\ date/time
|
234
234
|
complete -c doing -l started -f -r -n '__fish_doing_using_command done did' -d Backdate\ start\ date\ by\ interval\ or\ set\ to\ time\ \[4pm\|20m\|2h\|\"yesterday\ noon\"\]
|
235
235
|
complete -c doing -l date -f -n '__fish_doing_using_command done did' -d Include\ date
|
236
|
-
complete -c doing -l editor -s e -f -n '__fish_doing_using_command done did' -d Edit\ entry\ with\ vim
|
236
|
+
complete -c doing -l editor -s e -f -n '__fish_doing_using_command done did' -d Edit\ entry\ with\ /opt/homebrew/bin/vim
|
237
237
|
complete -c doing -l from -f -r -n '__fish_doing_using_command done did' -d Start\ and\ end\ times\ as\ a\ date/time\ range\ \`doing\ done\ --from\ \"1am\ to\ 8am\"\`
|
238
238
|
complete -c doing -l note -s n -f -r -n '__fish_doing_using_command done did' -d Include\ a\ note
|
239
239
|
complete -c doing -l remove -s r -f -n '__fish_doing_using_command done did' -d Remove\ @done\ tag
|
@@ -264,7 +264,7 @@ complete -c doing -l case -f -r -n '__fish_doing_using_command grep search' -d
|
|
264
264
|
complete -c doing -l config_template -f -r -n '__fish_doing_using_command grep search' -d Output\ using\ a\ template\ from\ configuration
|
265
265
|
complete -c doing -l delete -s d -f -n '__fish_doing_using_command grep search' -d Delete\ matching\ entries
|
266
266
|
complete -c doing -l duration -f -n '__fish_doing_using_command grep search' -d Show\ elapsed\ time\ on\ entries\ without\ @done\ tag
|
267
|
-
complete -c doing -l editor -s e -f -n '__fish_doing_using_command grep search' -d Edit\ matching\ entries\ with\ vim
|
267
|
+
complete -c doing -l editor -s e -f -n '__fish_doing_using_command grep search' -d Edit\ matching\ entries\ with\ /opt/homebrew/bin/vim
|
268
268
|
complete -c doing -l from -f -r -n '__fish_doing_using_command grep search' -d Date\ range\ to\ show
|
269
269
|
complete -c doing -l hilite -s h -f -n '__fish_doing_using_command grep search' -d Highlight\ search\ matches\ in\ output
|
270
270
|
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command grep search' -d Display\ an\ interactive\ menu\ of\ results\ to\ perform\ further\ operations
|
@@ -298,7 +298,7 @@ complete -c doing -l case -f -r -n '__fish_doing_using_command last' -d Case\ s
|
|
298
298
|
complete -c doing -l config_template -f -r -n '__fish_doing_using_command last' -d Output\ using\ a\ template\ from\ configuration
|
299
299
|
complete -c doing -l delete -s d -f -n '__fish_doing_using_command last' -d Delete\ the\ last\ entry
|
300
300
|
complete -c doing -l duration -f -n '__fish_doing_using_command last' -d Show\ elapsed\ time\ if\ entry\ is\ not\ tagged\ @done
|
301
|
-
complete -c doing -l editor -s e -f -n '__fish_doing_using_command last' -d Edit\ entry\ with\ vim
|
301
|
+
complete -c doing -l editor -s e -f -n '__fish_doing_using_command last' -d Edit\ entry\ with\ /opt/homebrew/bin/vim
|
302
302
|
complete -c doing -l hilite -s h -f -n '__fish_doing_using_command last' -d Highlight\ search\ matches\ in\ output
|
303
303
|
complete -c doing -l not -f -n '__fish_doing_using_command last' -d Show\ items\ that\ \*don\'t\*\ match\ search\ string\ or\ tag\ filter
|
304
304
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command last' -d Specify\ a\ section
|
@@ -309,7 +309,7 @@ complete -c doing -l val -f -r -n '__fish_doing_using_command last' -d Perform\
|
|
309
309
|
complete -c doing -l exact -s x -f -n '__fish_doing_using_command last' -d Force\ exact\ search\ string\ matching
|
310
310
|
complete -c doing -l ask -f -n '__fish_doing_using_command later' -d Prompt\ for\ note\ via\ multi-line\ input
|
311
311
|
complete -c doing -l started -f -r -n '__fish_doing_using_command later' -d Backdate\ start\ time\ to\ date\ string\ \[4pm\|20m\|2h\|yesterday\ noon\]
|
312
|
-
complete -c doing -l editor -s e -f -n '__fish_doing_using_command later' -d Edit\ entry\ with\ vim
|
312
|
+
complete -c doing -l editor -s e -f -n '__fish_doing_using_command later' -d Edit\ entry\ with\ /opt/homebrew/bin/vim
|
313
313
|
complete -c doing -l note -s n -f -r -n '__fish_doing_using_command later' -d Note
|
314
314
|
complete -c doing -l bool -f -r -n '__fish_doing_using_command mark flag' -d Boolean
|
315
315
|
complete -c doing -l count -s c -f -r -n '__fish_doing_using_command mark flag' -d How\ many\ recent\ entries\ to\ tag
|
@@ -328,13 +328,13 @@ complete -c doing -l exact -s x -f -n '__fish_doing_using_command mark flag' -d
|
|
328
328
|
complete -c doing -l archive -s a -f -n '__fish_doing_using_command meanwhile' -d Archive\ previous\ @meanwhile\ entry
|
329
329
|
complete -c doing -l ask -f -n '__fish_doing_using_command meanwhile' -d Prompt\ for\ note\ via\ multi-line\ input
|
330
330
|
complete -c doing -l started -f -r -n '__fish_doing_using_command meanwhile' -d Backdate\ start\ date\ for\ new\ entry\ to\ date\ string\ \[4pm\|20m\|2h\|yesterday\ noon\]
|
331
|
-
complete -c doing -l editor -s e -f -n '__fish_doing_using_command meanwhile' -d Edit\ entry\ with\ vim
|
331
|
+
complete -c doing -l editor -s e -f -n '__fish_doing_using_command meanwhile' -d Edit\ entry\ with\ /opt/homebrew/bin/vim
|
332
332
|
complete -c doing -l note -s n -f -r -n '__fish_doing_using_command meanwhile' -d Note
|
333
333
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command meanwhile' -d Section
|
334
334
|
complete -c doing -l ask -f -n '__fish_doing_using_command note' -d Prompt\ for\ note\ via\ multi-line\ input
|
335
335
|
complete -c doing -l bool -f -r -n '__fish_doing_using_command note' -d Boolean
|
336
336
|
complete -c doing -l case -f -r -n '__fish_doing_using_command note' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
|
337
|
-
complete -c doing -l editor -s e -f -n '__fish_doing_using_command note' -d Edit\ entry\ with\ vim
|
337
|
+
complete -c doing -l editor -s e -f -n '__fish_doing_using_command note' -d Edit\ entry\ with\ /opt/homebrew/bin/vim
|
338
338
|
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command note' -d Select\ item\ for\ new\ note\ from\ a\ menu\ of\ matching\ entries
|
339
339
|
complete -c doing -l not -f -n '__fish_doing_using_command note' -d Add\ note\ to\ item\ that\ \*doesn\'t\*\ match\ search/tag\ filters
|
340
340
|
complete -c doing -l remove -s r -f -n '__fish_doing_using_command note' -d Replace/Remove\ last\ entry\'s\ note
|
@@ -345,8 +345,9 @@ complete -c doing -l val -f -r -n '__fish_doing_using_command note' -d Perform\
|
|
345
345
|
complete -c doing -l exact -s x -f -n '__fish_doing_using_command note' -d Force\ exact\ search\ string\ matching
|
346
346
|
complete -c doing -l ask -f -n '__fish_doing_using_command now next' -d Prompt\ for\ note\ via\ multi-line\ input
|
347
347
|
complete -c doing -l started -f -r -n '__fish_doing_using_command now next' -d Backdate\ start\ time\ \[4pm\|20m\|2h\|\"yesterday\ noon\"\]
|
348
|
-
complete -c doing -l editor -s e -f -n '__fish_doing_using_command now next' -d Edit\ entry\ with\ vim
|
348
|
+
complete -c doing -l editor -s e -f -n '__fish_doing_using_command now next' -d Edit\ entry\ with\ /opt/homebrew/bin/vim
|
349
349
|
complete -c doing -l finish_last -s f -f -n '__fish_doing_using_command now next' -d Timed\ entry
|
350
|
+
complete -c doing -l from -f -r -n '__fish_doing_using_command now next' -d Set\ a\ start\ and\ optionally\ end\ time\ as\ a\ date\ range
|
350
351
|
complete -c doing -l note -s n -f -r -n '__fish_doing_using_command now next' -d Include\ a\ note
|
351
352
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command now next' -d Section
|
352
353
|
complete -c doing -l config_template -f -r -n '__fish_doing_using_command on' -d Output\ using\ a\ template\ from\ configuration
|
@@ -24,7 +24,7 @@ module Doing
|
|
24
24
|
private
|
25
25
|
|
26
26
|
def parse_changes(lookup, search)
|
27
|
-
change_rx = /(?<=\n|\A)### (\d+\.\d+\.\d+(?:\w
|
27
|
+
change_rx = /(?<=\n|\A)### (\d+\.\d+\.\d+(?:\w*))(.*)(?=\n### |\Z)/m
|
28
28
|
@changes = @content.scan(change_rx).each_with_object([]) do |m, a|
|
29
29
|
next if m[0].nil? || m[1].nil?
|
30
30
|
|
data/lib/doing/configuration.rb
CHANGED
@@ -45,8 +45,7 @@ module Doing
|
|
45
45
|
'templates' => {
|
46
46
|
'default' => {
|
47
47
|
'date_format' => '%Y-%m-%d %H:%M',
|
48
|
-
'template' => '%reset%cyan%shortdate %boldwhite%80║ title %
|
49
|
-
%yellow%interval%boldred%duration%dark%white%80_14┃ note',
|
48
|
+
'template' => '%reset%cyan%shortdate %boldwhite%80║ title %boldmagenta[%boldwhite%-10section%boldmagenta]%reset %yellow%interval%boldred%duration%white%80_14┃ note',
|
50
49
|
'wrap_width' => 0,
|
51
50
|
'order' => 'asc'
|
52
51
|
},
|
@@ -63,8 +62,7 @@ module Doing
|
|
63
62
|
},
|
64
63
|
'recent' => {
|
65
64
|
'date_format' => '%_I:%M%P',
|
66
|
-
'template' => '%reset%cyan%shortdate %boldwhite%80║ title %
|
67
|
-
%yellow%interval%boldred%duration%dark%white%80_14┃ note',
|
65
|
+
'template' => '%reset%cyan%shortdate %boldwhite%80║ title %boldmagenta[%boldwhite%-10section%boldmagenta]%reset %yellow%interval%boldred%duration%white%80_14┃ note',
|
68
66
|
'wrap_width' => 88,
|
69
67
|
'count' => 10,
|
70
68
|
'order' => 'asc'
|
@@ -314,7 +312,7 @@ module Doing
|
|
314
312
|
|
315
313
|
@ignore_local = opt[:ignore_local] if opt[:ignore_local]
|
316
314
|
|
317
|
-
config = read_config.
|
315
|
+
config = read_config.clone
|
318
316
|
|
319
317
|
plugin_config = Util.deep_merge_hashes(DEFAULTS['plugins'], config['plugins'] || {})
|
320
318
|
|
@@ -322,7 +320,7 @@ module Doing
|
|
322
320
|
|
323
321
|
Plugins.plugins.each do |_type, plugins|
|
324
322
|
plugins.each do |title, plugin|
|
325
|
-
plugin_config[title] = plugin[:config] if plugin[:config]
|
323
|
+
plugin_config[title] = plugin[:config] if plugin[:config].good?
|
326
324
|
config['export_templates'][title] ||= nil if plugin[:templates] && !plugin[:templates].empty?
|
327
325
|
end
|
328
326
|
end
|
data/lib/doing/good.rb
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Doing
|
4
|
+
# Object helpers
|
5
|
+
class ::Object
|
6
|
+
##
|
7
|
+
## Tests if object is nil or empty
|
8
|
+
##
|
9
|
+
## @return [Boolean] true if object is defined and
|
10
|
+
## has content
|
11
|
+
##
|
12
|
+
def good?
|
13
|
+
!nil? && !empty?
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class ::String
|
18
|
+
##
|
19
|
+
## Tests if object is nil or empty
|
20
|
+
##
|
21
|
+
## @return [Boolean] true if object is defined and
|
22
|
+
## has content
|
23
|
+
##
|
24
|
+
def good?
|
25
|
+
!strip.empty?
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class ::Array
|
30
|
+
##
|
31
|
+
## Tests if object is nil or empty
|
32
|
+
##
|
33
|
+
## @return [Boolean] true if object is defined and
|
34
|
+
## has content
|
35
|
+
##
|
36
|
+
def good?
|
37
|
+
!nil? && !empty?
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
class ::FalseClass
|
42
|
+
##
|
43
|
+
## Tests if object is nil or empty
|
44
|
+
##
|
45
|
+
## @return [Boolean] true if object is defined and
|
46
|
+
## has content
|
47
|
+
##
|
48
|
+
def good?
|
49
|
+
false
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
class ::TrueClass
|
54
|
+
##
|
55
|
+
## Tests if object is nil or empty
|
56
|
+
##
|
57
|
+
## @return [Boolean] true if object is defined and
|
58
|
+
## has content
|
59
|
+
##
|
60
|
+
def good?
|
61
|
+
true
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/lib/doing/hash.rb
CHANGED
data/lib/doing/hooks.rb
CHANGED
@@ -10,8 +10,8 @@ module Doing
|
|
10
10
|
post_local_config: [], # wwid
|
11
11
|
post_read: [], # wwid
|
12
12
|
pre_entry_add: [], # wwid, new_entry
|
13
|
-
post_entry_added: [], # wwid, new_entry
|
14
|
-
post_entry_updated: [], # wwid, entry
|
13
|
+
post_entry_added: [], # wwid, new_entry
|
14
|
+
post_entry_updated: [], # wwid, entry, old_entry
|
15
15
|
post_entry_removed: [], # wwid, entry.dup
|
16
16
|
pre_export: [], # wwid, format, entries
|
17
17
|
pre_write: [], # wwid, file
|
@@ -57,7 +57,7 @@ module Doing
|
|
57
57
|
|
58
58
|
def self.trigger(event, *args)
|
59
59
|
hooks = @registry[event]
|
60
|
-
return
|
60
|
+
return unless hooks.good?
|
61
61
|
|
62
62
|
# sort and call hooks according to priority and load order
|
63
63
|
hooks.sort_by { |h| @hook_priority[h] }.each do |hook|
|
data/lib/doing/item.rb
CHANGED
@@ -399,7 +399,7 @@ module Doing
|
|
399
399
|
|
400
400
|
# outputs item in Doing file format, including leading tab
|
401
401
|
def to_s
|
402
|
-
"\t- #{@date.strftime('%Y-%m-%d %H:%M')} | #{@title}#{@note.
|
402
|
+
"\t- #{@date.strftime('%Y-%m-%d %H:%M')} | #{@title}#{@note.good? ? "\n#{@note}" : ''}"
|
403
403
|
end
|
404
404
|
|
405
405
|
##
|
@@ -429,6 +429,10 @@ module Doing
|
|
429
429
|
%(<Doing::Item @date=#{@date}>)
|
430
430
|
end
|
431
431
|
|
432
|
+
def clone
|
433
|
+
Marshal.load(Marshal.dump(self))
|
434
|
+
end
|
435
|
+
|
432
436
|
private
|
433
437
|
|
434
438
|
def should?(key)
|
@@ -457,7 +461,7 @@ module Doing
|
|
457
461
|
end
|
458
462
|
|
459
463
|
def all_searches?(searches, case_type: :smart)
|
460
|
-
return true
|
464
|
+
return true unless searches.good?
|
461
465
|
|
462
466
|
text = @title + @note.to_s
|
463
467
|
searches.each do |s|
|
@@ -468,7 +472,7 @@ module Doing
|
|
468
472
|
end
|
469
473
|
|
470
474
|
def no_searches?(searches, case_type: :smart)
|
471
|
-
return true
|
475
|
+
return true unless searches.good?
|
472
476
|
|
473
477
|
text = @title + @note.to_s
|
474
478
|
searches.each do |s|
|
@@ -479,7 +483,7 @@ module Doing
|
|
479
483
|
end
|
480
484
|
|
481
485
|
def any_searches?(searches, case_type: :smart)
|
482
|
-
return true
|
486
|
+
return true unless searches.good?
|
483
487
|
|
484
488
|
text = @title + @note.to_s
|
485
489
|
searches.each do |s|
|
@@ -490,7 +494,7 @@ module Doing
|
|
490
494
|
end
|
491
495
|
|
492
496
|
def all_tags?(tags)
|
493
|
-
return true
|
497
|
+
return true unless tags.good?
|
494
498
|
|
495
499
|
tags.each do |tag|
|
496
500
|
return false unless @title =~ /@#{tag.wildcard_to_rx}(?= |\(|\Z)/i
|
@@ -499,7 +503,7 @@ module Doing
|
|
499
503
|
end
|
500
504
|
|
501
505
|
def no_tags?(tags)
|
502
|
-
return true
|
506
|
+
return true unless tags.good?
|
503
507
|
|
504
508
|
tags.each do |tag|
|
505
509
|
return false if @title =~ /@#{tag.wildcard_to_rx}(?= |\(|\Z)/i
|
@@ -508,7 +512,7 @@ module Doing
|
|
508
512
|
end
|
509
513
|
|
510
514
|
def any_tags?(tags)
|
511
|
-
return true
|
515
|
+
return true unless tags.good?
|
512
516
|
|
513
517
|
tags.each do |tag|
|
514
518
|
return true if @title =~ /@#{tag.wildcard_to_rx}(?= |\(|\Z)/i
|
@@ -537,7 +541,7 @@ module Doing
|
|
537
541
|
end
|
538
542
|
|
539
543
|
def any_values?(queries)
|
540
|
-
return true
|
544
|
+
return true unless queries.good?
|
541
545
|
|
542
546
|
queries.each do |q|
|
543
547
|
parts = split_value_query(q)
|
@@ -547,7 +551,7 @@ module Doing
|
|
547
551
|
end
|
548
552
|
|
549
553
|
def all_values?(queries)
|
550
|
-
return true
|
554
|
+
return true unless queries.good?
|
551
555
|
|
552
556
|
queries.each do |q|
|
553
557
|
parts = split_value_query(q)
|
@@ -557,7 +561,7 @@ module Doing
|
|
557
561
|
end
|
558
562
|
|
559
563
|
def no_values?(queries)
|
560
|
-
return true
|
564
|
+
return true unless queries.good?
|
561
565
|
|
562
566
|
queries.each do |q|
|
563
567
|
parts = split_value_query(q)
|
@@ -89,7 +89,7 @@ module Doing
|
|
89
89
|
|
90
90
|
wwid.content.concat(new_items)
|
91
91
|
|
92
|
-
new_items.map { |item| Hooks.trigger :post_entry_added, self, item
|
92
|
+
new_items.map { |item| Hooks.trigger :post_entry_added, self, item }
|
93
93
|
|
94
94
|
Doing.logger.info(%(Imported #{new_items.count} items to #{section}))
|
95
95
|
end
|
@@ -93,7 +93,7 @@ module Doing
|
|
93
93
|
wwid.content.add_section(item.section) unless wwid.content.section?(item.section)
|
94
94
|
Hooks.trigger :pre_entry_add, self, item
|
95
95
|
wwid.content.push(item)
|
96
|
-
Hooks.trigger :post_entry_added, self, item
|
96
|
+
Hooks.trigger :post_entry_added, self, item
|
97
97
|
end
|
98
98
|
|
99
99
|
Doing.logger.info('Imported:', "#{imported.count} items")
|
@@ -93,7 +93,7 @@ module Doing
|
|
93
93
|
|
94
94
|
wwid.content.concat(new_items)
|
95
95
|
|
96
|
-
new_items.map { |item| Hooks.trigger :post_entry_added, self, item
|
96
|
+
new_items.map { |item| Hooks.trigger :post_entry_added, self, item }
|
97
97
|
|
98
98
|
Doing.logger.info('Imported:', %(#{new_items.count} items to #{section}))
|
99
99
|
end
|
data/lib/doing/string.rb
CHANGED
@@ -108,7 +108,7 @@ module Doing
|
|
108
108
|
escapes = scan(/(\e\[[\d;]+m)[^\e]+@/)
|
109
109
|
color = color.split(' ') unless color.is_a?(Array)
|
110
110
|
tag_color = color.each_with_object([]) { |c, arr| arr << Doing::Color.send(c) }.join('')
|
111
|
-
last_color = if
|
111
|
+
last_color = if escapes.good?
|
112
112
|
(escapes.count > 1 ? escapes[-2..-1] : [escapes[-1]]).map { |v| v[0] }.join('')
|
113
113
|
else
|
114
114
|
Doing::Color.default
|