class Evernote2org::Note

Attributes

author[RW]
content[RW]
created_at[RW]
doc[RW]
resources[RW]
title[RW]
url[RW]

Public Class Methods

new(content) click to toggle source
# File lib/evernote2org/note.rb, line 12
def initialize(content)
  @doc = content
  @title = @doc.css('title').first.content
  @resources = @doc.css('resource').map { |res| Resource.new(res) }
  @content = parse_content
  @author = @doc.css('author').first&.content
  @url = @doc.css('source-url').first&.content
  @created_at = Time.strptime(@doc.css('created').first.content, '%Y%m%dT%H%M%SZ')
end

Public Instance Methods

consistent_file_name() click to toggle source
# File lib/evernote2org/note.rb, line 53
def consistent_file_name
  @title.gsub(/[[:punct:][:space:]]+/, '_').gsub(/^_/, '').gsub(/_$/, '')
end
export_content(out_dir) click to toggle source
# File lib/evernote2org/note.rb, line 30
def export_content(out_dir)
  File.open(File.join(out_dir, consistent_file_name + '.org'), 'w') do |out_file|
    content = @content.to_s.gsub(' ', '')
    include_before = format('LINK: %s', @url)
    org = PandocRuby.new(content,
                         {from: :html, to: :org},
                         :s,
                         {wrap: :none},
                         {M: "title='#{@title.gsub(/'/, '')}'"},
                         {M: "date=#{@created_at.to_date.to_s(:db)}"},
                         {M: "include-before='#{include_before}'"}).convert
    org.gsub!(%r{\[\[(https?://[^\]]+)\]\[{1,4}\1\]{1,4}\]}, '[[$1]]')
    org.gsub!(%r{\[\[[^\[\]]*\]\[\]\]}, '')
    out_file.write(org)
  end
end
export_dir_name() click to toggle source
# File lib/evernote2org/note.rb, line 63
def export_dir_name
  consistent_file_name
end
export_resources(resources_dir) click to toggle source
# File lib/evernote2org/note.rb, line 47
def export_resources(resources_dir)
  @resources.each do |resource|
    resource.export_to(resources_dir)
  end
end
export_to(out_dir) click to toggle source
# File lib/evernote2org/note.rb, line 22
def export_to(out_dir)
  if @resources.present?
    resources_dir = make_resources_dir(out_dir)
    export_resources(resources_dir)
  end
  export_content(out_dir)
end
make_resources_dir(out_dir) click to toggle source
# File lib/evernote2org/note.rb, line 57
def make_resources_dir(out_dir)
  dir = File.join(out_dir, export_dir_name)
  FileUtils.mkdir_p(dir)
  dir
end
parse_content() click to toggle source
# File lib/evernote2org/note.rb, line 67
def parse_content
  content = Nokogiri::XML(@doc.css('content').first.content).css('en-note').first
  @resources.each do |resource|
    next unless resource.id
    img_tag = resource.to_img_tag(export_dir_name, content)
    en_media = content.css("en-media[hash=\"#{resource.id}\"]").first
    en_media.add_next_sibling(img_tag)
    en_media.remove
  end
  content
end