lib/evernote_editor/editor.rb in evernote-editor-0.1.6 vs lib/evernote_editor/editor.rb in evernote-editor-0.1.7
- old
+ new
@@ -3,10 +3,11 @@
require 'tempfile'
require "highline/import"
require "json"
require "redcarpet"
require "reverse_markdown"
+require "sanitize"
module EvernoteEditor
class Editor
@@ -18,10 +19,11 @@
@tags = (args.flatten[1] || '').split(',')
@options = opts
@sandbox = opts[:sandbox]
@mkdout = Redcarpet::Markdown.new(Redcarpet::Render::XHTML,
autolink: true, space_after_headers: true, no_intra_emphasis: true)
+ @notebooks = []
end
def run
configure
@options[:edit] ? edit_note : create_note
@@ -74,11 +76,11 @@
end
choice = choose do |menu|
menu.prompt = "Which note would you like to edit:"
found_notes.each do |n|
- menu.choice("#{Time.at(n.updated/1000).strftime('%Y-%m-%d %H:%M')} #{n.title}") do
+ menu.choice("#{Time.at(n.updated/1000).strftime('%Y %b %d %H:%M')} [#{lookup_notebook_name(n.notebookGuid)}] #{n.title}") do
n.guid
end
end
menu.choice("None") { nil }
end
@@ -130,11 +132,12 @@
def note_markup(markdown)
"<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE en-note SYSTEM 'http://xml.evernote.com/pub/enml2.dtd'><en-note>#{@mkdout.render(markdown)}</en-note>"
end
def note_markdown(markup)
- ReverseMarkdown.parse markup
+ markup = Sanitize.clean(markup, Sanitize::Config::RELAXED)
+ ReverseMarkdown.convert markup.strip
end
def invoke_editor(initial_content = "")
file = Tempfile.new(['evned', '.markdown'])
file.puts(initial_content)
@@ -180,9 +183,24 @@
def write_configuration
File.open(CONFIGURATION_FILE, "w") do |file|
file.write @configuration.to_json
end
+ end
+
+ def lookup_notebook_name(guid)
+ if @notebooks.empty?
+ begin
+ evn_client = EvernoteOAuth::Client.new(token: @configuration['token'], sandbox: @sandbox)
+ note_store = evn_client.note_store
+ @notebooks = note_store.listNotebooks
+ rescue Evernote::EDAM::Error::EDAMSystemException,
+ Evernote::EDAM::Error::EDAMUserException,
+ Evernote::EDAM::Error::EDAMNotFoundException => e
+ return "unknown notebook"
+ end
+ end
+ @notebooks.select {|n| n.guid == guid}.first.name
end
end
end