module MList module Util module EmailHelpers def sanitize_header(charset, name, *values) header_sanitizer(name).call(charset, *values) end def header_sanitizer(name) Util.default_header_sanitizers[name] end def normalize_new_lines(text) text.to_s.gsub(/\r\n?/, "\n") end def remove_brackets(string) string =~ /\A<(.*?)>\Z/ ? $1 : string end def remove_regard(string) stripped = string.strip stripped =~ /\A.*re:\s+(\[.*\]\s*)?(.*?)\Z/i ? $2 : stripped end def text_to_html(text) lines = normalize_new_lines(text).split("\n") lines.collect! do |line| line = escape_once(line) line = (" " * $1.length) + $2 if line =~ /^(\s+)(.*?)$/ line = %{#{line}} if line =~ /^(>|[|]|[A-Za-z]+>)/ line = line.gsub(/\s\s/, '  ') line end lines.join("
\n") end def text_to_quoted(text) lines = normalize_new_lines(text).split("\n") lines.collect! do |line| '> ' + line end lines.join("\n") end HTML_ESCAPE = { '&' => '&', '>' => '>', '<' => '<', '"' => '"' } def escape_once(text) text.gsub(/[\"><]|&(?!([a-zA-Z]+|(#\d+));)/) { |special| HTML_ESCAPE[special] } end end end end