Sha256: 20d853b29baf4070496276c9388b286551a30655446e9929eeafae3a15c9b8dd

Contents?: true

Size: 1.57 KB

Versions: 2

Compression:

Stored size: 1.57 KB

Contents

# frozen_string_literal: true

module EmailHeaderMatcher
  module_function

  EMAIL_HEADERS_WITH_DATE_MARKERS = [
    # Norwegian
    ['Sendt'],
    # English
    ['Sent', 'Date'],
    # French
    ['Date', 'Le'],
    # German
    ['Gesendet'],
    # Portuguese
    ['Enviada em'],
    # Spanish
    ['Enviado'],
    # Spanish (Mexican)
    ['Fecha'],
    # Italian
    ['Data'],
    # Dutch
    ['Datum'],
    # Swedish
    ['Skickat'],
    # Chinese
    ['发送时间'],
  ].freeze

  EMAIL_HEADERS_WITH_DATE_REGEXES =
    EMAIL_HEADERS_WITH_DATE_MARKERS.map do |header|
      /^[[:blank:]*]*(?:#{header.join("|")})[[:blank:]*]*:.*\d+/
    end

  EMAIL_HEADERS_WITH_TEXT_MARKERS = [
    # Norwegian
    ['Fra', 'Til', 'Emne'],
    # English
    ['From', 'To', 'Cc', 'Reply-To', 'Subject'],
    # French
    ['De', 'Expéditeur', 'À', 'Destinataire', 'Répondre à', 'Objet'],
    # German
    ['Von', 'An', 'Betreff'],
    # Portuguese
    ['De', 'Para', 'Assunto'],
    # Spanish
    ['De', 'Para', 'Asunto'],
    # Italian
    ['Da', 'Risposta', 'A', 'Oggetto'],
    # Dutch
    ['Van', 'Beantwoorden - Aan', 'Aan', 'Onderwerp'],
    # Swedish
    ['Från', 'Till', 'Ämne'],
    # Chinese
    ['发件人', '收件人', '主题'],
  ].freeze

  EMAIL_HEADERS_WITH_TEXT_REGEXES =
    EMAIL_HEADERS_WITH_TEXT_MARKERS.map do |header|
      /^[[:blank:]*]*(?:#{header.join("|")})[[:blank:]*]*:.*[[:word:]]+/i
    end

  EMAIL_HEADER_REGEXES = [
    EMAIL_HEADERS_WITH_DATE_REGEXES,
    EMAIL_HEADERS_WITH_TEXT_REGEXES,
  ].flatten

  def match?(line)
    EMAIL_HEADER_REGEXES.any? { |r| line =~ r }
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
runger_email_reply_trimmer-0.2.2 lib/runger_email_reply_trimmer/email_header_matcher.rb
runger_email_reply_trimmer-0.2.1 lib/runger_email_reply_trimmer/email_header_matcher.rb