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)) 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): def read_sr_patterns(path, log=None):
import json, re import json, re
pats = [] pats = []
@ -344,6 +348,7 @@ def read_sr_patterns(path, log=None):
if pat is None: if pat is None:
if not line.strip(): if not line.strip():
continue continue
line = line.replace('\ue123', '\n')
try: try:
re.compile(line) re.compile(line)
except: except:

View File

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