todo.txt 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
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