Handle newlines when serializing to csr files

See #1827198 (Book convertion loading regexPDF to epub)
This commit is contained in:
Kovid Goyal 2019-05-15 12:05:09 +05:30
parent b114528e3f
commit 0cf114ada1
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 7 additions and 1 deletions

View File

@ -334,6 +334,10 @@ def abspath(x):
return os.path.abspath(os.path.expanduser(x))
def escape_sr_pattern(exp):
return exp.replace('\n', '\ue123')
def read_sr_patterns(path, log=None):
import json, re
pats = []
@ -344,6 +348,7 @@ def read_sr_patterns(path, log=None):
if pat is None:
if not line.strip():
continue
line = line.replace('\ue123', '\n')
try:
re.compile(line)
except:

View File

@ -122,6 +122,7 @@ class SearchAndReplaceWidget(Widget, Ui_Form):
show=True)
def sr_save_clicked(self):
from calibre.ebooks.conversion.cli import escape_sr_pattern as escape
filename = choose_save_file(self, 'sr_saved_patterns',
_('Save calibre search-replace definitions file'),
filters=[
@ -130,7 +131,7 @@ class SearchAndReplaceWidget(Widget, Ui_Form):
if filename:
with codecs.open(filename, 'w', 'utf-8') as f:
for search, replace in self.get_definitions():
f.write(search + u'\n' + replace + u'\n\n')
f.write(escape(search) + u'\n' + escape(replace) + u'\n\n')
def sr_up_clicked(self):
self.cell_rearrange(-1)