doing 1.0.40 → 1.0.45
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/bin/doing +17 -2
- data/lib/doing/version.rb +1 -1
- data/lib/doing/wwid.rb +76 -8
- 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: 8449bbc0f6d6a8d059856d77abd2f4648544c3bda9e69c75a93a69fd8dffe851
|
4
|
+
data.tar.gz: 90c223b97441535bd6cda1563fcbc2dd97197901b9972ceb51989b1f4ad9599c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a42c67cf02151718f867e98d2a6571c88a7360b2a83c5e529378730364f4b812a4811c8bc03e990b08193fc4503b6f0e3f16b572a21cac1f45d15cb562333755
|
7
|
+
data.tar.gz: e0bac7d7dbd30808b9d438be3e4f887ddab05db294dff84467e55b3d3846e246e769b211dd37ff66f8e28c84c97262d23daca5af0445dd25ded03a7446707fef
|
data/bin/doing
CHANGED
@@ -488,6 +488,21 @@ command :finish do |c|
|
|
488
488
|
end
|
489
489
|
end
|
490
490
|
|
491
|
+
desc 'Repeat last entry as new entry'
|
492
|
+
arg_name 'section'
|
493
|
+
command [:again,:resume] do |c|
|
494
|
+
c.desc 'Section'
|
495
|
+
c.flag [:s, :section], :default_value => "All"
|
496
|
+
|
497
|
+
c.desc 'Note'
|
498
|
+
c.arg_name 'note_text'
|
499
|
+
c.flag [:n,:note]
|
500
|
+
|
501
|
+
c.action do |global_options, options, args|
|
502
|
+
wwid.restart_last({ section: options[:s], note: options[:n] })
|
503
|
+
end
|
504
|
+
end
|
505
|
+
|
491
506
|
desc 'Tag last entry'
|
492
507
|
arg_name 'tag1 [tag2...]'
|
493
508
|
command :tag do |c|
|
@@ -555,7 +570,7 @@ command :tag do |c|
|
|
555
570
|
end
|
556
571
|
|
557
572
|
desc 'Mark last entry as highlighted'
|
558
|
-
command :mark do |c|
|
573
|
+
command [:mark,:flag] do |c|
|
559
574
|
c.desc 'Section'
|
560
575
|
c.default_value wwid.current_section
|
561
576
|
c.flag [:s,:section], :default_value => wwid.current_section
|
@@ -1212,7 +1227,7 @@ post do |global,command,options,args|
|
|
1212
1227
|
if global[:stdout]
|
1213
1228
|
$stdout.print wwid.results.join("\n")
|
1214
1229
|
else
|
1215
|
-
|
1230
|
+
warn wwid.results.join("\n")
|
1216
1231
|
end
|
1217
1232
|
end
|
1218
1233
|
|
data/lib/doing/version.rb
CHANGED
data/lib/doing/wwid.rb
CHANGED
@@ -654,6 +654,62 @@ class WWID
|
|
654
654
|
end
|
655
655
|
end
|
656
656
|
|
657
|
+
##
|
658
|
+
## @brief Restart the last entry
|
659
|
+
##
|
660
|
+
## @param opt (Hash) Additional Options
|
661
|
+
##
|
662
|
+
def restart_last(opt = {})
|
663
|
+
opt[:section] ||= 'all'
|
664
|
+
opt[:note] ||= []
|
665
|
+
|
666
|
+
last = last_entry(opt)
|
667
|
+
if last.nil?
|
668
|
+
@results.push(%Q{No previous entry found})
|
669
|
+
return
|
670
|
+
end
|
671
|
+
# Remove @done tag
|
672
|
+
title = last['title'].sub(/\s*@done(\(.*?\))?/, '').chomp
|
673
|
+
add_item(title, last['section'], {:note => opt[:note], :back => opt[:date], :timed => true})
|
674
|
+
write(@doing_file)
|
675
|
+
end
|
676
|
+
|
677
|
+
##
|
678
|
+
## @brief Get the last entry
|
679
|
+
##
|
680
|
+
## @param opt (Hash) Additional Options
|
681
|
+
##
|
682
|
+
def last_entry(opt={})
|
683
|
+
opt[:section] ||= @current_section
|
684
|
+
|
685
|
+
sec_arr = []
|
686
|
+
|
687
|
+
if opt[:section].nil?
|
688
|
+
sec_arr = [@current_section]
|
689
|
+
elsif opt[:section].class == String
|
690
|
+
if opt[:section] =~ /^all$/i
|
691
|
+
combined = {'items' => []}
|
692
|
+
@content.each {|k,v|
|
693
|
+
combined['items'] += v['items']
|
694
|
+
}
|
695
|
+
items = combined['items'].dup.sort_by{|item| item['date'] }.reverse
|
696
|
+
sec_arr.push(items[0]['section'])
|
697
|
+
|
698
|
+
sec_arr = sections
|
699
|
+
else
|
700
|
+
sec_arr = [guess_section(opt[:section])]
|
701
|
+
end
|
702
|
+
end
|
703
|
+
|
704
|
+
|
705
|
+
all_items = []
|
706
|
+
sec_arr.each do |section|
|
707
|
+
all_items.concat(@content[section]['items'].dup) if @content.has_key?(section)
|
708
|
+
end
|
709
|
+
|
710
|
+
all_items.sort_by { |item| item['date'] }.last
|
711
|
+
end
|
712
|
+
|
657
713
|
##
|
658
714
|
## @brief Tag the last entry or X entries
|
659
715
|
##
|
@@ -903,14 +959,23 @@ class WWID
|
|
903
959
|
if file.nil?
|
904
960
|
$stdout.puts output
|
905
961
|
else
|
906
|
-
|
962
|
+
file = File.expand_path(file)
|
963
|
+
if File.exists?(file)
|
907
964
|
# Create a backup copy for the undo command
|
908
965
|
FileUtils.cp(file,file+"~")
|
909
966
|
|
910
|
-
File.open(
|
967
|
+
File.open(file,'w+') do |f|
|
911
968
|
f.puts output
|
912
969
|
end
|
913
970
|
end
|
971
|
+
|
972
|
+
if @config.key?('run_after')
|
973
|
+
script = File.expand_path(@config['run_after'])
|
974
|
+
if File.exist?(script)
|
975
|
+
# warn "Running #{script}"
|
976
|
+
`#{script}`
|
977
|
+
end
|
978
|
+
end
|
914
979
|
end
|
915
980
|
end
|
916
981
|
|
@@ -1125,7 +1190,6 @@ class WWID
|
|
1125
1190
|
}
|
1126
1191
|
out = output.join("")
|
1127
1192
|
elsif opt[:output] == "json" || opt[:output] == "timeline"
|
1128
|
-
|
1129
1193
|
items_out = []
|
1130
1194
|
max = items[-1]['date'].strftime('%F')
|
1131
1195
|
min = items[0]['date'].strftime('%F')
|
@@ -1137,7 +1201,6 @@ class WWID
|
|
1137
1201
|
title = i['title']
|
1138
1202
|
note = i['note'].map { |line| line.strip } if i['note']
|
1139
1203
|
end
|
1140
|
-
|
1141
1204
|
if i['title'] =~ /@done\((\d{4}-\d\d-\d\d \d\d:\d\d.*?)\)/ && opt[:times]
|
1142
1205
|
end_date = Time.parse($1)
|
1143
1206
|
interval = get_interval(i,false)
|
@@ -1152,14 +1215,16 @@ class WWID
|
|
1152
1215
|
tags.push(tag[0]) unless skip_tags.include?(tag[0])
|
1153
1216
|
}
|
1154
1217
|
if opt[:output] == "json"
|
1218
|
+
|
1155
1219
|
items_out << {
|
1156
1220
|
:date => i['date'],
|
1157
1221
|
:end_date => end_date,
|
1158
1222
|
:title => title.strip, #+ " #{note}"
|
1159
|
-
:note => note.class == Array ? note.join("\n") : note,
|
1223
|
+
:note => note.class == Array ? note.map(&:strip).join("\n") : note,
|
1160
1224
|
:time => "%02d:%02d:%02d" % fmt_time(interval),
|
1161
1225
|
:tags => tags
|
1162
1226
|
}
|
1227
|
+
|
1163
1228
|
elsif opt[:output] == "timeline"
|
1164
1229
|
new_item = {
|
1165
1230
|
'id' => index + 1,
|
@@ -1280,7 +1345,7 @@ EOTEMPLATE
|
|
1280
1345
|
end
|
1281
1346
|
|
1282
1347
|
if (item.has_key?('note') && !item['note'].empty?) && @config[:include_notes]
|
1283
|
-
note_lines = item['note'].delete_if{|line| line =~ /^\s*$/ }.map{|line| "\t" + line.sub(/^\t*/,'') + " " }
|
1348
|
+
note_lines = item['note'].delete_if{|line| line =~ /^\s*$/ }.map{|line| "\t\t" + line.sub(/^\t*/,'').sub(/^-/, '—') + " " }
|
1284
1349
|
if opt[:wrap_width] && opt[:wrap_width] > 0
|
1285
1350
|
width = opt[:wrap_width]
|
1286
1351
|
note_lines.map! {|line|
|
@@ -1607,7 +1672,6 @@ EOTEMPLATE
|
|
1607
1672
|
## @param format (String) return format (html, json, or text)
|
1608
1673
|
##
|
1609
1674
|
def tag_times(format="text", sort_by_name = false)
|
1610
|
-
|
1611
1675
|
return "" if @timers.empty?
|
1612
1676
|
|
1613
1677
|
max = @timers.keys.sort_by {|k| k.length }.reverse[0].length + 1
|
@@ -1722,7 +1786,7 @@ EOS
|
|
1722
1786
|
if m.kind_of?(Array)
|
1723
1787
|
index = 1
|
1724
1788
|
m.each {|v|
|
1725
|
-
new_tag = new_tag.
|
1789
|
+
new_tag = new_tag.gsub('\\' + index.to_s, v)
|
1726
1790
|
index = index + 1
|
1727
1791
|
}
|
1728
1792
|
end
|
@@ -1799,6 +1863,10 @@ EOS
|
|
1799
1863
|
if seconds.nil?
|
1800
1864
|
return [0, 0, 0]
|
1801
1865
|
end
|
1866
|
+
if seconds =~ /(\d+):(\d+):(\d+)/
|
1867
|
+
h, m, s = [$1, $2, $3]
|
1868
|
+
seconds = (h.to_i * 60 * 60) + (m.to_i * 60) + s.to_i
|
1869
|
+
end
|
1802
1870
|
minutes = (seconds / 60).to_i
|
1803
1871
|
hours = (minutes / 60).to_i
|
1804
1872
|
days = (hours / 24).to_i
|
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.45
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brett Terpstra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|