wesnoth/data/tools/campaign2wiki.py
Martin Hrubý (hrubymar10) 674fda85b7 Migrate links to https if available - Fwd c18537edc0678f40a209797d72dfaba3e5e88545
(cherry-picked from commit bc4d22dc72e79c3d6a3364ac896e473afd298246)
2018-10-07 03:23:36 +00:00

68 lines
2.3 KiB
Python
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# encoding: utf-8
"""
A script that autogenerates some information about campaigns for the
CampaignInformation wiki page. The script is a WIP.
"""
import os.path, sys
import argparse
import wesnoth.wmlparser3 as wmlparser3
class Campaign:
"""
A class for a specific campaign.
"""
def __init__(self, parser):
self.parser = parser
self.name = self.parser.get_text_val("name")
self.id = self.parser.get_text_val("id")
self.description = self.parser.get_text_val("description")
self.levels = len(self.parser.get_all(tag="difficulty"))
self.credits_link = "https://wiki.wesnoth.org/Credits#" + self.id
self.units_link = "http://units.wesnoth.org/trunk/mainline/en_US/%s.html" % self.id
def wiki_output(campaign):
"""
Takes a campaign instance and outputs information in wiki format
"""
# Remove Espreon fancy but bug-inducing characters
for char in ("", "", ''):
campaign.name = campaign.name.replace(char, "")
campaign.description = campaign.description.replace(char, "")
text = """== {0} ==
{1}
Difficulty levels : {2}
* [{3} Custom units]
* [{4} Credits]
""".format(campaign.name, campaign.description, campaign.levels,
campaign.units_link, campaign.credits_link)
return text
if __name__ == "__main__":
# Possible arguments
arg_parser = argparse.ArgumentParser(description='campaign2wiki is a script\
which generates information about campaigns for the wiki.')
arg_parser.add_argument('-d', '--data', default='data/',
dest='data_dir', help="The location of wesnoth data directory")
arg_parser.add_argument('-o', '--output', default='/tmp/CampaignWML',
dest='output_path', help="The location of the output file.")
arg_parser.add_argument('-w', '--wesnoth', default='./wesnoth',
dest='wesnoth', help='The wesnoth executable location')
args = arg_parser.parse_args()
output = ['{{Autogenerated}} ']
main = wmlparser3.Parser(args.wesnoth, None, None)
main.parse_file('data/_main.cfg')
for campaign in main.get_all(tag='campaign'):
a = Campaign(campaign)
output.append(wiki_output(a))
with open(args.output_path, "w", encoding="utf8") as wiki_format:
wiki_format.write(''.join(output))