doing 2.1.22 → 2.1.23
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 +13 -11
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/CHANGELOG.md +18 -10
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/bin/doing +134 -27
- data/docs/doc/Array.html +10 -5
- data/docs/doc/BooleanTermParser/Clause.html +1 -1
- data/docs/doc/BooleanTermParser/Operator.html +1 -1
- data/docs/doc/BooleanTermParser/Query.html +1 -1
- data/docs/doc/BooleanTermParser/QueryParser.html +1 -1
- data/docs/doc/BooleanTermParser/QueryTransformer.html +1 -1
- data/docs/doc/BooleanTermParser.html +1 -1
- data/docs/doc/Doing/Color.html +1 -1
- data/docs/doc/Doing/Completion.html +1 -1
- data/docs/doc/Doing/Configuration.html +3 -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 +1 -1
- data/docs/doc/Doing/Items.html +1 -1
- data/docs/doc/Doing/LogAdapter.html +1 -1
- data/docs/doc/Doing/Note.html +1 -1
- data/docs/doc/Doing/Pager.html +1 -1
- data/docs/doc/Doing/Plugins.html +1 -1
- data/docs/doc/Doing/Prompt.html +1 -1
- data/docs/doc/Doing/Section.html +1 -1
- data/docs/doc/Doing/TemplateString.html +2 -2
- data/docs/doc/Doing/Types.html +201 -0
- data/docs/doc/Doing/Util/Backup.html +1 -1
- data/docs/doc/Doing/Util.html +2 -5
- data/docs/doc/Doing/WWID.html +1 -1
- data/docs/doc/Doing.html +2 -2
- data/docs/doc/GLI/Commands/Help.html +185 -0
- data/docs/doc/GLI/Commands/MarkdownDocumentListener.html +1 -1
- data/docs/doc/GLI/Commands.html +5 -3
- data/docs/doc/GLI.html +4 -2
- data/docs/doc/Hash.html +3 -11
- 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 +40 -10
- data/docs/doc/Symbol.html +1 -1
- data/docs/doc/Time.html +1 -1
- data/docs/doc/_index.html +16 -9
- data/docs/doc/class_list.html +1 -1
- data/docs/doc/file.README.html +2 -2
- data/docs/doc/index.html +2 -2
- data/docs/doc/method_list.html +160 -144
- data/docs/doc/top-level-namespace.html +1 -1
- data/docs/index.md +1 -1
- data/doing.rdoc +148 -4
- data/lib/completion/_doing.zsh +15 -15
- data/lib/completion/doing.bash +29 -18
- data/lib/completion/doing.fish +21 -1
- data/lib/doing/array.rb +2 -2
- data/lib/doing/changelog/change.rb +115 -0
- data/lib/doing/changelog/changes.rb +73 -0
- data/lib/doing/changelog/entry.rb +21 -0
- data/lib/doing/changelog/version.rb +97 -0
- data/lib/doing/changelog.rb +6 -0
- data/lib/doing/configuration.rb +15 -7
- data/lib/doing/hash.rb +3 -2
- data/lib/doing/help_monkey_patch.rb +31 -0
- data/lib/doing/hooks.rb +5 -1
- data/lib/doing/item.rb +10 -25
- data/lib/doing/plugins/export/template_export.rb +1 -1
- data/lib/doing/string.rb +19 -10
- data/lib/doing/string_chronify.rb +1 -1
- data/lib/doing/types.rb +2 -0
- data/lib/doing/util.rb +2 -1
- data/lib/doing/version.rb +1 -1
- data/lib/doing/wwid.rb +22 -19
- data/lib/doing.rb +1 -0
- data/lib/helpers/threaded_tests.rb +14 -1
- metadata +10 -2
data/lib/completion/doing.fish
CHANGED
|
@@ -139,7 +139,7 @@ complete -xc doing -n '__fish_doing_needs_command' -a 'again resume' -d Repeat\
|
|
|
139
139
|
complete -xc doing -n '__fish_doing_needs_command' -a 'archive move' -d Move\ entries\ between\ sections
|
|
140
140
|
complete -xc doing -n '__fish_doing_needs_command' -a 'autotag' -d Autotag\ last\ entry\ or\ filtered\ entries
|
|
141
141
|
complete -xc doing -n '__fish_doing_needs_command' -a 'cancel' -d End\ last\ X\ entries\ with\ no\ time\ tracked
|
|
142
|
-
complete -xc doing -n '__fish_doing_needs_command' -a 'changelog
|
|
142
|
+
complete -xc doing -n '__fish_doing_needs_command' -a 'changes changelog' -d List\ recent\ changes\ in\ Doing
|
|
143
143
|
complete -xc doing -n '__fish_doing_needs_command' -a 'choose' -d Select\ a\ section\ to\ display\ from\ a\ menu
|
|
144
144
|
complete -xc doing -n '__fish_doing_needs_command' -a 'colors' -d List\ available\ color\ variables\ for\ configuration\ templates\ and\ views
|
|
145
145
|
complete -xc doing -n '__fish_doing_needs_command' -a 'completion' -d Generate\ shell\ completion\ scripts
|
|
@@ -220,6 +220,9 @@ complete -c doing -l tag -f -r -n '__fish_doing_using_command cancel' -d Cancel
|
|
|
220
220
|
complete -c doing -l unfinished -s u -f -n '__fish_doing_using_command cancel' -d Cancel\ last\ entry
|
|
221
221
|
complete -c doing -l val -f -r -n '__fish_doing_using_command cancel' -d Perform\ a\ tag\ value\ query
|
|
222
222
|
complete -c doing -l exact -s x -f -n '__fish_doing_using_command cancel' -d Force\ exact\ search\ string\ matching
|
|
223
|
+
complete -c doing -l all -s a -f -n '__fish_doing_using_command changes changelog' -d Display\ all\ versions
|
|
224
|
+
complete -c doing -l lookup -s l -f -r -n '__fish_doing_using_command changes changelog' -d Look\ up\ a\ specific\ version
|
|
225
|
+
complete -c doing -l search -s s -f -r -n '__fish_doing_using_command changes changelog' -d Show\ changelogs\ matching\ search\ terms
|
|
223
226
|
complete -c doing -l file -s f -f -r -n '__fish_doing_using_command completion' -d File\ to\ write\ output\ to
|
|
224
227
|
complete -c doing -l type -s t -f -r -n '__fish_doing_using_command completion' -d Shell\ to\ generate\ for
|
|
225
228
|
complete -c doing -l dump -s d -f -n '__fish_doing_using_command config' -d DEPRECATED
|
|
@@ -257,6 +260,7 @@ complete -c doing -l after -f -r -n '__fish_doing_using_command grep search' -d
|
|
|
257
260
|
complete -c doing -l before -f -r -n '__fish_doing_using_command grep search' -d Search\ entries\ older\ than\ date
|
|
258
261
|
complete -c doing -l bool -f -r -n '__fish_doing_using_command grep search' -d Combine\ multiple\ tags\ or\ value\ queries\ using\ AND
|
|
259
262
|
complete -c doing -l case -f -r -n '__fish_doing_using_command grep search' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
|
|
263
|
+
complete -c doing -l config_template -f -r -n '__fish_doing_using_command grep search' -d Output\ using\ a\ template\ from\ configuration
|
|
260
264
|
complete -c doing -l delete -s d -f -n '__fish_doing_using_command grep search' -d Delete\ matching\ entries
|
|
261
265
|
complete -c doing -l duration -f -n '__fish_doing_using_command grep search' -d Show\ elapsed\ time\ on\ entries\ without\ @done\ tag
|
|
262
266
|
complete -c doing -l editor -s e -f -n '__fish_doing_using_command grep search' -d Edit\ matching\ entries\ with\ vim
|
|
@@ -269,6 +273,7 @@ complete -c doing -l only_timed -f -n '__fish_doing_using_command grep search'
|
|
|
269
273
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command grep search' -d Section
|
|
270
274
|
complete -c doing -l times -s t -f -n '__fish_doing_using_command grep search' -d Show\ time\ intervals\ on\ @done\ tasks
|
|
271
275
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command grep search' -d Sort\ tags\ by
|
|
276
|
+
complete -c doing -l template -f -r -n '__fish_doing_using_command grep search' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
272
277
|
complete -c doing -l totals -f -n '__fish_doing_using_command grep search' -d Show\ intervals\ with\ totals\ at\ the\ end\ of\ output
|
|
273
278
|
complete -c doing -l val -f -r -n '__fish_doing_using_command grep search' -d Perform\ a\ tag\ value\ query
|
|
274
279
|
complete -c doing -l exact -s x -f -n '__fish_doing_using_command grep search' -d Force\ exact\ string\ matching
|
|
@@ -289,6 +294,7 @@ complete -c doing -l type -f -r -n '__fish_doing_using_command import' -d Impor
|
|
|
289
294
|
complete -c doing -l exact -s x -f -n '__fish_doing_using_command import' -d Force\ exact\ search\ string\ matching
|
|
290
295
|
complete -c doing -l bool -f -r -n '__fish_doing_using_command last' -d Tag\ boolean
|
|
291
296
|
complete -c doing -l case -f -r -n '__fish_doing_using_command last' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
|
|
297
|
+
complete -c doing -l config_template -f -r -n '__fish_doing_using_command last' -d Output\ using\ a\ template\ from\ configuration
|
|
292
298
|
complete -c doing -l delete -s d -f -n '__fish_doing_using_command last' -d Delete\ the\ last\ entry
|
|
293
299
|
complete -c doing -l duration -f -n '__fish_doing_using_command last' -d Show\ elapsed\ time\ if\ entry\ is\ not\ tagged\ @done
|
|
294
300
|
complete -c doing -l editor -s e -f -n '__fish_doing_using_command last' -d Edit\ entry\ with\ vim
|
|
@@ -297,6 +303,7 @@ complete -c doing -l not -f -n '__fish_doing_using_command last' -d Show\ item
|
|
|
297
303
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command last' -d Specify\ a\ section
|
|
298
304
|
complete -c doing -l search -f -r -n '__fish_doing_using_command last' -d Search\ filter
|
|
299
305
|
complete -c doing -l tag -f -r -n '__fish_doing_using_command last' -d Tag\ filter
|
|
306
|
+
complete -c doing -l template -f -r -n '__fish_doing_using_command last' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
300
307
|
complete -c doing -l val -f -r -n '__fish_doing_using_command last' -d Perform\ a\ tag\ value\ query
|
|
301
308
|
complete -c doing -l exact -s x -f -n '__fish_doing_using_command last' -d Force\ exact\ search\ string\ matching
|
|
302
309
|
complete -c doing -l ask -f -n '__fish_doing_using_command later' -d Prompt\ for\ note\ via\ multi-line\ input
|
|
@@ -341,22 +348,26 @@ complete -c doing -l editor -s e -f -n '__fish_doing_using_command now next' -d
|
|
|
341
348
|
complete -c doing -l finish_last -s f -f -n '__fish_doing_using_command now next' -d Timed\ entry
|
|
342
349
|
complete -c doing -l note -s n -f -r -n '__fish_doing_using_command now next' -d Include\ a\ note
|
|
343
350
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command now next' -d Section
|
|
351
|
+
complete -c doing -l config_template -f -r -n '__fish_doing_using_command on' -d Output\ using\ a\ template\ from\ configuration
|
|
344
352
|
complete -c doing -l duration -f -n '__fish_doing_using_command on' -d Show\ elapsed\ time\ on\ entries\ without\ @done\ tag
|
|
345
353
|
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command on' -d Output\ to\ export\ format
|
|
346
354
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command on' -d Section
|
|
347
355
|
complete -c doing -l times -s t -f -n '__fish_doing_using_command on' -d Show\ time\ intervals\ on\ @done\ tasks
|
|
348
356
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command on' -d Sort\ tags\ by
|
|
357
|
+
complete -c doing -l template -f -r -n '__fish_doing_using_command on' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
349
358
|
complete -c doing -l totals -f -n '__fish_doing_using_command on' -d Show\ time\ totals\ at\ the\ end\ of\ output
|
|
350
359
|
complete -c doing -l app -s a -f -r -n '__fish_doing_using_command open' -d Open\ with\ app\ name
|
|
351
360
|
complete -c doing -l bundle_id -s b -f -r -n '__fish_doing_using_command open' -d Open\ with\ app\ bundle\ id
|
|
352
361
|
complete -c doing -l editor -s e -f -r -n '__fish_doing_using_command open' -d Open\ with\ editor\ command
|
|
353
362
|
complete -c doing -l column -s c -f -n '__fish_doing_using_command plugins' -d List\ in\ single\ column\ for\ completion
|
|
354
363
|
complete -c doing -l type -s t -f -r -n '__fish_doing_using_command plugins' -d List\ plugins\ of\ type
|
|
364
|
+
complete -c doing -l config_template -f -r -n '__fish_doing_using_command recent' -d Output\ using\ a\ template\ from\ configuration
|
|
355
365
|
complete -c doing -l duration -f -n '__fish_doing_using_command recent' -d Show\ elapsed\ time\ on\ entries\ without\ @done\ tag
|
|
356
366
|
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command recent' -d Select\ from\ a\ menu\ of\ matching\ entries\ to\ perform\ additional\ operations
|
|
357
367
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command recent' -d Section
|
|
358
368
|
complete -c doing -l times -s t -f -n '__fish_doing_using_command recent' -d Show\ time\ intervals\ on\ @done\ tasks
|
|
359
369
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command recent' -d Sort\ tags\ by
|
|
370
|
+
complete -c doing -l template -f -r -n '__fish_doing_using_command recent' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
360
371
|
complete -c doing -l totals -f -n '__fish_doing_using_command recent' -d Show\ intervals\ with\ totals\ at\ the\ end\ of\ output
|
|
361
372
|
complete -c doing -l bool -f -r -n '__fish_doing_using_command reset begin' -d Boolean
|
|
362
373
|
complete -c doing -l case -f -r -n '__fish_doing_using_command reset begin' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
|
|
@@ -409,6 +420,7 @@ complete -c doing -l bool -s b -f -r -n '__fish_doing_using_command show' -d Tag
|
|
|
409
420
|
complete -c doing -l before -f -r -n '__fish_doing_using_command show' -d Show\ entries\ older\ than\ date
|
|
410
421
|
complete -c doing -l count -s c -f -r -n '__fish_doing_using_command show' -d Max\ count\ to\ show
|
|
411
422
|
complete -c doing -l case -f -r -n '__fish_doing_using_command show' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
|
|
423
|
+
complete -c doing -l config_template -f -r -n '__fish_doing_using_command show' -d Output\ using\ a\ template\ from\ configuration
|
|
412
424
|
complete -c doing -l duration -f -n '__fish_doing_using_command show' -d Show\ elapsed\ time\ on\ entries\ without\ @done\ tag
|
|
413
425
|
complete -c doing -l from -f -r -n '__fish_doing_using_command show' -d Date\ range\ to\ show
|
|
414
426
|
complete -c doing -l hilite -s h -f -n '__fish_doing_using_command show' -d Highlight\ search\ matches\ in\ output
|
|
@@ -423,14 +435,17 @@ complete -c doing -l times -s t -f -n '__fish_doing_using_command show' -d Show
|
|
|
423
435
|
complete -c doing -l tag -f -r -n '__fish_doing_using_command show' -d Tag\ filter
|
|
424
436
|
complete -c doing -l tag_order -f -r -n '__fish_doing_using_command show' -d Tag\ sort\ direction
|
|
425
437
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command show' -d Sort\ tags\ by
|
|
438
|
+
complete -c doing -l template -f -r -n '__fish_doing_using_command show' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
426
439
|
complete -c doing -l totals -f -n '__fish_doing_using_command show' -d Show\ intervals\ with\ totals\ at\ the\ end\ of\ output
|
|
427
440
|
complete -c doing -l val -f -r -n '__fish_doing_using_command show' -d Perform\ a\ tag\ value\ query
|
|
428
441
|
complete -c doing -l exact -s x -f -n '__fish_doing_using_command show' -d Force\ exact\ search\ string\ matching
|
|
442
|
+
complete -c doing -l config_template -f -r -n '__fish_doing_using_command since' -d Output\ using\ a\ template\ from\ configuration
|
|
429
443
|
complete -c doing -l duration -f -n '__fish_doing_using_command since' -d Show\ elapsed\ time\ on\ entries\ without\ @done\ tag
|
|
430
444
|
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command since' -d Output\ to\ export\ format
|
|
431
445
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command since' -d Section
|
|
432
446
|
complete -c doing -l times -s t -f -n '__fish_doing_using_command since' -d Show\ time\ intervals\ on\ @done\ tasks
|
|
433
447
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command since' -d Sort\ tags\ by
|
|
448
|
+
complete -c doing -l template -f -r -n '__fish_doing_using_command since' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
434
449
|
complete -c doing -l totals -f -n '__fish_doing_using_command since' -d Show\ time\ totals\ at\ the\ end\ of\ output
|
|
435
450
|
complete -c doing -l autotag -s a -f -n '__fish_doing_using_command tag' -d Autotag\ entries\ based\ on\ autotag\ configuration\ in\ \~/
|
|
436
451
|
complete -c doing -l bool -f -r -n '__fish_doing_using_command tag' -d Boolean
|
|
@@ -455,6 +470,7 @@ complete -c doing -l bool -f -r -n '__fish_doing_using_command tags' -d Boolean
|
|
|
455
470
|
complete -c doing -l counts -s c -f -n '__fish_doing_using_command tags' -d Show\ count\ of\ occurrences
|
|
456
471
|
complete -c doing -l case -f -r -n '__fish_doing_using_command tags' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
|
|
457
472
|
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command tags' -d Select\ items\ to\ scan\ from\ a\ menu\ of\ matching\ entries
|
|
473
|
+
complete -c doing -l line -s l -f -n '__fish_doing_using_command tags' -d Output\ in\ a\ single\ line\ with\ @\ symbols
|
|
458
474
|
complete -c doing -l not -f -n '__fish_doing_using_command tags' -d Get\ tags\ from\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
|
|
459
475
|
complete -c doing -l order -s o -f -r -n '__fish_doing_using_command tags' -d Sort\ order
|
|
460
476
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command tags' -d Section
|
|
@@ -469,12 +485,14 @@ complete -c doing -l path -s p -f -r -n '__fish_doing_using_command template' -d
|
|
|
469
485
|
complete -c doing -l save -s s -f -n '__fish_doing_using_command template' -d Save\ template\ to\ file\ instead\ of\ STDOUT
|
|
470
486
|
complete -c doing -l after -f -r -n '__fish_doing_using_command today' -d View\ entries\ after\ specified\ time
|
|
471
487
|
complete -c doing -l before -f -r -n '__fish_doing_using_command today' -d View\ entries\ before\ specified\ time
|
|
488
|
+
complete -c doing -l config_template -f -r -n '__fish_doing_using_command today' -d Output\ using\ a\ template\ from\ configuration
|
|
472
489
|
complete -c doing -l duration -f -n '__fish_doing_using_command today' -d Show\ elapsed\ time\ on\ entries\ without\ @done\ tag
|
|
473
490
|
complete -c doing -l from -f -r -n '__fish_doing_using_command today' -d Time\ range\ to\ show\ \`doing\ today\ --from\ \"12pm\ to\ 4pm\"\`
|
|
474
491
|
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command today' -d Output\ to\ export\ format
|
|
475
492
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command today' -d Specify\ a\ section
|
|
476
493
|
complete -c doing -l times -s t -f -n '__fish_doing_using_command today' -d Show\ time\ intervals\ on\ @done\ tasks
|
|
477
494
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command today' -d Sort\ tags\ by
|
|
495
|
+
complete -c doing -l template -f -r -n '__fish_doing_using_command today' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
478
496
|
complete -c doing -l totals -f -n '__fish_doing_using_command today' -d Show\ time\ totals\ at\ the\ end\ of\ output
|
|
479
497
|
complete -c doing -l file -s f -f -r -n '__fish_doing_using_command undo' -d Specify\ alternate\ doing\ file
|
|
480
498
|
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command undo' -d Select\ from\ recent\ backups
|
|
@@ -514,6 +532,7 @@ complete -c doing -l search -f -r -n '__fish_doing_using_command wiki' -d Searc
|
|
|
514
532
|
complete -c doing -l tag -f -r -n '__fish_doing_using_command wiki' -d Tag\ filter
|
|
515
533
|
complete -c doing -l after -f -r -n '__fish_doing_using_command yesterday' -d View\ entries\ after\ specified\ time
|
|
516
534
|
complete -c doing -l before -f -r -n '__fish_doing_using_command yesterday' -d View\ entries\ before\ specified\ time
|
|
535
|
+
complete -c doing -l config_template -f -r -n '__fish_doing_using_command yesterday' -d Output\ using\ a\ template\ from\ configuration
|
|
517
536
|
complete -c doing -l duration -f -n '__fish_doing_using_command yesterday' -d Show\ elapsed\ time\ on\ entries\ without\ @done\ tag
|
|
518
537
|
complete -c doing -l from -f -r -n '__fish_doing_using_command yesterday' -d Time\ range\ to\ show
|
|
519
538
|
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command yesterday' -d Output\ to\ export\ format
|
|
@@ -521,6 +540,7 @@ complete -c doing -l section -s s -f -r -n '__fish_doing_using_command yesterday
|
|
|
521
540
|
complete -c doing -l times -s t -f -n '__fish_doing_using_command yesterday' -d Show\ time\ intervals\ on\ @done\ tasks
|
|
522
541
|
complete -c doing -l tag_order -f -r -n '__fish_doing_using_command yesterday' -d Tag\ sort\ direction
|
|
523
542
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command yesterday' -d Sort\ tags\ by
|
|
543
|
+
complete -c doing -l template -f -r -n '__fish_doing_using_command yesterday' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
524
544
|
complete -c doing -l totals -f -n '__fish_doing_using_command yesterday' -d Show\ time\ totals\ at\ the\ end\ of\ output
|
|
525
545
|
complete -f -c doing -s o -l output -x -n '__fish_doing_using_command grep search on select show since today view yesterday' -a '(__fish_doing_export_plugin)'
|
|
526
546
|
complete -f -c doing -s b -l bool -x -n '__fish_doing_using_command again resume archive move autotag cancel finish grep search last mark flag note reset begin rotate show tag tags view wiki' -a 'and or not pattern'
|
data/lib/doing/array.rb
CHANGED
|
@@ -19,8 +19,8 @@ module Doing
|
|
|
19
19
|
# @return [Array] Array of @tags
|
|
20
20
|
#
|
|
21
21
|
# @example
|
|
22
|
-
#
|
|
23
|
-
#
|
|
22
|
+
# ['one', '@two', 'three'].to_tags
|
|
23
|
+
# # => ['@one', '@two', '@three']
|
|
24
24
|
def to_tags
|
|
25
25
|
map(&:add_at)
|
|
26
26
|
end
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Doing
|
|
4
|
+
# A single version's entries
|
|
5
|
+
class Change
|
|
6
|
+
attr_reader :version, :content
|
|
7
|
+
|
|
8
|
+
attr_accessor :entries
|
|
9
|
+
|
|
10
|
+
def initialize(version, content)
|
|
11
|
+
@version = Version.new(version)
|
|
12
|
+
@content = content
|
|
13
|
+
parse_entries
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def parse_entries
|
|
17
|
+
@entries = []
|
|
18
|
+
types = @content.scan(/(?<=\n|\A)#### (NEW|IMPROVED|FIXED)(.*?)(?=\n####|\Z)/m)
|
|
19
|
+
types.each do |type|
|
|
20
|
+
type[1].scan(/\s*- +(.*?)$/).each do |entry|
|
|
21
|
+
@entries << Entry.new(entry[0].strip, type[0])
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def search_entries(search_string)
|
|
27
|
+
case_type = :ignore
|
|
28
|
+
|
|
29
|
+
matches = []
|
|
30
|
+
|
|
31
|
+
if search_string.is_rx?
|
|
32
|
+
matches = @entries.select { |e| e.string =~ search_string.to_rx(distance: 2, case_type: case_type) }
|
|
33
|
+
else
|
|
34
|
+
query = search_string.gsub(/(-)?--/, '\1]]').to_phrase_query
|
|
35
|
+
|
|
36
|
+
if query[:must].nil? && query[:must_not].nil?
|
|
37
|
+
query[:must] = query[:should]
|
|
38
|
+
query[:should] = []
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
@entries.each do |entry|
|
|
42
|
+
m = no_searches?(entry.string, query[:must_not])
|
|
43
|
+
m &&= all_searches?(entry.string, query[:must])
|
|
44
|
+
m &&= any_searches?(entry.string, query[:should])
|
|
45
|
+
matches << entry if m
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
@entries = matches.count.positive? ? matches : nil
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def to_h
|
|
53
|
+
{ version: @version, content: @content }
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def to_s
|
|
57
|
+
out = ["### #{@version}"]
|
|
58
|
+
items = {
|
|
59
|
+
new: [],
|
|
60
|
+
improved: [],
|
|
61
|
+
fixed: [],
|
|
62
|
+
other: []
|
|
63
|
+
}
|
|
64
|
+
@entries.each do |e|
|
|
65
|
+
type = e.type.downcase.to_sym
|
|
66
|
+
if items.key?(type)
|
|
67
|
+
items[type] << e
|
|
68
|
+
else
|
|
69
|
+
items[:other] << e
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
items.each do |type, members|
|
|
74
|
+
if members.count.positive?
|
|
75
|
+
out << "#### #{type.to_s.capitalize}"
|
|
76
|
+
out << members.map(&:to_s).join("\n")
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
out.join("\n\n")
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
private
|
|
84
|
+
|
|
85
|
+
def all_searches?(text, searches)
|
|
86
|
+
return true if searches.nil? || searches.empty?
|
|
87
|
+
|
|
88
|
+
searches.each do |s|
|
|
89
|
+
rx = Regexp.new(s.wildcard_to_rx, true)
|
|
90
|
+
return false unless text =~ rx
|
|
91
|
+
end
|
|
92
|
+
true
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def no_searches?(text, searches)
|
|
96
|
+
return true if searches.nil? || searches.empty?
|
|
97
|
+
|
|
98
|
+
searches.each do |s|
|
|
99
|
+
rx = Regexp.new(s.wildcard_to_rx, true)
|
|
100
|
+
return false if text =~ rx
|
|
101
|
+
end
|
|
102
|
+
true
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def any_searches?(text, searches)
|
|
106
|
+
return true if searches.nil? || searches.empty?
|
|
107
|
+
|
|
108
|
+
searches.each do |s|
|
|
109
|
+
rx = Regexp.new(s.wildcard_to_rx, true)
|
|
110
|
+
return true if text =~ rx
|
|
111
|
+
end
|
|
112
|
+
false
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Doing
|
|
4
|
+
# A collection of Changes
|
|
5
|
+
class Changes
|
|
6
|
+
attr_reader :changes
|
|
7
|
+
|
|
8
|
+
def initialize(lookup: nil, search: nil)
|
|
9
|
+
changelog = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'CHANGELOG.md'))
|
|
10
|
+
raise 'Error locating changelog' unless File.exist?(changelog)
|
|
11
|
+
|
|
12
|
+
@content = IO.read(changelog)
|
|
13
|
+
parse_changes(lookup, search)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def latest
|
|
17
|
+
@changes[0].to_s.force_encoding('utf-8')
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def to_s
|
|
21
|
+
@changes.map(&:to_s).join("\n\n").force_encoding('utf-8')
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
|
|
26
|
+
def parse_changes(lookup, search)
|
|
27
|
+
change_rx = /(?<=\n|\A)### (\d+\.\d+\.\d+(?:\w+)?)(.*?)(?=\n### |\Z)/m
|
|
28
|
+
@changes = @content.scan(change_rx).each_with_object([]) do |m, a|
|
|
29
|
+
next if m[0].nil? || m[1].nil?
|
|
30
|
+
|
|
31
|
+
a << Change.new(m[0], m[1].strip)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
lookup(lookup) unless lookup.nil?
|
|
35
|
+
search(search) unless search.nil?
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def lookup(lookup_version)
|
|
39
|
+
range = []
|
|
40
|
+
|
|
41
|
+
if lookup_version =~ /([\d.]+) *-+ *([\d.]+)/
|
|
42
|
+
m = Regexp.last_match
|
|
43
|
+
lookup("> #{m[1]}")
|
|
44
|
+
lookup("< #{m[2]}")
|
|
45
|
+
elsif lookup_version.scan(/[<>]/).count > 1
|
|
46
|
+
params = lookup_version.scan(/[<>] [\d.]+/)
|
|
47
|
+
params.each { |query| lookup(query) }
|
|
48
|
+
else
|
|
49
|
+
comp = case lookup_version
|
|
50
|
+
when /(<|prior|before|older)/
|
|
51
|
+
:older
|
|
52
|
+
when />|since|after|newer/
|
|
53
|
+
:newer
|
|
54
|
+
else
|
|
55
|
+
:equal
|
|
56
|
+
end
|
|
57
|
+
version = Version.new(lookup_version)
|
|
58
|
+
|
|
59
|
+
@changes.select! do |change|
|
|
60
|
+
change.version.compare(version, comp)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def search(query)
|
|
66
|
+
@changes.map do |c|
|
|
67
|
+
c.entries = c.search_entries(query)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
@changes.delete_if { |c| c.nil? || c.entries.nil? }
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Doing
|
|
4
|
+
# An individual changelog item
|
|
5
|
+
class Entry
|
|
6
|
+
attr_reader :type, :string
|
|
7
|
+
|
|
8
|
+
def initialize(string, type)
|
|
9
|
+
@string = string
|
|
10
|
+
@type = type
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def clean(string)
|
|
14
|
+
string.gsub(/\|/, '\|')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def to_s
|
|
18
|
+
"- #{clean(@string)}"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Doing
|
|
4
|
+
# Semantic versioning
|
|
5
|
+
class Version
|
|
6
|
+
attr_reader :maj, :min, :patch
|
|
7
|
+
|
|
8
|
+
def initialize(string)
|
|
9
|
+
@maj, @min, @patch = version_to_a(string)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def version_to_a(string)
|
|
13
|
+
raise 'Version not a string' unless string.is_a?(String)
|
|
14
|
+
|
|
15
|
+
v = string.match(/(?<maj>\d+)(?:\.(?<min>[\d*?]+))?(?:\.(?<patch>[\d*?]+))?/)
|
|
16
|
+
|
|
17
|
+
raise 'Error parsing semantic version string' if v.nil?
|
|
18
|
+
|
|
19
|
+
maj = v['maj'].to_i
|
|
20
|
+
min = case v['min']
|
|
21
|
+
when /[*?]/
|
|
22
|
+
v['min'].sub(/(\d+)?[^\d]/, '\1\d+')
|
|
23
|
+
when /^[0-9]+$/
|
|
24
|
+
v['min'].to_i
|
|
25
|
+
end
|
|
26
|
+
pat = case v['patch']
|
|
27
|
+
when /[*?]/
|
|
28
|
+
v['patch'].sub(/(\d+)?[^\d]/, '\1\d+')
|
|
29
|
+
when /^[0-9]+$/
|
|
30
|
+
v['patch'].to_i
|
|
31
|
+
end
|
|
32
|
+
[maj, min, pat]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def wild?(val)
|
|
36
|
+
val.is_a?(String)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def compare(other, comp)
|
|
41
|
+
case comp
|
|
42
|
+
when :older
|
|
43
|
+
if @maj <= other.maj
|
|
44
|
+
if @maj < other.maj
|
|
45
|
+
true
|
|
46
|
+
elsif @maj == other.maj && (other.min.nil? || @min < other.min)
|
|
47
|
+
true
|
|
48
|
+
elsif @maj == other.maj && @min == other.min
|
|
49
|
+
other.patch.nil? ? false : @patch < other.patch
|
|
50
|
+
else
|
|
51
|
+
false
|
|
52
|
+
end
|
|
53
|
+
else
|
|
54
|
+
false
|
|
55
|
+
end
|
|
56
|
+
when :newer
|
|
57
|
+
if @maj >= other.maj
|
|
58
|
+
if @maj > other.maj
|
|
59
|
+
true
|
|
60
|
+
elsif @maj == other.maj && (other.min.nil? || @min > other.min)
|
|
61
|
+
true
|
|
62
|
+
elsif @maj == other.maj && @min == other.min
|
|
63
|
+
other.patch.nil? || @patch >= other.patch
|
|
64
|
+
else
|
|
65
|
+
false
|
|
66
|
+
end
|
|
67
|
+
else
|
|
68
|
+
false
|
|
69
|
+
end
|
|
70
|
+
when :equal
|
|
71
|
+
if @maj == other.maj
|
|
72
|
+
if other.min.nil?
|
|
73
|
+
true
|
|
74
|
+
elsif wild?(other.min)
|
|
75
|
+
@min.to_s =~ /^#{other.min}/ ? true : false
|
|
76
|
+
else
|
|
77
|
+
if @min == other.min
|
|
78
|
+
if other.patch.nil?
|
|
79
|
+
true
|
|
80
|
+
elsif wild?(other.patch)
|
|
81
|
+
@patch.to_s =~ /^#{other.patch}/ ? true : false
|
|
82
|
+
else
|
|
83
|
+
@patch == other.patch
|
|
84
|
+
end
|
|
85
|
+
else
|
|
86
|
+
false
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def to_s
|
|
94
|
+
"#{@maj}.#{@min || 0}.#{@patch || 0}"
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
data/lib/doing/configuration.rb
CHANGED
|
@@ -190,7 +190,7 @@ module Doing
|
|
|
190
190
|
## matched, first match wins)
|
|
191
191
|
## @return [Array] ordered array of resolved keys
|
|
192
192
|
##
|
|
193
|
-
def resolve_key_path(keypath, create: false)
|
|
193
|
+
def resolve_key_path(keypath, create: false, distance: 2)
|
|
194
194
|
cfg = @settings
|
|
195
195
|
real_path = []
|
|
196
196
|
unless keypath =~ /^[.*]?$/
|
|
@@ -198,16 +198,24 @@ module Doing
|
|
|
198
198
|
while paths.length.positive? && !cfg.nil?
|
|
199
199
|
path = paths.shift
|
|
200
200
|
new_cfg = nil
|
|
201
|
-
cfg.each do |key, val|
|
|
202
|
-
next unless key =~ path.to_rx(distance: 4)
|
|
203
201
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
202
|
+
if cfg.is_a?(Hash)
|
|
203
|
+
matches = cfg.select { |key, val| key =~ path.to_rx(distance: distance) }
|
|
204
|
+
if matches.count.positive?
|
|
205
|
+
shortest = matches.keys.group_by(&:length).min.last[0]
|
|
206
|
+
real_path << shortest
|
|
207
|
+
new_cfg = matches[shortest]
|
|
208
|
+
end
|
|
209
|
+
else
|
|
210
|
+
new_cfg = cfg
|
|
207
211
|
end
|
|
208
212
|
|
|
209
213
|
if new_cfg.nil?
|
|
210
|
-
|
|
214
|
+
if distance < 5 && !create
|
|
215
|
+
return resolve_key_path(keypath, create: false, distance: distance + 1)
|
|
216
|
+
else
|
|
217
|
+
return nil unless create
|
|
218
|
+
end
|
|
211
219
|
|
|
212
220
|
resolved = real_path.count.positive? ? "Resolved #{real_path.join('->')}, but " : ''
|
|
213
221
|
Doing.logger.log_now(:warn, "#{resolved}#{path} is unknown")
|
data/lib/doing/hash.rb
CHANGED
|
@@ -48,8 +48,9 @@ module Doing
|
|
|
48
48
|
|
|
49
49
|
# Set a nested hash value using an array
|
|
50
50
|
#
|
|
51
|
-
# @example
|
|
52
|
-
#
|
|
51
|
+
# @example
|
|
52
|
+
# {}.deep_set(['one', 'two'], 'value')
|
|
53
|
+
# # => { 'one' => { 'two' => 'value' } }
|
|
53
54
|
#
|
|
54
55
|
# @param path [Array] key path
|
|
55
56
|
# @param value The value
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module GLI
|
|
4
|
+
module Commands
|
|
5
|
+
# Help Command Monkeypatch for paginated output
|
|
6
|
+
class Help < Command
|
|
7
|
+
def show_help(global_options,options,arguments,out,error)
|
|
8
|
+
Doing::Pager.paginate = true
|
|
9
|
+
|
|
10
|
+
command_finder = HelpModules::CommandFinder.new(@app,arguments,error)
|
|
11
|
+
if options[:c]
|
|
12
|
+
help_output = HelpModules::HelpCompletionFormat.new(@app,command_finder,arguments).format
|
|
13
|
+
out.puts help_output unless help_output.nil?
|
|
14
|
+
elsif arguments.empty? || options[:c]
|
|
15
|
+
Doing::Pager.page HelpModules::GlobalHelpFormat.new(@app,@sorter,@text_wrapping_class).format
|
|
16
|
+
else
|
|
17
|
+
name = arguments.shift
|
|
18
|
+
command = command_finder.find_command(name)
|
|
19
|
+
unless command.nil?
|
|
20
|
+
Doing::Pager.page HelpModules::CommandHelpFormat.new(
|
|
21
|
+
command,
|
|
22
|
+
@app,
|
|
23
|
+
@sorter,
|
|
24
|
+
@synopsis_formatter_class,
|
|
25
|
+
@text_wrapping_class).format
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
data/lib/doing/hooks.rb
CHANGED
|
@@ -23,7 +23,11 @@ module Doing
|
|
|
23
23
|
|
|
24
24
|
# register hook(s) to be called later, public API
|
|
25
25
|
def self.register(event, priority: DEFAULT_PRIORITY, &block)
|
|
26
|
-
|
|
26
|
+
if event.is_a?(Array)
|
|
27
|
+
event.each { |ev| register_one(ev, priority_value(priority), &block) }
|
|
28
|
+
else
|
|
29
|
+
register_one(event, priority_value(priority), &block)
|
|
30
|
+
end
|
|
27
31
|
end
|
|
28
32
|
|
|
29
33
|
# Ensure the priority is a Fixnum
|
data/lib/doing/item.rb
CHANGED
|
@@ -125,11 +125,11 @@ module Doing
|
|
|
125
125
|
return true if same_time?(item_b)
|
|
126
126
|
|
|
127
127
|
start_a = date
|
|
128
|
-
|
|
129
|
-
end_a =
|
|
128
|
+
a_interval = interval
|
|
129
|
+
end_a = a_interval ? start_a + a_interval.to_i : start_a
|
|
130
130
|
start_b = item_b.date
|
|
131
|
-
|
|
132
|
-
end_b =
|
|
131
|
+
b_interval = item_b.interval
|
|
132
|
+
end_b = b_interval ? start_b + b_interval.to_i : start_b
|
|
133
133
|
(start_a >= start_b && start_a <= end_b) || (end_a >= start_b && end_a <= end_b) || (start_a < start_b && end_a > end_b)
|
|
134
134
|
end
|
|
135
135
|
|
|
@@ -216,8 +216,8 @@ module Doing
|
|
|
216
216
|
##
|
|
217
217
|
def tags?(tags, bool = :and, negate: false)
|
|
218
218
|
if bool == :pattern
|
|
219
|
-
tags = tags.join(' ')
|
|
220
|
-
matches = tag_pattern?(tags
|
|
219
|
+
tags = tags.to_tags.tags_to_array.join(' ')
|
|
220
|
+
matches = tag_pattern?(tags)
|
|
221
221
|
|
|
222
222
|
return negate ? !matches : matches
|
|
223
223
|
end
|
|
@@ -283,7 +283,7 @@ module Doing
|
|
|
283
283
|
new_title = @title.gsub(rx) { |m| yellow(m) }
|
|
284
284
|
new_note.add(@note.to_s.gsub(rx) { |m| yellow(m) })
|
|
285
285
|
else
|
|
286
|
-
query =
|
|
286
|
+
query = search.strip.to_phrase_query
|
|
287
287
|
|
|
288
288
|
if query[:must].nil? && query[:must_not].nil?
|
|
289
289
|
query[:must] = query[:should]
|
|
@@ -319,7 +319,7 @@ module Doing
|
|
|
319
319
|
if search.is_rx? || matching == :fuzzy
|
|
320
320
|
matches = @title + @note.to_s =~ search.to_rx(distance: distance, case_type: case_type)
|
|
321
321
|
else
|
|
322
|
-
query =
|
|
322
|
+
query = search.strip.to_phrase_query
|
|
323
323
|
|
|
324
324
|
if query[:must].nil? && query[:must_not].nil?
|
|
325
325
|
query[:must] = query[:should]
|
|
@@ -612,29 +612,14 @@ module Doing
|
|
|
612
612
|
end
|
|
613
613
|
end
|
|
614
614
|
|
|
615
|
-
def to_query(query)
|
|
616
|
-
parser = BooleanTermParser::QueryParser.new
|
|
617
|
-
transformer = BooleanTermParser::QueryTransformer.new
|
|
618
|
-
parse_tree = parser.parse(query)
|
|
619
|
-
transformer.apply(parse_tree).to_elasticsearch
|
|
620
|
-
end
|
|
621
|
-
|
|
622
|
-
def to_phrase_query(query)
|
|
623
|
-
parser = PhraseParser::QueryParser.new
|
|
624
|
-
transformer = PhraseParser::QueryTransformer.new
|
|
625
|
-
parse_tree = parser.parse(query)
|
|
626
|
-
transformer.apply(parse_tree).to_elasticsearch
|
|
627
|
-
end
|
|
628
|
-
|
|
629
615
|
def tag_pattern?(tags)
|
|
630
|
-
query = to_query
|
|
616
|
+
query = tags.to_query
|
|
631
617
|
|
|
632
618
|
no_tags?(query[:must_not]) && all_tags?(query[:must]) && any_tags?(query[:should])
|
|
633
619
|
end
|
|
634
620
|
|
|
635
621
|
def split_tags(tags)
|
|
636
|
-
tags
|
|
637
|
-
tags.map(&:remove_at)
|
|
622
|
+
tags.to_tags.tags_to_array
|
|
638
623
|
end
|
|
639
624
|
end
|
|
640
625
|
end
|
|
@@ -125,7 +125,7 @@ module Doing
|
|
|
125
125
|
|
|
126
126
|
output.gsub!(/\\%/, '%')
|
|
127
127
|
|
|
128
|
-
output.highlight_search!(opt[:search]) if opt[:search] && !opt[:not] && opt[:hilite]
|
|
128
|
+
output.highlight_search!(opt[:search]) if opt[:template] =~ /^temp/ && opt[:search] && !opt[:not] && opt[:hilite]
|
|
129
129
|
|
|
130
130
|
out += "#{output}\n"
|
|
131
131
|
end
|