doing 2.1.15 → 2.1.19
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 +10 -10
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/CHANGELOG.md +109 -51
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/bin/doing +131 -45
- 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 +6 -2
- data/docs/doc/Doing/Completion.html +1 -1
- data/docs/doc/Doing/Configuration.html +4 -3
- 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 +119 -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 +228 -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 +254 -182
- data/docs/doc/top-level-namespace.html +1 -1
- data/doing.rdoc +34 -4
- data/lib/completion/_doing.zsh +7 -7
- data/lib/completion/doing.bash +10 -10
- data/lib/completion/doing.fish +6 -1
- data/lib/doing/colors.rb +4 -0
- data/lib/doing/configuration.rb +2 -1
- data/lib/doing/item.rb +51 -0
- data/lib/doing/log_adapter.rb +2 -2
- data/lib/doing/plugins/export/template_export.rb +2 -0
- data/lib/doing/prompt.rb +52 -0
- data/lib/doing/string.rb +43 -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 +54 -23
- data/lib/doing.rb +5 -4
- metadata +2 -2
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
|
391
395
|
|
392
|
-
|
393
|
-
|
394
|
-
|
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
|
395
402
|
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
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?
|
406
|
+
|
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)
|
@@ -1184,11 +1236,26 @@ command %i[now next] do |c|
|
|
1184
1236
|
date = d
|
1185
1237
|
end
|
1186
1238
|
note.add(options[:note]) if options[:note]
|
1187
|
-
|
1239
|
+
if ask_note.empty? && options[:ask]
|
1240
|
+
ask_note = Doing::Prompt.read_lines(prompt: 'Add a note')
|
1241
|
+
note.add(ask_note) unless ask_note.empty?
|
1242
|
+
end
|
1188
1243
|
wwid.add_item(title.cap_first, section, { note: note, back: date, timed: options[:finish_last] })
|
1189
1244
|
wwid.write(wwid.doing_file)
|
1190
1245
|
else
|
1191
|
-
|
1246
|
+
tags = wwid.all_tags(wwid.content)
|
1247
|
+
$stderr.puts Doing::Color.boldgreen("Add a new entry. Tab will autocomplete known tags. Ctrl-c to cancel.")
|
1248
|
+
title = Doing::Prompt.read_line(prompt: 'Entry content', completions: tags)
|
1249
|
+
raise EmptyInput, 'You must provide content when creating a new entry' if title.strip.empty?
|
1250
|
+
|
1251
|
+
note = Doing::Note.new
|
1252
|
+
note.add(options[:note]) if options[:note]
|
1253
|
+
res = Doing::Prompt.yn('Add a note', default_response: false)
|
1254
|
+
ask_note = res ? Doing::Prompt.read_lines(prompt: 'Enter note') : []
|
1255
|
+
note.add(ask_note)
|
1256
|
+
|
1257
|
+
wwid.add_item(title.cap_first, section, { note: note, back: date, timed: options[:finish_last] })
|
1258
|
+
wwid.write(wwid.doing_file)
|
1192
1259
|
end
|
1193
1260
|
end
|
1194
1261
|
end
|
@@ -1511,7 +1578,7 @@ command :tag do |c|
|
|
1511
1578
|
|
1512
1579
|
c.action do |_global_options, options, args|
|
1513
1580
|
options[:fuzzy] = false
|
1514
|
-
raise MissingArgument, 'You must specify at least one tag' if args.empty? && !options[:autotag]
|
1581
|
+
# raise MissingArgument, 'You must specify at least one tag' if args.empty? && !options[:autotag]
|
1515
1582
|
|
1516
1583
|
raise InvalidArgument, '--search and --tag can not be used together' if options[:search] && options[:tag]
|
1517
1584
|
|
@@ -1531,11 +1598,15 @@ command :tag do |c|
|
|
1531
1598
|
if options[:autotag]
|
1532
1599
|
tags = []
|
1533
1600
|
else
|
1534
|
-
|
1535
|
-
|
1536
|
-
|
1537
|
-
|
1538
|
-
|
1601
|
+
if args.empty?
|
1602
|
+
tags = []
|
1603
|
+
else
|
1604
|
+
tags = if args.join('') =~ /,/
|
1605
|
+
args.join('').split(/ *, */)
|
1606
|
+
else
|
1607
|
+
args.join(' ').split(' ') # in case tags are quoted as one arg
|
1608
|
+
end
|
1609
|
+
end
|
1539
1610
|
|
1540
1611
|
tags.map! { |tag| tag.sub(/^@/, '').strip }
|
1541
1612
|
end
|
@@ -1679,6 +1750,9 @@ command %i[grep search] do |c|
|
|
1679
1750
|
c.arg_name 'TYPE'
|
1680
1751
|
c.flag [:case], must_match: /^[csi]/, default_value: settings.dig('search', 'case')
|
1681
1752
|
|
1753
|
+
c.desc "Highlight search matches in output. Only affects command line output"
|
1754
|
+
c.switch %i[h hilite], default_value: settings.dig('search', 'highlight')
|
1755
|
+
|
1682
1756
|
c.desc "Edit matching entries with #{Doing::Util.default_editor}"
|
1683
1757
|
c.switch %i[e editor], negatable: false, default_value: false
|
1684
1758
|
|
@@ -1756,6 +1830,9 @@ command :last do |c|
|
|
1756
1830
|
c.arg_name 'QUERY'
|
1757
1831
|
c.flag [:search]
|
1758
1832
|
|
1833
|
+
c.desc "Highlight search matches in output. Only affects command line output"
|
1834
|
+
c.switch %i[h hilite], default_value: settings.dig('search', 'highlight')
|
1835
|
+
|
1759
1836
|
c.desc 'Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool'
|
1760
1837
|
c.arg_name 'QUERY'
|
1761
1838
|
c.flag [:val], multiple: true, must_match: REGEX_VALUE_QUERY
|
@@ -1810,6 +1887,7 @@ command :last do |c|
|
|
1810
1887
|
search: options[:search],
|
1811
1888
|
fuzzy: options[:fuzzy],
|
1812
1889
|
case: options[:case],
|
1890
|
+
hilite: options[:hilite],
|
1813
1891
|
negate: options[:not],
|
1814
1892
|
tag: options[:tag],
|
1815
1893
|
tag_bool: options[:bool],
|
@@ -1955,6 +2033,9 @@ command :show do |c|
|
|
1955
2033
|
c.arg_name 'QUERY'
|
1956
2034
|
c.flag [:search]
|
1957
2035
|
|
2036
|
+
c.desc "Highlight search matches in output. Only affects command line output"
|
2037
|
+
c.switch %i[h hilite], default_value: settings.dig('search', 'highlight')
|
2038
|
+
|
1958
2039
|
# c.desc '[DEPRECATED] Use alternative fuzzy matching for search string'
|
1959
2040
|
# c.switch [:fuzzy], default_value: false, negatable: false
|
1960
2041
|
|
@@ -2102,6 +2183,7 @@ command :show do |c|
|
|
2102
2183
|
opt[:sort_tags] = options[:tag_sort] =~ /^n/i
|
2103
2184
|
opt[:count] = options[:count].to_i
|
2104
2185
|
opt[:highlight] = true
|
2186
|
+
opt[:hilite] = options[:hilite]
|
2105
2187
|
opt[:order] = options[:sort].normalize_order
|
2106
2188
|
opt[:tag] = nil
|
2107
2189
|
opt[:tag_order] = options[:tag_order].normalize_order
|
@@ -2428,6 +2510,9 @@ command :view do |c|
|
|
2428
2510
|
c.arg_name 'QUERY'
|
2429
2511
|
c.flag [:search]
|
2430
2512
|
|
2513
|
+
c.desc "Highlight search matches in output. Only affects command line output"
|
2514
|
+
c.switch %i[h hilite], default_value: settings.dig('search', 'highlight')
|
2515
|
+
|
2431
2516
|
# c.desc '[DEPRECATED] Use alternative fuzzy matching for search string'
|
2432
2517
|
# c.switch [:fuzzy], default_value: false, negatable: false
|
2433
2518
|
|
@@ -2588,6 +2673,7 @@ command :view do |c|
|
|
2588
2673
|
opts[:count] = count
|
2589
2674
|
opts[:format] = date_format
|
2590
2675
|
opts[:highlight] = options[:color]
|
2676
|
+
opts[:hilite] = options[:hilite]
|
2591
2677
|
opts[:only_timed] = only_timed
|
2592
2678
|
opts[:order] = order
|
2593
2679
|
opts[:output] = options[:interactive] ? nil : options[:output]
|
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 08:53:02 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 08:53:02 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 08:53:02 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 08:53:02 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 08:53:02 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 08:53:02 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 08:53:02 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
@@ -81,7 +81,7 @@
|
|
81
81
|
|
82
82
|
<dl>
|
83
83
|
<dt>Included in:</dt>
|
84
|
-
<dd><span class='object_link'><a href="" title="Doing::Color (module)">Color</a></span>, <span class='object_link'><a href="Prompt.html" title="Doing::Prompt (module)">Prompt</a></span>, <span class='object_link'><a href="TemplateString.html" title="Doing::TemplateString (class)">TemplateString</a></span>, <span class='object_link'><a href="WWID.html" title="Doing::WWID (class)">WWID</a></span>, <span class='object_link'><a href="../String.html" title="String (class)">String</a></span></dd>
|
84
|
+
<dd><span class='object_link'><a href="" title="Doing::Color (module)">Color</a></span>, <span class='object_link'><a href="Item.html" title="Doing::Item (class)">Item</a></span>, <span class='object_link'><a href="Prompt.html" title="Doing::Prompt (module)">Prompt</a></span>, <span class='object_link'><a href="TemplateString.html" title="Doing::TemplateString (class)">TemplateString</a></span>, <span class='object_link'><a href="WWID.html" title="Doing::WWID (class)">WWID</a></span>, <span class='object_link'><a href="../String.html" title="String (class)">String</a></span></dd>
|
85
85
|
</dl>
|
86
86
|
|
87
87
|
|
@@ -144,6 +144,7 @@
|
|
144
144
|
<span class='lbracket'>[</span><span class='symbol'>:yellow</span><span class='comma'>,</span> <span class='int'>33</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
145
145
|
<span class='lbracket'>[</span><span class='symbol'>:blue</span><span class='comma'>,</span> <span class='int'>34</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
146
146
|
<span class='lbracket'>[</span><span class='symbol'>:magenta</span><span class='comma'>,</span> <span class='int'>35</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
147
|
+
<span class='lbracket'>[</span><span class='symbol'>:purple</span><span class='comma'>,</span> <span class='int'>35</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
147
148
|
<span class='lbracket'>[</span><span class='symbol'>:cyan</span><span class='comma'>,</span> <span class='int'>36</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
148
149
|
<span class='lbracket'>[</span><span class='symbol'>:white</span><span class='comma'>,</span> <span class='int'>37</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
149
150
|
<span class='lbracket'>[</span><span class='symbol'>:bgblack</span><span class='comma'>,</span> <span class='int'>40</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
@@ -152,6 +153,7 @@
|
|
152
153
|
<span class='lbracket'>[</span><span class='symbol'>:bgyellow</span><span class='comma'>,</span> <span class='int'>43</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
153
154
|
<span class='lbracket'>[</span><span class='symbol'>:bgblue</span><span class='comma'>,</span> <span class='int'>44</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
154
155
|
<span class='lbracket'>[</span><span class='symbol'>:bgmagenta</span><span class='comma'>,</span> <span class='int'>45</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
156
|
+
<span class='lbracket'>[</span><span class='symbol'>:bgpurple</span><span class='comma'>,</span> <span class='int'>45</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
155
157
|
<span class='lbracket'>[</span><span class='symbol'>:bgcyan</span><span class='comma'>,</span> <span class='int'>46</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
156
158
|
<span class='lbracket'>[</span><span class='symbol'>:bgwhite</span><span class='comma'>,</span> <span class='int'>47</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
157
159
|
<span class='lbracket'>[</span><span class='symbol'>:boldblack</span><span class='comma'>,</span> <span class='int'>90</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># High intensity, aixterm (works in OS X)
|
@@ -160,6 +162,7 @@
|
|
160
162
|
<span class='lbracket'>[</span><span class='symbol'>:boldyellow</span><span class='comma'>,</span> <span class='int'>93</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
161
163
|
<span class='lbracket'>[</span><span class='symbol'>:boldblue</span><span class='comma'>,</span> <span class='int'>94</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
162
164
|
<span class='lbracket'>[</span><span class='symbol'>:boldmagenta</span><span class='comma'>,</span> <span class='int'>95</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
165
|
+
<span class='lbracket'>[</span><span class='symbol'>:boldpurple</span><span class='comma'>,</span> <span class='int'>95</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
163
166
|
<span class='lbracket'>[</span><span class='symbol'>:boldcyan</span><span class='comma'>,</span> <span class='int'>96</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
164
167
|
<span class='lbracket'>[</span><span class='symbol'>:boldwhite</span><span class='comma'>,</span> <span class='int'>97</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
165
168
|
<span class='lbracket'>[</span><span class='symbol'>:boldbgblack</span><span class='comma'>,</span> <span class='int'>100</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># High intensity background, aixterm (works in OS X)
|
@@ -168,6 +171,7 @@
|
|
168
171
|
<span class='lbracket'>[</span><span class='symbol'>:boldbgyellow</span><span class='comma'>,</span> <span class='int'>103</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
169
172
|
<span class='lbracket'>[</span><span class='symbol'>:boldbgblue</span><span class='comma'>,</span> <span class='int'>104</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
170
173
|
<span class='lbracket'>[</span><span class='symbol'>:boldbgmagenta</span><span class='comma'>,</span> <span class='int'>105</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
174
|
+
<span class='lbracket'>[</span><span class='symbol'>:boldbgpurple</span><span class='comma'>,</span> <span class='int'>105</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
171
175
|
<span class='lbracket'>[</span><span class='symbol'>:boldbgcyan</span><span class='comma'>,</span> <span class='int'>106</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
172
176
|
<span class='lbracket'>[</span><span class='symbol'>:boldbgwhite</span><span class='comma'>,</span> <span class='int'>107</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
173
177
|
<span class='lbracket'>[</span><span class='symbol'>:softpurple</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>0;35;40</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='comma'>,</span>
|
@@ -508,7 +512,7 @@ ANSI-sequences are stripped from the string.</p>
|
|
508
512
|
</div>
|
509
513
|
|
510
514
|
<div id="footer">
|
511
|
-
Generated on
|
515
|
+
Generated on Tue Jan 18 08:53:02 2022 by
|
512
516
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
513
517
|
0.9.26 (ruby-3.0.1).
|
514
518
|
</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 08:53:02 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>
|
@@ -210,8 +210,9 @@
|
|
210
210
|
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>search</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='lbrace'>{</span>
|
211
211
|
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>matching</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>pattern</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='comment'># fuzzy, pattern, exact
|
212
212
|
</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>distance</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='int'>3</span><span class='comma'>,</span>
|
213
|
-
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>case</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>smart</span><span class='tstring_end'>'</span></span> <span class='comment'># sensitive, ignore, smart
|
214
|
-
</span>
|
213
|
+
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>case</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>smart</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='comment'># sensitive, ignore, smart
|
214
|
+
</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>highlight</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='kw'>false</span>
|
215
|
+
<span class='rbrace'>}</span><span class='comma'>,</span>
|
215
216
|
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>include_notes</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='kw'>true</span><span class='comma'>,</span>
|
216
217
|
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>interaction</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='lbrace'>{</span>
|
217
218
|
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>confirm_longer_than</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>5h</span><span class='tstring_end'>'</span></span>
|
@@ -1104,7 +1105,7 @@ matched, first match wins)</p>
|
|
1104
1105
|
</div>
|
1105
1106
|
|
1106
1107
|
<div id="footer">
|
1107
|
-
Generated on
|
1108
|
+
Generated on Tue Jan 18 08:53:02 2022 by
|
1108
1109
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1109
1110
|
0.9.26 (ruby-3.0.1).
|
1110
1111
|
</div>
|
@@ -176,7 +176,7 @@
|
|
176
176
|
</div>
|
177
177
|
|
178
178
|
<div id="footer">
|
179
|
-
Generated on
|
179
|
+
Generated on Tue Jan 18 08:53:02 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 08:53:02 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 08:53:02 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 08:53:02 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 08:53:02 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 08:53:02 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 08:53:02 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 08:53:02 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>
|