class Ppl::Adapter::Storage::Disk
Attributes
directory[RW]
vcard_adapter[RW]
Public Class Methods
create_address_book(path)
click to toggle source
# File lib/ppl/adapter/storage/disk.rb, line 8 def self.create_address_book(path) if !Dir.exists? path FileUtils.mkdir_p(path) end storage = self.new(Dir.new(path)) dot_ppl = File.join(path, ".ppl") config = File.join(dot_ppl, "config") FileUtils.mkdir_p(dot_ppl) FileUtils.touch(config) storage end
new(directory)
click to toggle source
# File lib/ppl/adapter/storage/disk.rb, line 22 def initialize(directory) @directory = directory end
Public Instance Methods
delete_contact(contact)
click to toggle source
# File lib/ppl/adapter/storage/disk.rb, line 63 def delete_contact(contact) File.unlink filename_for_contact(contact) end
filename_for_contact(contact)
click to toggle source
# File lib/ppl/adapter/storage/disk.rb, line 67 def filename_for_contact(contact) filename_for_contact_id(contact.id) end
filename_for_contact_id(id)
click to toggle source
# File lib/ppl/adapter/storage/disk.rb, line 71 def filename_for_contact_id(id) File.join(@directory.path, id + ".vcf") end
load_address_book()
click to toggle source
# File lib/ppl/adapter/storage/disk.rb, line 26 def load_address_book address_book = Ppl::Entity::AddressBook.new pattern = File.join @directory.path, "*.vcf" filenames = Dir.glob pattern filenames.each do |filename| contact_id = File.basename(filename).slice(0..-5) contact = load_contact(contact_id) address_book.contacts.push(contact) end return address_book end
load_contact(id)
click to toggle source
# File lib/ppl/adapter/storage/disk.rb, line 41 def load_contact(id) filename = filename_for_contact_id(id) contact = nil if File.exists?(filename) vcard = File.read filename contact = @vcard_adapter.decode(vcard) if !contact.nil? && contact.is_a?(Ppl::Entity::Contact) contact.id = id end end return contact end
path()
click to toggle source
# File lib/ppl/adapter/storage/disk.rb, line 75 def path @directory.path end
save_contact(contact)
click to toggle source
# File lib/ppl/adapter/storage/disk.rb, line 54 def save_contact(contact) vcard = @vcard_adapter.encode(contact) filename = filename_for_contact(contact) File.open(filename, "w") do |file| file.write(vcard) end end