rb-dayone 0.4.1 → 0.6.0
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.
- data/.gitignore +20 -0
- data/Gemfile +0 -1
- data/Gemfile.lock +16 -0
- data/Manifest +11 -17
- data/README.md +89 -37
- data/bin/dayone +30 -143
- data/lib/rb-dayone.rb +17 -12
- data/lib/rb-dayone/entry.rb +41 -11
- data/lib/rb-dayone/entry_importer.rb +51 -36
- data/lib/rb-dayone/location.rb +74 -0
- data/lib/rb-dayone/plist_reader.rb +1 -3
- data/lib/rb-dayone/search.rb +15 -7
- data/rb-dayone.gemspec +5 -17
- data/version.txt +1 -1
- metadata +20 -43
- data/History.rdoc +0 -76
- data/spec/data/entries/748AD5D252F44149920485B0CEA478E3.doentry +0 -14
- data/spec/data/entries/F13723CDFD454481B24312DCD627BFD7.doentry +0 -14
- data/spec/data/foo.doentry +0 -1
- data/spec/data/locations/location-auto/location +0 -1
- data/spec/data/locations/location-specified/location +0 -1
- data/spec/data/sample.doentry +0 -12
- data/spec/data/sample.plist +0 -0
- data/spec/data/utf.doentry +0 -12
- data/spec/dayone_spec.rb +0 -34
- data/spec/entry_importer_spec.rb +0 -69
- data/spec/entry_spec.rb +0 -57
- data/spec/plist_reader_spec.rb +0 -18
- data/spec/search_spec.rb +0 -35
- data/spec/spec_helper.rb +0 -15
data/lib/rb-dayone/entry.rb
CHANGED
@@ -1,6 +1,3 @@
|
|
1
|
-
require 'libxml'
|
2
|
-
require 'fileutils'
|
3
|
-
|
4
1
|
# A text-only journal entry for DayOne.
|
5
2
|
class DayOne::Entry
|
6
3
|
|
@@ -21,6 +18,12 @@ class DayOne::Entry
|
|
21
18
|
|
22
19
|
# Path to the entry image
|
23
20
|
attr_accessor :image
|
21
|
+
|
22
|
+
# An entry's tags
|
23
|
+
attr_accessor :tags
|
24
|
+
|
25
|
+
# The location of the entry.
|
26
|
+
attr_accessor :location
|
24
27
|
|
25
28
|
# The PList doctype, used for XML export
|
26
29
|
DOCTYPE = [:DOCTYPE, :plist, :PUBLIC, "-//Apple//DTD PLIST 1.0//EN", "http://www.apple.com/DTDs/PropertyList-1.0.dtd"]
|
@@ -35,6 +38,8 @@ class DayOne::Entry
|
|
35
38
|
@starred = false
|
36
39
|
@entry_text = entry_text
|
37
40
|
@saved = false
|
41
|
+
@tags = []
|
42
|
+
@location = DayOne::Location.new hsh.delete(:location)
|
38
43
|
|
39
44
|
hsh.each do |k,v|
|
40
45
|
setter = "#{k}="
|
@@ -48,6 +53,26 @@ class DayOne::Entry
|
|
48
53
|
def uuid
|
49
54
|
@uuid ||= `uuidgen`.gsub('-','').strip
|
50
55
|
end
|
56
|
+
|
57
|
+
# Add a tag to the entry
|
58
|
+
# @param [String] str The string tag to add to the list.
|
59
|
+
def tag str
|
60
|
+
@tags << str.to_s
|
61
|
+
end
|
62
|
+
|
63
|
+
# Searches the entry text for tags (#foo) and adds
|
64
|
+
# them to the entry's tags. Will avoid adding punctuation
|
65
|
+
# to the end of the tag (so e.g. '#foo.' will detect as #foo).
|
66
|
+
def add_tags_from_entry_text
|
67
|
+
@entry_text.scan(/(?<=[ \t])#(\S+)/) do |m|
|
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
|
75
|
+
end
|
51
76
|
|
52
77
|
# The same as calling Entry#saved
|
53
78
|
def saved?
|
@@ -67,6 +92,17 @@ class DayOne::Entry
|
|
67
92
|
|
68
93
|
builder.key 'Entry Text'
|
69
94
|
builder.string entry_text
|
95
|
+
|
96
|
+
if !tags.empty?
|
97
|
+
builder.key 'Tags'
|
98
|
+
builder.array do
|
99
|
+
tags.each do |t|
|
100
|
+
builder.string t
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
location.to_xml(builder) unless location.left_blank?
|
70
106
|
|
71
107
|
builder.key 'Starred'
|
72
108
|
if starred
|
@@ -100,14 +136,8 @@ class DayOne::Entry
|
|
100
136
|
|
101
137
|
# Check to make sure that we output valid xml
|
102
138
|
def xml_valid?
|
103
|
-
|
104
|
-
|
105
|
-
LibXML::XML::Parser.string(to_xml).parse
|
106
|
-
rescue LibXML::XML::Error
|
107
|
-
return false
|
108
|
-
else
|
109
|
-
return true
|
110
|
-
end
|
139
|
+
doc = Nokogiri::XML(to_xml)
|
140
|
+
doc.errors.empty?
|
111
141
|
end
|
112
142
|
|
113
143
|
# Assign an image to the entry
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'libxml'
|
2
|
-
|
3
1
|
# Imports DayOne entries from XML files or plain text
|
4
2
|
class DayOne::EntryImporter
|
5
3
|
|
@@ -12,16 +10,16 @@ class DayOne::EntryImporter
|
|
12
10
|
# Create a new entry based on a string. To import from a file,
|
13
11
|
# use EntryImporter.from_file.
|
14
12
|
# @param [String] data The raw data for the importer to process
|
15
|
-
|
13
|
+
# @param [String] file The file this data came from. Defaults to +nil+.
|
14
|
+
def initialize data, file=nil
|
16
15
|
@data = data
|
16
|
+
@file = file
|
17
17
|
end
|
18
18
|
|
19
19
|
# Create a new entry from a file
|
20
20
|
# @param [String] file The file to import
|
21
21
|
def self.from_file file
|
22
|
-
|
23
|
-
ei.file = file
|
24
|
-
ei
|
22
|
+
new(File.read(file), file)
|
25
23
|
end
|
26
24
|
|
27
25
|
# Access entry data by key
|
@@ -34,35 +32,7 @@ class DayOne::EntryImporter
|
|
34
32
|
# Generate and return the data contained within the doentry file, as a hash
|
35
33
|
# @return [Hash] the processed data
|
36
34
|
def processed_data
|
37
|
-
|
38
|
-
@processed_data = {}
|
39
|
-
LibXML::XML::Error.set_handler(&LibXML::XML::Error::QUIET_HANDLER)
|
40
|
-
|
41
|
-
begin
|
42
|
-
document = LibXML::XML::Parser.string(data).parse
|
43
|
-
key = nil
|
44
|
-
|
45
|
-
document.find('//plist/dict/*').each do |elem|
|
46
|
-
case elem.name
|
47
|
-
when 'key'
|
48
|
-
key = elem.content
|
49
|
-
when 'date'
|
50
|
-
if elem.content =~ /(\d+)-(\d+)-(\d+)T(\d+):(\d+):(\d+)Z/
|
51
|
-
@processed_data[key] = Time.new($1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, $6.to_i)
|
52
|
-
end
|
53
|
-
when 'true'
|
54
|
-
@processed_data[key] = true
|
55
|
-
when 'false'
|
56
|
-
@processed_data[key] = false
|
57
|
-
else
|
58
|
-
@processed_data[key] = elem.content
|
59
|
-
end
|
60
|
-
end
|
61
|
-
rescue LibXML::XML::Error
|
62
|
-
$stderr.puts "Error parsing #{file ? "file #{file}" : "data"}. Skipping."
|
63
|
-
end
|
64
|
-
end
|
65
|
-
@processed_data
|
35
|
+
@processed_data ||= process_dict(Nokogiri::XML(data).xpath('//plist/dict').first)
|
66
36
|
end
|
67
37
|
|
68
38
|
# Generate an entry from this importer
|
@@ -72,7 +42,52 @@ class DayOne::EntryImporter
|
|
72
42
|
self['Entry Text'],
|
73
43
|
starred: self['Starred'],
|
74
44
|
creation_date: self['Creation Date'],
|
75
|
-
saved: true
|
45
|
+
saved: true,
|
46
|
+
tags: self['Tags']||[],
|
47
|
+
location: self['Location']||{}
|
76
48
|
)
|
77
49
|
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
# Process an XML tag. Returns a the value of the tag as a ruby value.
|
54
|
+
# @param [Nokogiri::XML::Element] element The element to process
|
55
|
+
# @return The values contained within the element
|
56
|
+
def process_value element
|
57
|
+
case element.name
|
58
|
+
when 'date'
|
59
|
+
if element.content =~ /(\d+)-(\d+)-(\d+)T(\d+):(\d+):(\d+)Z/
|
60
|
+
Time.utc($1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, $6.to_i)
|
61
|
+
end
|
62
|
+
when 'string'
|
63
|
+
element.content
|
64
|
+
when 'real'
|
65
|
+
element.content.to_f
|
66
|
+
when 'true'
|
67
|
+
true
|
68
|
+
when 'false'
|
69
|
+
false
|
70
|
+
when 'array'
|
71
|
+
element.xpath('*').map{ |e| process_value(e) }
|
72
|
+
when 'dict'
|
73
|
+
process_dict(element)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
# Process an XML dict element. Returns a hash of values
|
78
|
+
# @param [Nokogiri::XML::Element] element The dictionary element to process
|
79
|
+
# @return [Hash] The values contained within the element
|
80
|
+
def process_dict dict
|
81
|
+
processed_data = {}
|
82
|
+
key = nil
|
83
|
+
|
84
|
+
dict.xpath('*').each do |elem|
|
85
|
+
if elem.name == 'key'
|
86
|
+
key = elem.content
|
87
|
+
else
|
88
|
+
processed_data[key] = process_value(elem)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
processed_data
|
92
|
+
end
|
78
93
|
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# This represents a location as recognised by DayOne.app
|
2
|
+
class DayOne::Location
|
3
|
+
|
4
|
+
# An array of components that make up the location
|
5
|
+
STRING_COMPONENTS = [:country, :locality, :administrative_area, :place_name]
|
6
|
+
REAL_COMPONENTS = [:latitude, :longitude]
|
7
|
+
ALL_COMPONENTS = STRING_COMPONENTS + REAL_COMPONENTS
|
8
|
+
|
9
|
+
# These are all instance variables
|
10
|
+
attr_accessor *ALL_COMPONENTS
|
11
|
+
|
12
|
+
# Initialize the location with a hash of values.
|
13
|
+
# @param [Hash] hsh The values to be assigned on initalization
|
14
|
+
def initialize hsh=nil
|
15
|
+
if hsh
|
16
|
+
hsh.each do |k,v|
|
17
|
+
setter = "#{symbol(k)}="
|
18
|
+
send(setter,v) if respond_to?(setter)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# Has this location been left blank?
|
24
|
+
# @return [bool] If any value in this instance is not nil or blank
|
25
|
+
def left_blank?
|
26
|
+
STRING_COMPONENTS.all?{ |s| [nil,''].include?(send(s)) } &&
|
27
|
+
REAL_COMPONENTS.all?{ |s| [nil,0.0].include?(send(s)) }
|
28
|
+
end
|
29
|
+
|
30
|
+
# Converts the location to xml. A +builder+ must be supplied, and
|
31
|
+
# this method will run operations on the builder and return
|
32
|
+
# a boolean indicating its success.
|
33
|
+
# @param [Builder] builder The builder this object will be put in
|
34
|
+
# @return [bool] The success of the operation
|
35
|
+
def to_xml builder
|
36
|
+
builder.key 'Location'
|
37
|
+
builder.dict do
|
38
|
+
STRING_COMPONENTS.each do |s|
|
39
|
+
builder.key xml_string(s)
|
40
|
+
builder.string send(s)
|
41
|
+
end
|
42
|
+
|
43
|
+
REAL_COMPONENTS.each do |s|
|
44
|
+
builder.key xml_string(s)
|
45
|
+
builder.real send(s)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
true
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
# Gives the XML string for a particular symbol
|
54
|
+
# @param [Symbol] symbol The symbol to find the XML string for
|
55
|
+
# @return [String] The string for this symbol
|
56
|
+
def xml_string symbol
|
57
|
+
if symbol.is_a? String
|
58
|
+
symbol
|
59
|
+
else
|
60
|
+
symbol.to_s.gsub('_',' ').gsub(/\b./, &:upcase)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# Gives the symbol for a particular XML string
|
65
|
+
# @param [String] string The XML string to find the symbol for
|
66
|
+
# @return [Symbol] The symbol for this symbol
|
67
|
+
def symbol xml_string
|
68
|
+
if xml_string.is_a? Symbol
|
69
|
+
xml_string
|
70
|
+
else
|
71
|
+
xml_string.downcase.gsub(' ','_').intern
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'nokogiri'
|
2
|
-
|
3
1
|
# The PListReader is a class that reads PLists.
|
4
2
|
# It is used to read the DayOne preferences PList.
|
5
3
|
class DayOne::PlistReader
|
@@ -59,7 +57,7 @@ class DayOne::PlistReader
|
|
59
57
|
# @return [String] the path to the current DayOne journal location
|
60
58
|
def journal_location
|
61
59
|
key('JournalPackageURL') || # First, try the 1.7 location...
|
62
|
-
key('NSNavLastRootDirectory')
|
60
|
+
key('NSNavLastRootDirectory') # Then try the pre-1.7 location
|
63
61
|
end
|
64
62
|
|
65
63
|
# This allows us to access the body's method as well as the reader's.
|
data/lib/rb-dayone/search.rb
CHANGED
@@ -8,20 +8,27 @@ class DayOne::Search
|
|
8
8
|
|
9
9
|
# The entry must be starred
|
10
10
|
attr_accessor :starred
|
11
|
+
|
12
|
+
# The entry must have this tag
|
13
|
+
attr_accessor :tag
|
11
14
|
|
12
|
-
# Initialize the search. Currently you can
|
13
|
-
#
|
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.
|
14
21
|
# @param [Hash] hash a hash of search criteria, including:
|
15
|
-
# * +
|
16
|
-
# * +
|
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
|
17
25
|
def initialize hash={}
|
18
|
-
@entry_text = ''
|
19
26
|
hash.each do |k,v|
|
20
27
|
setter = "#{k}="
|
21
28
|
self.send(setter, v) if self.respond_to?(setter)
|
22
29
|
end
|
23
30
|
end
|
24
|
-
|
31
|
+
|
25
32
|
# Fetch the results by searching. Uses a cached version of the DayOne database.
|
26
33
|
# @return [Array] all entries matching your results
|
27
34
|
def results
|
@@ -29,8 +36,9 @@ class DayOne::Search
|
|
29
36
|
@results = []
|
30
37
|
working_results = cache
|
31
38
|
|
32
|
-
working_results = working_results.select{ |e| e.entry_text.include? entry_text } unless entry_text
|
39
|
+
working_results = working_results.select{ |e| e.entry_text.include? entry_text } unless entry_text.nil?
|
33
40
|
working_results = working_results.select{ |e| e.starred == starred } unless starred.nil?
|
41
|
+
working_results = working_results.select{ |e| e.tags.include? tag } unless tag.nil?
|
34
42
|
|
35
43
|
@results = working_results
|
36
44
|
end
|
data/rb-dayone.gemspec
CHANGED
@@ -11,27 +11,15 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.email = 'janyves.ruzicka@gmail.com'
|
12
12
|
s.homepage = 'https://github.com/jyruzicka/rb-dayone'
|
13
13
|
|
14
|
-
s.files = File.read('Manifest').split("\n")
|
14
|
+
s.files = File.read('Manifest').split("\n").select{ |l| !l.start_with?('#') && l != ''}
|
15
15
|
s.require_paths << 'lib'
|
16
|
-
s.bindir = 'bin'
|
17
|
-
s.executables << 'dayone'
|
18
16
|
s.extra_rdoc_files = ['README.md']
|
17
|
+
|
18
|
+
s.executables << 'dayone'
|
19
|
+
|
19
20
|
|
20
21
|
s.add_runtime_dependency 'builder', '~> 2.0'
|
21
22
|
s.add_runtime_dependency 'commander', '~> 4.1.2'
|
22
23
|
s.add_runtime_dependency 'libxml-ruby', '~> 2.3.3'
|
23
|
-
|
24
|
-
s.post_install_message = <<-end
|
25
|
-
#{'-'*80}
|
26
|
-
Hi there! If you're upgrading from version <= 0.2.0 of this gem, I've been a
|
27
|
-
horrid dev and let a few bugs through in my XML building code. In order to fix
|
28
|
-
this, you can run `dayone verify` to see if your database needs fixing. If any
|
29
|
-
of the errors are my fault, you should be able to fix them with `dayone
|
30
|
-
repair`.
|
31
|
-
|
32
|
-
Sorry if this has caused any inconvenience. If you still have trouble repairing
|
33
|
-
any of your .doentry files, send me an email and I'll see what I can do to
|
34
|
-
help.
|
35
|
-
#{'-'*80}
|
36
|
-
end
|
24
|
+
s.add_runtime_dependency 'nokogiri', '~> 1.5.0'
|
37
25
|
end
|
data/version.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rb-dayone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-02-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: builder
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70362709355040 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,15 +21,10 @@ dependencies:
|
|
21
21
|
version: '2.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '2.0'
|
24
|
+
version_requirements: *70362709355040
|
30
25
|
- !ruby/object:Gem::Dependency
|
31
26
|
name: commander
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
27
|
+
requirement: &70362709354080 !ruby/object:Gem::Requirement
|
33
28
|
none: false
|
34
29
|
requirements:
|
35
30
|
- - ~>
|
@@ -37,15 +32,10 @@ dependencies:
|
|
37
32
|
version: 4.1.2
|
38
33
|
type: :runtime
|
39
34
|
prerelease: false
|
40
|
-
version_requirements:
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 4.1.2
|
35
|
+
version_requirements: *70362709354080
|
46
36
|
- !ruby/object:Gem::Dependency
|
47
37
|
name: libxml-ruby
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirement: &70362709352740 !ruby/object:Gem::Requirement
|
49
39
|
none: false
|
50
40
|
requirements:
|
51
41
|
- - ~>
|
@@ -53,12 +43,18 @@ dependencies:
|
|
53
43
|
version: 2.3.3
|
54
44
|
type: :runtime
|
55
45
|
prerelease: false
|
56
|
-
version_requirements:
|
46
|
+
version_requirements: *70362709352740
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: nokogiri
|
49
|
+
requirement: &70362709350740 !ruby/object:Gem::Requirement
|
57
50
|
none: false
|
58
51
|
requirements:
|
59
52
|
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
54
|
+
version: 1.5.0
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70362709350740
|
62
58
|
description: Create or search [DayOne](http://www.dayoneapp.com) journal entries simply
|
63
59
|
and easily in ruby. Currently only supports text entries, image entries to come.
|
64
60
|
email: janyves.ruzicka@gmail.com
|
@@ -68,42 +64,24 @@ extensions: []
|
|
68
64
|
extra_rdoc_files:
|
69
65
|
- README.md
|
70
66
|
files:
|
67
|
+
- .gitignore
|
71
68
|
- bin/dayone
|
72
69
|
- Gemfile
|
73
|
-
-
|
70
|
+
- Gemfile.lock
|
74
71
|
- lib/rb-dayone.rb
|
75
72
|
- lib/rb-dayone/entry.rb
|
76
73
|
- lib/rb-dayone/entry_importer.rb
|
74
|
+
- lib/rb-dayone/location.rb
|
77
75
|
- lib/rb-dayone/plist_reader.rb
|
78
76
|
- lib/rb-dayone/search.rb
|
79
77
|
- Manifest
|
80
78
|
- Rakefile
|
81
79
|
- rb-dayone.gemspec
|
82
80
|
- README.md
|
83
|
-
- spec/data/entries/748AD5D252F44149920485B0CEA478E3.doentry
|
84
|
-
- spec/data/entries/F13723CDFD454481B24312DCD627BFD7.doentry
|
85
|
-
- spec/data/foo.doentry
|
86
|
-
- spec/data/locations/location-auto/location
|
87
|
-
- spec/data/locations/location-specified/location
|
88
|
-
- spec/data/sample.doentry
|
89
|
-
- spec/data/sample.plist
|
90
|
-
- spec/data/utf.doentry
|
91
|
-
- spec/dayone_spec.rb
|
92
|
-
- spec/entry_importer_spec.rb
|
93
|
-
- spec/entry_spec.rb
|
94
|
-
- spec/plist_reader_spec.rb
|
95
|
-
- spec/search_spec.rb
|
96
|
-
- spec/spec_helper.rb
|
97
81
|
- version.txt
|
98
82
|
homepage: https://github.com/jyruzicka/rb-dayone
|
99
83
|
licenses: []
|
100
|
-
post_install_message:
|
101
|
-
there! If you're upgrading from version <= 0.2.0 of this gem, I've been a\nhorrid
|
102
|
-
dev and let a few bugs through in my XML building code. In order to fix\nthis, you
|
103
|
-
can run `dayone verify` to see if your database needs fixing. If any \nof the errors
|
104
|
-
are my fault, you should be able to fix them with `dayone\nrepair`.\n\nSorry if
|
105
|
-
this has caused any inconvenience. If you still have trouble repairing\nany of your
|
106
|
-
.doentry files, send me an email and I'll see what I can do to\nhelp.\n--------------------------------------------------------------------------------\n"
|
84
|
+
post_install_message:
|
107
85
|
rdoc_options: []
|
108
86
|
require_paths:
|
109
87
|
- lib
|
@@ -122,9 +100,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
122
100
|
version: '0'
|
123
101
|
requirements: []
|
124
102
|
rubyforge_project:
|
125
|
-
rubygems_version: 1.8.
|
103
|
+
rubygems_version: 1.8.10
|
126
104
|
signing_key:
|
127
105
|
specification_version: 3
|
128
106
|
summary: Create DayOne journal entries in ruby.
|
129
107
|
test_files: []
|
130
|
-
has_rdoc:
|