CountryList-module: Put linksearching algorithm in separate function for simple reuse for Titel value
This commit is contained in:
@@ -298,31 +298,10 @@ missing!" )
|
||||
parts.append( word )
|
||||
parts.append( " " )
|
||||
|
||||
# If we have indexes with out links, search for links
|
||||
# If we have indexes without links, search for links
|
||||
if indexes:
|
||||
|
||||
# Iterate over wikilinks of refpage and try to find related links
|
||||
for wikilink in self.wikicode.ifilter_wikilinks():
|
||||
|
||||
# Iterate over interpret names
|
||||
for index in indexes:
|
||||
|
||||
# Check wether wikilink matches
|
||||
if( parts[index] == wikilink.text or
|
||||
parts[index] == wikilink.title ):
|
||||
|
||||
# Overwrite name with complete wikilink
|
||||
parts[index] = str( wikilink )
|
||||
|
||||
# Remove index from worklist
|
||||
indexes.remove( index )
|
||||
|
||||
# Other indexes won't also match
|
||||
break
|
||||
|
||||
# If worklist is empty, stop iterating over wikilinks
|
||||
if not indexes:
|
||||
break
|
||||
parts = self._search_links( parts, indexes )
|
||||
|
||||
# Join the collected links
|
||||
sep = " "
|
||||
@@ -343,6 +322,59 @@ missing!" )
|
||||
raise CountryListEntryError( "Template Parameter 'Interpret' is \
|
||||
missing!" )
|
||||
|
||||
def _search_links( self, keywords, indexes=None ):
|
||||
"""
|
||||
Search matching wikilinks for keyword(s) in CountryList's wikicode
|
||||
|
||||
@param keywords: One or more keywords to search for
|
||||
@type keywords: str, list
|
||||
@param indexes: List with numeric indexes for items of keywords to work
|
||||
on only
|
||||
@type indexes: list of ints
|
||||
@return: List or String with replaced keywords
|
||||
@return type: str, list
|
||||
"""
|
||||
|
||||
# Maybe convert keywords string to list
|
||||
if( isinstance( keywords, str ) ):
|
||||
keywords = [ keywords, ]
|
||||
string = True
|
||||
else:
|
||||
string = False
|
||||
|
||||
# If indexes worklist was not provided, work on all elements
|
||||
if not indexes:
|
||||
indexes = range( len( keywords ) - 1 )
|
||||
|
||||
# Iterate over wikilinks of refpage and try to find related links
|
||||
for wikilink in self.wikicode.ifilter_wikilinks():
|
||||
|
||||
# Iterate over interpret names
|
||||
for index in indexes:
|
||||
|
||||
# Check wether wikilink matches
|
||||
if( keywords[index] == wikilink.text or
|
||||
keywords[index] == wikilink.title ):
|
||||
|
||||
# Overwrite name with complete wikilink
|
||||
keywords[index] = str( wikilink )
|
||||
|
||||
# Remove index from worklist
|
||||
indexes.remove( index )
|
||||
|
||||
# Other indexes won't also match
|
||||
break
|
||||
|
||||
# If worklist is empty, stop iterating over wikilinks
|
||||
if not indexes:
|
||||
break
|
||||
|
||||
# Choose wether return list or string based on input type
|
||||
if not string:
|
||||
return keywords
|
||||
else:
|
||||
return keywords[0]
|
||||
|
||||
|
||||
class CountryListError( Exception ):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user