class PossibleEmail::Permutator

Public Class Methods

call(first_name, last_name, *domain) click to toggle source
# File lib/possible_email/permutator.rb, line 5
def self.call(first_name, last_name, *domain)
  new(first_name, last_name, domain).call
end
new(first_name, last_name, domain) click to toggle source
# File lib/possible_email/permutator.rb, line 9
def initialize(first_name, last_name, domain)
  @first_name = first_name
  @last_name = last_name
  @domain = domain.flatten # HACK
  @first_initial = first_name.chars.first
  @last_initial = last_name.chars.first
end

Public Instance Methods

call() click to toggle source
# File lib/possible_email/permutator.rb, line 17
def call
  permutations = create_all_permutations
  permutations
end

Private Instance Methods

all_instance_variables_except_domain() click to toggle source
# File lib/possible_email/permutator.rb, line 47
def all_instance_variables_except_domain
  instance_variables.dup - [:@domain]
end
create_all_permutations() click to toggle source
# File lib/possible_email/permutator.rb, line 24
def create_all_permutations
  @domain.reduce([]) do |permutations, domain|
    substitute_pattern_placeholders_with_correct_values(domain)

    separate_each_permutation(permutations)
  end
end
placeholder(var) click to toggle source
# File lib/possible_email/permutator.rb, line 51
def placeholder(var)
  "{#{var.to_s[1..-1]}}"
end
separate_each_permutation(permutations) click to toggle source
# File lib/possible_email/permutator.rb, line 59
def separate_each_permutation(permutations)
  permutations << @permutation_patterns.split("\n")
  permutations.flatten
end
substitute_every_pattern_placeholder_except_domain() click to toggle source
# File lib/possible_email/permutator.rb, line 41
def substitute_every_pattern_placeholder_except_domain
  all_instance_variables_except_domain.each do |var|
    @permutation_patterns.gsub!(placeholder(var), value_of(var))
  end
end
substitute_pattern_placeholders_with_correct_values(domain) click to toggle source
# File lib/possible_email/permutator.rb, line 32
def substitute_pattern_placeholders_with_correct_values(domain)
  # reset after each domain iteration
  @permutation_patterns = PATTERNS.dup

  substitute_every_pattern_placeholder_except_domain

  @permutation_patterns.gsub!('{domain}', domain)
end
value_of(var) click to toggle source
# File lib/possible_email/permutator.rb, line 55
def value_of(var)
  instance_variable_get("@#{var[1..-1]}".to_sym)
end