def self.xbel(src_ary, tag = nil)
ret = [ "<?xml version='1.0' encoding='utf-8'?>",
"<xbel version='1.0' added='#{Time.now.iso8601}'>",
" <title>#{@user}'s Delicious Bookmarks</title>" ]
tags = src_ary.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.iso8601}'>",
" <title>#{tag.capitalize}</title>",
ary.sort { |a, b| a['description'] <=> b['description'] }.map do |bm|
href, bm_id = CGI.escape(bm['href']), "#{tag}-#{bm['hash']}",
time = bm['time'].iso8601
title = CGI.escapeHTML(bm['description'] || '')
desc = CGI.escapeHTML(bm['extended'] || '')
[ " <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