Merge branch 'countrylist-linksearch'
This commit is contained in:
@@ -244,7 +244,11 @@ missing!" )
|
|||||||
if not self._titel_raw:
|
if not self._titel_raw:
|
||||||
self.get_titel_value()
|
self.get_titel_value()
|
||||||
|
|
||||||
self.titel = self._titel_raw
|
# Try to find a wikilink for Titel on countrylist
|
||||||
|
if "[[" not in self._titel_raw:
|
||||||
|
self.titel = self._search_links( str(self._titel_raw) )
|
||||||
|
else:
|
||||||
|
self.titel = self._titel_raw
|
||||||
|
|
||||||
def get_titel_value( self ):
|
def get_titel_value( self ):
|
||||||
"""
|
"""
|
||||||
@@ -298,31 +302,10 @@ missing!" )
|
|||||||
parts.append( word )
|
parts.append( word )
|
||||||
parts.append( " " )
|
parts.append( " " )
|
||||||
|
|
||||||
# If we have indexes with out links, search for links
|
# If we have indexes without links, search for links
|
||||||
if indexes:
|
if indexes:
|
||||||
|
|
||||||
# Iterate over wikilinks of refpage and try to find related links
|
parts = self._search_links( parts, indexes )
|
||||||
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
|
|
||||||
|
|
||||||
# Join the collected links
|
# Join the collected links
|
||||||
sep = " "
|
sep = " "
|
||||||
@@ -343,6 +326,59 @@ missing!" )
|
|||||||
raise CountryListEntryError( "Template Parameter 'Interpret' is \
|
raise CountryListEntryError( "Template Parameter 'Interpret' is \
|
||||||
missing!" )
|
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 = list(range( len( keywords ) ))
|
||||||
|
|
||||||
|
# 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 str(keywords[0])
|
||||||
|
|
||||||
|
|
||||||
class CountryListError( Exception ):
|
class CountryListError( Exception ):
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user