todo.txt 0.0.8 → 0.0.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 36f380f0bbf643c036cf4ef84663069874fb4579
4
- data.tar.gz: 3d2b2e24ce45db1c1b8903f568df1d80da57f8b3
3
+ metadata.gz: d5b63b055ac551315b984024f1ef75a955c0df45
4
+ data.tar.gz: 63fd44c8d49144d1938333b42d53d7a2e8d03fed
5
5
  SHA512:
6
- metadata.gz: 5daa5c8e2d9f422b33fd5bd8383e36420b10c57f9bd87627071bb2e1e172485fe4f350d604d1f5e1642213affd7153dfac7d5d1329416f9a6f097b42faf01f98
7
- data.tar.gz: 14a3cc5e56495dc4d4affcf5ce7fc8e20b793979aef127faad3a827ed444f0d5442416c53be704220f54e1d75bd8a707dd401439e2cbd7c0b73d0e5fd0650829
6
+ metadata.gz: f83e57cd0ac6eb857a7dd8ee12e87852fcc4aac8d86604effedc4fb933cd5c7579537fa7d67aa6d59d6ae1dd664843e53e5ddb99ac8ecc54dc2fcadb72e11029
7
+ data.tar.gz: e6a40b432d91e781df79340aab7be09e1f1e66623522de650a1bbea3dd61b4d10974d47fa62705c5b6d0a6798b905ee7b226aebac077dc9205cd908afd897f1f
data/README.md CHANGED
@@ -40,7 +40,8 @@ $ todo toggle foo # should assume ./TODO.txt but i can't figure
40
40
 
41
41
  # Filtering items
42
42
 
43
- $ todo list --since 2015-12-01 --before 2015-11-01 # by done date
43
+ $ todo list --since 2015-12-01 # by done date
44
+ $ todo list --after 2015-11-01 --before 2015-12-01 # by done date
44
45
  $ todo list --status pending # by status
45
46
  $ todo list --status done # by status
46
47
  $ todo list --project foo # by project
@@ -14,9 +14,9 @@ module Todo
14
14
  end
15
15
 
16
16
  def run
17
- items = list.select(status: :done, before: before).items
18
- archive.write(format(items))
19
- io.write(format(list.items - items))
17
+ selected = list.select(status: :done, before: before)
18
+ archive.write(format(selected))
19
+ io.write(format(list.reject { |item| selected.items.include?(item) }))
20
20
  end
21
21
 
22
22
  private
data/lib/todo/cli/list.rb CHANGED
@@ -34,7 +34,7 @@ module Todo
34
34
  end
35
35
 
36
36
  def run
37
- out.write(format(list.items, format: opts[:format] || :short))
37
+ out.write(format(list, format: opts[:format] || :short))
38
38
  end
39
39
 
40
40
  private
data/lib/todo/cli/push.rb CHANGED
@@ -21,7 +21,7 @@ module Todo
21
21
  }
22
22
 
23
23
  def run
24
- lines = format(list.items, format: [:text, :tags, :id])
24
+ lines = format(list, format: [:text, :tags, :id])
25
25
  src.write(lines)
26
26
  io.write(lines)
27
27
  end
@@ -16,7 +16,7 @@ module Todo
16
16
  def run
17
17
  list = Data::List.parse(io.read)
18
18
  list.toggle(data)
19
- io.write(format(list.items))
19
+ io.write(format(list))
20
20
  end
21
21
 
22
22
  private
@@ -14,6 +14,10 @@ module Todo
14
14
  define_method(name) { data[name] }
15
15
  end
16
16
 
17
+ def item?
18
+ !!status
19
+ end
20
+
17
21
  def done?
18
22
  status == :done
19
23
  end
data/lib/todo/format.rb CHANGED
@@ -3,7 +3,7 @@ require 'todo/helpers/hash/format'
3
3
  require 'todo/helpers/object/presence'
4
4
 
5
5
  module Todo
6
- class Format < Struct.new(:items, :opts)
6
+ class Format < Struct.new(:list, :opts)
7
7
  FORMATS = {
8
8
  full: [:status, :text, :tags, :id],
9
9
  short: [:status, :done_date, :text]
@@ -12,17 +12,19 @@ module Todo
12
12
  include Helpers::Hash::Format, Helpers::Object::Presence
13
13
 
14
14
  def apply
15
- items.map { |item| format(item) }
15
+ list.items.map { |item| format(item) }
16
16
  end
17
17
 
18
18
  private
19
19
 
20
20
  def format(item)
21
- cols.map { |col| format_col(col, item.send(col)) }.compact.join(' ')
21
+ cols.map { |col| format_col(col, item) }.compact.join(' ')
22
22
  end
23
23
 
24
- def format_col(col, value)
25
- send(:"format_#{col}", value) if present?(value)
24
+ def format_col(col, item)
25
+ value = item.send(col)
26
+ value = list.next_id if item.item? && col == :id && value.nil?
27
+ send(:"format_#{col}", value) if value
26
28
  end
27
29
 
28
30
  def format_status(status)
@@ -21,7 +21,7 @@ module Todo
21
21
  end
22
22
 
23
23
  def format(str, opts = {})
24
- apply(str).strftime(opts[:format] || FORMAT)
24
+ apply(str.downcase).strftime(opts[:format] || FORMAT)
25
25
  end
26
26
 
27
27
  private
data/lib/todo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Todo
2
- VERSION = '0.0.8'
2
+ VERSION = '0.0.9'
3
3
  end
@@ -2,8 +2,8 @@ require 'todo/format'
2
2
 
3
3
  describe Todo::Format do
4
4
  let(:lines) { ['- foo [1]', 'x bar done:2015-12-01 [2]'] }
5
- let(:items) { Todo::Data::List.parse(lines).items }
6
- subject { described_class.new(items, format: format) }
5
+ let(:list) { Todo::Data::List.parse(lines) }
6
+ subject { described_class.new(list, format: format) }
7
7
 
8
8
  describe 'default columns' do
9
9
  let(:format) {}
@@ -19,4 +19,10 @@ describe Todo::Format do
19
19
  let(:format) { :short }
20
20
  it { expect(subject.apply).to eq(['- foo', 'x 2015-12-01 bar']) }
21
21
  end
22
+
23
+ describe 'adds missing ids' do
24
+ let(:format) { :full }
25
+ let(:lines) { ['- foo', 'x bar done:2015-12-01'] }
26
+ it { expect(subject.apply).to eq(['- foo [1]', 'x bar done:2015-12-01 [2]']) }
27
+ end
22
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: todo.txt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sven Fuchs