class Amply::Helpers::EmailAddress

Public Class Methods

create(data) click to toggle source
# File lib/amply/helpers/email_address.rb, line 5
def create(data)
  if data.is_a?(Array)
    return data.reject { |el| el.nil? || el == '' }
      .map { |el| self.class.create(el) }
  end

  if data.is_a?(EmailAddress)
    return data
  end

  self.class.create(data)
end
new(data) click to toggle source
# File lib/amply/helpers/email_address.rb, line 19
def initialize(data)
  if data.is_a?(String)
    data = from_string(data)
  end

  unless data.is_a?(Hash)
    raise 'Expecting hash or string for email address data'
  end

  name = data[:name] || data['name']
  email = data[:email] || data['email']

  set_name(name)
  set_email(email)
end

Public Instance Methods

to_json() click to toggle source
# File lib/amply/helpers/email_address.rb, line 35
def to_json
  json = { email: @email }

  unless @name.nil?
    json[:name] = @name
  end

  json
end

Private Instance Methods

from_string(data) click to toggle source
# File lib/amply/helpers/email_address.rb, line 69
def from_string(data)
  if data.index('<').nil?
    return { name: nil, email: data }
  end

  name, email = data.split('<')

  name.strip!
  email.gsub!('>', '')
  email.strip!

  { name: name, email: email }
end
set_email(email) click to toggle source
# File lib/amply/helpers/email_address.rb, line 57
def set_email(email)
  if email.nil?
    raise 'Must provide `email`'
  end

  unless email.is_a?(String)
    raise 'String expected for `email`'
  end

  @email = email
end
set_name(name) click to toggle source
# File lib/amply/helpers/email_address.rb, line 47
def set_name(name)
  return if name.nil?

  unless name.is_a?(String)
    raise 'String expected for `name`'
  end

  @name = name
end