hiptask 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8ddde3405e73d4ffdd450cfa6f8bbee865676918
4
+ data.tar.gz: e006b4c161f5faeee9cc606e8f7ae49c042aed23
5
+ SHA512:
6
+ metadata.gz: 56d1371238a331a2aabb61cabbb591c0bc13029d040308c6f8617821635495613c5f56470e67f951c7c0c7a2dee43788b3217f40811c7550ba5263ad3d946ed0
7
+ data.tar.gz: 001144adffc87f25b47f39b3bc0e443572b255372460fefebfff8ad168ce2ca54f896b423646c13eb9686bdad8d4fc5dfc1cd08cac4cd0edcd3cd7f9ad957431
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ tasks.txt
2
+ *.gem
data/README.md ADDED
@@ -0,0 +1,16 @@
1
+ ## Simple
2
+
3
+ A hipster command line task applicaiton for me to put my newly learn ruby skills to practical use.
4
+
5
+ ### Usage
6
+
7
+ hiptask # prints help
8
+ hiptask list # displays your task list
9
+ hiptask add CONTENT # adds a new task
10
+ hiptask do ID # marks a task as complete
11
+ hiptask undo ID # reverts task to normal
12
+ hiptask delete ID # deletes a task forever
13
+
14
+ ### Feedback
15
+
16
+ I do realise this code won't be the best as it's very my first ruby project. However, I will apreciate any feedback you can give me on the project or my Ruby skills in general.
data/bin/hiptask ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Add lib to ruby path
4
+ $:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
5
+
6
+ # Initialize CLI tool
7
+ require 'hiptask/cli'
8
+ Hiptask::CLI.start(ARGV)
@@ -0,0 +1,67 @@
1
+ require 'thor'
2
+ require 'hiptask/list'
3
+
4
+ module Hiptask
5
+
6
+ class CLI < Thor
7
+
8
+ @@filename = './tasks.txt'
9
+
10
+ def self.start(argv)
11
+ @@list = List.new(@@filename)
12
+ super argv
13
+ end
14
+
15
+
16
+ desc "list", "Display your task list"
17
+ def list()
18
+
19
+ puts " "
20
+ puts " \033[32;1m#{@@list.items.length} Items\033[0m"
21
+ puts " "
22
+ @@list.items.each_with_index do |item, index|
23
+ index = index + 1
24
+ print " \033[33m#{index.to_s.ljust(2)}\033[0m"
25
+ if item.start_with? ">"
26
+ print " [x] "
27
+ puts "#{item[1, item.length - 1]}"
28
+ else
29
+ print " [ ] "
30
+ puts "#{item}"
31
+ end
32
+ end
33
+ puts " "
34
+
35
+ end
36
+
37
+
38
+ desc "add CONTENT", "Add a new task"
39
+ def add(content)
40
+ @@list.add(content)
41
+ list
42
+ end
43
+
44
+
45
+ desc "do ID", "Complete a task"
46
+ def do(id)
47
+ @@list.do(id)
48
+ list
49
+ end
50
+
51
+
52
+ desc "undo ID", "Complete a task"
53
+ def undo(id)
54
+ @@list.undo(id)
55
+ list
56
+ end
57
+
58
+
59
+ desc "delete ID", "Delete a task"
60
+ def delete(id)
61
+ @@list.delete(id)
62
+ list
63
+ end
64
+
65
+ end
66
+
67
+ end
@@ -0,0 +1,83 @@
1
+ module Hiptask
2
+
3
+ class List
4
+
5
+ attr_reader :items
6
+
7
+ def initialize(filename)
8
+
9
+ @filename = filename
10
+
11
+ # Create file if it doesn't exist
12
+ File.open(filename, "w+") unless File.exists?(filename)
13
+
14
+ # Load Content from File
15
+ @items = []
16
+ @file = File.open(filename, "r")
17
+ @file.each do |line|
18
+ @items.push line.strip
19
+ end
20
+ @file.close
21
+
22
+ end
23
+
24
+
25
+ def find_by_id(id)
26
+ id = id.to_i - 1
27
+ raise "ID must be greater than 0" if id < 0
28
+ task = nil
29
+ @items.each_with_index { |line, index|
30
+ if index == id
31
+ task = line
32
+ break
33
+ end
34
+ }
35
+ return task
36
+ end
37
+
38
+
39
+ def add(content)
40
+ File.open(@filename, "a") { |file|
41
+ file.puts content
42
+ }
43
+ @items.push content
44
+ end
45
+
46
+
47
+ def do(id)
48
+ id = id.to_i - 1
49
+ raise "ID must be greater than 0" if id < 0
50
+ raise "Task not found" unless @items[id]
51
+ @items[id] = ">" + @items[id] unless @items[id].start_with? ">"
52
+ save
53
+ end
54
+
55
+
56
+ def undo(id)
57
+ id = id.to_i - 1
58
+ raise "ID must be greater than 0" if id < 0
59
+ raise "Task not found" unless @items[id]
60
+ @items[id] = @items[id][1, @items[id].length - 1] if @items[id].start_with? ">"
61
+ save
62
+ end
63
+
64
+
65
+ def delete(id)
66
+ id = id.to_i - 1
67
+ raise "ID must be greater than 0" if id < 0
68
+ raise "Task not found" unless @items[id]
69
+ @items.delete_at id
70
+ save
71
+ end
72
+
73
+
74
+ private
75
+ def save
76
+ File.open(@filename, "w+") { |file|
77
+ file.puts @items
78
+ }
79
+ end
80
+
81
+ end
82
+
83
+ end
data/test/tc_list.rb ADDED
@@ -0,0 +1,39 @@
1
+ require 'test/unit'
2
+ require 'hiptask/list'
3
+
4
+ class TestList < Test::Unit::TestCase
5
+
6
+ def test_add
7
+ list = Hiptask::List.new('/dev/null')
8
+ list.add("Test 1")
9
+ puts list.items
10
+ assert_equal(list.items, ["Test 1"])
11
+ end
12
+
13
+ def test_do
14
+ list = Hiptask::List.new('/dev/null')
15
+ list.add("Test 1")
16
+ assert_equal(list.items, ["Test 1"])
17
+ list.do('1')
18
+ assert_equal(list.items, [">Test 1"])
19
+ end
20
+
21
+ def test_undo
22
+ list = Hiptask::List.new('/dev/null')
23
+ list.add("Test 1")
24
+ assert_equal(list.items, ["Test 1"])
25
+ list.do('1')
26
+ assert_equal(list.items, [">Test 1"])
27
+ list.undo('1')
28
+ assert_equal(list.items, ["Test 1"])
29
+ end
30
+
31
+ def test_delete
32
+ list = Hiptask::List.new('/dev/null')
33
+ list.add("Test 1")
34
+ assert_equal(list.items, ["Test 1"])
35
+ list.delete('1')
36
+ assert_equal(list.items, [])
37
+ end
38
+
39
+ end
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hiptask
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Marc Qualie
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-05-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 0.18.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 0.18.1
27
+ description: A simple command line tool for tracking your task list
28
+ email: marc@marcqualie.com
29
+ executables:
30
+ - hiptask
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - .gitignore
35
+ - README.md
36
+ - bin/hiptask
37
+ - lib/hiptask/cli.rb
38
+ - lib/hiptask/list.rb
39
+ - test/tc_list.rb
40
+ homepage: https://github.com/marcqualie/hiptask
41
+ licenses:
42
+ - MIT
43
+ metadata: {}
44
+ post_install_message:
45
+ rdoc_options: []
46
+ require_paths:
47
+ - lib
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ requirements: []
59
+ rubyforge_project:
60
+ rubygems_version: 2.0.3
61
+ signing_key:
62
+ specification_version: 4
63
+ summary: Hipster tasks on the Command Line
64
+ test_files:
65
+ - test/tc_list.rb