todoloo 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.direnv +1 -0
- data/CHANGELOG +9 -0
- data/lib/todoloo/cli.rb +2 -1
- data/lib/todoloo/parser.rb +1 -1
- data/lib/todoloo/task.rb +4 -0
- data/lib/todoloo/task_list.rb +41 -2
- data/lib/todoloo/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9391333b3186bf9acd092a3d2477768f4f47ae4ef929667e71ae7b3011567a37
|
4
|
+
data.tar.gz: 3b85f78433162892ceade94dfebdddff29d9662be2ad6f923ec33b4e24731a6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c79bf5aee911bf8d3a262e0489f72c28bf67b52ad249a702dee70cde08c59eafb8c477c0d9d42e38e26fc824cd5e6f8a953eb85a92ec91235f5a4f203936f897
|
7
|
+
data.tar.gz: e3fcbd9542607dcbb603224232f94d0e90c4a7639d6c45f23e8fb3242afaf1a693d3cee3f4299c85640d2d9211d0e6d9f0e13ee6c47b31691449d948902b2e33
|
data/.direnv
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
PATH_add bin
|
data/CHANGELOG
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
Unreleased
|
2
|
+
|
3
|
+
0.0.3 - 8 August 2024
|
4
|
+
- Add sorting support to `TaskList` and now sort CLI output by default
|
5
|
+
- Fix parsing for multiple tags, as in `TODO(a,b,c)`
|
6
|
+
|
7
|
+
0.0.2 - 19 July 2024
|
8
|
+
- Add regression for `Todoloo::TaskList` on writing tasks with blank topics
|
9
|
+
|
data/lib/todoloo/cli.rb
CHANGED
@@ -9,6 +9,7 @@ class Todoloo::CLI < Thor
|
|
9
9
|
Todoloo::FileScanner
|
10
10
|
.new("**/*.rb", excludes: options[:exclude] || [], trace: true)
|
11
11
|
.scan
|
12
|
+
.sort
|
12
13
|
.write("tasks.yml")
|
13
14
|
end
|
14
15
|
|
@@ -18,7 +19,7 @@ class Todoloo::CLI < Thor
|
|
18
19
|
Todoloo::Parser
|
19
20
|
.new
|
20
21
|
.parse_and_transform($stdin.read)
|
21
|
-
).write($stdout)
|
22
|
+
).sort.write($stdout)
|
22
23
|
end
|
23
24
|
|
24
25
|
def self.exit_on_failure?
|
data/lib/todoloo/parser.rb
CHANGED
@@ -148,7 +148,7 @@ module Todoloo
|
|
148
148
|
|
149
149
|
rule(:topic) { match(/[^),]/).repeat(1).as(:topic) }
|
150
150
|
|
151
|
-
rule(:topic_rest) { (str(",") >> spacing.maybe >> topic).repeat(0
|
151
|
+
rule(:topic_rest) { (str(",") >> spacing.maybe >> topic).repeat(0) }
|
152
152
|
|
153
153
|
# (topic1, topic2)
|
154
154
|
rule(:topics) { lparen >> topic >> topic_rest >> rparen }
|
data/lib/todoloo/task.rb
CHANGED
data/lib/todoloo/task_list.rb
CHANGED
@@ -2,6 +2,20 @@ require "yaml"
|
|
2
2
|
|
3
3
|
module Todoloo
|
4
4
|
class TaskList
|
5
|
+
include Enumerable
|
6
|
+
|
7
|
+
# Lower means higher priority
|
8
|
+
SEVERITY_INDEX = {
|
9
|
+
"FIXME" => 100,
|
10
|
+
"HACK" => 200,
|
11
|
+
"TODO" => 300,
|
12
|
+
"XXX" => 400,
|
13
|
+
"NOTE" => 500,
|
14
|
+
"HBD" => 600
|
15
|
+
}.freeze
|
16
|
+
|
17
|
+
UNKNOWN_INDEX = 1_000_000
|
18
|
+
|
5
19
|
def initialize
|
6
20
|
@tasks = []
|
7
21
|
end
|
@@ -17,6 +31,19 @@ module Todoloo
|
|
17
31
|
self
|
18
32
|
end
|
19
33
|
|
34
|
+
def each
|
35
|
+
to_enum(:each) unless block_given?
|
36
|
+
|
37
|
+
@tasks.each { |task| yield task }
|
38
|
+
end
|
39
|
+
|
40
|
+
def sort
|
41
|
+
@tasks.sort_by! do |t|
|
42
|
+
[t.topics, task_severity(t), t.path, t.line, t.column]
|
43
|
+
end
|
44
|
+
self
|
45
|
+
end
|
46
|
+
|
20
47
|
# Structure:
|
21
48
|
# TOPIC:
|
22
49
|
# TYPE:
|
@@ -38,8 +65,20 @@ module Todoloo
|
|
38
65
|
|
39
66
|
private
|
40
67
|
|
68
|
+
def task_severity(task)
|
69
|
+
SEVERITY_INDEX.fetch(task.type, UNKNOWN_INDEX)
|
70
|
+
end
|
71
|
+
|
72
|
+
def topics_for_task(task)
|
73
|
+
if task.topics.empty?
|
74
|
+
[""]
|
75
|
+
else
|
76
|
+
task.topics
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
41
80
|
def converted_tasks(error_handler)
|
42
|
-
output = {
|
81
|
+
output = {}
|
43
82
|
|
44
83
|
@tasks.each do |task|
|
45
84
|
output_task = {
|
@@ -47,7 +86,7 @@ module Todoloo
|
|
47
86
|
"path" => "#{task.path}:#{task.line}:#{task.column}"
|
48
87
|
}
|
49
88
|
|
50
|
-
task.
|
89
|
+
topics_for_task(task).each do |topic|
|
51
90
|
by_type = output[topic.to_s] ||= {}
|
52
91
|
tasks = by_type[task.type.to_s.downcase] ||= []
|
53
92
|
tasks << output_task.dup
|
data/lib/todoloo/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: todoloo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Coetzee
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-08-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -102,6 +102,8 @@ executables:
|
|
102
102
|
extensions: []
|
103
103
|
extra_rdoc_files: []
|
104
104
|
files:
|
105
|
+
- ".direnv"
|
106
|
+
- CHANGELOG
|
105
107
|
- CODE_OF_CONDUCT.md
|
106
108
|
- LICENSE.txt
|
107
109
|
- README.md
|