Index: account.rb =================================================================== --- account.rb (revision 765) +++ account.rb (working copy) @@ -18,6 +18,7 @@ def initialize accounts @email_map = {} @accounts = {} + @extensions = {} @default_account = nil add_account accounts[:default], true @@ -46,6 +47,13 @@ @accounts[a] = true @email_map[email] = a end + + [hash[:extensions]].each do |extension| + next if extension==nil || extension.empty? + ext = Regexp.new(extension[0]) + next if @extensions.has_key? ext + @extensions[ext] = @email_map[main_email] + end if default raise ArgumentError, "multiple default accounts" if @default_account @@ -54,7 +62,21 @@ end def is_account? p; is_account_email? p.email end - def account_for email; @email_map[email] end + + def account_for email; + if @email_map.member? email + @email_map[email] + else + from = nil + @extensions.each_key do |extension| + next unless email =~ extension + from = @extensions[extension] + break + end + from + end + end + def is_account_email? email; !account_for(email).nil? end end