mirror of
https://github.com/gryf/ebook-converter.git
synced 2026-01-29 17:55:45 +01:00
65 lines
1.8 KiB
Python
65 lines
1.8 KiB
Python
"""
|
|
Created on 4 Jun 2010
|
|
|
|
@author: charles
|
|
"""
|
|
from ebook_converter.constants_old import preferred_encoding
|
|
|
|
|
|
def object_to_unicode(obj, enc=preferred_encoding):
|
|
|
|
def dec(x):
|
|
return x.decode(enc, 'replace')
|
|
|
|
if isinstance(obj, bytes):
|
|
return dec(obj)
|
|
if isinstance(obj, (list, tuple)):
|
|
return [dec(x) if isinstance(x, bytes) else object_to_unicode(x)
|
|
for x in obj]
|
|
if isinstance(obj, dict):
|
|
ans = {}
|
|
for k, v in obj.items():
|
|
k = object_to_unicode(k)
|
|
v = object_to_unicode(v)
|
|
ans[k] = v
|
|
return ans
|
|
return obj
|
|
|
|
|
|
def encode_is_multiple(fm):
|
|
if fm.get('is_multiple', None):
|
|
# migrate is_multiple back to a character
|
|
fm['is_multiple2'] = fm.get('is_multiple', {})
|
|
dt = fm.get('datatype', None)
|
|
if dt == 'composite':
|
|
fm['is_multiple'] = ','
|
|
else:
|
|
fm['is_multiple'] = '|'
|
|
else:
|
|
fm['is_multiple'] = None
|
|
fm['is_multiple2'] = {}
|
|
|
|
|
|
def decode_is_multiple(fm):
|
|
im = fm.get('is_multiple2', None)
|
|
if im:
|
|
fm['is_multiple'] = im
|
|
del fm['is_multiple2']
|
|
else:
|
|
# Must migrate the is_multiple from char to dict
|
|
im = fm.get('is_multiple', {})
|
|
if im:
|
|
dt = fm.get('datatype', None)
|
|
if dt == 'composite':
|
|
im = {'cache_to_list': ',', 'ui_to_list': ',',
|
|
'list_to_ui': ', '}
|
|
elif fm.get('display', {}).get('is_names', False):
|
|
im = {'cache_to_list': '|', 'ui_to_list': '&',
|
|
'list_to_ui': ', '}
|
|
else:
|
|
im = {'cache_to_list': '|', 'ui_to_list': ',',
|
|
'list_to_ui': ', '}
|
|
elif im is None:
|
|
im = {}
|
|
fm['is_multiple'] = im
|