class Evernicious::BookmarksParser
Public Instance Methods
parse(bookmarks_code_source)
click to toggle source
# File lib/evernicious/bookmarks_parser.rb, line 3 def parse(bookmarks_code_source) document = Nokogiri::HTML(bookmarks_code_source, nil, 'UTF-8') #Delicious HTML format has unclosed tags and presents problems with nokogiri. See XPath expression at http://goo.gl/Cm7Zn build_bookmars document.xpath('//dt/a | //dt[a]/following-sibling::*[1][self::dd]') end
Private Instance Methods
build_bookmark(a_node, next_node)
click to toggle source
# File lib/evernicious/bookmarks_parser.rb, line 20 def build_bookmark(a_node, next_node) OpenStruct.new :title=>a_node.text, :added_at=>Time.at(a_node['add_date'].to_i), :url=>a_node['href'], :tags=>build_tags_from_string(a_node['tags']), :comments=>is_dd_node?(next_node) ? next_node.inner_html : '' end
build_bookmars(a_or_dd_nodes)
click to toggle source
# File lib/evernicious/bookmarks_parser.rb, line 11 def build_bookmars(a_or_dd_nodes) bookmarks = [] a_or_dd_nodes.each_with_index do |a_or_dd_node, index| next if is_dd_node?(a_or_dd_node) bookmarks << build_bookmark(a_or_dd_node, a_or_dd_nodes[index+1]) end bookmarks end
is_dd_node?(node)
click to toggle source
# File lib/evernicious/bookmarks_parser.rb, line 28 def is_dd_node?(node) node && node.name == 'dd' end