Sha256: 737e6cb3c8378b9468c9e4bb18b4eb42dc7ee05d9f653c87654eaf8a932b8105

Contents?: true

Size: 878 Bytes

Versions: 6

Compression:

Stored size: 878 Bytes

Contents

module Redwood

class ContactManager
  include Singleton

  def initialize fn
    @fn = fn
    @people = {}

    if File.exists? fn
      IO.foreach(fn) do |l|
        l =~ /^(\S+): (.*)$/ or raise "can't parse #{fn} line #{l.inspect}"
        aalias, addr = $1, $2
        @people[aalias] = Person.for addr
      end
    end

    self.class.i_am_the_instance self
  end

  def contacts; @people; end
  def set_contact person, aalias
    oldentry = @people.find { |a, p| p == person }
    @people.delete oldentry.first if oldentry
    @people[aalias] = person
  end
  def drop_contact person; @people.delete person; end
  def delete t; @people.delete t; end
  def resolve aalias; @people[aalias]; end

  def save
    File.open(@fn, "w") do |f|
      @people.keys.sort.each do |aalias|
        f.puts "#{aalias}: #{@people[aalias].full_address}"
      end
    end
  end
end

end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
sup-0.0.6 lib/sup/contact.rb
sup-0.0.5 lib/sup/contact.rb
sup-0.0.4 lib/sup/contact.rb
sup-0.0.3 lib/sup/contact.rb
sup-0.0.1 lib/sup/contact.rb
sup-0.0.2 lib/sup/contact.rb