Parsing is now correctly separated from report generation.

This commit is contained in:
Eric S. Raymond 2008-03-31 14:25:49 +00:00
parent 9e0c7d7e84
commit 801c1409e6

View File

@ -19,7 +19,7 @@ import wesnoth.wmlparser as wmlparser
import wesnoth.wmltools as wmltools
class UnitList:
def __init__(self, units_filename, text_to_parse):
def __init__(self, units_filename, text_to_parse, description):
"Collect all units in the specified namespace, None = mainline."
# Create a new parser.
@ -40,7 +40,9 @@ class UnitList:
# Collect unit data
self.units = WML.get_first("+units")
def report_units(self, isocode, campaign):
self.description = description
def report_units(self, isocode):
tx = None
doubles = {}
self.races = {}
@ -80,10 +82,10 @@ class UnitList:
def place_units(race):
if use_html:
print "<font size=5>%s</font>" % (race + campaign)
print "<font size=5>%s</font>" % (race + self.description)
print "<table border=solid>"
else:
print '| colspan="6" | <font size=5>%s</font>' % (race + campaign)
print '| colspan="6" | <font size=5>%s</font>' % (race + self.description)
print '|-'
print '| level 0 || level 1 || level 2 || level 3 || level 4 || level 5'
self.levels = []
@ -165,22 +167,24 @@ if __name__ == '__main__':
wmltools.pop_to_top("wmlunits")
datadir = os.getcwd() + "/data"
# Parse all unit data
allunits = [UnitList("data/core/units.cfg", None, " - mainline")]
campaigns = glob.glob("data/campaigns/*")
for campaign in campaigns:
dirname = campaign[5:] # strip leading data/
description = dirname[10:].replace("_", " ")
allunits.append(UnitList(None,
"[+units]{%s/units}[/units]" % dirname,
" - " + description))
# Report generation
if use_html:
print "<html><body>"
else:
print '{| border="solid"'
# Mainline
mainline = UnitList("data/core/units.cfg", None)
mainline.report_units(isocode, " - mainline")
# Campaigns
campaigns = glob.glob("data/campaigns/*")
for campaign in campaigns:
dirname = campaign[5:] # strip leading data/
description = dirname[10:].replace("_", " ")
campaign = UnitList(None, "[+units]{%s/units}[/units]" % dirname)
campaign.report_units(isocode, " - " + description)
for unitlist in allunits:
unitlist.report_units(isocode)
if use_html:
print "</body></html>"