hiptask 0.0.1

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 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