def to_xbel(tag = nil)
ret = [ "<?xml version='1.0' encoding='utf-8'?>",
"<xbel version='1.0' added='#{Time::now.to_iso8601}'>",
" <title>#{@user}'s del.icio.us bookmarks</title>" ]
tags = find_all { |e| !tag || e['tags'].include?(tag) }.inject({}) do |tags, bm|
if bm['tags'] && bm['tags'].size > 0
bm['tags'] = bm['tags'] ? bm['tags'].split(' ').sort : []
bm['tags'].each { |tag| tags[tag] ||= []; tags[tag] << bm }
else
tags['uncategorized'] ||= []
tags['uncategorized'] << bm
end
tags
end
tags.keys.sort.each do |tag|
ary = tags[tag]
ret << [
" <folder id='#{tag}' added='#{Time.now.to_iso8601}'>",
" <title>#{tag.capitalize}</title>",
ary.sort { |a, b| a['description'] <=> b['description'] }.map do |bm|
href, bm_id = bm['href'].uri_escape, "#{tag}-#{bm['hash']}",
time = bm['time'].to_iso8601
title = bm['description'] ? bm['description'].xml_escape : ''
desc = bm['extended'] ? bm['extended'].xml_escape : ''
[ " <bookmark href='#{href}' id='#{bm_id}' added='#{time}'>",
" <title>#{title}</title>",
" <desc>#{desc}</desc>",
" </bookmark>" ,
].join("\n")
end.join("\n"),
' </folder>',
].join("\n")
end
ret << '</xbel>'
ret.join("\n")
end