rudo 0.0.11 → 0.1.00

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.
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem 'rake'
4
+ gem 'colored'
5
+ gem 'trollop'
6
+
7
+ gemspec
data/MIT-LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (C) 2011 by Robert Fletcher
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
data/README ADDED
@@ -0,0 +1,25 @@
1
+ Rudo is a simple command line based todo list editor. Here are the commands:
2
+
3
+ # see the first n items on the list (default 5)
4
+ rudo
5
+
6
+ # add a task to the list
7
+ rad 'my task'
8
+
9
+ # add a task to the 2nd position
10
+ rad 'another task' 2
11
+
12
+ # mark the first task finished
13
+ dun
14
+
15
+ # mark the 5th task finished
16
+ dun 5
17
+
18
+ # mark the first 3 tasks finished
19
+ dun 3x
20
+
21
+ # move the first item to the back of the list
22
+ walk
23
+
24
+ # move the first 3 items to the back of the list
25
+ walk 3
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rspec/core/rake_task'
4
+
5
+ desc "Run RSpec"
6
+ RSpec::Core::RakeTask.new do |t|
7
+ t.verbose = false
8
+ end
9
+
10
+ task :default => :spec
data/bin/dun CHANGED
File without changes
data/bin/rad CHANGED
File without changes
data/bin/rudo CHANGED
File without changes
data/bin/walk CHANGED
File without changes
data/lib/rudo.rb CHANGED
@@ -6,16 +6,16 @@ class Rudo
6
6
  def initialize(options={})
7
7
  @file_path = File.expand_path(options.delete(:file_path) { '~/rudo.yml' })
8
8
 
9
- @tasks = YAML.load(File.open(@file_path))
9
+ @tasks = YAML.load(File.read(@file_path))
10
10
  end
11
11
 
12
12
  def print(options={})
13
13
  colored = options.delete(:color) { true }
14
- puts "*" * 40
14
+ puts stars
15
15
  @tasks.each_with_index do |task, index|
16
16
  puts "#{index + 1}: #{task}"
17
17
  end
18
- puts "*" * 40
18
+ puts stars
19
19
  if colored
20
20
  puts "#{@tasks.length} tasks remaining".green
21
21
  else
@@ -51,10 +51,11 @@ class Rudo
51
51
 
52
52
  private
53
53
 
54
+ def stars
55
+ "*" * 40
56
+ end
57
+
54
58
  def write_tasks
55
- File.open(@file_path, 'w') do |file|
56
- file.write(YAML.dump(@tasks))
57
- end
58
- true
59
+ File.write(@file_path, YAML.dump(@tasks))
59
60
  end
60
61
  end
