Mercurial > hg > batmud > misc
view saintinfo-to-docbook-table.pl @ 67:c5dae8c49b73 misc
Added tool for gathering patron saint power / effect information and outputting a docbook XML table of it.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 21 Dec 2009 11:38:46 +0000 |
parents | |
children |
line wrap: on
line source
#!/usr/bin/perl -w use strict; my @powers = ( "almost non-existant", "faint", "spiritual", "strong", "heavenly", "celestial", "DIVINE", ); my $powerstr = join("|", @powers); my $name; my $power; my $effect; my %saints = (); my %powers = (); while (<STDIN>) { chomp; if (/^ St. ([A-Z][a-z]+)/) { $name = $1; } elsif (/^ +Her ($powerstr) power is reavealed in (.+?)\.$/) { if (defined($name)) { $power = $1; $effect = $2; if (defined($powers{$name}) && $powers{$name} ne $effect) { print STDERR "Saint '$name' already defined for '".$powers{$name}."' ($effect)!\n"; } $powers{$name} = $effect; $saints{$effect}{$power}{$name} = 1; } else { print STDERR "ERR: $_\n"; } undef($name); } elsif (/_________|index=/) { } elsif (/Her power is faint but those who believe/) { print STDERR "FAINT: $name\n"; } } print " <table> <title>List of powers bestowed by Saints</title> <tgroup cols='".((scalar @powers) + 1)."' align='left'> <thead> <row><entry>-</entry>"; print "<entry>$_</entry>" foreach (@powers); print "</row> </thead> <tbody> "; foreach my $effect (sort { $a cmp $b } keys %saints) { print " <row><entry>$effect</entry>"; foreach my $power (@powers) { my $s = join(", ", sort { $a cmp $b } keys %{$saints{$effect}{$power}}); print "<entry>".($s ne "" ? $s : "-")."</entry>"; } print "</row>\n"; } print " </tbody> </tgroup> </table> ";