Class/Module Index [+]

Quicksearch

Rfc2047

Constants

WORDSEQ

Public Class Methods

decode_to(target, from) click to toggle source

Decodes a string, from, containing RFC 2047 encoded words into a target character set, target. See iconv_open(3) for information on the supported target encodings. If one of the encoded words cannot be converted to the target encoding, it is left in its encoded form.

# File lib/sup/rfc2047.rb, line 31
def Rfc2047.decode_to(target, from)
  from = from.gsub(WORDSEQ, '\1')
  out = from.gsub(WORD) do
    |word|
    charset, encoding, text = $1, $2, $3

    # B64 or QP decode, as necessary:
    case encoding
      when 'b', 'B'
        #puts text
        text = text.unpack('m*')[0]
        #puts text.dump

      when 'q', 'Q'
        # RFC 2047 has a variant of quoted printable where a ' ' character
        # can be represented as an '_', rather than =32, so convert
        # any of these that we find before doing the QP decoding.
        text = text.tr("_", " ")
        text = text.unpack('M*')[0]

      # Don't need an else, because no other values can be matched in a
      # WORD.
    end

    Iconv.easy_decode(target, charset, text)
  end
end
is_encoded?(s;) click to toggle source
# File lib/sup/rfc2047.rb, line 25
def Rfc2047.is_encoded? s; s =~ WORD end

[Validate]

Generated with the Darkfish Rdoc Generator 2.