Add more prefixes.
Make the RE for prefixes safe against empty match groups. Fix type, some textual and other small changes. * src/plugins/PatchNames.py svn: r10518
This commit is contained in:
parent
c0a8ae9aff
commit
125bbae8ac
@ -58,26 +58,34 @@ import gen.lib
|
|||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# List of possible surname prefixes. Notice that you must run the tool
|
||||||
|
# multiple times for prefixes such as "van der".
|
||||||
prefix_list = [
|
prefix_list = [
|
||||||
"de", "van", "von", "di", "le", "du", "dela", "della",
|
"de", "van", "von", "di", "le", "du", "dela", "della",
|
||||||
"des", "vande", "ten", "da", "af", "den", "das", "dello",
|
"des", "vande", "ten", "da", "af", "den", "das", "dello",
|
||||||
"del", "en", "ein", "el" "et", "les", "lo", "los", "un",
|
"del", "en", "ein", "el" "et", "les", "lo", "los", "un",
|
||||||
"um", "una", "uno",
|
"um", "una", "uno", "der", "ter", "te", "die",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
_title_re = re.compile(r"^([A-Za-z][A-Za-z]+\.)\s+(.*)$")
|
_title_re = re.compile(r"^ ([A-Za-z][A-Za-z]+\.) \s+ (.+) $", re.VERBOSE)
|
||||||
_nick_re = re.compile(r"(.+)\s*[(\"](.*)[)\"]")
|
_nick_re = re.compile(r"(.+) \s* [(\"] (.+) [)\"]", re.VERBOSE)
|
||||||
_fn_prefix_re = re.compile("(.*)\s+(%s)\s*$" % '|'.join(prefix_list),
|
|
||||||
|
# Find a prefix in the first_name
|
||||||
|
_fn_prefix_re = re.compile("(\S+)\s+(%s)\s*$" % '|'.join(prefix_list),
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
_sn_prefix_re = re.compile("^\s*(%s)\s+(.*)" % '|'.join(prefix_list),
|
|
||||||
|
# Find a prefix in the surname
|
||||||
|
_sn_prefix_re = re.compile("^\s*(%s)\s+(.+)" % '|'.join(prefix_list),
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Search each name in the database, and compare the firstname against the
|
# Search each name in the database, and compare the firstname against the
|
||||||
# form of "Name (Nickname)". If it matches, change the first name entry
|
# form of "Name (Nickname)". If it matches, change the first name entry
|
||||||
# to "Name" and add "Nickname" into the nickname field.
|
# to "Name" and add "Nickname" into the nickname field. Also, search for
|
||||||
|
# surname prefixes. If found, change the name entry and put the prefix in
|
||||||
|
# the name prefix field.
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -137,20 +145,28 @@ class PatchNames(Tool.BatchTool, ManagedWindow.ManagedWindow):
|
|||||||
|
|
||||||
old_prefix = name.get_surname_prefix()
|
old_prefix = name.get_surname_prefix()
|
||||||
|
|
||||||
|
# First try to find the name prefix in the first_name
|
||||||
match = _fn_prefix_re.match(first)
|
match = _fn_prefix_re.match(first)
|
||||||
if match:
|
if match:
|
||||||
groups = match.groups()
|
groups = match.groups()
|
||||||
self.prefix1_list.append((key, groups[0],
|
if old_prefix:
|
||||||
" ".join([groups[1], old_prefix]))
|
# Put the found prefix before the old prefix
|
||||||
)
|
new_prefix = " ".join([groups[1], old_prefix])
|
||||||
|
else:
|
||||||
|
new_prefix = groups[1]
|
||||||
|
self.prefix1_list.append((key, groups[0], new_prefix))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# Next, try to find the name prefix in the surname
|
||||||
match = _sn_prefix_re.match(sname)
|
match = _sn_prefix_re.match(sname)
|
||||||
if match:
|
if match:
|
||||||
groups = match.groups()
|
groups = match.groups()
|
||||||
self.prefix2_list.append((key, groups[1],
|
if old_prefix:
|
||||||
" ".join([old_prefix, groups[0]]))
|
# Put the found prefix after the old prefix
|
||||||
)
|
new_prefix = " ".join([old_prefix, groups[0]])
|
||||||
|
else:
|
||||||
|
new_prefix = groups[0]
|
||||||
|
self.prefix2_list.append((key, groups[1], new_prefix))
|
||||||
|
|
||||||
self.progress.step()
|
self.progress.step()
|
||||||
|
|
||||||
@ -160,7 +176,7 @@ class PatchNames(Tool.BatchTool, ManagedWindow.ManagedWindow):
|
|||||||
self.progress.close()
|
self.progress.close()
|
||||||
self.close()
|
self.close()
|
||||||
OkDialog(_('No modifications made'),
|
OkDialog(_('No modifications made'),
|
||||||
_("No titles or nicknames were found"))
|
_("No titles, nicknames or prefixes were found"))
|
||||||
|
|
||||||
def build_menu_names(self, obj):
|
def build_menu_names(self, obj):
|
||||||
return (self.label, None)
|
return (self.label, None)
|
||||||
@ -215,7 +231,7 @@ class PatchNames(Tool.BatchTool, ManagedWindow.ManagedWindow):
|
|||||||
self.prefix1_hash = {}
|
self.prefix1_hash = {}
|
||||||
self.prefix2_hash = {}
|
self.prefix2_hash = {}
|
||||||
|
|
||||||
self.progress.set_pass(_('Bulding display'),
|
self.progress.set_pass(_('Building display'),
|
||||||
len(self.nick_list)+len(self.title_list)
|
len(self.nick_list)+len(self.title_list)
|
||||||
+len(self.prefix1_list)+len(self.prefix2_list))
|
+len(self.prefix1_list)+len(self.prefix2_list))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user