Class: Mail::Encodings::QuotedPrintable

Inherits:
SevenBit show all
Defined in:
lib/mail/encodings/quoted_printable.rb

Constant Summary

NAME =
'quoted-printable'
PRIORITY =
2

Class Method Summary (collapse)

Methods inherited from TransferEncoding

can_transport?, get_best_compatible, to_s, #to_s

Class Method Details

+ (Boolean) can_encode?(str)

Returns:

  • (Boolean)


11
12
13
# File 'lib/mail/encodings/quoted_printable.rb', line 11

def self.can_encode?(str)
  EightBit.can_encode? str
end

+ (Object) cost(str)



25
26
27
28
29
30
31
32
# File 'lib/mail/encodings/quoted_printable.rb', line 25

def self.cost(str)
  # These bytes probably do not need encoding
  c = str.count("\x9\xA\xD\x20-\x3C\x3E-\x7E")
  # Everything else turns into =XX where XX is a 
  # two digit hex number (taking 3 bytes)
  total = (str.bytesize - c)*3 + c
  total.to_f/str.bytesize
end

+ (Object) decode(str)

Decode the string from Quoted-Printable. Cope with hard line breaks that were incorrectly encoded as hex instead of literal CRLF.



17
18
19
# File 'lib/mail/encodings/quoted_printable.rb', line 17

def self.decode(str)
  str.gsub(/(?:=0D=0A|=0D|=0A)\r\n/, "\r\n").unpack("M*").first.to_lf
end

+ (Object) encode(str)



21
22
23
# File 'lib/mail/encodings/quoted_printable.rb', line 21

def self.encode(str)
  [str.to_lf].pack("M").to_crlf
end