rb-dayone 0.6.0 → 0.7.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 +7 -0
- data/Gemfile +4 -4
- data/Gemfile.lock +9 -7
- data/Manifest +5 -0
- data/README.md +43 -0
- data/lib/rb-dayone.rb +3 -2
- data/lib/rb-dayone/entry.rb +35 -14
- data/lib/rb-dayone/entry_importer.rb +5 -4
- data/lib/rb-dayone/search.rb +37 -46
- data/lib/rb-dayone/search_engine.rb +7 -0
- data/lib/rb-dayone/search_engines/creation_date_search.rb +32 -0
- data/lib/rb-dayone/search_engines/entry_text_search.rb +33 -0
- data/lib/rb-dayone/search_engines/starred_search.rb +30 -0
- data/lib/rb-dayone/search_engines/tag_search.rb +38 -0
- data/rb-dayone.gemspec +4 -4
- data/version.txt +1 -1
- metadata +38 -23
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: adbfa1eebd1eef8d92dcd87f14c71e94dcbf14a2
|
4
|
+
data.tar.gz: b27c9d5ca865527309979cafe70f77f78963f9e1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 326fbff745ce8c1bbc6d0dac35fe3bcb050977dfcac2514cba262dd8dd25733fc37babeb3cbda02d36ecfaecf531b7ac0334fbde23adcb1db1d061ef99d5fb99
|
7
|
+
data.tar.gz: c7c4deac6273fa964652bad4fab62113113eacac99731b403e574a448af039ef04c43adc36c79dcb976bf1391e5be093db87f3afdd870c787ed63bd66586e9be
|
data/Gemfile
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
source
|
1
|
+
source "https://www.rubygems.org"
|
2
2
|
|
3
|
-
gem
|
4
|
-
gem
|
5
|
-
gem
|
3
|
+
gem "builder", "~> 3.1.0"
|
4
|
+
gem "commander", "~> 4.1.2"
|
5
|
+
gem "nokogiri", "~> 1.6.0"
|
data/Gemfile.lock
CHANGED
@@ -1,16 +1,18 @@
|
|
1
1
|
GEM
|
2
|
-
remote:
|
2
|
+
remote: https://www.rubygems.org/
|
3
3
|
specs:
|
4
|
-
builder (
|
5
|
-
commander (4.1.
|
4
|
+
builder (3.1.4)
|
5
|
+
commander (4.1.5)
|
6
6
|
highline (~> 1.6.11)
|
7
|
-
highline (1.6.
|
8
|
-
|
7
|
+
highline (1.6.20)
|
8
|
+
mini_portile (0.5.2)
|
9
|
+
nokogiri (1.6.1)
|
10
|
+
mini_portile (~> 0.5.0)
|
9
11
|
|
10
12
|
PLATFORMS
|
11
13
|
ruby
|
12
14
|
|
13
15
|
DEPENDENCIES
|
14
|
-
builder (~>
|
16
|
+
builder (~> 3.1.0)
|
15
17
|
commander (~> 4.1.2)
|
16
|
-
nokogiri (~> 1.
|
18
|
+
nokogiri (~> 1.6.0)
|
data/Manifest
CHANGED
@@ -15,6 +15,11 @@ lib/rb-dayone/entry_importer.rb
|
|
15
15
|
lib/rb-dayone/location.rb
|
16
16
|
lib/rb-dayone/plist_reader.rb
|
17
17
|
lib/rb-dayone/search.rb
|
18
|
+
lib/rb-dayone/search_engine.rb
|
19
|
+
lib/rb-dayone/search_engines/creation_date_search.rb
|
20
|
+
lib/rb-dayone/search_engines/entry_text_search.rb
|
21
|
+
lib/rb-dayone/search_engines/starred_search.rb
|
22
|
+
lib/rb-dayone/search_engines/tag_search.rb
|
18
23
|
Manifest
|
19
24
|
Rakefile
|
20
25
|
rb-dayone.gemspec
|
data/README.md
CHANGED
@@ -21,6 +21,32 @@ When you're ready to save your entry, just run the `create!` method:
|
|
21
21
|
|
22
22
|
e.create!
|
23
23
|
|
24
|
+
### Searching
|
25
|
+
|
26
|
+
You can now search your DayOne archives. Use the `DayOne::Search` object to start a search:
|
27
|
+
|
28
|
+
s = DayOne::Search.new do
|
29
|
+
entry_text.include "Foo" # Entry must have "foo" in the entry text
|
30
|
+
entry_text.exclude "Bar" # Entry cannot have "bar" in the entry text
|
31
|
+
tag.include "baz" # Entry must be tagged "baz"
|
32
|
+
tag.exclude "caz" # Entry cannot be tagged "caz"
|
33
|
+
starred.is true # Entry is starred
|
34
|
+
starred.is false # Entry is not starred
|
35
|
+
creation_date.after t # Entry created after +t+
|
36
|
+
creation_date.before t # Entry created before +t+
|
37
|
+
end
|
38
|
+
|
39
|
+
s.results # Retrieve an array of search results
|
40
|
+
|
41
|
+
Most of these methods can be combined, e.g.:
|
42
|
+
|
43
|
+
s = DayOne::Search.new do
|
44
|
+
entry_text.include "Eggs"
|
45
|
+
entry_text.include "Milk"
|
46
|
+
end
|
47
|
+
|
48
|
+
This will only find posts that contain both the words "Eggs" and "Milk" in the entry text.
|
49
|
+
|
24
50
|
## Binary
|
25
51
|
|
26
52
|
Rb-dayone ships with a binary, `dayone`. Run `dayone --help` for instructions on how to use it.
|
@@ -35,6 +61,23 @@ Original author: [Jan-Yves Ruzicka](http://www.1klb.com). Get in touch [via emai
|
|
35
61
|
|
36
62
|
## History
|
37
63
|
|
64
|
+
### 0.7.1 / 2014-01-15
|
65
|
+
|
66
|
+
* [NEW] Save entries with `Entry#save!`, delete them with `Entry#delete!`
|
67
|
+
* [NEW] Remove entry tags with `Entry#remove_tag`.
|
68
|
+
* [FIXED] Will now recognise hashtags at the start of lines.
|
69
|
+
* [FIXED] EntryImporter now adds the UUID to generated Entries
|
70
|
+
* [FIXED] The `Entry#auto_tag` will now only accept tags with letters, numbers and underscores in them.
|
71
|
+
|
72
|
+
### 0.7.0 / 2014-01-14
|
73
|
+
|
74
|
+
* [NEW] Use `Entry#created_at` for `Entry#creation_date`, `Entry#auto_tag` for `Entry#add_tags_from_entry_text`
|
75
|
+
* [NEW] Search!
|
76
|
+
|
77
|
+
### 0.6.1 / 2014-01-13
|
78
|
+
|
79
|
+
* [FIXED] Updated gem versions
|
80
|
+
|
38
81
|
### 0.6.0 / 2013-01-14
|
39
82
|
|
40
83
|
* [NEW] Location support
|
data/lib/rb-dayone.rb
CHANGED
@@ -38,7 +38,7 @@ module DayOne
|
|
38
38
|
|
39
39
|
# The location of the DayOne journal file as determined by
|
40
40
|
# the DayOne plist file stored in +~/Library/Preferences+.
|
41
|
-
# @return [String] the
|
41
|
+
# @return [String] the DayOne journal location
|
42
42
|
def auto_journal_location
|
43
43
|
@auto_journal_location ||= File.expand_path(plist_reader.journal_location)
|
44
44
|
end
|
@@ -64,7 +64,8 @@ module DayOne
|
|
64
64
|
end
|
65
65
|
|
66
66
|
|
67
|
-
Dir[File.join(lib_root, "rb-dayone
|
67
|
+
Dir[File.join(lib_root, "rb-dayone/*.rb")].each{ |f| require f }
|
68
|
+
Dir[File.join(lib_root, "rb-dayone/search_engines/*.rb")].each{ |f| require f }
|
68
69
|
|
69
70
|
# Default values
|
70
71
|
DayOne::dayone_folder = File.join(ENV['HOME'], '.rb-dayone')
|
data/lib/rb-dayone/entry.rb
CHANGED
@@ -6,6 +6,8 @@ class DayOne::Entry
|
|
6
6
|
|
7
7
|
# The date of the journal entry
|
8
8
|
attr_accessor :creation_date
|
9
|
+
alias_method :created_at, :creation_date
|
10
|
+
alias_method :created_at=, :creation_date=
|
9
11
|
|
10
12
|
# The journal entry's body text
|
11
13
|
attr_accessor :entry_text
|
@@ -24,6 +26,10 @@ class DayOne::Entry
|
|
24
26
|
|
25
27
|
# The location of the entry.
|
26
28
|
attr_accessor :location
|
29
|
+
|
30
|
+
# The UUID of the entry. Auto-generated if it doesn't already exist, this
|
31
|
+
# shouldn't be manually set.
|
32
|
+
attr_accessor :uuid
|
27
33
|
|
28
34
|
# The PList doctype, used for XML export
|
29
35
|
DOCTYPE = [:DOCTYPE, :plist, :PUBLIC, "-//Apple//DTD PLIST 1.0//EN", "http://www.apple.com/DTDs/PropertyList-1.0.dtd"]
|
@@ -54,27 +60,34 @@ class DayOne::Entry
|
|
54
60
|
@uuid ||= `uuidgen`.gsub('-','').strip
|
55
61
|
end
|
56
62
|
|
63
|
+
# The file where this entry should/will be saved
|
64
|
+
def file
|
65
|
+
@file ||= File.join(DayOne::journal_location,'entries',"#{uuid}.doentry")
|
66
|
+
end
|
67
|
+
|
57
68
|
# Add a tag to the entry
|
58
69
|
# @param [String] str The string tag to add to the list.
|
59
70
|
def tag str
|
60
71
|
@tags << str.to_s
|
61
72
|
end
|
62
73
|
|
63
|
-
|
64
|
-
|
65
|
-
#
|
74
|
+
alias_method :add_tag, :tag
|
75
|
+
|
76
|
+
# Remove a tag from the entry
|
77
|
+
def remove_tag str
|
78
|
+
@tags.delete(str)
|
79
|
+
end
|
80
|
+
|
81
|
+
# Searches the entry text for tags (#foo) and adds them to the entry's tags.
|
82
|
+
# Only recognises letters, numbers and underscores in tags.
|
66
83
|
def add_tags_from_entry_text
|
67
|
-
@entry_text.scan(/(?<=[ \t])#(
|
68
|
-
m = m.shift
|
69
|
-
if m[-1] !~ /[a-zA-Z0-9]/
|
70
|
-
# Then the last char is a symbol or punctuation, and we should wipe it
|
71
|
-
m = m[0..-2]
|
72
|
-
end
|
73
|
-
tag m
|
74
|
-
end
|
84
|
+
@entry_text.scan(/(?<=[ \t\n])#([a-zA-Z0-9_]+)/){ |m| tag m.shift }
|
75
85
|
end
|
86
|
+
|
87
|
+
alias_method :auto_tag, :add_tags_from_entry_text
|
76
88
|
|
77
|
-
# The same as calling Entry#saved
|
89
|
+
# The same as calling Entry#saved. Tells you if this entry has been saved to
|
90
|
+
# file yet.
|
78
91
|
def saved?
|
79
92
|
saved
|
80
93
|
end
|
@@ -124,8 +137,7 @@ class DayOne::Entry
|
|
124
137
|
# @return [Boolean] true if the operation was successful.
|
125
138
|
def create!
|
126
139
|
xml = self.to_xml
|
127
|
-
|
128
|
-
File.open(file_location,'w'){ |io| io << xml }
|
140
|
+
File.open(self.file,'w'){ |io| io << xml }
|
129
141
|
if image
|
130
142
|
new_image_path = File.join(DayOne::journal_location, 'photos', "#{uuid}.jpg")
|
131
143
|
FileUtils.cp(image, new_image_path)
|
@@ -133,6 +145,15 @@ class DayOne::Entry
|
|
133
145
|
end
|
134
146
|
return true
|
135
147
|
end
|
148
|
+
|
149
|
+
alias_method :save!, :create!
|
150
|
+
|
151
|
+
# Deletes the .doentry file of this entry. This will remove the entry from
|
152
|
+
# your database, although you can reinstate it by calling +#save!+ on this
|
153
|
+
# object.
|
154
|
+
def delete!
|
155
|
+
FileUtils::rm self.file
|
156
|
+
end
|
136
157
|
|
137
158
|
# Check to make sure that we output valid xml
|
138
159
|
def xml_valid?
|
@@ -44,21 +44,22 @@ class DayOne::EntryImporter
|
|
44
44
|
creation_date: self['Creation Date'],
|
45
45
|
saved: true,
|
46
46
|
tags: self['Tags']||[],
|
47
|
-
location: self['Location']||{}
|
47
|
+
location: self['Location']||{},
|
48
|
+
uuid: self["UUID"]
|
48
49
|
)
|
49
50
|
end
|
50
51
|
|
51
52
|
private
|
52
53
|
|
54
|
+
# TODO Import images
|
55
|
+
|
53
56
|
# Process an XML tag. Returns a the value of the tag as a ruby value.
|
54
57
|
# @param [Nokogiri::XML::Element] element The element to process
|
55
58
|
# @return The values contained within the element
|
56
59
|
def process_value element
|
57
60
|
case element.name
|
58
61
|
when 'date'
|
59
|
-
|
60
|
-
Time.utc($1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, $6.to_i)
|
61
|
-
end
|
62
|
+
Time.parse(element.content)
|
62
63
|
when 'string'
|
63
64
|
element.content
|
64
65
|
when 'real'
|
data/lib/rb-dayone/search.rb
CHANGED
@@ -1,46 +1,24 @@
|
|
1
1
|
# A search of the database.
|
2
2
|
# Create this object with Search.new. Give it some parameters to search for, then
|
3
|
-
#
|
3
|
+
# use Search#[] to access results.
|
4
4
|
class DayOne::Search
|
5
|
-
|
6
|
-
#
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
attr_accessor :starred
|
11
|
-
|
12
|
-
# The entry must have this tag
|
13
|
-
attr_accessor :tag
|
14
|
-
|
15
|
-
# Initialize the search. Currently you can search by:
|
16
|
-
# * entry text
|
17
|
-
# * starred status
|
18
|
-
# * tag
|
19
|
-
#
|
20
|
-
# These can be passed in via hash.
|
21
|
-
# @param [Hash] hash a hash of search criteria, including:
|
22
|
-
# * +:entry_text+ - Text that the entry must include
|
23
|
-
# * +:starred+ - whether the entry is starred or not
|
24
|
-
# * +:tag+ - a tag that the entry must have
|
25
|
-
def initialize hash={}
|
26
|
-
hash.each do |k,v|
|
27
|
-
setter = "#{k}="
|
28
|
-
self.send(setter, v) if self.respond_to?(setter)
|
29
|
-
end
|
5
|
+
|
6
|
+
# Initialize the search. Takes a block, which allows
|
7
|
+
# access to an array of +SearchEngine+ subclasses.
|
8
|
+
def initialize &blck
|
9
|
+
instance_eval(&blck) if block_given?
|
30
10
|
end
|
31
11
|
|
32
|
-
# Fetch the results by searching.
|
12
|
+
# Fetch the results by searching.
|
33
13
|
# @return [Array] all entries matching your results
|
34
14
|
def results
|
35
15
|
if !@results
|
36
|
-
|
37
|
-
|
16
|
+
# Fetch files + data
|
17
|
+
@results = DayOne::entries.each_with_object({}){ |file, hash| hash[file] = File.read(file) }
|
38
18
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
@results = working_results
|
19
|
+
search_engines = self.active_search_engines
|
20
|
+
@results = @results.select{ |k,v| search_engines.all?{ |se| se.matches?(v) }}
|
21
|
+
@results = @results.map{ |file,data| DayOne::EntryImporter.new(data,file).to_entry }
|
44
22
|
end
|
45
23
|
@results
|
46
24
|
end
|
@@ -51,17 +29,30 @@ class DayOne::Search
|
|
51
29
|
def [] index
|
52
30
|
results[index]
|
53
31
|
end
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
32
|
+
|
33
|
+
# entry_text search engine
|
34
|
+
def entry_text
|
35
|
+
@entry_text ||= DayOne::EntryTextSearch.new
|
36
|
+
end
|
37
|
+
|
38
|
+
# starred search engine
|
39
|
+
def starred
|
40
|
+
@starred ||= DayOne::StarredSearch.new
|
41
|
+
end
|
42
|
+
|
43
|
+
# Tags search engine
|
44
|
+
def tag
|
45
|
+
@tag ||= DayOne::TagSearch.new
|
46
|
+
end
|
47
|
+
|
48
|
+
# Creation date search engine
|
49
|
+
def creation_date
|
50
|
+
@creation_date ||= DayOne::CreationDateSearch.new
|
51
|
+
end
|
52
|
+
|
53
|
+
# Returns an array of search engines which are defined and will actually do
|
54
|
+
# filtering.
|
55
|
+
def active_search_engines
|
56
|
+
[@entry_text, @starred, @tag, @creation_date].compact
|
66
57
|
end
|
67
58
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# Searches posts with a given creation date
|
2
|
+
class DayOne::CreationDateSearch < DayOne::SearchEngine
|
3
|
+
|
4
|
+
# No-argument initializer, sets default ivars.
|
5
|
+
def initialize
|
6
|
+
@before = nil
|
7
|
+
@after = nil
|
8
|
+
end
|
9
|
+
|
10
|
+
# Post must have occured before a given date
|
11
|
+
def before date
|
12
|
+
@before = date
|
13
|
+
end
|
14
|
+
|
15
|
+
# Post must have occured after a given date
|
16
|
+
def after date
|
17
|
+
@after = date
|
18
|
+
end
|
19
|
+
|
20
|
+
# Does this search widget match the date value of the given string?
|
21
|
+
# @returns [Boolean] Whether it matches or not
|
22
|
+
def matches? string
|
23
|
+
return true if !(@before || @after)
|
24
|
+
|
25
|
+
t = Time.parse string[%r|<key>Creation Date</key>\s+<date>(.*?)</date>|,1]
|
26
|
+
|
27
|
+
return (
|
28
|
+
!(@before && t >= @before) && # NOT (@before defined and event occurs after @before)
|
29
|
+
!(@after && t <= @after)
|
30
|
+
)
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# Searches the entry_text of a post
|
2
|
+
class DayOne::EntryTextSearch < DayOne::SearchEngine
|
3
|
+
|
4
|
+
# No-argument initializer, sets default ivars.
|
5
|
+
def initialize
|
6
|
+
@include = []
|
7
|
+
@exclude = []
|
8
|
+
end
|
9
|
+
|
10
|
+
# Posts must contain the following string in their entry text.
|
11
|
+
def include string
|
12
|
+
@include << string
|
13
|
+
end
|
14
|
+
|
15
|
+
# Posts cannot contain the following string in their entry text
|
16
|
+
def exclude string
|
17
|
+
@exclude << string
|
18
|
+
end
|
19
|
+
|
20
|
+
# Does this search widget match the entry text of the given string?
|
21
|
+
# @returns [Boolean] Whether it matches or not
|
22
|
+
def matches? string
|
23
|
+
entry_text = string[%r|<key>Entry Text</key>\s+<string>(.*?)</string>|m,1]
|
24
|
+
|
25
|
+
# Edge case: no entry text
|
26
|
+
return true if entry_text.nil? && @include.empty?
|
27
|
+
|
28
|
+
return (entry_text &&
|
29
|
+
@include.all?{ |s| entry_text.include?(s) } &&
|
30
|
+
@exclude.all?{ |s| !entry_text.include?(s) }
|
31
|
+
)
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# Searches starred or unstarred posts
|
2
|
+
class DayOne::StarredSearch < DayOne::SearchEngine
|
3
|
+
|
4
|
+
# No-argument initializer, sets default ivars.
|
5
|
+
def initialize
|
6
|
+
@is = nil
|
7
|
+
end
|
8
|
+
|
9
|
+
# Posts must be starred true or false.
|
10
|
+
def is bool
|
11
|
+
@is = bool
|
12
|
+
end
|
13
|
+
|
14
|
+
# Unset search criterion
|
15
|
+
def unset
|
16
|
+
@is = nil
|
17
|
+
end
|
18
|
+
|
19
|
+
# Does this search widget match the starred value of the given string?
|
20
|
+
# @returns [Boolean] Whether it matches or not
|
21
|
+
def matches? string
|
22
|
+
return true if @is.nil?
|
23
|
+
|
24
|
+
starred_string = string[%r|<key>Starred</key>\s+<(.*)/>|m,1]
|
25
|
+
|
26
|
+
return (starred_string &&
|
27
|
+
(starred_string == "true") == @is
|
28
|
+
)
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Searches the tags of a post
|
2
|
+
class DayOne::TagSearch < DayOne::SearchEngine
|
3
|
+
|
4
|
+
# No-argument initializer, sets default ivars.
|
5
|
+
def initialize
|
6
|
+
@include = []
|
7
|
+
@exclude = []
|
8
|
+
end
|
9
|
+
|
10
|
+
# Posts must have the following tag.
|
11
|
+
def include string
|
12
|
+
@include << to_tag(string)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Posts cannot have the following tag.
|
16
|
+
def exclude string
|
17
|
+
@exclude << to_tag(string)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Does this search widget match the tags of the given string?
|
21
|
+
# @returns [Boolean] Whether it matches or not
|
22
|
+
def matches? string
|
23
|
+
tag_string = string[%r|<key>Tags</key>\s+<array>(.*?)</array>|m,1]
|
24
|
+
|
25
|
+
# Edge case: no tags
|
26
|
+
return true if @include.empty? && tag_string.nil?
|
27
|
+
|
28
|
+
return (tag_string &&
|
29
|
+
@include.all?{ |s| tag_string.include?(s) } &&
|
30
|
+
@exclude.all?{ |s| !tag_string.include?(s) }
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
def to_tag s
|
36
|
+
"<string>#{s}</string>"
|
37
|
+
end
|
38
|
+
end
|
data/rb-dayone.gemspec
CHANGED
@@ -5,7 +5,7 @@ Gem::Specification.new do |s|
|
|
5
5
|
s.version = File.read('version.txt')
|
6
6
|
|
7
7
|
s.summary = "Create DayOne journal entries in ruby."
|
8
|
-
s.description = "Create or search [DayOne](http://www.dayoneapp.com) journal entries simply and easily in ruby.
|
8
|
+
s.description = "Create or search [DayOne](http://www.dayoneapp.com) journal entries simply and easily in ruby."
|
9
9
|
|
10
10
|
s.author = 'Jan-Yves Ruzicka'
|
11
11
|
s.email = 'janyves.ruzicka@gmail.com'
|
@@ -18,8 +18,8 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.executables << 'dayone'
|
19
19
|
|
20
20
|
|
21
|
-
s.add_runtime_dependency 'builder', '~>
|
21
|
+
s.add_runtime_dependency 'builder', '~> 3.1.0'
|
22
22
|
s.add_runtime_dependency 'commander', '~> 4.1.2'
|
23
|
-
s.add_runtime_dependency 'libxml-ruby', '~> 2.
|
24
|
-
s.add_runtime_dependency 'nokogiri', '~> 1.
|
23
|
+
s.add_runtime_dependency 'libxml-ruby', '~> 2.7.0'
|
24
|
+
s.add_runtime_dependency 'nokogiri', '~> 1.6.0'
|
25
25
|
end
|
data/version.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.7.1
|
metadata
CHANGED
@@ -1,62 +1,73 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rb-dayone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.7.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jan-Yves Ruzicka
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-01-14 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: builder
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
19
|
+
version: 3.1.0
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.1.0
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: commander
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
31
|
- - ~>
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: 4.1.2
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 4.1.2
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
42
|
name: libxml-ruby
|
38
|
-
requirement:
|
39
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
45
|
- - ~>
|
42
46
|
- !ruby/object:Gem::Version
|
43
|
-
version: 2.
|
47
|
+
version: 2.7.0
|
44
48
|
type: :runtime
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.7.0
|
47
55
|
- !ruby/object:Gem::Dependency
|
48
56
|
name: nokogiri
|
49
|
-
requirement:
|
50
|
-
none: false
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
51
58
|
requirements:
|
52
59
|
- - ~>
|
53
60
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
61
|
+
version: 1.6.0
|
55
62
|
type: :runtime
|
56
63
|
prerelease: false
|
57
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.6.0
|
58
69
|
description: Create or search [DayOne](http://www.dayoneapp.com) journal entries simply
|
59
|
-
and easily in ruby.
|
70
|
+
and easily in ruby.
|
60
71
|
email: janyves.ruzicka@gmail.com
|
61
72
|
executables:
|
62
73
|
- dayone
|
@@ -74,6 +85,11 @@ files:
|
|
74
85
|
- lib/rb-dayone/location.rb
|
75
86
|
- lib/rb-dayone/plist_reader.rb
|
76
87
|
- lib/rb-dayone/search.rb
|
88
|
+
- lib/rb-dayone/search_engine.rb
|
89
|
+
- lib/rb-dayone/search_engines/creation_date_search.rb
|
90
|
+
- lib/rb-dayone/search_engines/entry_text_search.rb
|
91
|
+
- lib/rb-dayone/search_engines/starred_search.rb
|
92
|
+
- lib/rb-dayone/search_engines/tag_search.rb
|
77
93
|
- Manifest
|
78
94
|
- Rakefile
|
79
95
|
- rb-dayone.gemspec
|
@@ -81,27 +97,26 @@ files:
|
|
81
97
|
- version.txt
|
82
98
|
homepage: https://github.com/jyruzicka/rb-dayone
|
83
99
|
licenses: []
|
100
|
+
metadata: {}
|
84
101
|
post_install_message:
|
85
102
|
rdoc_options: []
|
86
103
|
require_paths:
|
87
104
|
- lib
|
88
105
|
- lib
|
89
106
|
required_ruby_version: !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
107
|
requirements:
|
92
108
|
- - ! '>='
|
93
109
|
- !ruby/object:Gem::Version
|
94
110
|
version: '0'
|
95
111
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
|
-
none: false
|
97
112
|
requirements:
|
98
113
|
- - ! '>='
|
99
114
|
- !ruby/object:Gem::Version
|
100
115
|
version: '0'
|
101
116
|
requirements: []
|
102
117
|
rubyforge_project:
|
103
|
-
rubygems_version: 1.
|
118
|
+
rubygems_version: 2.1.0
|
104
119
|
signing_key:
|
105
|
-
specification_version:
|
120
|
+
specification_version: 4
|
106
121
|
summary: Create DayOne journal entries in ruby.
|
107
122
|
test_files: []
|