@@ -0,0 +1 @@
1
+ --- []
@@ -0,0 +1,4 @@
1
+ ---
2
+ - clean gutters
3
+ - do laundry
4
+ - eat pizza
data/spec/rudo_spec.rb ADDED
@@ -0,0 +1,173 @@
1
+ require 'rspec'
2
+ require 'colored'
3
+ require 'spec_helper'
4
+
5
+ require './lib/rudo.rb'
6
+
7
+ describe Rudo do
8
+ before(:each) do
9
+ @empty_path = './spec/fixtures/empty.yml'
10
+ @tasks_path = './spec/fixtures/tasks.yml'
11
+ @stars = '*' * 40
12
+ File.stub(:write)
13
+ end
14
+
15
+ describe '#print' do
16
+ context 'when the color option is set to false' do
17
+ before(:each) do
18
+ @rudo = Rudo.new(:file_path => @empty_path)
19
+ end
20
+
21
+ it 'does not color output' do
22
+ @rudo.should_receive(:puts).with(@stars).twice
23
+ @rudo.should_receive(:puts).with('0 tasks remaining')
24
+ @rudo.print({:color => false})
25
+ end
26
+ end
27
+
28
+ context 'when there are no tasks' do
29
+ before(:each) do
30
+ @rudo = Rudo.new(:file_path => @empty_path)
31
+ @rudo.stub(:puts).with(@stars)
32
+ @rudo.stub(:puts).with('0 tasks remaining'.green)
33
+ end
34
+
35
+ it 'prints two lines of stars' do
36
+ @rudo.should_receive(:puts).with(@stars).twice
37
+ @rudo.print
38
+ end
39
+
40
+ it 'prints "0 tasks remaining" in green' do
41
+ @rudo.should_receive(:puts).with('0 tasks remaining'.green)
42
+ @rudo.print
43
+ end
44
+ end
45
+
46
+ context 'when there are tasks' do
47
+ before(:each) do
48
+ @rudo = Rudo.new(:file_path => @tasks_path)
49
+ @rudo.stub(:puts).with(@stars)
50
+ @rudo.stub(:puts).with('1: clean gutters')
51
+ @rudo.stub(:puts).with('2: do laundry')
52
+ @rudo.stub(:puts).with('3: eat pizza')
53
+ @rudo.stub(:puts).with('3 tasks remaining'.green)
54
+ end
55
+
56
+ it 'prints tasks between rows of stars' do
57
+ @rudo.should_receive(:puts).with(@stars)
58
+ @rudo.should_receive(:puts).with('1: clean gutters')
59
+ @rudo.should_receive(:puts).with('2: do laundry')
60
+ @rudo.should_receive(:puts).with('3: eat pizza')
61
+ @rudo.should_receive(:puts).with(@stars)
62
+ @rudo.print
63
+ end
64
+
65
+ it 'prints the task count in green' do
66
+ @rudo.should_receive(:puts).with('3 tasks remaining'.green)
67
+ @rudo.print
68
+ end
69
+ end
70
+ end
71
+
72
+ describe '#add' do
73
+ before(:each) do
74
+ @tasks = YAML.load(File.read(@tasks_path))
75
+ @rudo = Rudo.new(:file_path => @tasks_path)
76
+ end
77
+
78
+ context 'when position is nil' do
79
+ it 'adds the task at the end of the list' do
80
+ @tasks += ['blah']
81
+ File.should_receive(:write).
82
+ with(File.expand_path(@tasks_path), YAML.dump(@tasks))
83
+ @rudo.add('blah')
84
+ end
85
+ end
86
+
87
+ context 'when position is given' do
88
+ it 'adds the task at that position in the list' do
89
+ @tasks = ['blah'] + @tasks
90
+ File.should_receive(:write).
91
+ with(File.expand_path(@tasks_path), YAML.dump(@tasks))
92
+ @rudo.add('blah', 0)
93
+ end
94
+ end
95
+ end
96
+
97
+ describe '#remove' do
98
+ before(:each) do
99
+ @tasks = YAML.load(File.read(@tasks_path))
100
+ @rudo = Rudo.new(:file_path => @tasks_path)
101
+ end
102
+
103
+ context 'when position is some number followed by an "x"' do
104
+ it 'removes the first n items' do
105
+ expected_tasks = @tasks[2..-1]
106
+ File.should_receive(:write).
107
+ with(File.expand_path(@tasks_path), YAML.dump(expected_tasks))
108
+ @rudo.remove('2x')
109
+ end
110
+ end
111
+
112
+ context 'when the position is a number' do
113
+ it 'removes the item specified' do
114
+ expected_tasks = [ @tasks.first, @tasks.last ]
115
+ File.should_receive(:write).
116
+ with(File.expand_path(@tasks_path), YAML.dump(expected_tasks))
117
+ @rudo.remove('2')
118
+ end
119
+ end
120
+
121
+ context 'when the position is trash text' do
122
+ it 'removes the first item in the list' do
123
+ expected_tasks = @tasks[1..-1]
124
+ File.should_receive(:write).
125
+ with(File.expand_path(@tasks_path), YAML.dump(expected_tasks))
126
+ @rudo.remove('trash')
127
+ end
128
+ end
129
+
130
+ context 'when the position is nil' do
131
+ it 'removes the first item in the list' do
132
+ expected_tasks = @tasks[1..-1]
133
+ File.should_receive(:write).
134
+ with(File.expand_path(@tasks_path), YAML.dump(expected_tasks))
135
+ @rudo.remove(nil)
136
+ end
137
+ end
138
+
139
+ context 'when the position is not given' do
140
+ it 'removes the first item in the list' do
141
+ expected_tasks = @tasks[1..-1]
142
+ File.should_receive(:write).
143
+ with(File.expand_path(@tasks_path), YAML.dump(expected_tasks))
144
+ @rudo.remove
145
+ end
146
+ end
147
+ end
148
+
149
+ describe '#walk' do
150
+ before(:each) do
151
+ @tasks = YAML.load(File.read(@tasks_path))
152
+ @rudo = Rudo.new(:file_path => @tasks_path)
153
+ end
154
+
155
+ context 'when no argument is given' do
156
+ it 'moves the first item in the list to the end' do
157
+ expected_tasks = @tasks[1..-1] + @tasks[0, 1]
158
+ File.should_receive(:write).
159
+ with(File.expand_path(@tasks_path), YAML.dump(expected_tasks))
160
+ @rudo.walk
161
+ end
162
+ end
163
+
164
+ context 'when a number is given' do
165
+ it 'moves n items to the end of the list' do
166
+ expected_tasks = @tasks[2..-1] + @tasks[0, 2]
167
+ File.should_receive(:write).
168
+ with(File.expand_path(@tasks_path), YAML.dump(expected_tasks))
169
+ @rudo.walk(2)
170
+ end
171
+ end
172
+ end
173
+ end
@@ -0,0 +1,8 @@
1
+ RSpec.configure do |config|
2
+ config.color_enabled = true
3
+ config.tty = true
4
+ config.formatter = :documentation
5
+
6
+ config.filter_run :focus => true
7
+ config.run_all_when_everything_filtered = true
8
+ end
metadata CHANGED
@@ -1,104 +1,83 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rudo
3
- version: !ruby/object:Gem::Version
4
- hash: 9
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 0
9
- - 11
10
- version: 0.0.11
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.00
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Robert Fletcher
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-07-01 00:00:00 -07:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-04-15 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: colored
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &20227880 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 11
30
- segments:
31
- - 1
32
- - 2
33
- version: "1.2"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '1.2'
34
22
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: trollop
38
23
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *20227880
25
+ - !ruby/object:Gem::Dependency
26
+ name: trollop
27
+ requirement: &20226960 !ruby/object:Gem::Requirement
40
28
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 83
45
- segments:
46
- - 1
47
- - 16
48
- - 2
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
49
32
  version: 1.16.2
