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.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/.yardoc/checksums +10 -10
  3. data/.yardoc/object_types +0 -0
  4. data/.yardoc/objects/root.dat +0 -0
  5. data/CHANGELOG.md +109 -51
  6. data/Gemfile.lock +1 -1
  7. data/README.md +1 -1
  8. data/bin/doing +131 -45
  9. data/docs/doc/Array.html +1 -1
  10. data/docs/doc/BooleanTermParser/Clause.html +1 -1
  11. data/docs/doc/BooleanTermParser/Operator.html +1 -1
  12. data/docs/doc/BooleanTermParser/Query.html +1 -1
  13. data/docs/doc/BooleanTermParser/QueryParser.html +1 -1
  14. data/docs/doc/BooleanTermParser/QueryTransformer.html +1 -1
  15. data/docs/doc/BooleanTermParser.html +1 -1
  16. data/docs/doc/Doing/Color.html +6 -2
  17. data/docs/doc/Doing/Completion.html +1 -1
  18. data/docs/doc/Doing/Configuration.html +4 -3
  19. data/docs/doc/Doing/Errors/DoingNoTraceError.html +1 -1
  20. data/docs/doc/Doing/Errors/DoingRuntimeError.html +1 -1
  21. data/docs/doc/Doing/Errors/DoingStandardError.html +1 -1
  22. data/docs/doc/Doing/Errors/EmptyInput.html +1 -1
  23. data/docs/doc/Doing/Errors/NoResults.html +1 -1
  24. data/docs/doc/Doing/Errors/PluginException.html +1 -1
  25. data/docs/doc/Doing/Errors/UserCancelled.html +1 -1
  26. data/docs/doc/Doing/Errors/WrongCommand.html +1 -1
  27. data/docs/doc/Doing/Errors.html +1 -1
  28. data/docs/doc/Doing/Hooks.html +1 -1
  29. data/docs/doc/Doing/Item.html +119 -1
  30. data/docs/doc/Doing/Items.html +1 -1
  31. data/docs/doc/Doing/LogAdapter.html +1 -1
  32. data/docs/doc/Doing/Note.html +1 -1
  33. data/docs/doc/Doing/Pager.html +1 -1
  34. data/docs/doc/Doing/Plugins.html +1 -1
  35. data/docs/doc/Doing/Prompt.html +69 -1
  36. data/docs/doc/Doing/Section.html +1 -1
  37. data/docs/doc/Doing/TemplateString.html +2 -2
  38. data/docs/doc/Doing/Util/Backup.html +1 -1
  39. data/docs/doc/Doing/Util.html +1 -1
  40. data/docs/doc/Doing/WWID.html +37 -3
  41. data/docs/doc/Doing.html +2 -2
  42. data/docs/doc/GLI/Commands/MarkdownDocumentListener.html +1 -1
  43. data/docs/doc/GLI/Commands.html +1 -1
  44. data/docs/doc/GLI.html +1 -1
  45. data/docs/doc/Hash.html +1 -1
  46. data/docs/doc/Numeric.html +1 -1
  47. data/docs/doc/PhraseParser/Operator.html +1 -1
  48. data/docs/doc/PhraseParser/PhraseClause.html +1 -1
  49. data/docs/doc/PhraseParser/Query.html +1 -1
  50. data/docs/doc/PhraseParser/QueryParser.html +1 -1
  51. data/docs/doc/PhraseParser/QueryTransformer.html +1 -1
  52. data/docs/doc/PhraseParser/TermClause.html +1 -1
  53. data/docs/doc/PhraseParser.html +1 -1
  54. data/docs/doc/Status.html +1 -1
  55. data/docs/doc/String.html +228 -1
  56. data/docs/doc/Symbol.html +1 -1
  57. data/docs/doc/Time.html +1 -1
  58. data/docs/doc/_index.html +1 -1
  59. data/docs/doc/file.README.html +2 -2
  60. data/docs/doc/index.html +2 -2
  61. data/docs/doc/method_list.html +254 -182
  62. data/docs/doc/top-level-namespace.html +1 -1
  63. data/doing.rdoc +34 -4
  64. data/lib/completion/_doing.zsh +7 -7
  65. data/lib/completion/doing.bash +10 -10
  66. data/lib/completion/doing.fish +6 -1
  67. data/lib/doing/colors.rb +4 -0
  68. data/lib/doing/configuration.rb +2 -1
  69. data/lib/doing/item.rb +51 -0
  70. data/lib/doing/log_adapter.rb +2 -2
  71. data/lib/doing/plugins/export/template_export.rb +2 -0
  72. data/lib/doing/prompt.rb +52 -0
  73. data/lib/doing/string.rb +43 -0
  74. data/lib/doing/string_chronify.rb +28 -0
  75. data/lib/doing/template_string.rb +1 -1
  76. data/lib/doing/version.rb +1 -1
  77. data/lib/doing/wwid.rb +54 -23
  78. data/lib/doing.rb +5 -4
  79. 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.request_lines(prompt: 'Add a note')) if options[:ask]
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
- If used, ignores --back. Used with --took, backdates start date)
341
+ Used with --took, backdates start date)
342
342
  c.arg_name 'DATE_STRING'
