mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Plugin loading. Handle encoding declarations correctly
This commit is contained in:
parent
45ed048612
commit
93685faa2e
@ -67,10 +67,17 @@ def load_plugin(path_to_zip_file): # {{{
|
|||||||
if name.lower().endswith('plugin.py'):
|
if name.lower().endswith('plugin.py'):
|
||||||
locals = {}
|
locals = {}
|
||||||
raw = zf.read(name)
|
raw = zf.read(name)
|
||||||
match = re.search(r'coding[:=]\s*([-\w.]+)', raw[:300])
|
lines, encoding = raw.splitlines(), 'utf-8'
|
||||||
encoding = 'utf-8'
|
cr = re.compile(r'coding[:=]\s*([-\w.]+)')
|
||||||
|
raw = []
|
||||||
|
for l in lines[:2]:
|
||||||
|
match = cr.search(l)
|
||||||
if match is not None:
|
if match is not None:
|
||||||
encoding = match.group(1)
|
encoding = match.group(1)
|
||||||
|
else:
|
||||||
|
raw.append(l)
|
||||||
|
raw += lines[2:]
|
||||||
|
raw = '\n'.join(raw)
|
||||||
raw = raw.decode(encoding)
|
raw = raw.decode(encoding)
|
||||||
raw = re.sub('\r\n', '\n', raw)
|
raw = re.sub('\r\n', '\n', raw)
|
||||||
exec raw in locals
|
exec raw in locals
|
||||||
|
Loading…
x
Reference in New Issue
Block a user