diff --git a/config/punctuation/default.conf b/config/punctuation/default.conf index e3995e53..9b5e1622 100644 --- a/config/punctuation/default.conf +++ b/config/punctuation/default.conf @@ -44,26 +44,31 @@ _:===:line =:===:equals [customDict] +# This dictionary uses regexp, so be sure to escape anything that would be parsed by regexp, e.g. *, ., ^, $, etc. [emoticonDict] -<{-.-}>:===:Raves -8-):===:smile with sunglasses -:-/:===:confused --.-:===:bugged ->.<:===:laughing -8-X:===:skull ->:):===:evil smile ->:-):===:evil smile -\o/:===:Hurray -:/:===:confused -8):===:smile with sunglasses -:D:===:laugh -;):===:wink -XD:===:LOL -:-):===:smile -:):===:smile -->:===:arrow right -<-:===:arrow left -oO:===:WTF? -Oo:===:WTF? -^^:===:enjoy smile +# This dictionary uses regexp, so be sure to escape anything that would be parsed by regexp, e.g. *, ., ^, $, etc. +.*[\s*|'|"][\s*|'|"]<{-.-}>.*:===:Raves +.*[\s*|'|"][\s*|'|"]8-\).*:===:smile with sunglasses +.*[\s*|'|"][\s*|'|"]:-/.*:===:confused +.*[\s*|'|"][\s*|'|"]-\.-.*:===:bugged +.*[\s*|'|"][\s*|'|"]>\.<.*:===:laughing +.*[\s*|'|"][\s*|'|"]8-X.*:===:skull +.*[\s*|'|"][\s*|'|"]>:\).*:===:evil smile +.*[\s*|'|"][\s*|'|"]>:-\).*:===:evil smile +.*[\s*|'|"][\s*|'|"]\\o/.*:===:Hurray +.*[\s*|'|"][\s*|'|"]:/.*:===:confused +.*[\s*|'|"][\s*|'|"]8\).*:===:smile with sunglasses +.*[\s*|'|"]:D[\s*|'|"].*:===:laugh +.*[\s*|'|"];\)[\s*|'|"].*:===:wink +.*[\s*|'|"]XD[\s*|'|"].*:===:LOL +.*[\s*|'|"]:-\)[\s*|'|"].*:===:smile +.*[\s*|'|"]:\)[\s*|'|"].*:===:smile +.*[\s*|'|"]->[\s*|'|"].*:===:arrow right +# example for arrow left +#(?:[ |^])(<-)(?:[ ,.!?$]):===:arrow left +# or +#([ |^])<-([ ,.!?$]):===:arrow left\2 +.*[\s*|'|"]<-[\s*|'|"].*:===:arrow left +.*[\s*|'|"][O|o][O|o][\s*|'|"].*:===:WTF? +.*[\s*|'|"]\^\^[\s*|'|"].*:===:enjoy smile diff --git a/src/fenrirscreenreader/core/punctuationManager.py b/src/fenrirscreenreader/core/punctuationManager.py index a98577ea..767d62ae 100644 --- a/src/fenrirscreenreader/core/punctuationManager.py +++ b/src/fenrirscreenreader/core/punctuationManager.py @@ -33,15 +33,16 @@ class punctuationManager(): del currAllPunctNone[ord(char)] except: pass - return text.translate(currAllPunctNone) - + return text.translate(currAllPunctNone) def useCustomDict(self, text, customDict, seperator=''): resultText = str(text) if customDict: for key,item in customDict.items(): - resultText = resultText.replace(str(key),seperator + str(item) + seperator) + try: + resultText = re.sub(str(key), seperator + str(item) + seperator, resultText) + except: + resultText = resultText.replace(str(key),seperator + str(item) + seperator) return resultText - def usePunctuationDict(self, text, punctuationDict, punctuation): resultText = str(text) @@ -53,7 +54,7 @@ class punctuationManager(): if self.env['runtime']['settingsManager'].getSetting('general', 'respectPunctuationPause') and \ len(key) == 1 and \ key in "',.;:?!": - resultText = resultText.replace(str(key),' ' +str(item) + str(key) + ' ') + resultText = resultText.replace(str(key),' ' +str(item) + str(key) + ' ') else: resultText = resultText.replace(str(key),' ' +str(item) + ' ') return resultText