things-client 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +49 -0
- data/VERSION +1 -1
- data/lib/things/area.rb +6 -0
- data/lib/things/person.rb +11 -10
- data/lib/things/project.rb +6 -0
- data/lib/things/reference/record.rb +5 -0
- data/lib/things/tag.rb +6 -0
- data/lib/things/todo.rb +0 -5
- metadata +4 -4
- data/README.rdoc +0 -121
data/README.textile
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
*things-client* is a ruby-base client for API of the popular GTD app Things, available on the Mac.
|
2
|
+
|
3
|
+
h2. Requirements
|
4
|
+
|
5
|
+
To use *things-client* you need Things which is version 1.2.0 or greater.
|
6
|
+
|
7
|
+
h2. Installation
|
8
|
+
|
9
|
+
The gem is hosted on Gemcutter. To install it, use the following command:
|
10
|
+
|
11
|
+
bc. sudo gem install things-client --source http://gemcutter.org
|
12
|
+
|
13
|
+
To get the latest version, clone the gem from github and run rake install:
|
14
|
+
|
15
|
+
bc. git clone http://github.com/marcinbunsch/things-client
|
16
|
+
cd things-client
|
17
|
+
rake check_dependencies:runtime
|
18
|
+
sudo rake install
|
19
|
+
|
20
|
+
h2. Usage
|
21
|
+
|
22
|
+
Before using this gem you must require it by calling:
|
23
|
+
|
24
|
+
bc. require 'things'
|
25
|
+
|
26
|
+
From then on you can manipulate Todos, Projects, Areas, Tags, People and Lists, like this:
|
27
|
+
|
28
|
+
bc. todo = Things::Todo.create(:name => 'Take out the garbage')
|
29
|
+
todo.name = 'Take out the garbage and old boxes'
|
30
|
+
todo.save
|
31
|
+
|
32
|
+
For more information, see the wiki at "http://wiki.github.com/marcinbunsch/things-client/":http://wiki.github.com/marcinbunsch/things-client/
|
33
|
+
|
34
|
+
h2. Contribution
|
35
|
+
|
36
|
+
You're more than welcome to fork and improve this gem. Usual rules:
|
37
|
+
|
38
|
+
* Fork the project.
|
39
|
+
* Make your feature addition or bug fix.
|
40
|
+
* Add tests for it. This is important so I don't break it in a
|
41
|
+
future version unintentionally.
|
42
|
+
* Commit, do not mess with rakefile, version, or history.
|
43
|
+
(if you want to have your own version, that is fine but
|
44
|
+
bump version in a commit by itself I can ignore when I pull)
|
45
|
+
* Send me a pull request.
|
46
|
+
|
47
|
+
h2. Copyright
|
48
|
+
|
49
|
+
Copyright (c) 2010 Marcin Bunsch. See LICENSE for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.1
|
data/lib/things/area.rb
CHANGED
data/lib/things/person.rb
CHANGED
@@ -10,13 +10,16 @@ module Things
|
|
10
10
|
# collection is used for findings
|
11
11
|
collection :people
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
13
|
+
class << self
|
14
|
+
# Find a Person in Address Book and add a teammate in Things
|
15
|
+
#
|
16
|
+
# Returns a Things::Person object
|
17
|
+
def self.create(address_book_name)
|
18
|
+
reference = Things::App.instance.add_teammate_named(address_book_name)
|
19
|
+
raise 'Could not find person in Address Book' if reference == :missing_value
|
20
|
+
build(reference)
|
21
|
+
end
|
22
|
+
|
20
23
|
end
|
21
24
|
|
22
25
|
def todos
|
@@ -30,9 +33,7 @@ module Things
|
|
30
33
|
raise 'Currently Things does not support this method'
|
31
34
|
end
|
32
35
|
|
33
|
-
#
|
34
|
-
#
|
35
|
-
# Raises a RuntimeError when called
|
36
|
+
# Deletes a Person
|
36
37
|
def delete
|
37
38
|
reference.delete
|
38
39
|
end
|
data/lib/things/project.rb
CHANGED
@@ -101,6 +101,11 @@ module Things
|
|
101
101
|
todo.reference = reference
|
102
102
|
todo
|
103
103
|
end
|
104
|
+
|
105
|
+
# Converts a collection of reference into a collection of objects
|
106
|
+
def self.convert(references)
|
107
|
+
references.to_a.collect { |todo| build(todo) }
|
108
|
+
end
|
104
109
|
|
105
110
|
# find a todo by a name or id
|
106
111
|
#
|
data/lib/things/tag.rb
CHANGED
data/lib/things/todo.rb
CHANGED
@@ -63,11 +63,6 @@ module Things
|
|
63
63
|
Things::App.instance.todos
|
64
64
|
end
|
65
65
|
|
66
|
-
# Converts a collection of reference into a collection of objects
|
67
|
-
def convert(references)
|
68
|
-
references.to_a.collect { |todo| build(todo) }
|
69
|
-
end
|
70
|
-
|
71
66
|
# these are references and should be stored somewhere else...
|
72
67
|
Things::List::DEFAULTS.each do |list|
|
73
68
|
class_eval <<-"eval"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: things-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcin Bunsch
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-02-
|
12
|
+
date: 2010-02-26 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -40,12 +40,12 @@ extensions: []
|
|
40
40
|
|
41
41
|
extra_rdoc_files:
|
42
42
|
- LICENSE
|
43
|
-
- README.
|
43
|
+
- README.textile
|
44
44
|
files:
|
45
45
|
- .document
|
46
46
|
- .gitignore
|
47
47
|
- LICENSE
|
48
|
-
- README.
|
48
|
+
- README.textile
|
49
49
|
- Rakefile
|
50
50
|
- VERSION
|
51
51
|
- lib/appscript/reference.rb
|
data/README.rdoc
DELETED
@@ -1,121 +0,0 @@
|
|
1
|
-
= Things
|
2
|
-
|
3
|
-
Things is a Ruby API for the popular GTD app Things, available on the Mac.
|
4
|
-
|
5
|
-
== Installation
|
6
|
-
|
7
|
-
The gem is hosted on Gemcutter. To install it, use the following command:
|
8
|
-
|
9
|
-
sudo gem install things-client --source http://gemcutter.org
|
10
|
-
|
11
|
-
To get the latest version, clone the gem from github and run rake install:
|
12
|
-
|
13
|
-
git clone http://github.com/marcinbunsch/things-client
|
14
|
-
cd things-client
|
15
|
-
rake check_dependencies:runtime
|
16
|
-
sudo rake install
|
17
|
-
|
18
|
-
== Usage
|
19
|
-
|
20
|
-
Before using this gem you must require it by calling:
|
21
|
-
|
22
|
-
require 'things'
|
23
|
-
|
24
|
-
=== Application
|
25
|
-
|
26
|
-
The Application can be accessed at all times by calling Things::App. It has a few useful methods which will be described below. If you want Things to gain focus and move to the front of the window stack, you can call the Things::App.activate method.
|
27
|
-
|
28
|
-
=== Todos
|
29
|
-
|
30
|
-
Todos are accessed via the Things::Todo class.
|
31
|
-
|
32
|
-
==== Create
|
33
|
-
|
34
|
-
If you want to create a new Todo, you simple create a new instance of the Things::Todo class, supplying the parameters:
|
35
|
-
|
36
|
-
Things::Todo.new(:name => 'Take out the garbage')
|
37
|
-
|
38
|
-
When you're ready to send it to Things, simply call the save method on the instance:
|
39
|
-
|
40
|
-
todo = Things::Todo.new(:name => 'Take out the garbage')
|
41
|
-
todo.save # the Todo will appear in the Inbox
|
42
|
-
|
43
|
-
If you want to send the Todo to Things during the instantiation process, simply call create:
|
44
|
-
|
45
|
-
Things::Todo.create(:name => 'Take out the garbage') # the Todo will appear in the Inbox
|
46
|
-
|
47
|
-
==== Read
|
48
|
-
|
49
|
-
===== Collections
|
50
|
-
|
51
|
-
If you want to fetch a list of todos, there is a set of collections you can use.
|
52
|
-
|
53
|
-
The largest one is the collection of all Todos. You fetch it by calling:
|
54
|
-
|
55
|
-
Things::App.todos
|
56
|
-
|
57
|
-
It will return an array of Things::Todo instances.
|
58
|
-
|
59
|
-
If you only want the active (so non-finished) Todos, you can fetch a collection by calling:
|
60
|
-
|
61
|
-
Things::App.todos.active
|
62
|
-
|
63
|
-
It will return an array of Things::Todo instances.
|
64
|
-
|
65
|
-
As the gem will grow, more methods will follow.
|
66
|
-
|
67
|
-
===== Single Todos
|
68
|
-
|
69
|
-
Things::Todo has a few useful methods if you want to fetch a single Todo.
|
70
|
-
|
71
|
-
The smartest is the Things::Todo.find method, which will accept either a name or an id.
|
72
|
-
|
73
|
-
Things::Todo.find('Take out the garbage') # => #<Things::Todo:0x115dd84>
|
74
|
-
Things::Todo.find('11111111-1111-1111-1111-111111111111') # => #<Things::Todo:0x115dd84>
|
75
|
-
|
76
|
-
If you want a more targeted approach, you can use Things::Todo.find_by_name or Things::Todo.find_by_id
|
77
|
-
|
78
|
-
==== Update
|
79
|
-
|
80
|
-
To update a Todo, you need to fetch it, change the desired properties and save it. The following example illustrates this:
|
81
|
-
|
82
|
-
todo = Things::Todo.find('Take out the garbage') # => #<Things::Todo:0x115dd84>
|
83
|
-
todo.name = 'Take out the garbage and old boxes'
|
84
|
-
todo.save
|
85
|
-
|
86
|
-
When you open up a Things window, you'll notice that the name has changed.
|
87
|
-
|
88
|
-
==== Delete
|
89
|
-
|
90
|
-
To delete a todo, simply call the delete method. The Todo will bo moved to Trash.
|
91
|
-
|
92
|
-
todo = Things::Todo.find('Take out the garbage') # => #<Things::Todo:0x115dd84>
|
93
|
-
todo.delete
|
94
|
-
|
95
|
-
== Roadmap
|
96
|
-
|
97
|
-
Currently Todos are fully supported, which is the core functionality of Todos, but leaves a lot of room for improvement. The first step is to create a unified API for handling AppleScript objects which behave in a similar way.
|
98
|
-
|
99
|
-
Planned features:
|
100
|
-
|
101
|
-
* Support for Projects
|
102
|
-
* Support for Areas
|
103
|
-
* Support for Tags
|
104
|
-
* Support for Scheduled Todos
|
105
|
-
|
106
|
-
== Contribution
|
107
|
-
|
108
|
-
You're more than welcome to fork and improve this gem. Usual rules:
|
109
|
-
|
110
|
-
* Fork the project.
|
111
|
-
* Make your feature addition or bug fix.
|
112
|
-
* Add tests for it. This is important so I don't break it in a
|
113
|
-
future version unintentionally.
|
114
|
-
* Commit, do not mess with rakefile, version, or history.
|
115
|
-
(if you want to have your own version, that is fine but
|
116
|
-
bump version in a commit by itself I can ignore when I pull)
|
117
|
-
* Send me a pull request.
|
118
|
-
|
119
|
-
== Copyright
|
120
|
-
|
121
|
-
Copyright (c) 2010 Marcin Bunsch. See LICENSE for details.
|