Class: Redwood::ContactManager

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/sup/contact.rb

Instance Method Summary collapse

Constructor Details

#initialize(fn) ⇒ ContactManager

Returns a new instance of ContactManager.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/sup/contact.rb', line 6

def initialize fn
  @fn = fn
  @p2a = {} # person to alias map
  @a2p = {} # alias to person map

  if File.exists? fn
    IO.foreach(fn) do |l|
      l =~ /^([^:]+): (.*)$/ or raise "can't parse #{fn} line #{l.inspect}"
      aalias, addr = $1, $2
      p = PersonManager.person_for addr, :definitive => true
      @p2a[p] = aalias
      @a2p[aalias] = p
    end
  end

  self.class.i_am_the_instance self
end

Instance Method Details

#alias_for(person) ⇒ Object



39
# File 'lib/sup/contact.rb', line 39

def alias_for person; @p2a[person]; end

#contact_for(aalias) ⇒ Object



38
# File 'lib/sup/contact.rb', line 38

def contact_for aalias; @a2p[aalias]; end

#contactsObject



24
# File 'lib/sup/contact.rb', line 24

def contacts; @p2a.keys; end

#drop_contact(person) ⇒ Object



32
33
34
35
36
37
# File 'lib/sup/contact.rb', line 32

def drop_contact person
  if(aalias = @p2a[person])
    @p2a.delete person
    @a2p.delete aalias
  end
end

#is_contact?(person) ⇒ Boolean

Returns:

  • (Boolean)


40
# File 'lib/sup/contact.rb', line 40

def is_contact? person; @p2a.member? person; end

#saveObject



42
43
44
45
46
47
48
# File 'lib/sup/contact.rb', line 42

def save
  File.open(@fn, "w") do |f|
    @p2a.each do |p, a|
      f.puts "#{a}: #{p.full_address}"
    end
  end
end

#set_contact(person, aalias) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/sup/contact.rb', line 25

def set_contact person, aalias
  if(pold = @a2p[aalias]) && (pold != person)
    drop_contact pold
  end
  @p2a[person] = aalias
  @a2p[aalias] = person
end