evernote_utils 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d685d866c342871313bfa2097b429070eb85cf19
4
- data.tar.gz: b9409c88a0a1be45349cf917325748accd29b3bf
3
+ metadata.gz: e326fee20e091ca7e271c3c9451ded1c32905f53
4
+ data.tar.gz: c5b744271ddfa3098621d6b757dff7d6f9e74a8f
5
5
  SHA512:
6
- metadata.gz: d31b657e16fb0d7813c8b6bca8ec57409d45959280d94de99f0db7620157fe108d320fca00873352d8b77bfff08804239f059393b53e48ba530b187b6c1c3b00
7
- data.tar.gz: 864fcfe1cedf797ac4cc7ba59e669aa42f5978dac084cdc4101918f83a119c388472e55ac8a7517d3349945a0933e0b4d3d87014bcc47533a5805f08931cd0ac
6
+ metadata.gz: 5929c1b89f09628a1f6ce1c1e38410436397163e8c770d562495455743dad6b7db74a053148a47ee314a552ce32ae09371b2984c6472fc21040333a9024914cb
7
+ data.tar.gz: df7c88a5509225112d53edf0065b67787e9e07baaf6d3bc23ed80be4e06233bbd551c3456ee223b6b14a5ccfb9878825f19cf52603210f15ae9962b4333e572a
data/README.md CHANGED
@@ -22,7 +22,7 @@ Or install it yourself as:
22
22
 
23
23
  If you don't have your Evernote API Key yet, get it from [Evernote Developers Page](http://dev.evernote.com/doc/).
24
24
 
