class Yle::AWS::Role::Accounts
Attributes
aliases[R]
Public Class Methods
new(aliases = nil)
click to toggle source
# File lib/yle/aws/role/accounts.rb, line 11 def initialize(aliases = nil) @aliases = aliases || {} end
Public Instance Methods
account_id?(id_or_alias)
click to toggle source
Returns truish if the argument looks like an AWS
Account ID
# File lib/yle/aws/role/accounts.rb, line 35 def account_id?(id_or_alias) id_or_alias =~ /^\d{12}$/ end
alias_matcher(id_or_alias)
click to toggle source
# File lib/yle/aws/role/accounts.rb, line 44 def alias_matcher(id_or_alias) pattern = id_or_alias.gsub(/([^^])(?=[^$])/, '\1.*') Regexp.new(pattern) end
best_matching_account(id_or_alias)
click to toggle source
# File lib/yle/aws/role/accounts.rb, line 39 def best_matching_account(id_or_alias) matcher = alias_matcher(id_or_alias) aliases.keys.select { |key| matcher =~ key }.min_by(&:length) end
find(id_or_alias)
click to toggle source
Returns an `AccountAlias` that best matches the passed string
# File lib/yle/aws/role/accounts.rb, line 16 def find(id_or_alias) id_or_alias = id_or_alias.to_s if account_id?(id_or_alias) name = aliases.key(id_or_alias) || id_or_alias AccountAlias.new(name, id_or_alias) else name = best_matching_account(id_or_alias) AccountAlias.new(name, aliases[name]) if name end end
to_s()
click to toggle source
# File lib/yle/aws/role/accounts.rb, line 27 def to_s max_name_length = aliases.keys.map(&:length).max aliases.sort.map do |name, id| "#{name.ljust(max_name_length)}\t#{id}" end.join("\n") end