Class: Redwood::ContactManager
- Includes:
- Singleton
- Defined in:
- lib/sup/contact.rb
Instance Method Summary collapse
- #alias_for(person) ⇒ Object
- #contact_for(aalias) ⇒ Object
- #contacts ⇒ Object
- #drop_contact(person) ⇒ Object
-
#initialize(fn) ⇒ ContactManager
constructor
A new instance of ContactManager.
- #is_contact?(person) ⇒ Boolean
- #save ⇒ Object
- #set_contact(person, aalias) ⇒ Object
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 |
#contacts ⇒ Object
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
40 |
# File 'lib/sup/contact.rb', line 40 def is_contact? person; @p2a.member? person; end |
#save ⇒ Object
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 |