CountryList-Module: Implement methods for handling Interpret-Parameter
Including searching for missing links
This commit is contained in:
@@ -227,3 +227,93 @@ missing!" )
|
||||
else:
|
||||
raise CountryListEntryError( "Template Parameter 'Titel' is \
|
||||
missing!" )
|
||||
|
||||
def prepare_interpret( self ):
|
||||
"""
|
||||
Loads and prepares Interpret of latest entry
|
||||
"""
|
||||
|
||||
# If self._interpret_raw is not set, get it
|
||||
if not self._interpret_raw:
|
||||
self.get_interpret_value()
|
||||
|
||||
# Work with interpret value to add missing links
|
||||
# Split it in words
|
||||
words = self._interpret_raw.split()
|
||||
|
||||
print( words )
|
||||
|
||||
# Interpret name separating words
|
||||
seps = ( "feat.", "&" )
|
||||
|
||||
# Create empty list for concatenated interpret names
|
||||
parts = [ " ", ]
|
||||
# Another list for managing indexes which need to be worked on
|
||||
indexes = list()
|
||||
index = 0
|
||||
|
||||
# Reconcatenate interpret names
|
||||
for word in words:
|
||||
|
||||
# Name parts
|
||||
if word not in seps:
|
||||
parts[-1] += (" " + word)
|
||||
|
||||
# Remove unnecessary whitespace
|
||||
parts[-1] = parts[-1].strip()
|
||||
|
||||
# We only need to work on it, if no wikilink is present
|
||||
if index not in indexes and "[[" not in parts[-1]:
|
||||
indexes.append( index )
|
||||
else:
|
||||
# Count up index 2 times ( Separator + next Name )
|
||||
index += 2
|
||||
parts.append( word )
|
||||
parts.append( " " )
|
||||
|
||||
# If we have indexes with out 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
|
||||
|
||||
print( parts )
|
||||
|
||||
# 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!" )
|
||||
|
||||
Reference in New Issue
Block a user