Quote:
Originally Posted by DiapDealer
…
Besides... KevinH provided both a solution without using the plugin AND a roadmap for doing the same with a replacement function via the plugin.
|
Yes, he didn’t give an exact example, he gave a “roadmap”.
Your example is not really a “function” either… or, at least, it is something that would be easier as two simple find/replace actions.
As KevinH mentioned, the find phrase would be the same, but the replace portion would have to be some sort of function. Unfortunately you
would need to know the language the plug-in uses. I haven’t used this plug-in yet, but I suspect it is similar to Calibre’s implementation.
Here is an example of a replacement function that uses a spelling dictionary to replace mi-shyphenated words:
Code:
import regex
from calibre import replace_entities
from calibre import prepare_string_for_xml
def replace(match, number, file_name, metadata, dictionaries, data, functions, *args, **kwargs):
def replace_word(wmatch):
# Try to remove the hyphen and replace the words if the resulting
# hyphen free word is recognized by the dictionary
without_hyphen = wmatch.group(1) + wmatch.group(2)
if dictionaries.recognized(without_hyphen):
return without_hyphen
return wmatch.group()
# Search for words split by a hyphen
text = replace_entities(match.group()[1:-1]) # Handle HTML entities like &
corrected = regex.sub(r'(\w+)\s*-\s*(\w+)', replace_word, text, flags=regex.VERSION1 | regex.UNICODE)
return '>%s<' % prepare_string_for_xml(corrected) # Put back required entities