wesnoth/data/tools
Elias Pschernig a3875006eb [wmlunits] Reset a reference early to keep less objects referenced...
...and enable (manual) GC. Should keep memory footprint below 500MB
now for the full WML tree of all addons on the 1.6 server.
2009-09-15 20:13:40 +00:00
..
addon_manager
castle-cutter
emacs_mode
exploder
hexometer
unit_tree
vim
wesnoth
.gitignore
about_cfg_to_wiki
expand-terrain-macros.py
extractbindings
helpheader.xhtml
helptrailer.xhtml
journeylifter
Makefile
README
scoutDefault.py
terrain2wiki.rb
trackplacer
wesnoth_addon_manager
wmlflip
wmlindent
wmllint
wmllint_gui
wmlmove
wmlscope
wmltest
wmlunits [wmlunits] Reset a reference early to keep less objects referenced... 2009-09-15 20:13:40 +00:00
wmlxgettext

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.

== Scripts ==

=== journeylifter ===

A program for converting campaigns to use trackplacer-format journey files.
All mainline campaigns have already been converted; this is for lifting UMC.

=== trackplacer ===

A visual editor for journey tracks, the icon sequences that appear on
Wesnoth story screens.

=== wesnoth_addon_manager ===

Command-line client for uploading WML content to and downloading from
the add-on server.

=== wmlflip ===

Experimental tool that can hack a .cfg referring to a mapfile so that
all macros with X,Y coordinate pair arguments get their calls transformed
in a specified way.  Now supports only flipping the map around the Y 
axis, but provides a framework that should make other transformations
easy.

=== wmllint ===

This tool lifts WML from older dialects to current and performs sanity checks.
See the header comment of wmllint for a description and invocation options.

=== wmllint_gui ===

A simple GUI interface for wmllint, to aid WML developers frightened of
the command line.

=== wmlscope ===

A WML cross-reference checker.  Normally you'll use this to list
unresolved symbols., if any.  See the header comment of wmlscope for a
description and invocation options.

=== wmlmove ===

Use this tool to generate commands that will move a unit between
namespaces; campaign to core, core to campaign, or campaign to
campaign.  See the header comment of wmlmove for a description and
invocation options.

=== wmlunits ===

List names of all units in mainline, either as a mediawiki table or
as HTML.

=== TeamColorizer ===

Map the magenta team-color patches in the input image to red in the
output image, copy the result to output.  (This script lives under
unit_tree).

=== extractbindings ===

Extract and format a list of keystroke bindings from a theme file.
Presently this generates a table suitable for wiki inclusion.

=== terrain2wiki.rb ===

A script to create the "Terrain Table" on the TerrainLettersWML wiki page.
Run this and splice the outtput into the wiki whenever you add a new 
terrain type to mainline.

== 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

=== wmliterator.py ===

A WML codewalker class.  Not a full parser, but that's useful because
it doesn't get confused by unbalanced nacros; instead it lets you
walk through lines in a text file parsing out tags and elements

=== 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.