doing 2.0.10 → 2.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/bin/doing +1 -0
- data/doing.rdoc +1 -1
- data/lib/doing/array.rb +14 -1
- data/lib/doing/log_adapter.rb +9 -6
- data/lib/doing/string.rb +2 -2
- data/lib/doing/version.rb +1 -1
- data/lib/doing/wwid.rb +55 -33
- 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: fd5337fb3832570e16b9d3572b931c8484f3fe84547aa2ba5db15a4a0a622713
|
4
|
+
data.tar.gz: e9df16fbd231aeba99a1e4976e7e0f96908f7f1bb0e16e385722db1e6de79548
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b30f84f92598bae30f83d476d3989c0fe9a3aff32a7a3e8472be85c235c89e4dfc29f65c3eb9f5cc99076e94d5a00fe93d6291ba00b8e73c823a28407349d07
|
7
|
+
data.tar.gz: fe71eb8ab551f9f7a240e49c474ce01abde51182300c9c22a18062b25803dffa427714ee22665f34a98947d1742e68a7c4694a92eefddfc82a274489679fa21f
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -6,7 +6,7 @@ _If you're one of the rare people like me who find this useful, feel free to [bu
|
|
6
6
|
|
7
7
|
<!--README-->
|
8
8
|
|
9
|
-
The current version of `doing` is <!--VER-->2.0.
|
9
|
+
The current version of `doing` is <!--VER-->2.0.10<!--END VER-->.
|
10
10
|
|
11
11
|
Find all of the documentation in the [doing wiki](https://github.com/ttscoff/doing/wiki).
|
12
12
|
|
data/bin/doing
CHANGED
data/doing.rdoc
CHANGED
@@ -5,7 +5,7 @@ record of what you've been doing, complete with tag-based time tracking. The
|
|
5
5
|
command line tool allows you to add entries, annotate with tags and notes, and
|
6
6
|
view your entries with myriad options, with a focus on a "natural" language syntax.
|
7
7
|
|
8
|
-
v2.0.
|
8
|
+
v2.0.11
|
9
9
|
|
10
10
|
=== Global Options
|
11
11
|
=== --config_file arg
|
data/lib/doing/array.rb
CHANGED
@@ -4,5 +4,18 @@ module Doing
|
|
4
4
|
##
|
5
5
|
## Array helpers
|
6
6
|
##
|
7
|
-
class ::Array
|
7
|
+
class ::Array
|
8
|
+
def to_tags
|
9
|
+
map { |t| t.sub(/^@?/, '@') }
|
10
|
+
end
|
11
|
+
|
12
|
+
def highlight_tags(color = 'cyan')
|
13
|
+
tag_color = Doing::Color.send(color)
|
14
|
+
to_tags.map { |t| "#{tag_color}#{t}" }
|
15
|
+
end
|
16
|
+
|
17
|
+
def log_tags
|
18
|
+
highlight_tags.join(', ')
|
19
|
+
end
|
20
|
+
end
|
8
21
|
end
|
data/lib/doing/log_adapter.rb
CHANGED
@@ -19,16 +19,17 @@ module Doing
|
|
19
19
|
}.freeze
|
20
20
|
|
21
21
|
COUNT_KEYS = %i[
|
22
|
-
added_tags
|
23
|
-
removed_tags
|
24
22
|
added
|
25
|
-
|
26
|
-
deleted
|
27
|
-
completed
|
23
|
+
added_tags
|
28
24
|
archived
|
29
|
-
|
25
|
+
autotag
|
26
|
+
completed
|
30
27
|
completed_archived
|
28
|
+
deleted
|
29
|
+
moved
|
30
|
+
removed_tags
|
31
31
|
skipped
|
32
|
+
updated
|
32
33
|
].freeze
|
33
34
|
|
34
35
|
#
|
@@ -242,6 +243,8 @@ module Doing
|
|
242
243
|
|
243
244
|
def format_counter(key, data)
|
244
245
|
case key
|
246
|
+
when :autotag
|
247
|
+
['Autotag:', data[:message] || 'autotagged %count %items']
|
245
248
|
when :added_tags
|
246
249
|
['Tagged:', data[:message] || 'added %tags to %count %items']
|
247
250
|
when :removed_tags
|
data/lib/doing/string.rb
CHANGED
@@ -279,7 +279,7 @@ module Doing
|
|
279
279
|
|
280
280
|
def add_tags(tags, remove: false)
|
281
281
|
title = self.dup
|
282
|
-
tags = tags.to_tags
|
282
|
+
tags = tags.to_tags
|
283
283
|
tags.each { |tag| title.tag!(tag, remove: remove) }
|
284
284
|
title
|
285
285
|
end
|
@@ -353,7 +353,7 @@ module Doing
|
|
353
353
|
|
354
354
|
def dedup_tags
|
355
355
|
title = dup
|
356
|
-
tags = title.scan(/(
|
356
|
+
tags = title.scan(/(?<=\A| )(@(\S+?)(\([^)]+\))?)(?= |\Z)/).uniq
|
357
357
|
tags.each do |tag|
|
358
358
|
found = false
|
359
359
|
title.gsub!(/( |^)#{tag[1]}(\([^)]+\))?(?= |$)/) do |m|
|
data/lib/doing/version.rb
CHANGED
data/lib/doing/wwid.rb
CHANGED
@@ -1868,68 +1868,90 @@ module Doing
|
|
1868
1868
|
|
1869
1869
|
original = text.dup
|
1870
1870
|
|
1871
|
-
current_tags = text.scan(/@\w+/)
|
1872
|
-
|
1871
|
+
current_tags = text.scan(/@\w+/).map { |t| t.sub(/^@/, '') }
|
1872
|
+
tagged = {
|
1873
|
+
whitelisted: [],
|
1874
|
+
synonyms: [],
|
1875
|
+
transformed: [],
|
1876
|
+
replaced: []
|
1877
|
+
}
|
1878
|
+
|
1873
1879
|
@config['autotag']['whitelist'].each do |tag|
|
1874
1880
|
next if text =~ /@#{tag}\b/i
|
1875
1881
|
|
1876
|
-
text.sub!(/(
|
1877
|
-
m.downcase!
|
1878
|
-
whitelisted.push(
|
1882
|
+
text.sub!(/(?<= |\A)(#{tag.strip})(?= |\Z)/i) do |m|
|
1883
|
+
m.downcase! unless tag =~ /[A-Z]/
|
1884
|
+
tagged[:whitelisted].push(m)
|
1879
1885
|
"@#{m}"
|
1880
1886
|
end
|
1881
1887
|
end
|
1882
|
-
|
1888
|
+
|
1883
1889
|
@config['autotag']['synonyms'].each do |tag, v|
|
1884
1890
|
v.each do |word|
|
1885
1891
|
next unless text =~ /\b#{word}\b/i
|
1886
1892
|
|
1887
|
-
|
1893
|
+
unless current_tags.include?(tag) || tagged[:whitelisted].include?(tag)
|
1894
|
+
tagged[:synonyms].push(tag)
|
1895
|
+
tagged[:synonyms] = tagged[:synonyms].uniq
|
1896
|
+
end
|
1888
1897
|
end
|
1889
1898
|
end
|
1899
|
+
|
1890
1900
|
if @config['autotag'].key? 'transform'
|
1891
1901
|
@config['autotag']['transform'].each do |tag|
|
1892
1902
|
next unless tag =~ /\S+:\S+/
|
1893
1903
|
|
1894
1904
|
rx, r = tag.split(/:/)
|
1905
|
+
flag_rx = %r{/([r]+)$}
|
1906
|
+
if r =~ flag_rx
|
1907
|
+
flags = r.match(flag_rx)[1].split(//)
|
1908
|
+
r.sub!(flag_rx, '')
|
1909
|
+
end
|
1895
1910
|
r.gsub!(/\$/, '\\')
|
1896
|
-
rx.sub!(
|
1897
|
-
regex = Regexp.new(
|
1911
|
+
rx.sub!(/^@?/, '@')
|
1912
|
+
regex = Regexp.new("(?<= |\\A)#{rx}(?= |\\Z)")
|
1898
1913
|
|
1899
|
-
|
1900
|
-
|
1901
|
-
|
1902
|
-
matches.each do |m|
|
1914
|
+
text.sub!(regex) do
|
1915
|
+
m = Regexp.last_match
|
1903
1916
|
new_tag = r
|
1904
|
-
|
1905
|
-
|
1906
|
-
|
1907
|
-
|
1908
|
-
|
1909
|
-
|
1917
|
+
|
1918
|
+
m.to_a.slice(1, m.length - 1).each_with_index do |v, idx|
|
1919
|
+
new_tag.gsub!("\\#{idx + 1}", v)
|
1920
|
+
end
|
1921
|
+
# Replace original tag if /r
|
1922
|
+
if flags&.include?('r')
|
1923
|
+
tagged[:replaced].concat(new_tag.split(/ /).map { |t| t.sub(/^@/, '') })
|
1924
|
+
new_tag.split(/ /).map { |t| t.sub(/^@?/, '@') }.join(' ')
|
1925
|
+
else
|
1926
|
+
tagged[:transformed].concat(new_tag.split(/ /).map { |t| t.sub(/^@/, '') })
|
1927
|
+
tagged[:transformed] = tagged[:transformed].uniq
|
1928
|
+
m[0]
|
1910
1929
|
end
|
1911
|
-
tail_tags.push(new_tag)
|
1912
1930
|
end
|
1913
1931
|
end
|
1914
1932
|
end
|
1915
1933
|
|
1916
|
-
logger.debug('Autotag:', "whitelisted tags: #{whitelisted.join(', ')}") unless whitelisted.empty?
|
1917
|
-
new_tags = whitelisted
|
1918
|
-
unless tail_tags.empty?
|
1919
|
-
tags = tail_tags.uniq.map { |t| "@#{t}".cyan }.join(' ')
|
1920
|
-
logger.debug('Autotag:', "synonym tags: #{tags}")
|
1921
|
-
tags_a = tail_tags.map { |t| "@#{t}" }
|
1922
|
-
text.add_tags!(tags_a.join(' '))
|
1923
|
-
new_tags.concat(tags_a)
|
1924
|
-
end
|
1925
1934
|
|
1926
|
-
|
1927
|
-
|
1935
|
+
logger.debug('Autotag:', "whitelisted tags: #{tagged[:whitelisted].log_tags}") unless tagged[:whitelisted].empty?
|
1936
|
+
logger.debug('Autotag:', "synonyms: #{tagged[:synonyms].log_tags}") unless tagged[:synonyms].empty?
|
1937
|
+
logger.debug('Autotag:', "transforms: #{tagged[:transformed].log_tags}") unless tagged[:transformed].empty?
|
1938
|
+
logger.debug('Autotag:', "transform replaced: #{tagged[:replaced].log_tags}") unless tagged[:replaced].empty?
|
1939
|
+
|
1940
|
+
tail_tags = tagged[:synonyms].concat(tagged[:transformed])
|
1941
|
+
tail_tags.sort!
|
1942
|
+
tail_tags.uniq!
|
1943
|
+
|
1944
|
+
text.add_tags!(tail_tags) unless tail_tags.empty?
|
1945
|
+
|
1946
|
+
if text == original
|
1947
|
+
logger.debug('Autotag:', "no change to \"#{text}\"")
|
1928
1948
|
else
|
1929
|
-
|
1949
|
+
new_tags = tagged[:whitelisted].concat(tail_tags).concat(tagged[:replaced])
|
1950
|
+
logger.debug('Autotag:', "added #{new_tags.log_tags} to \"#{text}\"")
|
1951
|
+
logger.count(:autotag, level: :info, count: 1, message: 'autotag updated %count %items')
|
1930
1952
|
end
|
1931
1953
|
|
1932
|
-
text
|
1954
|
+
text.dedup_tags
|
1933
1955
|
end
|
1934
1956
|
|
1935
1957
|
##
|
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: 2.0.
|
4
|
+
version: 2.0.11
|
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-
|
11
|
+
date: 2021-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: safe_yaml
|