doing 2.1.15 → 2.1.19

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