1
0
mirror of https://github.com/gryf/ebook-converter.git synced 2026-01-07 12:14:11 +01:00

Initial import

This commit is contained in:
2020-03-31 17:15:23 +02:00
commit d97ea9b0bc
311 changed files with 131419 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
# multiple replace from dictionnary : http://code.activestate.com/recipes/81330/
from __future__ import unicode_literals
__license__ = 'GPL v3'
__copyright__ = '2010, sengian <sengian1 @ gmail.com>'
__docformat__ = 'restructuredtext en'
import re
try:
from collections import UserDict
except ImportError:
from UserDict import UserDict
class MReplace(UserDict):
def __init__(self, data=None, case_sensitive=True):
UserDict.__init__(self, data)
self.re = None
self.regex = None
self.case_sensitive = case_sensitive
self.compile_regex()
def compile_regex(self):
if len(self.data) > 0:
keys = sorted(self.data, key=len, reverse=True)
if isinstance(keys[0], bytes):
tmp = b"(%s)" % b"|".join(map(re.escape, keys))
else:
tmp = "(%s)" % "|".join(map(re.escape, keys))
if self.re != tmp:
self.re = tmp
if self.case_sensitive:
self.regex = re.compile(self.re)
else:
self.regex = re.compile(self.re, re.I)
def __call__(self, mo):
return self[mo.string[mo.start():mo.end()]]
def mreplace(self, text):
# Replace without regex compile
if len(self.data) < 1 or self.re is None:
return text
return self.regex.sub(self, text)