class HashComparator::Emails::Analyzer

Attributes

hash_function[RW]
options[RW]
subject_hashed_emails[RW]
subject_plaintext_emails[RW]
target_hashed_emails[RW]

Public Class Methods

find_common_hashes(hash_function:, subject_plaintext_emails:, target_hashed_emails:, options: {}) click to toggle source
# File lib/hash_comparator/emails/analyzer.rb, line 18
def self.find_common_hashes(hash_function:, subject_plaintext_emails:, target_hashed_emails:, options: {})
  new(
    hash_function: hash_function,
    subject_plaintext_emails: subject_plaintext_emails,
    target_hashed_emails: target_hashed_emails,
    options: options
  ).find_common_hashes
end
find_common_plaintext(hash_function:, subject_plaintext_emails:, target_hashed_emails:, options: {}) click to toggle source
# File lib/hash_comparator/emails/analyzer.rb, line 9
def self.find_common_plaintext(hash_function:, subject_plaintext_emails:, target_hashed_emails:, options: {})
  new(
    hash_function: hash_function,
    subject_plaintext_emails: subject_plaintext_emails,
    target_hashed_emails: target_hashed_emails,
    options: options
  ).find_common_plaintext
end
find_full_results(hash_function:, subject_plaintext_emails:, target_hashed_emails:, options: {}) click to toggle source
# File lib/hash_comparator/emails/analyzer.rb, line 27
def self.find_full_results(hash_function:, subject_plaintext_emails:, target_hashed_emails:, options: {})
  new(
    hash_function: hash_function,
    subject_plaintext_emails: subject_plaintext_emails,
    target_hashed_emails: target_hashed_emails,
    options: options
  ).find_full_results
end
new(hash_function:, subject_plaintext_emails:, target_hashed_emails:, options:) click to toggle source
# File lib/hash_comparator/emails/analyzer.rb, line 36
def initialize(hash_function:, subject_plaintext_emails:, target_hashed_emails:, options:)
  @hash_function = hash_function
  @subject_plaintext_emails = subject_plaintext_emails
  @target_hashed_emails = target_hashed_emails
  @options = options
  @subject_hashed_emails = []
end

Public Instance Methods

find_common_hashes() click to toggle source
# File lib/hash_comparator/emails/analyzer.rb, line 51
def find_common_hashes
  parse
  hash
  compare
end
find_common_plaintext() click to toggle source
# File lib/hash_comparator/emails/analyzer.rb, line 46
def find_common_plaintext
  common_hashes = find_common_hashes
  reverse_match(common_hashes)
end
find_full_results() click to toggle source
# File lib/hash_comparator/emails/analyzer.rb, line 57
def find_full_results
  common_hashed_emails = find_common_hashes
  common_plaintext_emails = reverse_match(common_hashed_emails)
  { common_hashed_emails: common_hashed_emails, common_plaintext_emails: common_plaintext_emails }
end

Private Instance Methods

compare() click to toggle source
# File lib/hash_comparator/emails/analyzer.rb, line 78
def compare
  SetComparator.calculate_overlap(
    subject_items: subject_hashed_emails,
    target_items: target_hashed_emails
  )
end
hash() click to toggle source
# File lib/hash_comparator/emails/analyzer.rb, line 71
def hash
  @subject_hashed_emails = Hasher.hash(
    hash_function: hash_function,
    plaintext_items: subject_plaintext_emails
  )
end
parse() click to toggle source
# File lib/hash_comparator/emails/analyzer.rb, line 65
def parse
  if options[:parsing]
    @subject_plaintext_emails = Parser.parse(subject_plaintext_emails, options[:parsing])
  end
end
reverse_match(common_hashes) click to toggle source
# File lib/hash_comparator/emails/analyzer.rb, line 85
def reverse_match(common_hashes)
  ReverseMatcher.execute(
    hash_function: hash_function,
    hashed_items: common_hashes,
    plaintext_items: subject_plaintext_emails
  )
end