25
- Note that you should send "Activation Request" to access productionn data. Please check [Frequently Ask Questions - Evernote Developers](http://dev.evernote.com/support/faq.php#activatekey).
25
+ Note that you should send "Activation Request" to access production data. Please check [Frequently Ask Questions - Evernote Developers](http://dev.evernote.com/support/faq.php#activatekey).
26
26
 
27
27
  Then authenticate user's Evernote account via OAuth. Instruction is here: [Getting Started with the Evernote API - Evernote Developers](http://dev.evernote.com/doc/start/ruby.php)
28
28
 
@@ -50,7 +50,12 @@ Then you can access Evernote resources.
50
50
 
51
51
  enutils.notes(words: 'Clojure', limit: 5, order: :updated)
52
52
 
53
- It returns `ENUtils::Note` instances. `ENUtils::Note` is a thin wrapper of `Evernote::EDAM::Type::Tag`.
53
+ It returns `ENUtils::NoteList` instances. You can know total count of search result by calling `ENUtils::NoteList#total_count`
54
+
55
+ enutils.notes(words: 'Clojure', limit: 5, order: :updated).total_count #=> 150
56
+
57
+ `ENUtils::NoteList` is a collection of `ENUtils::Note`. `ENUtils::Note` is a thin wrapper of `Evernote::EDAM::Type::Note`.
58
+
54
59
 
55
60
  And here, `ENUtils#notes` accepts following options:
56
61
 
@@ -80,7 +85,6 @@ These methods return array of `ENUtils::Notebook` and `ENUtils::Tag` respectivel
80
85
  ## Planning to do
81
86
 
82
87
  * relationships: notebook.notes, note.tags, tag.notes
83
- * counting result notes
84
88
 
85
89
 
86
90
  ## Contributing
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = ENUtils::VERSION
9
9
  spec.authors = ["memerelics"]
10
10
  spec.email = ["takuya21hashimoto@gmail.com"]
11
- spec.description = %q{simple wrapper for evernote api}
12
- spec.summary = %q{simple wrapper for evernote api}
11
+ spec.description = %q{A thin OOP-friendly wrapper of Evernote Ruby SDK.}
12
+ spec.summary = %q{A thin OOP-friendly wrapper of Evernote Ruby SDK.}
13
13
  spec.homepage = ""
14
14
  spec.license = "MIT"
15
15
 
@@ -0,0 +1,23 @@
1
+ require "evernote_utils/filter"
2
+
3
+ module ENUtils
4
+ class NoteList < Array
5
+
6
+ attr_reader :core, :options
7
+
8
+ def initialize(core, array, options={})
9
+ @core = core
10
+ @options = options
11
+ super(array)
12
+ end
13
+
14
+ # findNoteCounts returns
15
+ # Evernote::EDAM::NoteStore::NoteCollectionCounts
16
+ # notebookCounts:{"xxxxxxxx-...xxx": 10, ...},
17
+ # tagCounts:{"xxxxxx-...xxxx": 1, ..."}
18
+ def total_count
19
+ counts = core.notestore.findNoteCounts(core.token, NoteFilter.build(options), false)
20
+ counts.notebookCounts.reduce(0){|sum, pair| sum += pair.last }
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,26 @@
1
+ module ENUtils
2
+ class NoteFilter
3
+
4
+ def self.build(options={})
5
+ filter = Evernote::EDAM::NoteStore::NoteFilter.new
6
+ if (notebook = options[:notebook])
7
+ notebook_guid = notebook.is_a?(ENUtils::Notebook) ? notebook.guid : notebook
8
+ filter.notebookGuid = notebook_guid
9
+ end
10
+ if (tags = options[:tags]) || (tag = options[:tag])
11
+ tag_guids = (tags || [tag]).map{|t| t.is_a?(ENUtils::Tag) ? t.guid : t }
12
+ filter.tagGuids = tag_guids
13
+ end
14
+ filter.words = options[:words] if options[:words]
15
+ filter.order = OrderFields[options[:order].to_sym] if available_order?(options[:order])
16
+ filter.ascending = options[:asc] if options[:asc]
17
+ filter
18
+ end
19
+
20
+ def self.available_order?(value)
21
+ return false if value.nil?
22
+ OrderFields.keys.include?(value.to_sym)
23
+ end
24
+
25
+ end
26
+ end
@@ -1,4 +1,6 @@
1
1
  require 'active_support/core_ext/object'
2
+ require "evernote_utils/array"
3
+ require "evernote_utils/filter"
2
4
 
3
5
  module ENUtils
4
6
  class Note < Evernote::EDAM::Type::Note
@@ -40,31 +42,8 @@ module ENUtils
40
42
  def self.where(core, options={})
41
43
  offset = options.delete(:offset) || 0
42
44
  limit = options.delete(:limit) || DEFAULT_LIMIT
43
- core.notestore.findNotes(core.token, build_filter(options), offset, limit)
44
- .notes.map{|n| new(n) }
45
- end
46
-
47
- private
48
-
49
- def self.build_filter(options={})
50
- filter = Evernote::EDAM::NoteStore::NoteFilter.new
51
- if (notebook = options[:notebook])
52
- notebook_guid = notebook.is_a?(ENUtils::Notebook) ? notebook.guid : notebook
53
- filter.notebookGuid = notebook_guid
54
- end
55
- if (tags = options[:tags]) || (tag = options[:tag])
56
- tag_guids = (tags || [tag]).map{|t| t.is_a?(ENUtils::Tag) ? t.guid : t }
57
- filter.tagGuids = tag_guids
58
- end
59
- filter.words = options[:words] if options[:words]
60
- filter.order = OrderFields[options[:order].to_sym] if available_order?(options[:order])
61
- filter.ascending = options[:asc] if options[:asc]
62
- filter
63
- end
64
-
65
- def self.available_order?(value)
66
- return false if value.nil?
67
- OrderFields.keys.include?(value.to_sym)
45
+ result = core.notestore.findNotes(core.token, NoteFilter.build(options), offset, limit).notes.map{|n| new(n) }
46
+ NoteList.new(core, result, options)
68
47
  end
69
48
 
70
49
  end
@@ -1,3 +1,3 @@
1
1
  module ENUtils
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evernote_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - memerelics
@@ -108,7 +108,7 @@ dependencies:
108
108
  - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
- description: simple wrapper for evernote api
111
+ description: A thin OOP-friendly wrapper of Evernote Ruby SDK.
112
112
  email:
113
113
  - takuya21hashimoto@gmail.com
114
114
  executables: []
@@ -122,6 +122,8 @@ files:
122
122
  - Rakefile
123
123
  - evernote_utils.gemspec
124
124
  - lib/evernote_utils.rb
125
+ - lib/evernote_utils/array.rb
126
+ - lib/evernote_utils/filter.rb
125
127
  - lib/evernote_utils/note.rb
126
128
  - lib/evernote_utils/notebook.rb
127
129
  - lib/evernote_utils/tag.rb
@@ -151,7 +153,7 @@ rubyforge_project:
151
153
  rubygems_version: 2.0.14
152
154
  signing_key:
153
155
  specification_version: 4
154
- summary: simple wrapper for evernote api
156
+ summary: A thin OOP-friendly wrapper of Evernote Ruby SDK.
155
157
  test_files:
156
158
  - spec/evernote_utils_spec.rb
157
159
  - spec/spec_helper.rb