todo-jsonl 0.1.21 → 0.1.22

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/todo.rb +27 -9
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3c21f9ba1d360f6a7d30edf43d125eb6e99ff98eb8b71d2d36c9bb0ae14283e6
4
- data.tar.gz: f2e1bea4d40ff4a612f8ec5976f778e4a339fac49c627c9e85996b928838cdda
3
+ metadata.gz: 1c785fb535af9ce8e4aa7104e57c66133f6bf201ffb6bc28372d2b386decc4e1
4
+ data.tar.gz: 6ce70f3e7160c997921bcdbacb442d9e04330019265e60ad4accab1a1cf386ab
5
5
  SHA512:
6
- metadata.gz: cd44f645cfc6ace0d7b9c6a799cff82c93e95d110c9364c6efb41e5c93f795191808b991c7091847440e9b3a7c00cbc0b301cdc7b21e4b85b51dbac5b3223706
7
- data.tar.gz: ecba51031774954abe6deb57f5971fed0b9b0786066cd14d8a32d29d849da72f43c7ce305aa9c3e4da9d7b24e7e1d17a02fc49195301e66a4d70fd82af248bcb
6
+ metadata.gz: 18781618d8824776f157cce55015bdd49cd4d68791a6c4f24d86d9f66acb331ef4f2e2b22b1f8577e1f92f32bb232dbb061afa66f8f59aa7bc07bb0bc6d29083
7
+ data.tar.gz: e0544156459535841c4be51378071f40dda66f945733acf927328930699d0bd3d5b111996ea73cfd5f89f13418617a037d5e418f255093ac95f2d2689ce49da5
data/bin/todo.rb CHANGED
@@ -120,6 +120,9 @@ class Todo
120
120
  when 'repl'
121
121
  raise action + ' command has no parameters' if args.length > 0
122
122
  start_repl
123
+ when 'cleanup'
124
+ raise action + ' command requires at least one parameter' if args.nil? || args.empty?
125
+ cleanup(args)
123
126
  else
124
127
  list(nil, arguments)
125
128
  end
@@ -152,6 +155,7 @@ class Todo
152
155
  * list <regex> [regex...] list tasks (only active tasks by default)
153
156
  * show <tasknumber> show all task details
154
157
  * repl enter read-eval-print loop mode
158
+ * cleanup <regex> [regex...] cleanup completed tasks by regexp
155
159
  * help this help screen
156
160
 
157
161
  With list command the following pre-defined regex patterns can be also used:
@@ -293,18 +297,10 @@ class Todo
293
297
  end
294
298
 
295
299
  def list(tasks = nil, patterns = nil)
296
- items = {}
297
300
  tasks = tasks || load_tasks
298
301
  task_indent = [tasks.keys.max.to_s.size, 4].max
299
302
  patterns = patterns.nil? || patterns.empty? ? [@queries[':active']] : patterns
300
- tasks.each do |num, task|
301
- normalized_task = "state=#{task[:state]} due=#{task[:due]} #{task[:title]}"
302
- match = true
303
- patterns.each do |pattern|
304
- match = false unless /#{@queries[pattern] || pattern}/ix.match(normalized_task)
305
- end
306
- items[num] = task if match
307
- end
303
+ items = filter_tasks(tasks, patterns)
308
304
  items = items.sort_by do |num, task|
309
305
  [task[:priority] && task[:state] != 'done' ? 0 : 1, ORDER[task[:state] || 'default'], task[:due] || 'n/a', num]
310
306
  end
@@ -371,6 +367,28 @@ class Todo
371
367
  end
372
368
  end
373
369
 
370
+ def cleanup(patterns)
371
+ tasks = load_tasks
372
+ patterns = [@queries[':done']] + patterns.to_a
373
+ items = filter_tasks(tasks, patterns)
374
+ items.keys.each do |num| tasks.delete(num) end
375
+ write_tasks(tasks)
376
+ puts "deleted #{items.size} todo(s)"
377
+ end
378
+
379
+ def filter_tasks(tasks, patterns)
380
+ items = {}
381
+ tasks.each do |num, task|
382
+ normalized_task = "state=#{task[:state]} due=#{task[:due]} #{task[:title]}"
383
+ match = true
384
+ patterns.each do |pattern|
385
+ match = false unless /#{@queries[pattern] || pattern}/ix.match(normalized_task)
386
+ end
387
+ items[num] = task if match
388
+ end
389
+ return items
390
+ end
391
+
374
392
  def colorize(text, color)
375
393
  "\e[#{COLOR_CODES[color]}m#{text}\e[0m"
376
394
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: todo-jsonl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.21
4
+ version: 0.1.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabor Bata
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-03 00:00:00.000000000 Z
11
+ date: 2021-03-05 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: