r2do 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -63,6 +63,10 @@ To view the information regarding a Task:
63
63
 
64
64
  r2do task --display
65
65
 
66
+ To edit a Task:
67
+
68
+ r2do task --edit
69
+
66
70
  To complete a Task:
67
71
 
68
72
  r2do task --done
@@ -91,10 +95,7 @@ To see all the available commands:
91
95
 
92
96
  There are many features presently missing from r2do, which will be implemented in future versions but there is one thing which must be noted here.
93
97
 
94
- 1) The ability to edit a Category or a Task is lacking at present. It is the top priority, but please note that it is missing.
95
-
96
- If you need to edit a Task you can delete the old one and re-create it.
97
- The same goes for a Category, although this is more annoying as you will loose your Tasks when you delete a Category.
98
+ 1) The ability to edit a Category is lacking at present.
98
99
 
99
100
  2) The ability to move a Task from one Category to another is also missing.
100
101
 
@@ -76,7 +76,10 @@ module R2do
76
76
  end
77
77
  end
78
78
 
79
-
79
+ # Creates a new Category or selects an already existing one.
80
+ #
81
+ # @param [Array] args the argumets passed to the app by the user.
82
+ # @return [void]
80
83
  def parse_category(args)
81
84
  extra = ''
82
85
  category_name = args[1]
@@ -94,7 +97,9 @@ module R2do
94
97
  UI.status("Switched to #{extra}category '#{category_name}'")
95
98
  end
96
99
 
97
-
100
+ # Ensures that a category is selected.
101
+ #
102
+ # @return [void]
98
103
  def require_selected_category()
99
104
  if not @state.current_category
100
105
  raise CategoryNotSelectedError, "This action requires a selected category."
@@ -24,6 +24,7 @@ module R2do
24
24
  COMPLETED = "--done"
25
25
  DISPLAY = "--display"
26
26
  DELETE = "--delete"
27
+ EDIT = "--edit"
27
28
 
28
29
  # Creates a new task or makes a task current in the current category if a task with the
29
30
  # same name already exists
@@ -45,6 +46,9 @@ module R2do
45
46
  if option.eql?(DISPLAY)
46
47
  require_selected_task()
47
48
  show_current_task(args)
49
+ elsif option.eql?(EDIT)
50
+ require_selected_task()
51
+ edit_current_task(args)
48
52
  elsif option.eql?(COMPLETED)
49
53
  require_selected_task()
50
54
  mark_as_complete(args)
@@ -52,13 +56,35 @@ module R2do
52
56
  require_selected_task()
53
57
  delete_task(args)
54
58
  elsif option.start_with?("--")
55
- raise InvalidOptionError
59
+ raise InvalidOptionError, "Invalid argument for the command. See 'r2do -h'."
56
60
  else
57
61
  parse_task(args)
58
62
  end
59
63
  end
60
64
 
65
+ # Edit the current task.
66
+ #
67
+ # @param [Array] args the arguments passed to the app by the user.
68
+ # @return [void]
69
+ def edit_current_task(args)
70
+ UI.status("Are you sure you want to edit the task:")
71
+ UI.status(" #{@state.current_category.current_task.description}")
72
+ UI.new_line()
73
+ value = UI.input("Continue? [Yn]")
74
+ if value == YES
75
+ desc = UI.input("Enter new description:")
76
+ task = @state.current_category.current_task
77
+ task.rename(desc)
78
+ @modified = true
79
+
80
+ UI.status("The task as been modified.")
81
+ end
82
+ end
61
83
 
84
+ # Delete the currently selected task.
85
+ #
86
+ # @param [Array] args the arguments passed to the app by the user.
87
+ # @return [void]
62
88
  def delete_task(args)
63
89
  UI.status("Are you sure you want to delete the task:")
64
90
  UI.status(" #{@state.current_category.current_task.description}")
@@ -74,15 +100,18 @@ module R2do
74
100
  end
75
101
  end
76
102
 
77
-
103
+ # Displays the information of the currently selected task.
104
+ #
105
+ # @param [Array] args the arguments passed to the app by the user.
106
+ # @return [void]
78
107
  def show_current_task(args)
79
108
  task = @state.current_category.current_task
80
109
  UI.status(task.display())
81
110
  end
82
111
 
83
- # Marks a task as completed
112
+ # Marks a task as completed.
84
113
  #
85
- # @param [Array] args the arguments passed to the app by the user
114
+ # @param [Array] args the arguments passed to the app by the user.
86
115
  # @return [void]
87
116
  def mark_as_complete(args)
88
117
  task = @state.current_category.current_task
@@ -92,7 +121,10 @@ module R2do
92
121
  UI.status("Task '%s' has been marked as completed." % task.description)
93
122
  end
94
123
 
95
-
124
+ # Creates a new task or select an already existing one.
125
+ #
126
+ # @param [Array] args the arguments passed to the app by the user.
127
+ # @return [void]
96
128
  def parse_task(args)
97
129
  extra = ''
98
130
  task_description = args[1]
@@ -111,6 +143,9 @@ module R2do
111
143
  UI.status("Selected task '#{task_description}'")
112
144
  end
113
145
 
146
+ # Checks that a task is currently selected.
147
+ #
148
+ # @return [void]
114
149
  def require_selected_task()
115
150
  if not @state.current_category.current_task
116
151
  raise TaskNotSelectedError, "This action requires a selected task."
data/lib/r2do/task.rb CHANGED
@@ -34,6 +34,14 @@ module R2do
34
34
  @date_done = nil
35
35
  end
36
36
 
37
+ # Renames this Task
38
+ #
39
+ # @param [String] description the new value for the task
40
+ # @return [void]
41
+ def rename(description)
42
+ @description = description
43
+ end
44
+
37
45
  # Gets the completed status of the specific task.
38
46
  #
39
47
  # @return [bool] true if the task is completed.
@@ -64,6 +72,9 @@ module R2do
64
72
  return "[%s] %-30s %s" % [completed, @description, date]
65
73
  end
66
74
 
75
+ # Returns information regarding the state of this task.
76
+ #
77
+ # @return [String] the metadata for this task.
67
78
  def display()
68
79
  date = format_date(@date_created)
69
80
 
@@ -82,7 +93,10 @@ module R2do
82
93
  return result.string
83
94
  end
84
95
 
85
-
96
+ # Formats the date
97
+ #
98
+ # @param [DateTime] date the date to parse
99
+ # @return [String] the formatted date
86
100
  def format_date(date)
87
101
  date.strftime('%a %b %e, %Y')
88
102
  end
data/lib/r2do/ui.rb CHANGED
@@ -26,6 +26,14 @@ module R2do
26
26
  puts message
27
27
  end
28
28
 
29
+ # Displays a status message to the user
30
+ #
31
+ # @param [String] message the message to display to the user
32
+ # @return [void]
33
+ def self.rescue(exception)
34
+ puts "abort: #{exception.message}"
35
+ end
36
+
29
37
  # Adds a new empty line on the display
30
38
  #
31
39
  # @return [void]
data/lib/r2do/version.rb CHANGED
@@ -15,5 +15,5 @@
15
15
  #
16
16
 
17
17
  module R2do
18
- VERSION = '0.0.6'
18
+ VERSION = '0.0.7'
19
19
  end
data/lib/r2do.rb CHANGED
@@ -27,7 +27,6 @@ require 'r2do/handlers/handle_category'
27
27
  require 'r2do/handlers/handle_task'
28
28
  require 'r2do/handlers/handle_init'
29
29
  require 'r2do/handlers/handle_categories'
30
- require 'r2do/handlers/handle_current'
31
30
  require 'r2do/utility'
32
31
 
33
32
 
@@ -58,7 +57,11 @@ module R2do
58
57
  if @args.length > 0
59
58
  cmd = find_command(option)
60
59
  if not cmd.nil?
61
- cmd.execute(@args)
60
+ begin
61
+ cmd.execute(@args)
62
+ rescue Exception => e
63
+ UI.rescue(e)
64
+ end
62
65
  else
63
66
  invalid_command(option)
64
67
  end
data/r2do.gemspec CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
6
6
  gem.email = ["christiangiacomi@gmail.com"]
7
7
  gem.description = %q{A simple todo gem}
8
8
  gem.summary = %q{A simple todo gem}
9
- gem.homepage = ""
9
+ gem.homepage = "https://github.com/cgiacomi/r2do"
10
10
 
11
11
  gem.add_development_dependency "rspec"
12
12
  gem.add_development_dependency "rake"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: r2do
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -112,7 +112,6 @@ files:
112
112
  - lib/r2do/exceptions.rb
113
113
  - lib/r2do/handlers/handle_categories.rb
114
114
  - lib/r2do/handlers/handle_category.rb
115
- - lib/r2do/handlers/handle_current.rb
116
115
  - lib/r2do/handlers/handle_init.rb
117
116
  - lib/r2do/handlers/handle_task.rb
118
117
  - lib/r2do/state.rb
@@ -127,7 +126,7 @@ files:
127
126
  - spec/r2do/r2do_spec.rb
128
127
  - spec/r2do/task_spec.rb
129
128
  - spec/spec_helper.rb
130
- homepage: ''
129
+ homepage: https://github.com/cgiacomi/r2do
131
130
  licenses: []
132
131
  post_install_message:
133
132
  rdoc_options: []
@@ -141,7 +140,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
141
140
  version: '0'
142
141
  segments:
143
142
  - 0
144
- hash: -3996115367842685634
143
+ hash: -972365083019823289
145
144
  required_rubygems_version: !ruby/object:Gem::Requirement
146
145
  none: false
147
146
  requirements:
@@ -150,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
149
  version: '0'
151
150
  segments:
152
151
  - 0
153
- hash: -3996115367842685634
152
+ hash: -972365083019823289
154
153
  requirements: []
155
154
  rubyforge_project:
156
155
  rubygems_version: 1.8.24
@@ -1,22 +0,0 @@
1
- #
2
- # Copyright 2012 Christian Giacomi http://www.christiangiacomi.com
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
- #
16
-
17
- module R2do
18
- module Handlers
19
-
20
-
21
- end
22
- end