50
33
  type: :runtime
51
- version_requirements: *id002
34
+ prerelease: false
35
+ version_requirements: *20226960
52
36
  description: Tasks are saved in ~/rudo.yml
53
37
  email: lobatifricha@gmail.com
54
- executables:
38
+ executables:
55
39
  - rudo
56
40
  - rad
57
41
  - dun
58
42
  - walk
59
43
  extensions: []
60
-
61
44
  extra_rdoc_files: []
62
-
63
- files:
45
+ files:
64
46
  - lib/rudo.rb
65
- - bin/rudo
66
- - bin/rad
47
+ - spec/rudo_spec.rb
48
+ - spec/fixtures/empty.yml
49
+ - spec/fixtures/tasks.yml
50
+ - spec/spec_helper.rb
67
51
  - bin/dun
68
52
  - bin/walk
69
- has_rdoc: true
53
+ - bin/rad
54
+ - bin/rudo
55
+ - Rakefile
56
+ - MIT-LICENSE
57
+ - Gemfile
58
+ - README
70
59
  homepage: https://github.com/mockdeep/rudo
71
60
  licenses: []
72
-
73
61
  post_install_message:
74
62
  rdoc_options: []
75
-
76
- require_paths:
63
+ require_paths:
77
64
  - lib
78
- required_ruby_version: !ruby/object:Gem::Requirement
65
+ required_ruby_version: !ruby/object:Gem::Requirement
79
66
  none: false
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- hash: 3
84
- segments:
85
- - 0
86
- version: "0"
87
- required_rubygems_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
72
  none: false
89
- requirements:
90
- - - ">="
91
- - !ruby/object:Gem::Version
92
- hash: 3
93
- segments:
94
- - 0
95
- version: "0"
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
96
77
  requirements: []
97
-
98
78
  rubyforge_project:
99
- rubygems_version: 1.3.7
79
+ rubygems_version: 1.8.17
100
80
  signing_key:
101
81
  specification_version: 3
102
82
  summary: A simple, semi-pretty command line based todo list manager
103
83
  test_files: []
104
-