Ticket #94: flowed.diff
File flowed.diff, 2.0 KB (added by ben@…, 16 years ago) |
---|
-
/
old new 218 218 else: 219 219 self.VERBATIM_FORMAT = 1 220 220 221 if parameters.has_key('reflow'): 222 self.REFLOW = int(parameter['reflow']) 223 else: 224 self.REFLOW = 1 225 221 226 if parameters.has_key('strip_signature'): 222 227 self.STRIP_SIGNATURE = int(parameters['strip_signature']) 223 228 else: … … 859 864 860 865 return ('\n'.join(body)) 861 866 867 def reflow(self, text, delsp = 0): 868 """ 869 Reflow the message based on the format="flowed" specification (RFC 3676) 870 """ 871 flowedlines = [] 872 quotelevel = 0 873 prevflowed = 0 874 875 for line in text.splitlines(): 876 from re import match 877 878 # Figure out the quote level and the content of the current line 879 m = match('(>*)( ?)(.*)', line) 880 linequotelevel = len(m.group(1)) 881 line = m.group(3) 882 883 # Determine whether this line is flowed 884 if line and line != '-- ' and line[-1] == ' ': 885 flowed = 1 886 else: 887 flowed = 0 888 889 if flowed and delsp and line and line[-1] == ' ': 890 line = line[:-1] 891 892 # If the previous line is flowed, append this line to it 893 if prevflowed and line != '-- ' and linequotelevel == quotelevel: 894 flowedlines[-1] += line 895 # Otherwise, start a new line 896 else: 897 flowedlines.append('>' * linequotelevel + line) 898 899 prevflowed = flowed 900 901 902 return '\n'.join(flowedlines) 903 862 904 def strip_quotes(self, text): 863 905 """ 864 906 Strip quotes from message by Nicolas Mendoza … … 917 959 body_text = part.get_payload(decode=1) 918 960 if not body_text: 919 961 body_text = part.get_payload(decode=0) 962 963 format = email.Utils.collapse_rfc2231_value(part.get_param('Format')).lower() 964 delsp = email.Utils.collapse_rfc2231_value(part.get_param('DelSp')).lower() 965 966 if self.REFLOW and not self.VERBATIM_FORMAT and format == 'flowed': 967 body_text = self.reflow(body_text, delsp == 'yes') 920 968 921 969 if self.STRIP_SIGNATURE: 922 970 body_text = self.strip_signature(body_text)