module MailParser::RFC2047
Public Instance Methods
b_decode(str)
click to toggle source
# File lib/mailparser/rfc2047.rb, line 54 def b_decode(str) return str.gsub(/[^A-Z0-9\+\/=]/i,"").unpack("m")[0] end
decode(str, opt=nil)
click to toggle source
# File lib/mailparser/rfc2047.rb, line 15 def decode(str, opt=nil) if opt.is_a? Hash charset = opt[:output_charset] charset_converter = opt[:charset_converter] else charset = opt end charset_converter ||= MailParser::ConvCharset.method(:conv_charset) words = [] ss = StringScanner.new(str.gsub(/\r?\n/, '')) until ss.eos? if s = ss.scan(/\=\?[^\(\)\<\>\@\,\;\:\"\/\[\]\?\.\=]+\?[QB]\?[^\? ]+\?\=/i) begin s = Encoded.new s, charset, charset_converter words.pop if words.length >= 2 and words[-1].is_a? Space and words[-2].is_a? Encoded rescue # ignore end words.push s elsif s = ss.scan(/\s+/) words.push Space.new(s) elsif s = ss.scan(/[^\s=]+/) words.push s else words.push ss.scan(/./) end end begin ret = words.join rescue ret = words.map{|w| w.to_s.force_encoding('binary')}.join end charset ? charset_converter.call(charset, charset, ret) : ret end
q_decode(str)
click to toggle source
# File lib/mailparser/rfc2047.rb, line 50 def q_decode(str) return str.gsub(/_/," ").gsub(/=\s*?$/,"=").unpack("M")[0] end