Class: Mail::Sanitizer::String

Inherits:
Object
  • Object
show all
Defined in:
lib/mail/sanitizer/string.rb

Constant Summary collapse

ADDRESS_REGEXP =
/([a-zA-Z0-9_!#$%&`'"*+\-{|}~^\/=?\.]+@[a-zA-Z0-9][a-zA-Z0-9\.\-]+)/
SP =
"[[:space:]]"
DIGIT =
"[0-90-9]"
YEAR =
"(#{DIGIT}{4})#{SP}*年"
MONTH =
"(#{DIGIT}{1,2})#{SP}*月"
DAY =
"(#{DIGIT}{1,2})#{SP}*日"
HOUR =
"(#{DIGIT}+)#{SP}*時"
MIN =
"(#{DIGIT}+)#{SP}*分"
PATTERNS =
[
  [/#{YEAR}#{MONTH}#{DAY}/, '\1/\2/\3'],
  [/#{HOUR}#{MIN}/, '\1:\2']
]

Class Method Summary collapse

Class Method Details

.downcase(str) ⇒ Object



23
24
25
# File 'lib/mail/sanitizer/string.rb', line 23

def downcase(str)
  str.downcase.gsub(/[[:space:]]/, '')
end

.include_datetime?(str) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
41
42
43
44
# File 'lib/mail/sanitizer/string.rb', line 38

def include_datetime?(str)
  str = replace_jp_datetime(str)
  DateTime.parse(str)
  true
rescue
  false
end

.include_datetime_and_email_address?(str) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
36
# File 'lib/mail/sanitizer/string.rb', line 33

def include_datetime_and_email_address?(str)
  s = Mail::Sanitizer::String.remove_email_address(str)
  Mail::Sanitizer::String.include_email_address?(str) && Mail::Sanitizer::String.include_datetime?(s)
end

.include_email_address?(str) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/mail/sanitizer/string.rb', line 46

def include_email_address?(str)
  ADDRESS_REGEXP.match?(str)
end

.quot_pattern?(str) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
30
31
# File 'lib/mail/sanitizer/string.rb', line 27

def quot_pattern?(str)
  s = downcase(str)
  (s =~ Mail::Sanitizer::Constant::QUOT_PATTERN) ||
  (s =~ Mail::Sanitizer::Constant::QUOT_DATETIME_PATTERN && Mail::Sanitizer::String.include_datetime?(str))
end

.remove_email_address(str) ⇒ Object



50
51
52
# File 'lib/mail/sanitizer/string.rb', line 50

def remove_email_address(str)
  str.gsub(ADDRESS_REGEXP, '')
end

.replace_jp_datetime(str) ⇒ Object



54
55
56
57
58
59
# File 'lib/mail/sanitizer/string.rb', line 54

def replace_jp_datetime(str)
  return nil if str.nil? || str == ''
  fstr = str.dup
  PATTERNS.each { |pattern| fstr.gsub!(pattern[0], pattern[1]) }
  fstr
end

.split_line(str) ⇒ Object



19
20
21
# File 'lib/mail/sanitizer/string.rb', line 19

def split_line(str)
  str.split(/\r\n|\r|\n/)
end