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