Class: EmbeddedEmailMatcher

Inherits:
Object
  • Object
show all
Defined in:
lib/email_reply_trimmer/embedded_email_matcher.rb

Constant Summary collapse

ON_DATE_WROTE_SOMEONE_MARKERS =

Op 10 dec. 2015 18:35 schreef “Arpit Jalan” <[email protected]>: Am 18.09.2013 um 16:24 schrieb codinghorror <[email protected]>: Den 15. jun. 2016 kl. 20.42 skrev Jeff Atwood <[email protected]>: søn. 30. apr. 2017 kl. 00.26 skrev David Taylor <[email protected]>:

[
  # Dutch
  ["Op", "schreef"],
  # German
  ["Am", "schrieb"],
  # Norwegian
  ["Den", "skrev"],
  # Dutch
  ["søn\.", "skrev"],
]
ON_DATE_WROTE_SOMEONE_REGEXES =
ON_DATE_WROTE_SOMEONE_MARKERS.map do |on, wrote|
  /^[[:blank:]>]*#{on}\s.+\s#{wrote}\s[^:]+:/
end
DATE_SOMEONE_WROTE_MARKERS =

суббота, 14 марта 2015 г. пользователь etewiah написал: 23 mar 2017 21:25 “Neil Lalonde” <[email protected]> napisał(a): 30 серп. 2016 р. 20:45 “Arpit” [email protected] пише:

[
  # Russian
  ["пользователь", "написал"],
  # Polish
  ["", "napisał\\(a\\)"],
  # Ukrainian
  ["", "пише"],
]
DATE_SOMEONE_WROTE_REGEXES =
DATE_SOMEONE_WROTE_MARKERS.map do |user, wrote|
  user.size == 0 ?
    /\d{4}.{1,80}\n?.{0,80}?#{wrote}:/ :
    /\d{4}.{1,80}#{user}.{0,80}\n?.{0,80}?#{wrote}:/
end
ISO_DATE_SOMEONE_REGEX =

2016-03-03 17:21 GMT+01:00 Some One

/^[[:blank:]>]*20\d\d-\d\d-\d\d \d\d:\d\d GMT\+\d\d:\d\d [\w[:blank:]]+$/
DATE_SOMEONE_EMAIL_REGEX =

2015-10-18 0:17 GMT+03:00 Matt Palmer <[email protected]>: 2013/10/2 camilohollanda <[email protected]> вт, 5 янв. 2016 г. в 23:39, Erlend Sogge Heggen <[email protected]>: ср, 1 апр. 2015, 18:29, Denis Didkovsky <[email protected]>:

/\d{4}.{1,80}\s?<[^@<>]+@[^@<>.]+\.[^@<>]+>:?$/
SOMEONE_VIA_SOMETHING_WROTE_MARKERS =

codinghorror via Discourse Meta wrote: codinghorror via Discourse Meta <[email protected]> schrieb:

[
  # English
  "wrote",
  # German
  "schrieb",
]
SOMEONE_VIA_SOMETHING_WROTE_REGEXES =
SOMEONE_VIA_SOMETHING_WROTE_MARKERS.map do |wrote|
  /^.+ via .+ #{wrote}:?[[:blank:]]*$/
end
SOMEONE_EMAIL_WROTE_REGEX =

Some One <[email protected]> wrote: Gavin Sinclair ([email protected]) wrote:

/^.+\b[\w.+-]+@[\w.-]+\.\w{2,}\b.+wrote:?$/
POSTED_BY_SOMEONE_ON_DATE_REGEX =

Posted by mpalmer on 01/21/2016

/^[[:blank:]>]*Posted by .+ on \d{2}\/\d{2}\/\d{4}$/i
FORWARDED_EMAIL_REGEXES =

Begin forwarded message: Reply Message —– Forwarded Message —– —– Original Message —– —–Original Message—– *—– Original Message —–* —– Reply message —– —————— 原始邮件 ——————

[
  # English
  /^[[:blank:]>]*Begin forwarded message:/i,
  /^[[:blank:]>*]*-{2,}[[:blank:]]*(Forwarded|Original|Reply) Message[[:blank:]]*-{2,}/i,
  # French
  /^[[:blank:]>]*Début du message transféré :/i,
  /^[[:blank:]>*]*-{2,}[[:blank:]]*Message transféré[[:blank:]]*-{2,}/i,
  # German
  /^[[:blank:]>*]*-{2,}[[:blank:]]*Ursprüngliche Nachricht[[:blank:]]*-{2,}/i,
  # Spanish
  /^[[:blank:]>*]*-{2,}[[:blank:]]*Mensaje original[[:blank:]]*-{2,}/i,
  # Chinese
  /^[[:blank:]>*]*-{2,}[[:blank:]]*原始邮件[[:blank:]]*-{2,}/i,
]
EMBEDDED_REGEXES =
[
  ON_DATE_SOMEONE_WROTE_REGEXES,
  ON_DATE_WROTE_SOMEONE_REGEXES,
  DATE_SOMEONE_WROTE_REGEXES,
  DATE_SOMEONE_EMAIL_REGEX,
  SOMEONE_WROTE_ON_DATE_REGEXES,
  ISO_DATE_SOMEONE_REGEX,
  SOMEONE_VIA_SOMETHING_WROTE_REGEXES,
  SOMEONE_EMAIL_WROTE_REGEX,
  POSTED_BY_SOMEONE_ON_DATE_REGEX,
  FORWARDED_EMAIL_REGEXES,
].flatten

Class Method Summary collapse

Class Method Details

.match?(line) ⇒ Boolean

Returns:

  • (Boolean)


147
148
149
# File 'lib/email_reply_trimmer/embedded_email_matcher.rb', line 147

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