4 attr_accessor :sendmail, :signature
6 def initialize email, h
7 super h[:name], email, 0, true
8 @sendmail = h[:sendmail]
9 @signature = h[:signature]
16 attr_accessor :default_account
18 def initialize accounts
21 @default_account = nil
23 add_account accounts[:default], true
24 accounts.each { |k, v| add_account v unless k == :default }
26 self.class.i_am_the_instance self
29 def user_accounts; @accounts.keys; end
30 def user_emails; @email_map.keys.select { |e| String === e }; end
32 ## must be called first with the default account. fills in missing
33 ## values from the default account.
34 def add_account hash, default=false
35 raise ArgumentError, "no email specified for account" unless hash[:email]
37 [:name, :sendmail, :signature].each { |k| hash[k] ||= @default_account.send(k) }
39 hash[:alternates] ||= []
41 main_email = hash[:email]
42 ([hash[:email]] + hash[:alternates]).each do |email|
43 next if @email_map.member? email
44 a = Account.new main_email, hash
45 PersonManager.register a
51 raise ArgumentError, "multiple default accounts" if @default_account
52 @default_account = @email_map[main_email]
56 def is_account? p; is_account_email? p.email end
57 def account_for email; @email_map[email] end
58 def is_account_email? email; !account_for(email).nil? end