todo-jsonl 0.1.9 → 0.1.10
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/todo.rb +18 -14
- 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: 26e087f32b9e0ddb96664aaffcb83aab17a4cf31c75eb651bb1797fa6d7fba09
|
4
|
+
data.tar.gz: c298e6c64c3bd28f0d0806c6b12204e74bc7c89e6d32939a2763368cae11e17e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6221aaca3f2637bd59c35720f2383e9fb6ef1a59faf5604341da0d04148184e504a53bd0d45a18dcd3462141496a5c91bdc0c8bef896c559362ce0670cc1b231
|
7
|
+
data.tar.gz: 88c148df544f7bc2fb65a50becac172f9f216cbea27a15666add4eb05ae752834b5f5396d191778be7045f2c856034e11a5e38fb3ef210a570bed92aed75f611
|
data/bin/todo.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# todo.rb - todo list manager inspired by todo.txt using the jsonl format.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2020 Gabor Bata
|
5
|
+
# Copyright (c) 2020-2021 Gabor Bata
|
6
6
|
#
|
7
7
|
# Permission is hereby granted, free of charge, to any person
|
8
8
|
# obtaining a copy of this software and associated documentation files
|
@@ -27,8 +27,6 @@
|
|
27
27
|
require 'json'
|
28
28
|
require 'date'
|
29
29
|
|
30
|
-
DATE_FORMAT = '%Y-%m-%d'
|
31
|
-
|
32
30
|
COLOR_CODES = {
|
33
31
|
black: 30,
|
34
32
|
red: 31,
|
@@ -64,19 +62,25 @@ COLORS = {
|
|
64
62
|
'default' => :magenta
|
65
63
|
}
|
66
64
|
|
67
|
-
QUERIES = {
|
68
|
-
':active' => 'state=(new|started|blocked)',
|
69
|
-
':done' => 'state=done',
|
70
|
-
':blocked' => 'state=blocked',
|
71
|
-
':started' => 'state=started',
|
72
|
-
':new' => 'state=new',
|
73
|
-
':all' => 'state=\w+'
|
74
|
-
}
|
75
|
-
|
76
65
|
TODAY = DateTime.now
|
77
|
-
|
66
|
+
NEXT_7_DAYS = (0..6).map do |day| (TODAY.to_date + day) end
|
67
|
+
DATE_FORMAT = '%Y-%m-%d'
|
68
|
+
DUE_DATE_DAYS = NEXT_7_DAYS.map do |day| day.strftime('%A').downcase end
|
69
|
+
DUE_DATES_FOR_QUERIES = NEXT_7_DAYS.map do |day| day.strftime(DATE_FORMAT) end
|
78
70
|
DUE_DATE_DAYS_SIMPLE = ['today', 'tomorrow']
|
79
71
|
|
72
|
+
QUERIES = {
|
73
|
+
':active' => 'state=(new|started|blocked)',
|
74
|
+
':done' => 'state=done',
|
75
|
+
':blocked' => 'state=blocked',
|
76
|
+
':started' => 'state=started',
|
77
|
+
':new' => 'state=new',
|
78
|
+
':all' => 'state=\w+',
|
79
|
+
':today' => "due=#{DUE_DATES_FOR_QUERIES[0]}",
|
80
|
+
':tomorrow' => "due=#{DUE_DATES_FOR_QUERIES[1]}",
|
81
|
+
':next7days' => "due=(#{DUE_DATES_FOR_QUERIES.join('|')})"
|
82
|
+
}
|
83
|
+
|
80
84
|
PRIORITY_FLAG = '*'
|
81
85
|
|
82
86
|
TODO_FILE = "#{ENV['HOME']}/todo.jsonl"
|
@@ -209,7 +213,7 @@ def list(tasks = nil, patterns = nil)
|
|
209
213
|
task_indent = [tasks.keys.max.to_s.size, 4].max
|
210
214
|
patterns = patterns.nil? || patterns.empty? ? [QUERIES[':active']] : patterns
|
211
215
|
tasks.each do |num, task|
|
212
|
-
normalized_task = "state=#{task[:state]} #{task[:title]}"
|
216
|
+
normalized_task = "state=#{task[:state]} due=#{task[:due]} #{task[:title]}"
|
213
217
|
match = true
|
214
218
|
patterns.each do |pattern|
|
215
219
|
match = false unless /#{QUERIES[pattern] || pattern}/ix.match(normalized_task)
|
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.
|
4
|
+
version: 0.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gabor Bata
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email:
|