def Encodings.value_decode(str)
return str unless str.index("=?")
str = str.gsub(/\?=(\s*)=\?/, '?==?')
str.split(/([ \t])/).map do |text|
if text.index('=?') .nil?
text
else
text.gsub!(/\?\=\=\?.+?\?[Qq]\?/m, '') if text =~ /\?==\?/
text.scan(/( # Group around entire regex to include it in matches
\=\?[^?]+\?([QB])\?[^?]+?\?\= # Quoted String with subgroup for encoding method
| # or
.+?(?=\=\?) # Plain String
)/xmi).map do |matches|
string, method = *matches
if method == 'b' || method == 'B'
b_value_decode(string)
elsif method == 'q' || method == 'Q'
q_value_decode(string)
else
string
end
end
end
end.join("")
end