rdayone 0.2.0 → 0.3.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/.travis.yml CHANGED
@@ -2,4 +2,7 @@ language: ruby
2
2
  rvm:
3
3
  - 1.9.2
4
4
  - 1.9.3
5
+ - rbx
6
+ - 1.8.7
7
+ - jruby
5
8
  script: bundle exec rspec spec
data/README.md CHANGED
@@ -27,10 +27,16 @@ journal = Rdayone::Journal.new("/path/to/Journal.dayone")
27
27
  journal.entries # An Enumerable array like object that contains all your entries
28
28
  ```
29
29
 
30
- ## NOTE
30
+ ## Supported features
31
31
 
32
- This is a *very* early release. Entries currently contain the entry text, date and paths
33
- to related photos only.
32
+ * Basic entry data - text, creation date and the photo if one exists.
33
+ * Entry location data
34
+ * Sorting of entry data (default is ascending date order - a method is
35
+ supplied to sort by descending date order)
36
+
37
+ ## Supported rubies
38
+
39
+ 1.8.7, 1.9.2, rbx and jruby
34
40
 
35
41
  ## Contributing
36
42
 
data/lib/rdayone/entry.rb CHANGED
@@ -8,12 +8,16 @@ module Rdayone
8
8
  @plist_hash = plist_hash
9
9
  @photo = photo
10
10
  @attribute_mappings = {
11
- text: "Entry Text",
12
- creation_date: "Creation Date",
13
- identifier: "UUID"
11
+ :text => "Entry Text",
12
+ :creation_date => "Creation Date",
13
+ :identifier => "UUID"
14
14
  }
15
15
  end
16
16
 
17
+ def <=>(other)
18
+ self.creation_date <=> other.creation_date
19
+ end
20
+
17
21
  def location
18
22
  Location.new(@plist_hash["Location"])
19
23
  end
@@ -24,6 +24,10 @@ module Rdayone
24
24
 
25
25
  alias :[] :fetch
26
26
 
27
+ def sort_desc
28
+ sort { |e1, e2| e2.creation_date <=> e1.creation_date }
29
+ end
30
+
27
31
  def each
28
32
  (0..@entry_paths.length - 1).each do |index|
29
33
  yield self.fetch(index)
@@ -7,10 +7,10 @@ module Rdayone
7
7
  def initialize(plist_hash)
8
8
  @plist_hash = plist_hash
9
9
  @attribute_mappings = {
10
- latitude: "Latitude",
11
- longitude: "Longitude",
12
- place_name: "Place Name",
13
- locality: "Locality"
10
+ :latitude => "Latitude",
11
+ :longitude => "Longitude",
12
+ :place_name => "Place Name",
13
+ :locality => "Locality"
14
14
  }
15
15
  end
16
16
  end
@@ -1,3 +1,3 @@
1
1
  module Rdayone
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -0,0 +1,42 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>Creation Date</key>
6
+ <date>2012-08-07T08:44:28Z</date>
7
+ <key>Entry Text</key>
8
+ <string>Took a wander around the Mall on the way to work. This is the back of Horse Guards</string>
9
+ <key>Location</key>
10
+ <dict>
11
+ <key>Administrative Area</key>
12
+ <string>England</string>
13
+ <key>Country</key>
14
+ <string>United Kingdom</string>
15
+ <key>Latitude</key>
16
+ <real>51.505845000000001</real>
17
+ <key>Locality</key>
18
+ <string>London</string>
19
+ <key>Longitude</key>
20
+ <real>-0.1308377</real>
21
+ <key>Place Name</key>
22
+ <string>The Mall</string>
23
+ <key>State</key>
24
+ <string>manual</string>
25
+ </dict>
26
+ <key>Starred</key>
27
+ <false/>
28
+ <key>UUID</key>
29
+ <string>1A80AAD1BC71440891993A4637DBCB1E</string>
30
+ <key>Weather</key>
31
+ <dict>
32
+ <key>Celsius</key>
33
+ <string>15</string>
34
+ <key>Description</key>
35
+ <string>Partly Cloudy</string>
36
+ <key>Fahrenheit</key>
37
+ <string>59</string>
38
+ <key>IconName</key>
39
+ <string>pcloudy.png</string>
40
+ </dict>
41
+ </dict>
42
+ </plist>
@@ -31,12 +31,24 @@ describe Rdayone::EntryList do
31
31
  it "implements each" do
32
32
  entries = []
33
33
  subject.each { |e| entries << e }
34
- expect(entries.count).to eq(1)
34
+ expect(entries.count).to eq(2)
35
35
  end
36
36
 
37
37
  it "is Enumerable" do
38
38
  mapresult = subject.map { |e| e.text }
39
- expect(mapresult).to eq(["Something cool happened in London"])
39
+ expect(mapresult[0]).to eq("Something cool happened in London")
40
+ end
41
+
42
+ it "is sortable in ascending creation date order" do
43
+ sorted = subject.sort
44
+ expect(sorted[0].identifier).to eq("1A80AAD1BC71440891993A4637DBCB1E")
45
+ expect(sorted[1].identifier).to eq("02B82925942747709E1DF0518A650E1B")
46
+ end
47
+
48
+ it "is sortable in descending creation date order" do
49
+ sorted = subject.sort_desc
50
+ expect(sorted[0].identifier).to eq("02B82925942747709E1DF0518A650E1B")
51
+ expect(sorted[1].identifier).to eq("1A80AAD1BC71440891993A4637DBCB1E")
40
52
  end
41
53
  end
42
54
 
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,5 @@
1
- require_relative '../lib/rdayone'
1
+ $:.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'rdayone'
2
3
  require 'rspec'
3
4
 
4
5
  def entry_fixture_paths
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdayone
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-23 00:00:00.000000000 Z
12
+ date: 2012-08-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: plist
@@ -83,6 +83,7 @@ files:
83
83
  - lib/rdayone/version.rb
84
84
  - rdayone.gemspec
85
85
  - spec/fixtures/entries/02B82925942747709E1DF0518A650E1B.doentry
86
+ - spec/fixtures/entries/1A80AAD1BC71440891993A4637DBCB1E.doentry
86
87
  - spec/fixtures/photos/02B82925942747709E1DF0518A650E1B.jpg
87
88
  - spec/rdayone/entry_list_spec.rb
88
89
  - spec/rdayone/entry_spec.rb
@@ -104,7 +105,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
104
105
  version: '0'
105
106
  segments:
106
107
  - 0
107
- hash: -1736936606859133392
108
+ hash: -2211371097992317125
108
109
  required_rubygems_version: !ruby/object:Gem::Requirement
109
110
  none: false
110
111
  requirements:
@@ -113,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
114
  version: '0'
114
115
  segments:
115
116
  - 0
116
- hash: -1736936606859133392
117
+ hash: -2211371097992317125
117
118
  requirements: []
118
119
  rubyforge_project:
119
120
  rubygems_version: 1.8.23
@@ -122,6 +123,7 @@ specification_version: 3
122
123
  summary: Access Day One journals from ruby.
123
124
  test_files:
124
125
  - spec/fixtures/entries/02B82925942747709E1DF0518A650E1B.doentry
126
+ - spec/fixtures/entries/1A80AAD1BC71440891993A4637DBCB1E.doentry
125
127
  - spec/fixtures/photos/02B82925942747709E1DF0518A650E1B.jpg
126
128
  - spec/rdayone/entry_list_spec.rb
127
129
  - spec/rdayone/entry_spec.rb