doing 2.1.15 → 2.1.16
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.
- checksums.yaml +4 -4
- data/.yardoc/checksums +5 -5
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/CHANGELOG.md +24 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/bin/doing +109 -44
- data/docs/doc/Array.html +1 -1
- data/docs/doc/BooleanTermParser/Clause.html +1 -1
- data/docs/doc/BooleanTermParser/Operator.html +1 -1
- data/docs/doc/BooleanTermParser/Query.html +1 -1
- data/docs/doc/BooleanTermParser/QueryParser.html +1 -1
- data/docs/doc/BooleanTermParser/QueryTransformer.html +1 -1
- data/docs/doc/BooleanTermParser.html +1 -1
- data/docs/doc/Doing/Color.html +1 -1
- data/docs/doc/Doing/Completion.html +1 -1
- data/docs/doc/Doing/Configuration.html +1 -1
- data/docs/doc/Doing/Errors/DoingNoTraceError.html +1 -1
- data/docs/doc/Doing/Errors/DoingRuntimeError.html +1 -1
- data/docs/doc/Doing/Errors/DoingStandardError.html +1 -1
- data/docs/doc/Doing/Errors/EmptyInput.html +1 -1
- data/docs/doc/Doing/Errors/NoResults.html +1 -1
- data/docs/doc/Doing/Errors/PluginException.html +1 -1
- data/docs/doc/Doing/Errors/UserCancelled.html +1 -1
- data/docs/doc/Doing/Errors/WrongCommand.html +1 -1
- data/docs/doc/Doing/Errors.html +1 -1
- data/docs/doc/Doing/Hooks.html +1 -1
- data/docs/doc/Doing/Item.html +1 -1
- data/docs/doc/Doing/Items.html +1 -1
- data/docs/doc/Doing/LogAdapter.html +1 -1
- data/docs/doc/Doing/Note.html +1 -1
- data/docs/doc/Doing/Pager.html +1 -1
- data/docs/doc/Doing/Plugins.html +1 -1
- data/docs/doc/Doing/Prompt.html +69 -1
- data/docs/doc/Doing/Section.html +1 -1
- data/docs/doc/Doing/TemplateString.html +2 -2
- data/docs/doc/Doing/Util/Backup.html +1 -1
- data/docs/doc/Doing/Util.html +1 -1
- data/docs/doc/Doing/WWID.html +37 -3
- data/docs/doc/Doing.html +2 -2
- data/docs/doc/GLI/Commands/MarkdownDocumentListener.html +1 -1
- data/docs/doc/GLI/Commands.html +1 -1
- data/docs/doc/GLI.html +1 -1
- data/docs/doc/Hash.html +1 -1
- data/docs/doc/Numeric.html +1 -1
- data/docs/doc/PhraseParser/Operator.html +1 -1
- data/docs/doc/PhraseParser/PhraseClause.html +1 -1
- data/docs/doc/PhraseParser/Query.html +1 -1
- data/docs/doc/PhraseParser/QueryParser.html +1 -1
- data/docs/doc/PhraseParser/QueryTransformer.html +1 -1
- data/docs/doc/PhraseParser/TermClause.html +1 -1
- data/docs/doc/PhraseParser.html +1 -1
- data/docs/doc/Status.html +1 -1
- data/docs/doc/String.html +92 -1
- data/docs/doc/Symbol.html +1 -1
- data/docs/doc/Time.html +1 -1
- data/docs/doc/_index.html +1 -1
- data/docs/doc/file.README.html +2 -2
- data/docs/doc/index.html +2 -2
- data/docs/doc/method_list.html +209 -185
- data/docs/doc/top-level-namespace.html +1 -1
- data/doing.rdoc +14 -4
- data/lib/completion/_doing.zsh +2 -2
- data/lib/completion/doing.bash +2 -2
- data/lib/completion/doing.fish +2 -1
- data/lib/doing/prompt.rb +41 -0
- data/lib/doing/string_chronify.rb +28 -0
- data/lib/doing/template_string.rb +1 -1
- data/lib/doing/version.rb +1 -1
- data/lib/doing/wwid.rb +43 -13
- data/lib/doing.rb +5 -4
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 401f509f952c1f59117bd72b97a7539ee2aa011a876b24ddeacc6b535f7d0021
|
|
4
|
+
data.tar.gz: afa5d5ca709bf06ef3c686ca5f6af48b75c6dbd09445c36a4de6c78f793ee879
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6b2fa35dd2651785705b36a8ae12aca8e806476c2309b3e580ae06b87f75b0a0ac317389ac0fd21c28bca52a9c623b9c3892556c483230cf8603fd2eb7fdaf5a
|
|
7
|
+
data.tar.gz: 100407094cbcda4a0f24350ab84d5b923f367cee8913942e107f5bea177e6133be09819d1d1f408d8dd3ace35eff22446108d6bb377fb6f6149f2057566fbd8a
|
data/.yardoc/checksums
CHANGED
|
@@ -3,18 +3,18 @@ lib/doing/item.rb 017fe4de05ccfd8bab912e744f9dac9e52819b00
|
|
|
3
3
|
lib/doing/note.rb bbadd9e34e6dc43a2af1110a5107f46c39d2547f
|
|
4
4
|
lib/doing/time.rb 60183c3c31532ffea1440c766de0f90042e0fd10
|
|
5
5
|
lib/doing/util.rb 33ad79455893213a0f2993edec0e158526657f09
|
|
6
|
-
lib/doing/wwid.rb
|
|
6
|
+
lib/doing/wwid.rb ee8ab91af8d34f1fe9c9ec6e6c96e5e4e648a9b0
|
|
7
7
|
lib/doing/array.rb a17004c4811d239932254f9ed94a6eb10456c8e8
|
|
8
8
|
lib/doing/hooks.rb acf6e0615ccf1949f84915c979297845242c1205
|
|
9
9
|
lib/doing/items.rb 8cda7caaef10645893267262f5eee681e35046ce
|
|
10
10
|
lib/doing/pager.rb b58e478b0cb8d400ddb97988ba741e3a127b53c3
|
|
11
11
|
lib/doing/colors.rb 9a628d48c821313c502deedc5b61a046a2bf79ef
|
|
12
12
|
lib/doing/errors.rb af07e482a5389924edc2337749c81cda501098f0
|
|
13
|
-
lib/doing/prompt.rb
|
|
13
|
+
lib/doing/prompt.rb d320de9f309a9069725b9e90e19bae808839c06b
|
|
14
14
|
lib/doing/string.rb f5cf48e2e700a038aa9edaafdee3066ba117e851
|
|
15
15
|
lib/doing/symbol.rb 309799458a1bc715c2707307c9a62ab26086275e
|
|
16
16
|
lib/doing/section.rb 206e119cf818f1e76798753e611180fe77bc299a
|
|
17
|
-
lib/doing/version.rb
|
|
17
|
+
lib/doing/version.rb 2bdd1caf85f391c64be4f792fe24f8ca017ebc54
|
|
18
18
|
lib/doing/cli_status.rb dbedd454c4cbbd0fed9ef30120f6ec85d18b9356
|
|
19
19
|
lib/doing/completion.rb c658e7dc7898fb022a21b2bd77bedb958ca3b067
|
|
20
20
|
lib/doing/log_adapter.rb 267dc637bc9ea445dd07edb8b5dbbe374ff80b2b
|
|
@@ -23,8 +23,8 @@ lib/doing/configuration.rb 61c415e033c99355f5589e799344d60db42bd900
|
|
|
23
23
|
lib/doing/phrase_parser.rb 8f1789d7cf8326d8cc231b4a21505a93f8de20d2
|
|
24
24
|
lib/doing/array_chronify.rb 5852b38643aef2e7e796aaf19b2c052a52ee5e2b
|
|
25
25
|
lib/doing/plugin_manager.rb cb16a82c3182ef7008359670ab96ff6b39270ccc
|
|
26
|
-
lib/doing/string_chronify.rb
|
|
27
|
-
lib/doing/template_string.rb
|
|
26
|
+
lib/doing/string_chronify.rb 62635041c94482927fb661ac0caa2eb9bdd1c17c
|
|
27
|
+
lib/doing/template_string.rb 5f6ef0495082339f2aa1b085ac4c1bdbfeb25be5
|
|
28
28
|
lib/doing/numeric_chronify.rb bedeff62a95f8a8ff116e1bf0cc1d9eb2707a900
|
|
29
29
|
lib/doing/boolean_term_parser.rb 075977892ac5c6e3435cb8877d8b8b68eb1962e3
|
|
30
30
|
lib/doing/markdown_document_listener.rb 45485f225068a34951ec818a345f642323e5ba35
|
data/.yardoc/object_types
CHANGED
|
Binary file
|
data/.yardoc/objects/root.dat
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
### 2.1.16
|
|
2
|
+
|
|
3
|
+
2022-01-18 02:45
|
|
4
|
+
|
|
5
|
+
#### NEW
|
|
6
|
+
|
|
7
|
+
- `doing done --from "3pm to 3:15pm"` to set start and end times with natural language string
|
|
8
|
+
|
|
9
|
+
#### IMPROVED
|
|
10
|
+
|
|
11
|
+
- Running `doing tag` without arguments takes command line input
|
|
12
|
+
- If `doing now` or `doing later` are run without arguments, interactively request necessary information (you can still use --editor to edit in your preferred editor)
|
|
13
|
+
- Tab completion for tags when entering at prompt
|
|
14
|
+
- Use readline when requesting input text, better editing features
|
|
15
|
+
- `doing done --at` no longer overrides `--back`
|
|
16
|
+
|
|
17
|
+
#### FIXED
|
|
18
|
+
|
|
19
|
+
- `doing select` -> output formatted empty output
|
|
20
|
+
- Sort items by date when using `doing select --editor` (was loading in selection order instead)
|
|
21
|
+
- Ruby 2.7 error in template output (.empty? on FalseClass)
|
|
22
|
+
- Don't add empty entry when cancelling --editor
|
|
23
|
+
- Batch editing bugs
|
|
24
|
+
|
|
1
25
|
### 2.1.15
|
|
2
26
|
|
|
3
27
|
2022-01-17 07:25
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -8,7 +8,7 @@ _If you're one of the rare people like me who find this useful, feel free to
|
|
|
8
8
|
|
|
9
9
|
<!--README-->
|
|
10
10
|
|
|
11
|
-
The current version of `doing` is <!--VER-->2.1.
|
|
11
|
+
The current version of `doing` is <!--VER-->2.1.15<!--END VER-->.
|
|
12
12
|
|
|
13
13
|
Find all of the documentation in the [doing wiki][wiki].
|
|
14
14
|
|
data/bin/doing
CHANGED
|
@@ -199,7 +199,7 @@ command %i[again resume] do |c|
|
|
|
199
199
|
end
|
|
200
200
|
|
|
201
201
|
note = Doing::Note.new(options[:note])
|
|
202
|
-
note.add(Doing::Prompt.
|
|
202
|
+
note.add(Doing::Prompt.read_lines(prompt: 'Add a note')) if options[:ask]
|
|
203
203
|
|
|
204
204
|
options[:note] = note
|
|
205
205
|
|
|
@@ -338,14 +338,21 @@ command %i[done did] do |c|
|
|
|
338
338
|
c.switch %i[a archive], negatable: false, default_value: false
|
|
339
339
|
|
|
340
340
|
c.desc %(Set finish date to specific date/time (natural langauge parsed, e.g. --at=1:30pm).
|
|
341
|
-
|
|
341
|
+
Used with --took, backdates start date)
|
|
342
342
|
c.arg_name 'DATE_STRING'
|
|
343
|
-
c.flag [
|
|
343
|
+
c.flag %i[at finished]
|
|
344
344
|
|
|
345
345
|
c.desc 'Backdate start date by interval or set to time [4pm|20m|2h|"yesterday noon"]'
|
|
346
346
|
c.arg_name 'DATE_STRING'
|
|
347
347
|
c.flag %i[b back started]
|
|
348
348
|
|
|
349
|
+
c.desc %(
|
|
350
|
+
Start and end times as a date/time range `doing done --from "1am to 8am"`.
|
|
351
|
+
Overrides other date flags.
|
|
352
|
+
)
|
|
353
|
+
c.arg_name 'TIME_RANGE'
|
|
354
|
+
c.flag [:from]
|
|
355
|
+
|
|
349
356
|
c.desc %(Set completion date to start date plus interval (XX[mhd] or HH:MM).
|
|
350
357
|
If used without the --back option, the start date will be moved back to allow
|
|
351
358
|
the completion date to be the current time.)
|
|
@@ -377,31 +384,40 @@ command %i[done did] do |c|
|
|
|
377
384
|
took = 0
|
|
378
385
|
donedate = nil
|
|
379
386
|
|
|
380
|
-
if options[:
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
end
|
|
384
|
-
|
|
385
|
-
if options[:back]
|
|
386
|
-
date = options[:back].chronify(guess: :begin)
|
|
387
|
-
raise InvalidTimeExpression, 'Unable to parse date string for --back' if date.nil?
|
|
387
|
+
if options[:from]
|
|
388
|
+
date, finish_date = options[:from].split_date_range
|
|
389
|
+
finish_date ||= Time.now
|
|
388
390
|
else
|
|
389
|
-
|
|
390
|
-
|
|
391
|
+
if options[:took]
|
|
392
|
+
took = options[:took].chronify_qty
|
|
393
|
+
raise InvalidTimeExpression, 'Unable to parse date string for --took' if took.nil?
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
if options[:back]
|
|
397
|
+
date = options[:back].chronify(guess: :begin)
|
|
398
|
+
raise InvalidTimeExpression, 'Unable to parse date string for --back' if date.nil?
|
|
399
|
+
else
|
|
400
|
+
date = options[:took] ? Time.now - took : Time.now
|
|
401
|
+
end
|
|
391
402
|
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
403
|
+
if options[:at]
|
|
404
|
+
finish_date = options[:at].chronify(guess: :begin)
|
|
405
|
+
raise InvalidTimeExpression, 'Unable to parse date string for --at' if finish_date.nil?
|
|
395
406
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
407
|
+
if options[:took]
|
|
408
|
+
date = finish_date - took
|
|
409
|
+
else
|
|
410
|
+
date ||= finish_date
|
|
411
|
+
end
|
|
412
|
+
elsif options[:took]
|
|
413
|
+
finish_date = date + took
|
|
414
|
+
else
|
|
415
|
+
finish_date = Time.now
|
|
416
|
+
end
|
|
401
417
|
end
|
|
402
418
|
|
|
403
419
|
if options[:date]
|
|
404
|
-
finish_date = wwid.verify_duration(date, finish_date) unless options[:took]
|
|
420
|
+
finish_date = wwid.verify_duration(date, finish_date) unless options[:took] || options[:from]
|
|
405
421
|
|
|
406
422
|
donedate = finish_date.strftime('%F %R')
|
|
407
423
|
end
|
|
@@ -412,9 +428,13 @@ command %i[done did] do |c|
|
|
|
412
428
|
section = settings['current_section']
|
|
413
429
|
end
|
|
414
430
|
|
|
431
|
+
|
|
415
432
|
note = Doing::Note.new
|
|
416
433
|
note.add(options[:note]) if options[:note]
|
|
417
|
-
|
|
434
|
+
|
|
435
|
+
if options[:ask] && !options[:editor]
|
|
436
|
+
note.add(Doing::Prompt.read_lines(prompt: 'Add a note'))
|
|
437
|
+
end
|
|
418
438
|
|
|
419
439
|
if options[:editor]
|
|
420
440
|
raise MissingEditor, 'No EDITOR variable defined in environment' if Doing::Util.default_editor.nil?
|
|
@@ -440,6 +460,12 @@ command %i[done did] do |c|
|
|
|
440
460
|
raise EmptyInput, 'No content' unless input && !input.empty?
|
|
441
461
|
|
|
442
462
|
d, title, note = wwid.format_input(input)
|
|
463
|
+
|
|
464
|
+
if options[:ask]
|
|
465
|
+
ask_note = Doing::Prompt.read_lines(prompt: 'Add a note')
|
|
466
|
+
note.add(ask_note) unless ask_note.empty?
|
|
467
|
+
end
|
|
468
|
+
|
|
443
469
|
date = d.nil? ? date : d
|
|
444
470
|
new_entry = Doing::Item.new(date, title, section, note)
|
|
445
471
|
if new_entry.should_finish?
|
|
@@ -483,12 +509,13 @@ command %i[done did] do |c|
|
|
|
483
509
|
wwid.tag_last(opt)
|
|
484
510
|
end
|
|
485
511
|
elsif !args.empty?
|
|
486
|
-
note = Doing::Note.new(options[:note])
|
|
487
512
|
d, title, new_note = wwid.format_input([args.join(' '), note.strip_lines.join("\n")].join("\n"))
|
|
488
513
|
date = d.nil? ? date : d
|
|
514
|
+
new_note.add(options[:note])
|
|
489
515
|
title.chomp!
|
|
490
516
|
section = 'Archive' if options[:archive]
|
|
491
517
|
new_entry = Doing::Item.new(date, title, section, new_note)
|
|
518
|
+
|
|
492
519
|
if new_entry.should_finish?
|
|
493
520
|
if new_entry.should_time?
|
|
494
521
|
new_entry.tag('done', value: donedate)
|
|
@@ -496,12 +523,14 @@ command %i[done did] do |c|
|
|
|
496
523
|
new_entry.tag('done')
|
|
497
524
|
end
|
|
498
525
|
end
|
|
526
|
+
|
|
499
527
|
Doing::Hooks.trigger :pre_entry_add, wwid, new_entry
|
|
500
528
|
wwid.content.push(new_entry)
|
|
501
529
|
Doing::Hooks.trigger :post_entry_added, wwid, new_entry.dup
|
|
502
530
|
wwid.write(wwid.doing_file)
|
|
503
531
|
Doing.logger.info('Entry Added:', new_entry.title)
|
|
504
532
|
elsif $stdin.stat.size.positive?
|
|
533
|
+
note = Doing::Note.new(options[:note])
|
|
505
534
|
d, title, note = wwid.format_input($stdin.read.strip)
|
|
506
535
|
unless d.nil?
|
|
507
536
|
Doing.logger.debug('Parser:', 'Date detected in input, overriding command line values')
|
|
@@ -711,22 +740,29 @@ command :later do |c|
|
|
|
711
740
|
date = Time.now
|
|
712
741
|
end
|
|
713
742
|
|
|
714
|
-
ask_note = options[:ask] ? Doing::Prompt.
|
|
743
|
+
ask_note = options[:ask] && !options[:editor] && args.count.positive? ? Doing::Prompt.read_lines(prompt: 'Add a note') : ''
|
|
715
744
|
|
|
716
|
-
if options[:editor]
|
|
745
|
+
if options[:editor]
|
|
717
746
|
raise MissingEditor, 'No EDITOR variable defined in environment' if Doing::Util.default_editor.nil?
|
|
718
747
|
|
|
748
|
+
input = ''
|
|
719
749
|
input += date.strftime('%F %R | ')
|
|
720
750
|
input += args.empty? ? '' : args.join(' ')
|
|
721
751
|
input += "\n#{options[:note]}" if options[:note]
|
|
722
752
|
input += "\n#{ask_note}" unless ask_note.empty?
|
|
723
753
|
|
|
724
754
|
input = wwid.fork_editor(input).strip
|
|
725
|
-
raise EmptyInput, 'No content' unless input && !input.empty?
|
|
726
755
|
|
|
727
756
|
d, title, note = wwid.format_input(input)
|
|
728
|
-
|
|
757
|
+
raise EmptyInput, 'No content' if title.empty?
|
|
758
|
+
|
|
729
759
|
note.add(options[:note]) if options[:note]
|
|
760
|
+
if ask_note.empty? && options[:ask]
|
|
761
|
+
ask_note = Doing::Prompt.read_lines(prompt: 'Add a note')
|
|
762
|
+
note.add(ask_note) unless ask_note.empty?
|
|
763
|
+
end
|
|
764
|
+
|
|
765
|
+
date = d.nil? ? date : d
|
|
730
766
|
wwid.add_item(title.cap_first, 'Later', { note: note, back: date })
|
|
731
767
|
wwid.write(wwid.doing_file)
|
|
732
768
|
elsif !args.empty?
|
|
@@ -747,7 +783,16 @@ command :later do |c|
|
|
|
747
783
|
wwid.add_item(title.cap_first, 'Later', { note: note, back: date })
|
|
748
784
|
wwid.write(wwid.doing_file)
|
|
749
785
|
else
|
|
750
|
-
|
|
786
|
+
title = Doing::Prompt.read_line(prompt: 'Entry content')
|
|
787
|
+
raise EmptyInput, 'You must provide content when creating a new entry' if title.strip.empty?
|
|
788
|
+
|
|
789
|
+
note = Doing::Note.new
|
|
790
|
+
res = Doing::Prompt.yn('Add a note', default_response: false)
|
|
791
|
+
ask_note = res ? Doing::Prompt.read_lines(prompt: 'Enter note') : []
|
|
792
|
+
note.add(ask_note)
|
|
793
|
+
|
|
794
|
+
wwid.add_item(title.cap_first, 'Later', { note: note, back: date })
|
|
795
|
+
wwid.write(wwid.doing_file)
|
|
751
796
|
end
|
|
752
797
|
end
|
|
753
798
|
end
|
|
@@ -929,7 +974,7 @@ command :meanwhile do |c|
|
|
|
929
974
|
end
|
|
930
975
|
input = ''
|
|
931
976
|
|
|
932
|
-
ask_note = options[:ask] ? Doing::Prompt.
|
|
977
|
+
ask_note = options[:ask] ? Doing::Prompt.read_lines(prompt: 'Add a note') : []
|
|
933
978
|
|
|
934
979
|
if options[:editor]
|
|
935
980
|
raise MissingEditor, 'No EDITOR variable defined in environment' if Doing::Util.default_editor.nil?
|
|
@@ -1053,7 +1098,7 @@ command :note do |c|
|
|
|
1053
1098
|
|
|
1054
1099
|
last_note = last_entry.note || Doing::Note.new
|
|
1055
1100
|
new_note = Doing::Note.new
|
|
1056
|
-
ask_note = options[:ask] ? Doing::Prompt.
|
|
1101
|
+
ask_note = options[:ask] ? Doing::Prompt.read_lines(prompt: 'Add a note') : ''
|
|
1057
1102
|
|
|
1058
1103
|
if options[:editor] || (args.empty? && $stdin.stat.size.zero? && !options[:remove] && !options[:ask])
|
|
1059
1104
|
raise MissingEditor, 'No EDITOR variable defined in environment' if Doing::Util.default_editor.nil?
|
|
@@ -1103,10 +1148,13 @@ long_desc %(Record what you're starting now, or backdate the start time using na
|
|
|
1103
1148
|
|
|
1104
1149
|
A parenthetical at the end of the entry will be converted to a note.
|
|
1105
1150
|
|
|
1106
|
-
Run
|
|
1151
|
+
Run without arguments to create a new entry interactively.
|
|
1152
|
+
|
|
1153
|
+
Run with --editor to create a new entry using #{Doing::Util.default_editor}.)
|
|
1107
1154
|
arg_name 'ENTRY'
|
|
1108
1155
|
command %i[now next] do |c|
|
|
1109
|
-
c.example 'doing now', desc:
|
|
1156
|
+
c.example 'doing now', desc: 'Create a new entry with interactive prompts'
|
|
1157
|
+
c.example 'doing now -e', desc: "Open #{Doing::Util.default_editor} to input an entry and optional note"
|
|
1110
1158
|
c.example 'doing now working on a new project', desc: 'Add a new entry at the current time'
|
|
1111
1159
|
c.example 'doing now debugging @project2', desc: 'Add an entry with a tag'
|
|
1112
1160
|
c.example 'doing now adding an entry (with a note)', desc: 'Parenthetical at end is converted to note'
|
|
@@ -1152,9 +1200,9 @@ command %i[now next] do |c|
|
|
|
1152
1200
|
options[:section] = settings['current_section']
|
|
1153
1201
|
end
|
|
1154
1202
|
|
|
1155
|
-
ask_note = options[:ask] ? Doing::Prompt.
|
|
1203
|
+
ask_note = options[:ask] && !options[:editor] && args.count.positive? ? Doing::Prompt.read_lines(prompt: 'Add a note') : ''
|
|
1156
1204
|
|
|
1157
|
-
if options[:editor]
|
|
1205
|
+
if options[:editor]
|
|
1158
1206
|
raise MissingEditor, 'No EDITOR variable defined in environment' if Doing::Util.default_editor.nil?
|
|
1159
1207
|
|
|
1160
1208
|
input = date.strftime('%F %R | ')
|
|
@@ -1163,9 +1211,13 @@ command %i[now next] do |c|
|
|
|
1163
1211
|
input += "\n#{ask_note}" unless ask_note.empty?
|
|
1164
1212
|
input = wwid.fork_editor(input).strip
|
|
1165
1213
|
|
|
1166
|
-
raise EmptyInput, 'No content' if input.empty?
|
|
1167
|
-
|
|
1168
1214
|
date, title, note = wwid.format_input(input)
|
|
1215
|
+
raise EmptyInput, 'No content' if title.strip.empty?
|
|
1216
|
+
|
|
1217
|
+
if ask_note.empty? && options[:ask]
|
|
1218
|
+
ask_note = Doing::Prompt.read_lines(prompt: 'Add a note')
|
|
1219
|
+
note.add(ask_note) unless ask_note.empty?
|
|
1220
|
+
end
|
|
1169
1221
|
|
|
1170
1222
|
wwid.add_item(title.cap_first, section, { note: note, back: date, timed: options[:finish_last] })
|
|
1171
1223
|
wwid.write(wwid.doing_file)
|
|
@@ -1188,7 +1240,16 @@ command %i[now next] do |c|
|
|
|
1188
1240
|
wwid.add_item(title.cap_first, section, { note: note, back: date, timed: options[:finish_last] })
|
|
1189
1241
|
wwid.write(wwid.doing_file)
|
|
1190
1242
|
else
|
|
1191
|
-
|
|
1243
|
+
title = Doing::Prompt.read_line(prompt: 'Entry content')
|
|
1244
|
+
raise EmptyInput, 'You must provide content when creating a new entry' if title.strip.empty?
|
|
1245
|
+
|
|
1246
|
+
note = Doing::Note.new
|
|
1247
|
+
res = Doing::Prompt.yn('Add a note', default_response: false)
|
|
1248
|
+
ask_note = res ? Doing::Prompt.read_lines(prompt: 'Enter note') : []
|
|
1249
|
+
note.add(ask_note)
|
|
1250
|
+
|
|
1251
|
+
wwid.add_item(title.cap_first, section, { note: note, back: date, timed: options[:finish_last] })
|
|
1252
|
+
wwid.write(wwid.doing_file)
|
|
1192
1253
|
end
|
|
1193
1254
|
end
|
|
1194
1255
|
end
|
|
@@ -1511,7 +1572,7 @@ command :tag do |c|
|
|
|
1511
1572
|
|
|
1512
1573
|
c.action do |_global_options, options, args|
|
|
1513
1574
|
options[:fuzzy] = false
|
|
1514
|
-
raise MissingArgument, 'You must specify at least one tag' if args.empty? && !options[:autotag]
|
|
1575
|
+
# raise MissingArgument, 'You must specify at least one tag' if args.empty? && !options[:autotag]
|
|
1515
1576
|
|
|
1516
1577
|
raise InvalidArgument, '--search and --tag can not be used together' if options[:search] && options[:tag]
|
|
1517
1578
|
|
|
@@ -1531,11 +1592,15 @@ command :tag do |c|
|
|
|
1531
1592
|
if options[:autotag]
|
|
1532
1593
|
tags = []
|
|
1533
1594
|
else
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1595
|
+
if args.empty?
|
|
1596
|
+
tags = []
|
|
1597
|
+
else
|
|
1598
|
+
tags = if args.join('') =~ /,/
|
|
1599
|
+
args.join('').split(/ *, */)
|
|
1600
|
+
else
|
|
1601
|
+
args.join(' ').split(' ') # in case tags are quoted as one arg
|
|
1602
|
+
end
|
|
1603
|
+
end
|
|
1539
1604
|
|
|
1540
1605
|
tags.map! { |tag| tag.sub(/^@/, '').strip }
|
|
1541
1606
|
end
|
data/docs/doc/Array.html
CHANGED
|
@@ -654,7 +654,7 @@ minutes]</p>
|
|
|
654
654
|
</div>
|
|
655
655
|
|
|
656
656
|
<div id="footer">
|
|
657
|
-
Generated on
|
|
657
|
+
Generated on Tue Jan 18 02:48:57 2022 by
|
|
658
658
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
659
659
|
0.9.26 (ruby-3.0.1).
|
|
660
660
|
</div>
|
|
@@ -283,7 +283,7 @@
|
|
|
283
283
|
</div>
|
|
284
284
|
|
|
285
285
|
<div id="footer">
|
|
286
|
-
Generated on
|
|
286
|
+
Generated on Tue Jan 18 02:48:58 2022 by
|
|
287
287
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
288
288
|
0.9.26 (ruby-3.0.1).
|
|
289
289
|
</div>
|
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
</div>
|
|
163
163
|
|
|
164
164
|
<div id="footer">
|
|
165
|
-
Generated on
|
|
165
|
+
Generated on Tue Jan 18 02:48:58 2022 by
|
|
166
166
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
167
167
|
0.9.26 (ruby-3.0.1).
|
|
168
168
|
</div>
|
|
@@ -407,7 +407,7 @@
|
|
|
407
407
|
</div>
|
|
408
408
|
|
|
409
409
|
<div id="footer">
|
|
410
|
-
Generated on
|
|
410
|
+
Generated on Tue Jan 18 02:48:58 2022 by
|
|
411
411
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
412
412
|
0.9.26 (ruby-3.0.1).
|
|
413
413
|
</div>
|
|
@@ -125,7 +125,7 @@ parser. In order to do that, a new "clause" node is added to the parse
|
|
|
125
125
|
</div>
|
|
126
126
|
|
|
127
127
|
<div id="footer">
|
|
128
|
-
Generated on
|
|
128
|
+
Generated on Tue Jan 18 02:48:58 2022 by
|
|
129
129
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
130
130
|
0.9.26 (ruby-3.0.1).
|
|
131
131
|
</div>
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
</div>
|
|
115
115
|
|
|
116
116
|
<div id="footer">
|
|
117
|
-
Generated on
|
|
117
|
+
Generated on Tue Jan 18 02:48:58 2022 by
|
|
118
118
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
119
119
|
0.9.26 (ruby-3.0.1).
|
|
120
120
|
</div>
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
</div>
|
|
106
106
|
|
|
107
107
|
<div id="footer">
|
|
108
|
-
Generated on
|
|
108
|
+
Generated on Tue Jan 18 02:48:57 2022 by
|
|
109
109
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
110
110
|
0.9.26 (ruby-3.0.1).
|
|
111
111
|
</div>
|
data/docs/doc/Doing/Color.html
CHANGED
|
@@ -508,7 +508,7 @@ ANSI-sequences are stripped from the string.</p>
|
|
|
508
508
|
</div>
|
|
509
509
|
|
|
510
510
|
<div id="footer">
|
|
511
|
-
Generated on
|
|
511
|
+
Generated on Tue Jan 18 02:48:57 2022 by
|
|
512
512
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
513
513
|
0.9.26 (ruby-3.0.1).
|
|
514
514
|
</div>
|
|
@@ -206,7 +206,7 @@ stdout</p>
|
|
|
206
206
|
</div>
|
|
207
207
|
|
|
208
208
|
<div id="footer">
|
|
209
|
-
Generated on
|
|
209
|
+
Generated on Tue Jan 18 02:48:57 2022 by
|
|
210
210
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
211
211
|
0.9.26 (ruby-3.0.1).
|
|
212
212
|
</div>
|
|
@@ -1104,7 +1104,7 @@ matched, first match wins)</p>
|
|
|
1104
1104
|
</div>
|
|
1105
1105
|
|
|
1106
1106
|
<div id="footer">
|
|
1107
|
-
Generated on
|
|
1107
|
+
Generated on Tue Jan 18 02:48:58 2022 by
|
|
1108
1108
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
1109
1109
|
0.9.26 (ruby-3.0.1).
|
|
1110
1110
|
</div>
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
</div>
|
|
177
177
|
|
|
178
178
|
<div id="footer">
|
|
179
|
-
Generated on
|
|
179
|
+
Generated on Tue Jan 18 02:48:57 2022 by
|
|
180
180
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
181
181
|
0.9.26 (ruby-3.0.1).
|
|
182
182
|
</div>
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
</div>
|
|
177
177
|
|
|
178
178
|
<div id="footer">
|
|
179
|
-
Generated on
|
|
179
|
+
Generated on Tue Jan 18 02:48:57 2022 by
|
|
180
180
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
181
181
|
0.9.26 (ruby-3.0.1).
|
|
182
182
|
</div>
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
</div>
|
|
177
177
|
|
|
178
178
|
<div id="footer">
|
|
179
|
-
Generated on
|
|
179
|
+
Generated on Tue Jan 18 02:48:57 2022 by
|
|
180
180
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
181
181
|
0.9.26 (ruby-3.0.1).
|
|
182
182
|
</div>
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
</div>
|
|
177
177
|
|
|
178
178
|
<div id="footer">
|
|
179
|
-
Generated on
|
|
179
|
+
Generated on Tue Jan 18 02:48:57 2022 by
|
|
180
180
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
181
181
|
0.9.26 (ruby-3.0.1).
|
|
182
182
|
</div>
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
</div>
|
|
177
177
|
|
|
178
178
|
<div id="footer">
|
|
179
|
-
Generated on
|
|
179
|
+
Generated on Tue Jan 18 02:48:57 2022 by
|
|
180
180
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
181
181
|
0.9.26 (ruby-3.0.1).
|
|
182
182
|
</div>
|
|
@@ -238,7 +238,7 @@
|
|
|
238
238
|
</div>
|
|
239
239
|
|
|
240
240
|
<div id="footer">
|
|
241
|
-
Generated on
|
|
241
|
+
Generated on Tue Jan 18 02:48:57 2022 by
|
|
242
242
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
243
243
|
0.9.26 (ruby-3.0.1).
|
|
244
244
|
</div>
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
</div>
|
|
177
177
|
|
|
178
178
|
<div id="footer">
|
|
179
|
-
Generated on
|
|
179
|
+
Generated on Tue Jan 18 02:48:57 2022 by
|
|
180
180
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
181
181
|
0.9.26 (ruby-3.0.1).
|
|
182
182
|
</div>
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
</div>
|
|
177
177
|
|
|
178
178
|
<div id="footer">
|
|
179
|
-
Generated on
|
|
179
|
+
Generated on Tue Jan 18 02:48:57 2022 by
|
|
180
180
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
181
181
|
0.9.26 (ruby-3.0.1).
|
|
182
182
|
</div>
|
data/docs/doc/Doing/Errors.html
CHANGED
|
@@ -181,7 +181,7 @@
|
|
|
181
181
|
</div>
|
|
182
182
|
|
|
183
183
|
<div id="footer">
|
|
184
|
-
Generated on
|
|
184
|
+
Generated on Tue Jan 18 02:48:57 2022 by
|
|
185
185
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
186
186
|
0.9.26 (ruby-3.0.1).
|
|
187
187
|
</div>
|
data/docs/doc/Doing/Hooks.html
CHANGED
|
@@ -354,7 +354,7 @@
|
|
|
354
354
|
</div>
|
|
355
355
|
|
|
356
356
|
<div id="footer">
|
|
357
|
-
Generated on
|
|
357
|
+
Generated on Tue Jan 18 02:48:57 2022 by
|
|
358
358
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
359
359
|
0.9.26 (ruby-3.0.1).
|
|
360
360
|
</div>
|
data/docs/doc/Doing/Item.html
CHANGED
|
@@ -2077,7 +2077,7 @@ thus should not receive a date on the @done tag</p>
|
|
|
2077
2077
|
</div>
|
|
2078
2078
|
|
|
2079
2079
|
<div id="footer">
|
|
2080
|
-
Generated on
|
|
2080
|
+
Generated on Tue Jan 18 02:48:57 2022 by
|
|
2081
2081
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
2082
2082
|
0.9.26 (ruby-3.0.1).
|
|
2083
2083
|
</div>
|
data/docs/doc/Doing/Items.html
CHANGED
|
@@ -890,7 +890,7 @@ specified section</p>
|
|
|
890
890
|
</div>
|
|
891
891
|
|
|
892
892
|
<div id="footer">
|
|
893
|
-
Generated on
|
|
893
|
+
Generated on Tue Jan 18 02:48:57 2022 by
|
|
894
894
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
895
895
|
0.9.26 (ruby-3.0.1).
|
|
896
896
|
</div>
|
|
@@ -1797,7 +1797,7 @@ message (optional)</p>
|
|
|
1797
1797
|
</div>
|
|
1798
1798
|
|
|
1799
1799
|
<div id="footer">
|
|
1800
|
-
Generated on
|
|
1800
|
+
Generated on Tue Jan 18 02:48:58 2022 by
|
|
1801
1801
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
1802
1802
|
0.9.26 (ruby-3.0.1).
|
|
1803
1803
|
</div>
|