doing 2.0.10 → 2.0.11
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/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
|