evernote-editor 0.1.6 → 0.1.7
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 +4 -4
- data/.travis.yml +2 -1
- data/Gemfile +5 -0
- data/README.md +1 -1
- data/evernote-editor.gemspec +8 -7
- data/lib/evernote_editor/editor.rb +20 -2
- data/lib/evernote_editor/version.rb +1 -1
- data/spec/evernote_editor/editor_spec.rb +45 -3
- metadata +37 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 684cdf5f951a2c755dc6f55bd190308e397c0918
|
4
|
+
data.tar.gz: ead114658e2096c7573768888c3d7050766b6e3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86e11fa3a56a732d98df8327ec16451c555fa72f868d427f80e0a6b176575f99cea0a983c52808cf0618edddb29c5cb71f7ef18ab985fd97c3f38a92b573f043
|
7
|
+
data.tar.gz: f0bcf65d5cfa628ba1a99cb5b7e8f9f952f8b7bd4aaa01339914281060f03a43cd94e260e4f14d3f6010b36d4127e2f9853c183de826e142ac5a1bcee79777ae
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
data/evernote-editor.gemspec
CHANGED
@@ -18,13 +18,14 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
19
|
gem.require_paths = ["lib"]
|
20
20
|
|
21
|
-
gem.add_runtime_dependency "evernote_oauth", "~> 0.2.
|
22
|
-
gem.add_runtime_dependency "highline", "~> 1.6.
|
23
|
-
gem.add_runtime_dependency "redcarpet", "~>
|
24
|
-
gem.add_runtime_dependency "reverse_markdown", "
|
21
|
+
gem.add_runtime_dependency "evernote_oauth", "~> 0.2.3"
|
22
|
+
gem.add_runtime_dependency "highline", "~> 1.6.21"
|
23
|
+
gem.add_runtime_dependency "redcarpet", "~> 3.1.1"
|
24
|
+
gem.add_runtime_dependency "reverse_markdown", "0.5.1"
|
25
|
+
gem.add_runtime_dependency "sanitize", "2.1.0"
|
25
26
|
|
26
|
-
gem.add_development_dependency "fakefs",
|
27
|
-
gem.add_development_dependency "rake", "~> 10.
|
28
|
-
gem.add_development_dependency "rspec", "~> 2.
|
27
|
+
# gem.add_development_dependency "fakefs" # See Gemfile, using branch to support Ruby 2.1
|
28
|
+
gem.add_development_dependency "rake", "~> 10.2.2"
|
29
|
+
gem.add_development_dependency "rspec", "~> 2.14.1"
|
29
30
|
|
30
31
|
end
|
@@ -5,6 +5,7 @@ require "highline/import"
|
|
5
5
|
require "json"
|
6
6
|
require "redcarpet"
|
7
7
|
require "reverse_markdown"
|
8
|
+
require "sanitize"
|
8
9
|
|
9
10
|
module EvernoteEditor
|
10
11
|
|
@@ -20,6 +21,7 @@ module EvernoteEditor
|
|
20
21
|
@sandbox = opts[:sandbox]
|
21
22
|
@mkdout = Redcarpet::Markdown.new(Redcarpet::Render::XHTML,
|
22
23
|
autolink: true, space_after_headers: true, no_intra_emphasis: true)
|
24
|
+
@notebooks = []
|
23
25
|
end
|
24
26
|
|
25
27
|
def run
|
@@ -76,7 +78,7 @@ module EvernoteEditor
|
|
76
78
|
choice = choose do |menu|
|
77
79
|
menu.prompt = "Which note would you like to edit:"
|
78
80
|
found_notes.each do |n|
|
79
|
-
menu.choice("#{Time.at(n.updated/1000).strftime('%Y
|
81
|
+
menu.choice("#{Time.at(n.updated/1000).strftime('%Y %b %d %H:%M')} [#{lookup_notebook_name(n.notebookGuid)}] #{n.title}") do
|
80
82
|
n.guid
|
81
83
|
end
|
82
84
|
end
|
@@ -132,7 +134,8 @@ module EvernoteEditor
|
|
132
134
|
end
|
133
135
|
|
134
136
|
def note_markdown(markup)
|
135
|
-
|
137
|
+
markup = Sanitize.clean(markup, Sanitize::Config::RELAXED)
|
138
|
+
ReverseMarkdown.convert markup.strip
|
136
139
|
end
|
137
140
|
|
138
141
|
def invoke_editor(initial_content = "")
|
@@ -184,6 +187,21 @@ module EvernoteEditor
|
|
184
187
|
end
|
185
188
|
end
|
186
189
|
|
190
|
+
def lookup_notebook_name(guid)
|
191
|
+
if @notebooks.empty?
|
192
|
+
begin
|
193
|
+
evn_client = EvernoteOAuth::Client.new(token: @configuration['token'], sandbox: @sandbox)
|
194
|
+
note_store = evn_client.note_store
|
195
|
+
@notebooks = note_store.listNotebooks
|
196
|
+
rescue Evernote::EDAM::Error::EDAMSystemException,
|
197
|
+
Evernote::EDAM::Error::EDAMUserException,
|
198
|
+
Evernote::EDAM::Error::EDAMNotFoundException => e
|
199
|
+
return "unknown notebook"
|
200
|
+
end
|
201
|
+
end
|
202
|
+
@notebooks.select {|n| n.guid == guid}.first.name
|
203
|
+
end
|
204
|
+
|
187
205
|
end
|
188
206
|
|
189
207
|
end
|
@@ -7,6 +7,8 @@ describe EvernoteEditor::Editor do
|
|
7
7
|
FileUtils.mkpath(File.expand_path("~"))
|
8
8
|
FileUtils.mkpath(File.expand_path("/tmp"))
|
9
9
|
@mock_note_store = double("note_store",
|
10
|
+
getNotebook: double("notebook", guid: "456", name: "Zebra Notebook"),
|
11
|
+
listNotebooks: [double("notebook", guid: "456", name: "Zebra Notebook")],
|
10
12
|
createNote: double("note", guid: "123", title: 'Alpha'),
|
11
13
|
getNote: double("note", guid: "123", title: 'Alpha',
|
12
14
|
:content= => nil, :updated= => nil,
|
@@ -114,7 +116,7 @@ describe EvernoteEditor::Editor do
|
|
114
116
|
end
|
115
117
|
|
116
118
|
it "saves the document to Evernote" do
|
117
|
-
enved.stub
|
119
|
+
enved.stub(:open_editor)
|
118
120
|
EvernoteOAuth::Client.should_receive(:new).and_return(
|
119
121
|
double("EvernoteOAuth::Client", note_store: @mock_note_store))
|
120
122
|
enved.configure
|
@@ -124,7 +126,7 @@ describe EvernoteEditor::Editor do
|
|
124
126
|
context "when there is an Evernote Cloud API communication error" do
|
125
127
|
|
126
128
|
it "prints your note to STDOUT so you don't lose it" do
|
127
|
-
enved.stub
|
129
|
+
enved.stub(:open_editor)
|
128
130
|
EvernoteOAuth::Client.stub(:new).and_raise(Evernote::EDAM::Error::EDAMSystemException)
|
129
131
|
enved.should_receive(:graceful_failure).once
|
130
132
|
enved.configure
|
@@ -286,10 +288,50 @@ describe EvernoteEditor::Editor do
|
|
286
288
|
let(:enved) { EvernoteEditor::Editor.new('a note', {}) }
|
287
289
|
|
288
290
|
it "converts ENML/XHTML to markdown" do
|
289
|
-
str = "
|
291
|
+
str = "# Interesting!\n\n- Alpha\n- Bravo\n"
|
292
|
+
markup = enved.note_markup(str)
|
293
|
+
enved.note_markdown(markup).should eq str
|
294
|
+
end
|
295
|
+
|
296
|
+
it "converts nested indentation to markdown" do
|
297
|
+
pending "https://github.com/xijo/reverse_markdown/issues/29"
|
298
|
+
str = "# Interesting!\n\n- Alpha\n - Zebra\n - Yankee\n- Bravo\n"
|
290
299
|
markup = enved.note_markup(str)
|
291
300
|
enved.note_markdown(markup).should eq str
|
292
301
|
end
|
293
302
|
|
294
303
|
end
|
304
|
+
|
305
|
+
describe "#lookup_notebook_name" do
|
306
|
+
|
307
|
+
before { write_fakefs_config }
|
308
|
+
let(:enved) { EvernoteEditor::Editor.new('a note', {}) }
|
309
|
+
|
310
|
+
it "looks up a notebook name by guid" do
|
311
|
+
enved.configure
|
312
|
+
EvernoteOAuth::Client.stub(:new).and_return(
|
313
|
+
double("EvernoteOAuth::Client", note_store: @mock_note_store))
|
314
|
+
enved.lookup_notebook_name('456').should eq 'Zebra Notebook'
|
315
|
+
end
|
316
|
+
|
317
|
+
it "returns 'unknown notebook' when there is a communication error" do
|
318
|
+
enved.configure
|
319
|
+
EvernoteOAuth::Client.stub(:new).and_return(
|
320
|
+
double("EvernoteOAuth::Client", note_store: @mock_note_store))
|
321
|
+
@mock_note_store.stub(:listNotebooks).and_raise(Evernote::EDAM::Error::EDAMSystemException)
|
322
|
+
enved.lookup_notebook_name('456').should eq 'unknown notebook'
|
323
|
+
end
|
324
|
+
|
325
|
+
it "first looks in locally stored value for the notebook attributes" do
|
326
|
+
enved.configure
|
327
|
+
enved.instance_variable_set(:@notebooks, [
|
328
|
+
double("notebook", guid: "456", name: "Yankee Notebook"),
|
329
|
+
double("notebook", guid: "789", name: "Xray Notebook")])
|
330
|
+
EvernoteOAuth::Client.should_not_receive(:new)
|
331
|
+
enved.lookup_notebook_name('456').should eq 'Yankee Notebook'
|
332
|
+
|
333
|
+
end
|
334
|
+
|
335
|
+
end
|
336
|
+
|
295
337
|
end
|
metadata
CHANGED
@@ -1,113 +1,113 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: evernote-editor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- hpoydar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-04-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: evernote_oauth
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.2.
|
19
|
+
version: 0.2.3
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.2.
|
26
|
+
version: 0.2.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: highline
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.6.
|
33
|
+
version: 1.6.21
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.6.
|
40
|
+
version: 1.6.21
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: redcarpet
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 3.1.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 3.1.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: reverse_markdown
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
61
|
+
version: 0.5.1
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
68
|
+
version: 0.5.1
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: sanitize
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
76
|
-
type: :
|
75
|
+
version: 2.1.0
|
76
|
+
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 2.1.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - ~>
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 10.
|
89
|
+
version: 10.2.2
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - ~>
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 10.
|
96
|
+
version: 10.2.2
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rspec
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - ~>
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 2.
|
103
|
+
version: 2.14.1
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - ~>
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 2.
|
110
|
+
version: 2.14.1
|
111
111
|
description: Simple command line creation and editing of Evernote notes in Markdown
|
112
112
|
format with your favorite editor via a gem installed binary
|
113
113
|
email:
|
@@ -117,8 +117,8 @@ executables:
|
|
117
117
|
extensions: []
|
118
118
|
extra_rdoc_files: []
|
119
119
|
files:
|
120
|
-
- .gitignore
|
121
|
-
- .travis.yml
|
120
|
+
- ".gitignore"
|
121
|
+
- ".travis.yml"
|
122
122
|
- Gemfile
|
123
123
|
- LICENSE.txt
|
124
124
|
- README.md
|
@@ -139,17 +139,17 @@ require_paths:
|
|
139
139
|
- lib
|
140
140
|
required_ruby_version: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
|
-
- -
|
142
|
+
- - ">="
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '0'
|
145
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
146
146
|
requirements:
|
147
|
-
- -
|
147
|
+
- - ">="
|
148
148
|
- !ruby/object:Gem::Version
|
149
149
|
version: '0'
|
150
150
|
requirements: []
|
151
151
|
rubyforge_project:
|
152
|
-
rubygems_version: 2.0
|
152
|
+
rubygems_version: 2.2.0
|
153
153
|
signing_key:
|
154
154
|
specification_version: 4
|
155
155
|
summary: Command line creation and editing of Evernote notes
|