def show_message(uid, raw=false)
log "show message: #{uid}"
return @current_mail.to_s if raw
uid = uid.to_i
if uid == @current_message_uid
return @current_message
end
log "showing message uid: #{uid}"
data = if x = message_cache[[@mailbox, uid]]
log "- message cache hit"
x
else
log "- fetching and storing to message_cache[[#{@mailbox}, #{uid}]]"
fetch_and_cache(uid)
end
if data.nil?
log "- data is nil. retrying..."
return show_message(uid, raw)
end
mail = data[:mail]
size = data[:size]
@current_message_uid = uid
log "- setting @current_mail"
@current_mail = mail
@current_message = data[:message_text]
rescue
log "parsing error"
"Error encountered parsing this message:\n#{$!}\n#{$!.backtrace.join("\n")}"
end