Browse Source

CountryList-module: Put linksearching algorithm in separate function for simple reuse for Titel value

develop
Jonathan Golder 9 years ago
parent
commit
9d9207c175
  1. 72
      countrylist.py

72
countrylist.py

@ -301,6 +301,51 @@ missing!" )
# If we have indexes without links, search for links
if indexes:
parts = self._search_links( parts, indexes )
# Join the collected links
sep = " "
self.interpret = sep.join( parts )
# Nothing to do, just use raw
else:
self.interpret = self._interpret_raw
def get_interpret_value( self ):
"""
Reads value of Interpret parameter
If param is not present raise Error
"""
if self.entry.has( "Interpret" ):
self._interpret_raw = self.entry.get("Interpret").value.strip()
else:
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():
@ -308,11 +353,11 @@ missing!" )
for index in indexes:
# Check wether wikilink matches
if( parts[index] == wikilink.text or
parts[index] == wikilink.title ):
if( keywords[index] == wikilink.text or
keywords[index] == wikilink.title ):
# Overwrite name with complete wikilink
parts[index] = str( wikilink )
keywords[index] = str( wikilink )
# Remove index from worklist
indexes.remove( index )
@ -324,24 +369,11 @@ missing!" )
if not indexes:
break
# Join the collected links
sep = " "
self.interpret = sep.join( parts )
# Nothing to do, just use raw
else:
self.interpret = self._interpret_raw
def get_interpret_value( self ):
"""
Reads value of Interpret parameter
If param is not present raise Error
"""
if self.entry.has( "Interpret" ):
self._interpret_raw = self.entry.get("Interpret").value.strip()
# Choose wether return list or string based on input type
if not string:
return keywords
else:
raise CountryListEntryError( "Template Parameter 'Interpret' is \
missing!" )
return keywords[0]
class CountryListError( Exception ):

Loading…
Cancel
Save