| 93 | | |
| 94 | | def _set_folder_encode(self, on_off): |
| 95 | | if on_off: |
| 96 | | self._folder_encode = True |
| 97 | | self._decode_folder_name = decode_folder_name |
| 98 | | self._encode_folder_name = encode_folder_name |
| 99 | | else: |
| 100 | | self._folder_encode = False |
| 101 | | self._decode_folder_name = lambda x: x |
| 102 | | self._encode_folder_name = self._decode_folder_name |
| 103 | | |
| 104 | | folder_encode = property(lambda self: self._folder_encode, |
| 105 | | _set_folder_encode, |
| 106 | | None, |
| 107 | | "Set True to have folder names transparently encoded/decoded") |
| 108 | | |
| 109 | | |
| | 96 | |
| 769 | | def encode_folder_name(name): |
| 770 | | """Take a folder name and escape ampersands so that the correct name is |
| 771 | | seen by the IMAP server. |
| 772 | | |
| 773 | | @param name: Mailbox name (eg. "stuff & things") |
| 774 | | @return: Encoded mailbox name (eg. "stuff &- things") |
| 775 | | """ |
| 776 | | #TODO - full UTF-7 handling |
| 777 | | return name.replace('&', '&-') |
| 778 | | |
| 779 | | |
| 780 | | #XXX test that decode name matched re-encoded name, if it doesn't return the original |
| 781 | | def decode_folder_name(name): |
| 782 | | """Take a folder name as returned by an IMAP server and unescape |
| 783 | | ampersands so that the expected name is seen. |
| 784 | | |
| 785 | | @param name: Encoded mailbox name (eg. "stuff &- things") |
| 786 | | @return: Mailbox name (eg. "stuff & things") |
| 787 | | """ |
| 788 | | #TODO - full UTF-7 handling |
| 789 | | return name.replace('&-', '&') |
| 790 | | |