Mercurial > hg > batmud > misc
view materials/parsematerial.pl @ 0:81f1abadda3e misc
Renamed.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 17 Jul 2008 12:04:43 +0000 |
parents | |
children | 4ace936a44ec |
line wrap: on
line source
#!/usr/bin/perl -w # Superklunssi by Ggr use strict; my ($opt_short, $opt_csv); if ($#ARGV >= 0) { if ($ARGV[0] eq "-head") { $opt_short = 1; } elsif ($ARGV[0] eq "-csv") { $opt_csv = 1; } } my @titles = ( "Name","Weight","Sturdyness","Magic","Flammability", "Warmth","Toxicity","Resist","Malleability", "Mentality","Reactivity","Weapon rarity","Armour rarity", "Value","Rarity","Type","FN?","Lode name","Raw names","Refined names" ); my @names = ( "name", "weight", "sturdyness", "magic", "flammability", "warmth", "toxicity", "resistivity", "malleability", "mentality", "reactivity", "weapon_rarity", "armour_rarity", "value", "rarity", "type", "found_nature", "lode_name", "raw_names", "refined_names" ); my @widths = ( 15, 10, 18, 15, 18, 11, 18, 9, 18, 18, 18, 15, 15, 15, 12, 6, 3, 10, 35, 35 ); my %data = (); if (!$opt_short) { my $name = ""; while (<STDIN>) { chomp; if (/MATERIAL STATS \(([a-z ]+)\)\:/) { $name = $1; $data{$name}{"name"} = $1; } elsif (/^Weight \(g\/l\)\: *\(([a-z. ]+)\) *Sturdyness\: *\(([a-z. ]+)\)/) { $data{$name}{"weight"} = $1; $data{$name}{"sturdyness"} = $2; } elsif (/^Magic\: *\(([a-z. ]+)\) *Flammability\: *\(([a-z. ]+)\)/) { $data{$name}{"magic"} = $1; $data{$name}{"flammability"} = $2; } elsif (/^Warmth\: *\(([a-z. ]+) outfit\) *Toxicity\: *\(([a-z. ]+)\)/) { $data{$name}{"warmth"} = $1; $data{$name}{"toxicity"} = $2; } elsif (/^Warmth\: *\(([a-z. ]+)\) *Toxicity\: *\(([a-z. ]+)\)/) { $data{$name}{"warmth"} = $1; $data{$name}{"toxicity"} = $2; } elsif (/^Resistivity\: *\(([a-z. ]+) insulator\) *Malleability\: *\(([a-z. ]+)\)/) { $data{$name}{"resistivity"} = $1; $data{$name}{"malleability"} = $2; } elsif (/^Resistivity\: *\(([a-z. ]+)\) *Malleability\: *\(([a-z. ]+)\)/) { $data{$name}{"resistivity"} = $1; $data{$name}{"malleability"} = $2; } elsif (/^Mentality\: *\(([a-z. ]+)\) *Reactivity\: *\(([a-z. ]+)\)/) { $data{$name}{"mentality"} = $1; $data{$name}{"reactivity"} = $2; } elsif (/^Weapon rarity\: *\(([a-z. ]+)\) *Armour rarity\: *\(([a-z. ]+)\)/) { $data{$name}{"weapon_rarity"} = $1; $data{$name}{"armour_rarity"} = $2; } elsif (/^Value \(gp\/kg\)\: *\(([a-z -]+)\) *Rarity\: *\(([a-z. ]+)\)/) { $data{$name}{"value"} = $1; $data{$name}{"rarity"} = $2; } elsif (/^Article\: *([a-z. ]+) *Type: *([A-Za-z]+)/) { $data{$name}{"article"} = $1; $data{$name}{"type"} = $2; } elsif (/^Found nature\: *(Yes|No) *Lode name\: *([A-Za-z]+)/) { $data{$name}{"found_nature"} = $1; $data{$name}{"lode_name"} = $2; } elsif (/^Raw names\: *([a-z, ]+[a-z])/) { $data{$name}{"raw_names"} = $1; } elsif (/^Refined names\: *([a-z, ]+[a-z])/) { $data{$name}{"refined_names"} = $1; } } } my @entries = sort { $a cmp $b } keys %data; if ($opt_csv) { foreach my $name (@entries) { my $s = ""; foreach my $field (@names) { $s .= $data{$name}{$field}.";"; } print "$s\n"; } } elsif ($opt_short) { my $str = ""; for (my $i = 0; $i < @names; $i++) { $str .= sprintf("%-".$widths[$i]."s | ", $titles[$i]); } print "$str\n"; $str =~ s/[^|]/-/g; $str =~ s/\|/+/g; print "$str\n"; } else { foreach my $name (@entries) { my $str = ""; for (my $i = 0; $i < @names; $i++) { my $field = $names[$i]; if (defined($data{$name}{$field})) { $str .= sprintf("%-".$widths[$i]."s | ", $data{$name}{$field}); } } print "$str\n"; } }