doing 1.0.22 → 1.0.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/README.md +87 -29
- data/bin/doing +9 -8
- data/lib/doing/version.rb +1 -1
- data/lib/doing/wwid.rb +66 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d74d1d69c6dbae627fc25dc8c14a8e8bff95072fdc2f1b1761ab6186c7c0a26
|
4
|
+
data.tar.gz: e17b0df1b7c2122c0d8ae33290ccf7e2763cf3e143acf0b60af061b8302c83d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 802dbf09b3b658640c52ca8e3b74f665fb163199bd0a3648f3f7831121e275a062df3ea47c31921b5b4f5390cbd29c3beeb7fa852624d0c00823a61081222cb9
|
7
|
+
data.tar.gz: dea212e53281258c783b0155c3304ada1d26a08db58d27b521d0080c19dec93c40c86f35c086383642d081caf85ac2ecf931a3ad2df927a0c6047cdea6d05b2d
|
data/README.md
CHANGED
@@ -4,7 +4,6 @@
|
|
4
4
|
|
5
5
|
_If you're one of the rare people like me who find this useful, feel free to [buy me some coffee](http://brettterpstra.com/donate)._
|
6
6
|
|
7
|
-
[Changelog](#changelog)
|
8
7
|
|
9
8
|
## Contents
|
10
9
|
|
@@ -15,6 +14,7 @@ _If you're one of the rare people like me who find this useful, feel free to [bu
|
|
15
14
|
- [Usage](#usage)
|
16
15
|
- [Extras](#extras)
|
17
16
|
- [Troubleshooting](#troubleshooting)
|
17
|
+
- [Changelog](#changelog)
|
18
18
|
|
19
19
|
<!-- end toc -->
|
20
20
|
|
@@ -59,10 +59,15 @@ Notes can be prevented from ever appearing in output with the global option `--n
|
|
59
59
|
A basic configuration looks like this:
|
60
60
|
|
61
61
|
---
|
62
|
-
doing_file: /Users/username/Dropbox/
|
62
|
+
doing_file: /Users/username/Dropbox/doing.taskpaper
|
63
63
|
current_section: Currently
|
64
64
|
default_template: '%date: %title%note'
|
65
65
|
default_date_format: '%Y-%m-%d %H:%M'
|
66
|
+
marker_tag: flagged
|
67
|
+
marker_color: yellow
|
68
|
+
default_tags: []
|
69
|
+
editor_app: TextEdit
|
70
|
+
:include_notes: true
|
66
71
|
views:
|
67
72
|
color:
|
68
73
|
date_format: '%F %_I:%M%P'
|
@@ -88,16 +93,29 @@ A basic configuration looks like this:
|
|
88
93
|
date_format: '%_I:%M%P'
|
89
94
|
template: '%date > %title%odnote'
|
90
95
|
wrap_width: 50
|
91
|
-
:
|
96
|
+
autotag:
|
97
|
+
whitelist:
|
98
|
+
- coding
|
99
|
+
- design
|
100
|
+
synonyms:
|
101
|
+
brainstorming:
|
102
|
+
- thinking
|
103
|
+
- idea
|
104
|
+
html_template:
|
105
|
+
haml:
|
106
|
+
css:
|
92
107
|
|
93
108
|
|
94
|
-
|
109
|
+
The config file is stored in `~/.doingrc`, and a skeleton file is created on the first run. Just run `doing` on its own to create the file.
|
95
110
|
|
96
111
|
### Per-folder configuration
|
97
112
|
|
98
113
|
Any options found in a `.doingrc` anywhere in the hierarchy between your current folder and your home folder will be appended to the base configuration, overriding or extending existing options. This allows you to put a `.doingrc` file into the base of a project and add specific configurations (such as default tags) when working in that project on the command line. These can be cascaded, with the closest `.doingrc` to your current directory taking precedence, though I'm not sure why you'd want to deal with that.
|
99
114
|
|
100
|
-
|
115
|
+
Possible uses:
|
116
|
+
|
117
|
+
- Define custom HTML output on a per-project basis using the html_template option for custom templates. Customize time tracking reports based on project or client.
|
118
|
+
- Define `default_tags` for a project so that every time you `doing now` from within that project directory or its subfolders, it gets tagged with that project automatically.
|
101
119
|
|
102
120
|
Any part of the configuration can be copied into these local files and modified. You only need to include the parts you want to change or add.
|
103
121
|
|
@@ -144,7 +162,7 @@ The config also contains templates for various command outputs. Include placehol
|
|
144
162
|
- you can prefix `bg` to affect background colors (`%bgyellow`)
|
145
163
|
- prefix `bold` and `boldbg` for strong colors (`%boldgreen`, `%boldbgblue`)
|
146
164
|
- there are some random special combo colors. Use `doing colors` to see the list
|
147
|
-
- `%interval`: when used with the `-t` switch on the `show` command, it will display the time between a timestamp or
|
165
|
+
- `%interval`: when used with the `-t` switch on the `show` command, it will display the time between a timestamp or _@start(date)_ tag and the _@done(date)_ tag, if it exists. Otherwise, it will remain empty.
|
148
166
|
|
149
167
|
Date formats are based on Ruby [`strftime`](http://www.ruby-doc.org/stdlib-2.1.1/libdoc/date/rdoc/Date.html#method-i-strftime) formatting.
|
150
168
|
|
@@ -303,7 +321,7 @@ There are bold variants for both foreground and background colors
|
|
303
321
|
%boldbgred
|
304
322
|
... etc.
|
305
323
|
|
306
|
-
And a few special colors you'll just have to try out to see:
|
324
|
+
And a few special colors you'll just have to try out to see (or just run `doing colors`):
|
307
325
|
|
308
326
|
%softpurple
|
309
327
|
%hotpants
|
@@ -322,6 +340,37 @@ To export the default configurations for customization, use `doing templates --t
|
|
322
340
|
|
323
341
|
Once you have either or both of the template files, edit `.doingrc` and look for the `html_template:` section. There are two subvalues, `haml:` and `css:`. Add the path to the templates you want to use. A tilde may be substituted for your home directory, e.g. `css: ~/styles/doing.css`.
|
324
342
|
|
343
|
+
### Autotagging
|
344
|
+
|
345
|
+
Keywords in your entries can trigger automatic tagging, just to make life easier. There are three tools available: default tags, whitelisting, and synonym tagging.
|
346
|
+
|
347
|
+
Default tags are tags that are applied to every entry. You probably don't want to add these in the root configuration, but using a local `.doingrc` in a project directory that defines default tags for that project allows anything added from that directory to be tagged automatically. A local `.doingrc` in my Marked development directory might contain:
|
348
|
+
|
349
|
+
---
|
350
|
+
default_tags: [marked,coding]
|
351
|
+
|
352
|
+
And anything I enter while in the directory gets tagged with _@marked_ and _@coding_.
|
353
|
+
|
354
|
+
A whitelist is a list of words that should be converted directly into _@tags_. If my whitelist contains "design" and I type `doing now working on site design`, that's automatically converted to "working on site @design."
|
355
|
+
|
356
|
+
Synonyms allow you to define keywords that will trigger their parent tag. If I have a tag called _@design_, I can add "typography" as a synonym. Then entering `doing now working on site typography` will become "working on site typography @design."
|
357
|
+
|
358
|
+
White lists and synonyms are defined like this:
|
359
|
+
|
360
|
+
autotag:
|
361
|
+
synonyms:
|
362
|
+
design:
|
363
|
+
- typography
|
364
|
+
- layout
|
365
|
+
brainstorming
|
366
|
+
- thinking
|
367
|
+
- idea
|
368
|
+
whitelist:
|
369
|
+
- brainstorming
|
370
|
+
- coding
|
371
|
+
|
372
|
+
Note that you can include a tag with synonyms in the whitelist as well to tag it directly when used.
|
373
|
+
|
325
374
|
## Usage
|
326
375
|
|
327
376
|
doing [global options] command [command options] [arguments...]
|
@@ -350,7 +399,7 @@ The `doing now` command can accept `-s section_name` to send the new entry strai
|
|
350
399
|
|
351
400
|
If you want to use `--back` with `doing done` but want the end time to be different than the start time, you can either use `--took` in addition, or just use `--took` on its own as it will backdate the start time such that the end time is now and the duration is equal to the value of the `--took` argument.
|
352
401
|
|
353
|
-
You can finish the last unfinished task when starting a new one using `doing now` with the `-f` switch. It will look for the last task not marked
|
402
|
+
You can finish the last unfinished task when starting a new one using `doing now` with the `-f` switch. It will look for the last task not marked _@done_ and add the _@done_ tag with the start time of the new task (either the current time or what you specified with `--back`).
|
354
403
|
|
355
404
|
`doing done` is used to add an entry that you've already completed. Like `now`, you can specify a section with `-s section_name`. You can also skip straight to Archive with `-a`.
|
356
405
|
|
@@ -360,7 +409,7 @@ When used with `doing done`, `--back` and `--took` allow time intervals to be ac
|
|
360
409
|
|
361
410
|
All of these commands accept a `-e` argument. This opens your command line editor (as defined in the environment variable `$EDITOR`). Add your entry, save the temp file, and close it. The new entry is added. Anything after the first line is included as a note on the entry.
|
362
411
|
|
363
|
-
`doing meanwhile` is a special command for creating and finishing tasks that may have other entries come before they're complete. When you create an entry with `doing meanwhile [entry text]`, it will automatically complete the last @
|
412
|
+
`doing meanwhile` is a special command for creating and finishing tasks that may have other entries come before they're complete. When you create an entry with `doing meanwhile [entry text]`, it will automatically complete the last _@meanwhile_ item (dated _@done_ tag) and add the _@meanwhile_ tag to the new item. This allows time tracking on a more general basis, and still lets you keep track of the smaller things you do while working on an overarching project. The `meanwhile` command accepts `--back [time]` and will backdate the _@done_ tag and start date of the new task at the same time. Running `meanwhile` with no arguments will simply complete the last _@meanwhile_ task.
|
364
413
|
|
365
414
|
See `doing help meanwhile` for more options.
|
366
415
|
|
@@ -372,9 +421,9 @@ See `doing help meanwhile` for more options.
|
|
372
421
|
|
373
422
|
##### Finishing
|
374
423
|
|
375
|
-
`doing finish` by itself is the same as `doing done` by itself. It adds
|
424
|
+
`doing finish` by itself is the same as `doing done` by itself. It adds _@done(timestamp)_ to the last entry. It also accepts a numeric argument to complete X number of tasks back in history. Add `-a` to also archive the affected entries.
|
376
425
|
|
377
|
-
`doing finish` also provides an `--auto` flag, which you can use to set the end time of any entry to 1 minute before the start time of the next. Running a command such as `doing finish --auto 10` will go through the last 10 entries and sequentially update any without a
|
426
|
+
`doing finish` also provides an `--auto` flag, which you can use to set the end time of any entry to 1 minute before the start time of the next. Running a command such as `doing finish --auto 10` will go through the last 10 entries and sequentially update any without a _@done_ tag with one set to the time just before the next entry in the list.
|
378
427
|
|
379
428
|
As mentioned above, `finish` also accepts `--back "2 hours"` (sets the finish date from time now minus interval) or `--took 30m` (sets the finish date to time started plus interval) so you can accurately add times to completed tasks, even if you don't do it in the moment.
|
380
429
|
|
@@ -385,7 +434,7 @@ As mentioned above, `finish` also accepts `--back "2 hours"` (sets the finish da
|
|
385
434
|
|
386
435
|
doing tag -c 3 client cancelled
|
387
436
|
|
388
|
-
... will mark the last three entries as
|
437
|
+
... will mark the last three entries as _@client @cancelled_. Add `-r` as a switch to remove the listed tags instead.
|
389
438
|
|
390
439
|
You can optionally define keywords for common tasks and projects in your `.doingrc` file. When these keywords appear in an item title, they'll automatically be converted into @tags. The `whitelist` tags are exact (but case insensitive) matches.
|
391
440
|
|
@@ -420,20 +469,20 @@ You can also add notes at the time of entry by using the `-n` or `--note` flag w
|
|
420
469
|
|
421
470
|
#### Displaying entries:
|
422
471
|
|
423
|
-
show
|
424
|
-
recent
|
425
|
-
today
|
426
|
-
yesterday
|
427
|
-
last
|
428
|
-
grep
|
472
|
+
show - List all entries
|
473
|
+
recent - List recent entries
|
474
|
+
today - List entries from today
|
475
|
+
yesterday - List entries from yesterday
|
476
|
+
last - Show the last entry
|
477
|
+
grep - Show entries matching text or pattern
|
429
478
|
|
430
479
|
`doing show` on its own will list all entries in the "Currently" section. Add a section name as an argument to display that section instead. Use "all" to display all entries from all sections.
|
431
480
|
|
432
|
-
You can filter the `show` command by tags. Simply list them after the section name (or `all`). The boolean defaults to `ANY`, meaning any entry that contains any of the listed tags will be shown. You can use `-b ALL` or `-b NONE` to change the filtering behavior: `doing show all done cancelled -b NONE` will show all tasks from all sections that do not have either
|
481
|
+
You can filter the `show` command by tags. Simply list them after the section name (or `all`). The boolean defaults to `ANY`, meaning any entry that contains any of the listed tags will be shown. You can use `-b ALL` or `-b NONE` to change the filtering behavior: `doing show all done cancelled -b NONE` will show all tasks from all sections that do not have either _@done_ or _@cancelled_ tags.
|
433
482
|
|
434
483
|
Use `-c X` to limit the displayed results. Combine it with `-a newest` or `-a oldest` to choose which chronological end it trims from. You can also set the sort order of the output with `-s asc` or `-s desc`.
|
435
484
|
|
436
|
-
The `show` command can also show the time spent on a task if it has a
|
485
|
+
The `show` command can also show the time spent on a task if it has a _@done(date)_ tag with the `-t` option. This requires that you include a `%interval` token in template -> default in the config. You can also include _@start(date)_ tags, which override the timestamp when calculating the intervals.
|
437
486
|
|
438
487
|
If you have a use for it, you can use `-o csv` on the show or view commands to output the results as a comma-separated CSV to STDOUT. Redirect to a file to save it: `doing show all done -o csv > ~/Desktop/done.csv`. You can do the same with `-o json`.
|
439
488
|
|
@@ -481,7 +530,7 @@ You can also use tags to archive. You define the section first, and anything fol
|
|
481
530
|
|
482
531
|
By default, tag archiving uses an `AND` boolean, meaning all the tags listed must exist on the entry for it to be moved. You can change this behavior with `-b OR` or `-b NONE` (`ALL` and `ANY` also work).
|
483
532
|
|
484
|
-
Example: Archive all Currently items for
|
533
|
+
Example: Archive all Currently items for _@client_ that are marked _@done_
|
485
534
|
|
486
535
|
doing archive @client @done
|
487
536
|
|
@@ -506,9 +555,7 @@ Pressing Spacebar and typing allows you to add a new entry to currently. You an
|
|
506
555
|
|
507
556
|
Point of interest, the LaunchBar Action makes use of the `-o json` flag for outputting JSON to the action's script for parsing.
|
508
557
|
|
509
|
-
|
510
|
-
|
511
|
-
Download the Action at [brettterpstra.com](https://brettterpstra.com/projects/doing/)
|
558
|
+
See <https://brettterpstra.com/projects/doing/> for the download.
|
512
559
|
|
513
560
|
Evan Lovely has [created an Alfred workflow as well](http://www.evanlovely.com/blog/technology/alfred-for-terpstras-doing/).
|
514
561
|
|
@@ -540,9 +587,8 @@ Ruby is rife with encoding inconsistencies across platforms and versions. Feel f
|
|
540
587
|
|
541
588
|
### Support
|
542
589
|
|
543
|
-
I'm not making any money on `doing`, and I don't plan to spend a lot of time fixing errors on an array of operating systems and platforms I don't even have access to. You'll probably have to solve some things on your own.
|
544
590
|
|
545
|
-
|
591
|
+
As a free project, `doing` isn't heavily supported, but you can get support from myself and other users on GitHub. If you run into a replicatable bug in your environment, please [post an issue](https://github.com/ttscoff/doing/issues) and include your platform, OS version, and the result of `ruby -v`, along with a copy/paste of the error message. To get a more verbose error message, try running `GLI_DEBUG=true doing [...]` for a full trace.
|
546
592
|
|
547
593
|
Please try not to email me directly about GitHub projects.
|
548
594
|
|
@@ -550,8 +596,17 @@ Please try not to email me directly about GitHub projects.
|
|
550
596
|
|
551
597
|
Feel free to [poke around](http://github.com/ttscoff/doing/), I'll try to add more comments in the future (and retroactively).
|
552
598
|
|
599
|
+
{% donate doing now sending coffee money to Brett. %}
|
600
|
+
|
553
601
|
## Changelog
|
554
602
|
|
603
|
+
#### 1.0.23
|
604
|
+
|
605
|
+
- Apply default_tags after autotagging to avoid tags triggering tags
|
606
|
+
- Set `doing recent` to default to All sections instead of Currently
|
607
|
+
- Fix error in time reporting
|
608
|
+
- improved y/n prompt for TTY
|
609
|
+
|
555
610
|
#### 1.0.22
|
556
611
|
|
557
612
|
- Fix handling of "local" config files, allowing per-project configurations
|
@@ -673,7 +728,7 @@ Catching up on the changelog. Kind of. A lot has happened, mostly fixes.
|
|
673
728
|
* Look, HTML output! (`--output html`)
|
674
729
|
* Also, `--output csv`
|
675
730
|
* let doing `archive` function on all sections
|
676
|
-
* option to exclude date from
|
731
|
+
* option to exclude date from _@done_,
|
677
732
|
* output newlines in sections and views
|
678
733
|
* Flagging (`doing mark`)
|
679
734
|
* fix for view/section guess error
|
@@ -692,9 +747,9 @@ Catching up on the changelog. Kind of. A lot has happened, mostly fixes.
|
|
692
747
|
- `tags_color` in view config to highlight tags at the end of the lines. Can be set to any of the `%colors`.
|
693
748
|
- Basic time tracking.
|
694
749
|
- `-t` on `show` and `view` will turn on time calculations
|
695
|
-
- Intervals between timestamps and dated
|
750
|
+
- Intervals between timestamps and dated _@done_ tags are calculated for each line, if the tag exists.
|
696
751
|
- You must include a `%interval` token in the appropriate template for it to show
|
697
|
-
-
|
752
|
+
- _@start(date)_ tags can optionally be used to override the timestamp in the calculation
|
698
753
|
- Any other tags in the line have that line's total added to them
|
699
754
|
- Totals for tags can be displayed at the end of output with `--totals`
|
700
755
|
|
@@ -723,6 +778,8 @@ Catching up on the changelog. Kind of. A lot has happened, mostly fixes.
|
|
723
778
|
- fuzzy section guessing when specified section isn't found
|
724
779
|
- fuzzy view guessing for `doing view` command
|
725
780
|
|
781
|
+
----
|
782
|
+
|
726
783
|
#### 0.1.9
|
727
784
|
|
728
785
|
- colors in templated output
|
@@ -749,3 +806,4 @@ Catching up on the changelog. Kind of. A lot has happened, mostly fixes.
|
|
749
806
|
- save a tmp file and open it in an editor
|
750
807
|
- allows multi-line entries, anything after first line is considered a note
|
751
808
|
- assumed when no input is provided (`doing now`)
|
809
|
+
|
data/bin/doing
CHANGED
@@ -516,17 +516,19 @@ command :tag do |c|
|
|
516
516
|
count = options[:c].to_i
|
517
517
|
|
518
518
|
if count == 0
|
519
|
+
section_q = section == 'All' ? "" : " in section #{section}"
|
520
|
+
|
519
521
|
if options[:a]
|
520
|
-
|
522
|
+
question = "Are you sure you want to autotag all records#{section_q}"
|
521
523
|
elsif options[:r]
|
522
|
-
|
524
|
+
question = "Are you sure you want to remove #{tags.join(" and ")} from all records#{section_q}"
|
523
525
|
else
|
524
|
-
|
526
|
+
question = "Are you sure you want to add #{tags.join(" and ")} to all records#{section_q}"
|
525
527
|
end
|
526
528
|
|
527
|
-
res =
|
529
|
+
res = wwid.yn(question,false)
|
528
530
|
|
529
|
-
unless res
|
531
|
+
unless res
|
530
532
|
raise "Cancelled"
|
531
533
|
end
|
532
534
|
end
|
@@ -692,8 +694,8 @@ default_value 10
|
|
692
694
|
arg_name 'count'
|
693
695
|
command :recent do |c|
|
694
696
|
c.desc 'Section'
|
695
|
-
c.default_value
|
696
|
-
c.flag [:s,:section], :default_value =>
|
697
|
+
c.default_value "All"
|
698
|
+
c.flag [:s,:section], :default_value => "All"
|
697
699
|
|
698
700
|
c.desc 'Show time intervals on @done tasks'
|
699
701
|
c.default_value true
|
@@ -813,7 +815,6 @@ command :yesterday do |c|
|
|
813
815
|
c.switch [:totals], :default_value => false, :negatable => true
|
814
816
|
|
815
817
|
c.action do |global_options, options,args|
|
816
|
-
section = args.length > 0 ? args.join(" ") : wwid.current_section
|
817
818
|
puts wwid.yesterday(options[:s],options[:t],options[:o],{:totals => options[:totals]}).chomp
|
818
819
|
|
819
820
|
end
|
data/lib/doing/version.rb
CHANGED
data/lib/doing/wwid.rb
CHANGED
@@ -52,6 +52,7 @@ class WWID
|
|
52
52
|
@content = {}
|
53
53
|
@doingrc_needs_update = false
|
54
54
|
@default_config_file = '.doingrc'
|
55
|
+
@interval_cache = {}
|
55
56
|
end
|
56
57
|
|
57
58
|
##
|
@@ -97,7 +98,7 @@ class WWID
|
|
97
98
|
}
|
98
99
|
@config['templates']['recent'] ||= {
|
99
100
|
'date_format' => '%_I:%M%P',
|
100
|
-
'template' => '%shortdate: %title',
|
101
|
+
'template' => '%shortdate: %title (%section)',
|
101
102
|
'wrap_width' => 88
|
102
103
|
}
|
103
104
|
@config['views'] ||= {
|
@@ -426,6 +427,7 @@ class WWID
|
|
426
427
|
##
|
427
428
|
def add_section(title)
|
428
429
|
@content[title.cap_first] = {'original' => "#{title}:", 'items' => []}
|
430
|
+
@results.push(%Q{Added section "#{title.cap_first}"})
|
429
431
|
end
|
430
432
|
|
431
433
|
##
|
@@ -451,9 +453,9 @@ class WWID
|
|
451
453
|
if alt
|
452
454
|
raise "Did you mean `doing view #{alt}`?"
|
453
455
|
else
|
454
|
-
|
455
|
-
|
456
|
-
if
|
456
|
+
res = yn("Section #{frag} not found, create it",false)
|
457
|
+
|
458
|
+
if res
|
457
459
|
add_section(frag.cap_first)
|
458
460
|
write(@doing_file)
|
459
461
|
return frag.cap_first
|
@@ -464,6 +466,57 @@ class WWID
|
|
464
466
|
section ? section.cap_first : guessed
|
465
467
|
end
|
466
468
|
|
469
|
+
##
|
470
|
+
## @brief Ask a yes or no question in the terminal
|
471
|
+
##
|
472
|
+
## @param question (String) The question to ask
|
473
|
+
## @param default (Bool) default response if no input
|
474
|
+
##
|
475
|
+
## @return (Bool) yes or no
|
476
|
+
##
|
477
|
+
def yn(question, default_response=false)
|
478
|
+
if default_response
|
479
|
+
default = 'y'
|
480
|
+
else
|
481
|
+
default = 'n'
|
482
|
+
end
|
483
|
+
# if this isn't an interactive shell, answer default
|
484
|
+
unless $stdout.isatty
|
485
|
+
if default.downcase == 'y'
|
486
|
+
return true
|
487
|
+
else
|
488
|
+
return false
|
489
|
+
end
|
490
|
+
end
|
491
|
+
# clear the buffer
|
492
|
+
if ARGV.length
|
493
|
+
ARGV.length.times do
|
494
|
+
ARGV.shift
|
495
|
+
end
|
496
|
+
end
|
497
|
+
system 'stty cbreak'
|
498
|
+
if default
|
499
|
+
if default =~ /y/i
|
500
|
+
options = "#{colors['white']}[#{colors['boldgreen']}Y#{colors['white']}/#{colors['boldwhite']}n#{colors['white']}]#{colors['default']}"
|
501
|
+
else
|
502
|
+
options = "#{colors['white']}[#{colors['boldwhite']}y#{colors['white']}/#{colors['boldgreen']}N#{colors['white']}]#{colors['default']}"
|
503
|
+
end
|
504
|
+
else
|
505
|
+
options = "#{colors['white']}[#{colors['boldwhite']}y#{colors['white']}/#{colors['boldwhite']}n#{colors['white']}]#{colors['default']}"
|
506
|
+
end
|
507
|
+
$stdout.syswrite "#{colors['boldwhite']}#{question.sub(/\?$/,'')} #{options}#{colors['boldwhite']}?#{colors['default']} "
|
508
|
+
res = $stdin.sysread 1
|
509
|
+
puts
|
510
|
+
system 'stty cooked'
|
511
|
+
|
512
|
+
res.chomp!
|
513
|
+
res.downcase!
|
514
|
+
|
515
|
+
res = default.downcase if res == ""
|
516
|
+
|
517
|
+
return res =~ /y/i
|
518
|
+
end
|
519
|
+
|
467
520
|
##
|
468
521
|
## @brief Attempt to match a string with an existing view
|
469
522
|
##
|
@@ -507,7 +560,7 @@ class WWID
|
|
507
560
|
opt[:back] ||= Time.now
|
508
561
|
opt[:timed] ||= false
|
509
562
|
|
510
|
-
title = [title.strip.cap_first]
|
563
|
+
title = [title.strip.cap_first]
|
511
564
|
title = autotag(title.join(' '))
|
512
565
|
unless @config['default_tags'].empty?
|
513
566
|
title += @config['default_tags'].map{|t|
|
@@ -516,7 +569,7 @@ class WWID
|
|
516
569
|
if title =~ /@#{dt}/
|
517
570
|
""
|
518
571
|
else
|
519
|
-
'@' + dt
|
572
|
+
' @' + dt
|
520
573
|
end
|
521
574
|
end
|
522
575
|
}.delete_if {|t| t == "" }.join(" ")
|
@@ -1595,6 +1648,11 @@ EOS
|
|
1595
1648
|
done = nil
|
1596
1649
|
start = nil
|
1597
1650
|
|
1651
|
+
if @interval_cache.keys.include? item['title']
|
1652
|
+
seconds = @interval_cache[item['title']]
|
1653
|
+
return seconds > 0 ? "%02d:%02d:%02d" % fmt_time(seconds) : false
|
1654
|
+
end
|
1655
|
+
|
1598
1656
|
if item['title'] =~ /@done\((\d{4}-\d\d-\d\d \d\d:\d\d.*?)\)/
|
1599
1657
|
done = Time.parse($1)
|
1600
1658
|
else
|
@@ -1618,6 +1676,8 @@ EOS
|
|
1618
1676
|
end
|
1619
1677
|
}
|
1620
1678
|
|
1679
|
+
@interval_cache[item['title']] = seconds
|
1680
|
+
|
1621
1681
|
return seconds unless formatted
|
1622
1682
|
|
1623
1683
|
seconds > 0 ? "%02d:%02d:%02d" % fmt_time(seconds) : false
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: doing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brett Terpstra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-02-
|
11
|
+
date: 2020-02-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|