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