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>
";