Class: Redwood::AccountManager

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Singleton

included

Constructor Details

#initialize(accounts) ⇒ AccountManager

Returns a new instance of AccountManager.



32
33
34
35
36
37
38
39
40
# File 'lib/sup/account.rb', line 32

def initialize accounts
  @email_map = {}
  @accounts = {}
  @regexen = {}
  @default_account = nil

   accounts[:default], true
  accounts.each { |k, v|  v, false unless k == :default }
end

Instance Attribute Details

#default_accountObject

Returns the value of attribute default_account.



30
31
32
# File 'lib/sup/account.rb', line 30

def 
  @default_account
end

Instance Method Details

#account_for(email) ⇒ Object



77
78
79
80
81
82
83
# File 'lib/sup/account.rb', line 77

def  email
  if(a = @email_map[email])
    a
  else
    @regexen.argfind { |re, a| re =~ email && a }
  end
end

#add_account(hash, default = false) ⇒ Object

must be called first with the default account. fills in missing values from the default account.

Raises:

  • (ArgumentError)


47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/sup/account.rb', line 47

def  hash, default=false
  raise ArgumentError, "no email specified for account" unless hash[:email]
  unless default
    [:name, :sendmail, :signature, :gpgkey].each { |k| hash[k] ||= @default_account.send(k) }
  end
  hash[:alternates] ||= []
  fail "alternative emails are not an array: #{hash[:alternates]}" unless hash[:alternates].kind_of? Array

  [:name, :signature].each { |x| hash[x] ? hash[x].fix_encoding! : nil }

  a = Account.new hash
  @accounts[a] = true

  if default
    raise ArgumentError, "multiple default accounts" if @default_account
    @default_account = a
  end

  ([hash[:email]] + hash[:alternates]).each do |email|
    next if @email_map.member? email
    @email_map[email] = a
  end

  hash[:regexen].each do |re|
    @regexen[Regexp.new(re)] = a
  end if hash[:regexen]
end

#full_address_for(email) ⇒ Object



84
85
86
87
# File 'lib/sup/account.rb', line 84

def full_address_for email
  a =  email
  Person.full_address a.name, email
end

#is_account?(p) ⇒ Boolean

Returns:

  • (Boolean)


75
# File 'lib/sup/account.rb', line 75

def is_account? p;  p.email end

#is_account_email?(email) ⇒ Boolean

Returns:

  • (Boolean)


76
# File 'lib/sup/account.rb', line 76

def  email; !(email).nil? end

#user_accountsObject



42
# File 'lib/sup/account.rb', line 42

def user_accounts; @accounts.keys; end

#user_emailsObject



43
# File 'lib/sup/account.rb', line 43

def user_emails; @email_map.keys.select { |e| String === e }; end