343
- c.flag [:at]
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[:took]
381
- took = options[:took].chronify_qty
382
- raise InvalidTimeExpression, 'Unable to parse date string for --took' if took.nil?
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
- date = options[:took] ? Time.now - took : Time.now
390
- end
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
- if options[:at]
393
- finish_date = options[:at].chronify(guess: :begin)
394
- raise InvalidTimeExpression, 'Unable to parse date string for --at' if finish_date.nil?
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
- date = options[:took] ? finish_date - took : finish_date
397
- elsif options[:took]
398
- finish_date = date + took
399
- else
400
- finish_date = Time.now
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
- note.add(Doing::Prompt.request_lines(prompt: 'Add a note')) if options[:ask]
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.request_lines(prompt: 'Add a note') : ''
743
+ ask_note = options[:ask] && !options[:editor] && args.count.positive? ? Doing::Prompt.read_lines(prompt: 'Add a note') : ''
715
744
 
716
- if options[:editor] || (args.empty? && $stdin.stat.size.zero?)
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
- date = d.nil? ? date : d
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
- raise EmptyInput, 'You must provide content when creating a new entry'
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.request_lines(prompt: 'Add a note') : []
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.request_lines(prompt: 'Add a note') : ''
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 with no argument to create a new entry using #{Doing::Util.default_editor}.)
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: "Open #{Doing::Util.default_editor} to input an entry and optional note."
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.request_lines(prompt: 'Add a note') : ''
1203
+ ask_note = options[:ask] && !options[:editor] && args.count.positive? ? Doing::Prompt.read_lines(prompt: 'Add a note') : ''
1156
1204
 
1157
- if options[:editor] || (args.empty? && $stdin.stat.size.zero?)
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
- note.add(ask_note) unless ask_note.empty?
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
- raise EmptyInput, 'You must provide content when creating a new entry'
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
- tags = if args.join('') =~ /,/
1535
- args.join('').split(/,/)
1536
- else
1537
- args.join(' ').split(' ') # in case tags are quoted as one arg
1538
- end
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 Mon Jan 17 08:01:48 2022 by
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 Mon Jan 17 08:01:48 2022 by
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 Mon Jan 17 08:01:48 2022 by
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 Mon Jan 17 08:01:48 2022 by
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 &quot;clause&quot; node is added to the parse
125
125
  </div>
126
126
 
127
127
  <div id="footer">
128
- Generated on Mon Jan 17 08:01:48 2022 by
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 Mon Jan 17 08:01:48 2022 by
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 Mon Jan 17 08:01:48 2022 by
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>
@@ -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'>&#39;</span><span class='tstring_content'>0;35;40</span><span class='tstring_end'>&#39;</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 Mon Jan 17 08:01:48 2022 by
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 Mon Jan 17 08:01:48 2022 by
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'>&#39;</span><span class='tstring_content'>search</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span>
211
211
  <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>matching</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>pattern</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='comment'># fuzzy, pattern, exact
212
212
  </span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>distance</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='int'>3</span><span class='comma'>,</span>
213
- <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>case</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>smart</span><span class='tstring_end'>&#39;</span></span> <span class='comment'># sensitive, ignore, smart
214
- </span> <span class='rbrace'>}</span><span class='comma'>,</span>
213
+ <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>case</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>smart</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='comment'># sensitive, ignore, smart
214
+ </span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>highlight</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='kw'>false</span>
215
+ <span class='rbrace'>}</span><span class='comma'>,</span>
215
216
  <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>include_notes</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
216
217
  <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>interaction</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span>
217
218
  <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>confirm_longer_than</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>5h</span><span class='tstring_end'>&#39;</span></span>
@@ -1104,7 +1105,7 @@ matched, first match wins)</p>
1104
1105
  </div>
1105
1106
 
1106
1107
  <div id="footer">
1107
- Generated on Mon Jan 17 08:01:48 2022 by
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 Mon Jan 17 08:01:48 2022 by
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 Mon Jan 17 08:01:48 2022 by
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 Mon Jan 17 08:01:48 2022 by
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 Mon Jan 17 08:01:48 2022 by
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 Mon Jan 17 08:01:48 2022 by
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 Mon Jan 17 08:01:48 2022 by
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 Mon Jan 17 08:01:48 2022 by
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 Mon Jan 17 08:01:48 2022 by
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>