Eric S. Raymond 13d01a4e51 wmllint now has the capability to automatically check...
...that every description= in [message] and [filter] blocks refers to
a unit that is present in the scenario. This commit fixes almost all
bugs found with this test, and adds magic comments to handle places
where the WML doesn't supply a recognizable unit creation or recall
(usually because of macros).
2008-01-31 13:12:19 +00:00
..
2008-01-28 20:55:51 +00:00
2008-01-11 12:39:34 +00:00
2007-11-28 07:34:37 +00:00
2007-10-02 13:26:30 +00:00
2007-09-21 07:31:34 +00:00

Tools for hacking or generating WML, maps, images, and sounds belong here.
Tools for sanity-checking the mainline campaigns and associated data 
also belong here.

== Python API ==

=== wmltools.py ===

The main facility in this module is a cross-referencer class.  
It also contains utility methods for working with the data tree.
See the header comment of wmtools.py for details

=== wmlparser.py ===

This python module contains code originally developed for CampGen - it contains
a general WML Parser written in Python, just like the Perl one. So if you want
to develop tools in Python instead of Perl and need a WML parser, it may save
some time.

The API currently is very sparsely documented, but I plan to extend this. In
general, wmlparser.py contains the WML Parser, which is used like:

parser = wmlparser.Parser(datapath)

Then:

parser.parse_file(filename)
or
parser.parse_stream(file)
or
parser.parse_text(string)

to set what to parse, and finally:

wmldata = parser.parse()

to read everything into a Python representation of the parsed data.

=== wmldata.py ===

This file has several utility methods defined to access and manipulate
WML data.  Most of them will not be generally useful. An example:

for unit in  wmldata.get_all("unit"):
    print unit.get_text_val("id")

== Standalone use ==

=== wmlparser ===

If called standalone, wmlparser.py will parse whatever you give it and
dump back to stdout. For example:

python wmlparser.py -e {game.cfg} > game.dump

Should produce a nice several 100000 lines file of the complete configuration
with all included files and macros expanded to a single file.