rb-dayone 0.6.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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 :rubygems
1
+ source "https://www.rubygems.org"
2
2
 
3
- gem 'builder', '~> 2.0'
4
- gem 'commander', '~> 4.1.2'
5
- gem 'nokogiri', '~> 1.5.0'
3
+ gem "builder", "~> 3.1.0"
4
+ gem "commander", "~> 4.1.2"
5
+ gem "nokogiri", "~> 1.6.0"
@@ -1,16 +1,18 @@
1
1
  GEM
2
- remote: http://rubygems.org/
2
+ remote: https://www.rubygems.org/
3
3
  specs:
4
- builder (2.1.2)
5
- commander (4.1.2)
4
+ builder (3.1.4)
5
+ commander (4.1.5)
6
6
  highline (~> 1.6.11)
7
- highline (1.6.13)
8
- nokogiri (1.5.6)
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 (~> 2.0)
16
+ builder (~> 3.1.0)
15
17
  commander (~> 4.1.2)
16
- nokogiri (~> 1.5.0)
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
@@ -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 DayONe journal location
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", "*.rb")].each{ |f| require f }
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')
@@ -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
- # 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).
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])#(\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
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
- file_location = File.join(DayOne::journal_location,'entries',"#{uuid}.doentry")
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
- 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
+ Time.parse(element.content)
62
63
  when 'string'
63
64
  element.content
64
65
  when 'real'
@@ -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
- # simple use Search#[] to access results.
3
+ # use Search#[] to access results.
4
4
  class DayOne::Search
5
-
6
- # The entry must include this text
7
- attr_accessor :entry_text
8
-
9
- # The entry must be starred
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. Uses a cached version of the DayOne database.
12
+ # Fetch the results by searching.
33
13
  # @return [Array] all entries matching your results
34
14
  def results
35
15
  if !@results
36
- @results = []
37
- working_results = cache
16
+ # Fetch files + data
17
+ @results = DayOne::entries.each_with_object({}){ |file, hash| hash[file] = File.read(file) }
38
18
 
39
- working_results = working_results.select{ |e| e.entry_text.include? entry_text } unless entry_text.nil?
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?
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
- private
56
-
57
- # Caches all journal entries for us. On first running, will load everything
58
- # from file. After this, will just refer back to the cache.
59
- # @return [Array] an array of DayOne::Entry objects
60
- def cache
61
- if !@cache
62
- entries = File.join(DayOne::journal_location, 'entries', '*.doentry')
63
- @cache = Dir[entries].map{ |e| DayOne::EntryImporter::from_file(e).to_entry }
64
- end
65
- @cache
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,7 @@
1
+ # Abstract superclass for a number of
2
+ # search routines
3
+ class DayOne::SearchEngine
4
+ def matches? string
5
+ false
6
+ end
7
+ 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
@@ -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. Currently only supports text entries, image entries to come."
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', '~> 2.0'
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.3.3'
24
- s.add_runtime_dependency 'nokogiri', '~> 1.5.0'
23
+ s.add_runtime_dependency 'libxml-ruby', '~> 2.7.0'
24
+ s.add_runtime_dependency 'nokogiri', '~> 1.6.0'
25
25
  end
@@ -1 +1 @@
1
- 0.6.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.6.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: 2013-02-09 00:00:00.000000000 Z
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: &70362709355040 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
21
- version: '2.0'
19
+ version: 3.1.0
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70362709355040
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: &70362709354080 !ruby/object:Gem::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: *70362709354080
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: &70362709352740 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
45
  - - ~>
42
46
  - !ruby/object:Gem::Version
43
- version: 2.3.3
47
+ version: 2.7.0
44
48
  type: :runtime
45
49
  prerelease: false
46
- version_requirements: *70362709352740
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: &70362709350740 !ruby/object:Gem::Requirement
50
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
59
  - - ~>
53
60
  - !ruby/object:Gem::Version
54
- version: 1.5.0
61
+ version: 1.6.0
55
62
  type: :runtime
56
63
  prerelease: false
57
- version_requirements: *70362709350740
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. Currently only supports text entries, image entries to come.
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.8.10
118
+ rubygems_version: 2.1.0
104
119
  signing_key:
105
- specification_version: 3
120
+ specification_version: 4
106
121
  summary: Create DayOne journal entries in ruby.
107
122
  test_files: []