evernote-editor 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5e0c7eda0c6c08b8b4e4d1bbc6a2e3c8965a5ceb
4
- data.tar.gz: 42b9daf7d67a81bdf93b2e62ecdb60636201027a
3
+ metadata.gz: 684cdf5f951a2c755dc6f55bd190308e397c0918
4
+ data.tar.gz: ead114658e2096c7573768888c3d7050766b6e3b
5
5
  SHA512:
6
- metadata.gz: 091f9574bb001018e1d6738d9f415f7bcc55f4fdfeb364c9c003754004deab16084a495e229f75c8175063a9406c61b1df1ec24839cc28656b995583c0ae0355
7
- data.tar.gz: 95d4c1a1c980bab523e65ee59ba691e821faaa6010d423b396c76ac32d8eb433dd0b958461dfa7a92766b9e75add08aefda44516b8e2032f8abe1d6d7158ef07
6
+ metadata.gz: 86e11fa3a56a732d98df8327ec16451c555fa72f868d427f80e0a6b176575f99cea0a983c52808cf0618edddb29c5cb71f7ef18ab985fd97c3f38a92b573f043
7
+ data.tar.gz: f0bcf65d5cfa628ba1a99cb5b7e8f9f952f8b7bd4aaa01339914281060f03a43cd94e260e4f14d3f6010b36d4127e2f9853c183de826e142ac5a1bcee79777ae
@@ -1,2 +1,3 @@
1
1
  rvm:
2
- - 1.9.3
2
+ - 2.0.0
3
+ - 2.1.0
data/Gemfile CHANGED
@@ -1,2 +1,7 @@
1
1
  source 'https://rubygems.org'
2
+
3
+ group :development do
4
+ gem "fakefs", git: "https://github.com/onehub/fakefs.git", branch: "tempfile-2-1"
5
+ end
6
+
2
7
  gemspec
data/README.md CHANGED
@@ -7,7 +7,7 @@ Uses your favorite editor and Markdown formatting.
7
7
 
8
8
  ## Requirements
9
9
 
10
- Only tested on OSX and Ruby 1.9.3 with `vim` and `mvim` editors. YMMV.
10
+ Only tested on OSX and Ruby 2.0, 2.1 with `vim`, `mvim` and `sublime` editors. YMMV.
11
11
 
12
12
  ## Installation
13
13
 
@@ -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.1"
22
- gem.add_runtime_dependency "highline", "~> 1.6.15"
23
- gem.add_runtime_dependency "redcarpet", "~> 2.2.2"
24
- gem.add_runtime_dependency "reverse_markdown", "~> 0.4.3"
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", "~> 0.4.2"
27
- gem.add_development_dependency "rake", "~> 10.0.3"
28
- gem.add_development_dependency "rspec", "~> 2.12.0"
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-%m-%d %H:%M')} #{n.title}") do
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
- ReverseMarkdown.parse markup
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
@@ -1,3 +1,3 @@
1
1
  module EvernoteEditor
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  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!(:open_editor)
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!(:open_editor)
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 = "\n# Interesting!\n\n- Alpha\n- Bravo\n"
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.6
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: 2013-10-15 00:00:00.000000000 Z
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.1
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.1
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.15
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.15
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: 2.2.2
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: 2.2.2
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.4.3
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.4.3
68
+ version: 0.5.1
69
69
  - !ruby/object:Gem::Dependency
70
- name: fakefs
70
+ name: sanitize
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 0.4.2
76
- type: :development
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: 0.4.2
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.0.3
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.0.3
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.12.0
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.12.0
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.3
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