changeset 281:2e8fefca6594 misc

Clean up parsing.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 09 Mar 2015 04:45:33 +0200
parents bff5e42a630c
children b72e0788d63e
files materials/parsematerial.pl
diffstat 1 files changed, 87 insertions(+), 84 deletions(-) [+]
line wrap: on
line diff
--- a/materials/parsematerial.pl	Mon Mar 09 04:35:29 2015 +0200
+++ b/materials/parsematerial.pl	Mon Mar 09 04:45:33 2015 +0200
@@ -374,92 +374,95 @@
 ###
 my %data = ();
 my $name = "";
-while (<STDIN>)
+my $linenum = 0;
+while (defined($line = <STDIN>))
 {
-    chomp;
-    if (/MATERIAL STATS \(([a-z ]+)\)\:/) {
-      $name = $1;
-    }
-    elsif (/^Weight \(g\/l\)\: *\(([a-z. ]+)\) *Sturdyness\: *\(([a-z. ]+)\)/)
-    {
-      $data{$name}{2} = mtranslate(2, $1);
-      $data{$name}{3} = mtranslate(3, $2);
-    }
-    elsif (/^Magic\: *\(([a-z. ]+)\) *Flammability\: *\(([a-z. ]+)\)/)
-    {
-      $data{$name}{4} = mtranslate(4, $1);
-      $data{$name}{5} = mtranslate(5, $2);
-    }
-    elsif (/^Warmth\: *\(([a-z. ]+ outfit)\) *Toxicity\: *\(([a-z. ]+)\)/)
-    {
-      my ($tmp1, $tmp2) = ($1, $2);
-      $tmp1 =~ s/ +outfit$//;
-      $data{$name}{6} = mtranslate(6, $tmp1);
-      $data{$name}{7} = mtranslate(7, $tmp2);
-    }
-    elsif (/^Warmth\: *\(([a-z. ]+)\) *Toxicity\: *\(([a-z. ]+)\)/)
-    {
-      my ($tmp1, $tmp2) = ($1, $2);
-      $data{$name}{6} = mtranslate(6, $1);
-      $data{$name}{7} = mtranslate(7, $2);
-    }
-    elsif (/^Resistivity\: *\(([a-z. ]+ insulator)\) *Malleability\: *\(([a-z. ]+)\)?/)
-    {
-      my ($tmp1, $tmp2) = ($1, $2);
-      $tmp1 =~ s/ +insulator$//;
-      $data{$name}{8} = mtranslate(8, $tmp1);
-      $data{$name}{9} = mtranslate(9, $tmp2);
-    }
-    elsif (/^Resistivity\: *\(([a-z. ]+)\) *Malleability\: *\(([a-z. ]+)\)?/)
-    {
-      $data{$name}{8} = mtranslate(8, $1);
-      $data{$name}{9} = mtranslate(9, $2);
-    }
-    elsif (/^Mentality\: *\(([a-z. ]+)\) *Reactivity\: *\(([a-z. ]+)\)?/)
-    {
-      $data{$name}{10} = mtranslate(10, $1);
-      $data{$name}{11} = mtranslate(11, $2);
-    }
-    elsif (/^Weapon rarity\: *\(([a-z. ]+)\) *Armour rarity\: *\(([a-z. ]+)\)/)
-    {
-      $data{$name}{12} = mtranslate(12, $1);
-      $data{$name}{13} = mtranslate(13, $2);
-    }
-    elsif (/^Value \(gp\/kg\)\: *\(([a-z -]+)\) *Rarity\: *\(([a-z. ]+)\)/)
-    {
-      $data{$name}{14} = mtranslate(14, $1);
-      $data{$name}{15} = mtranslate(15, $2);
-    }
-    elsif (/^Article\: *([a-z. ]+) *Type: *([A-Za-z]+)/)
-    {
-      $data{$name}{16} = mtranslate(16, $2);
+  $linenum++;
+  chomp;
+  if ($line =~ /MATERIAL STATS \(([a-z ]+)\)\:/)
+  {
+    $name = $1;
+  }
+  elsif ($line =~ /^Weight \(g\/l\)\: *\(([a-z. ]+)\) *Sturdyness\: *\(([a-z. ]+)\)/)
+  {
+    $data{$name}{2} = mtranslate(2, $1);
+    $data{$name}{3} = mtranslate(3, $2);
+  }
+  elsif ($line =~ /^Magic\: *\(([a-z. ]+)\) *Flammability\: *\(([a-z. ]+)\)/)
+  {
+    $data{$name}{4} = mtranslate(4, $1);
+    $data{$name}{5} = mtranslate(5, $2);
+  }
+  elsif ($line =~ /^Warmth\: *\(([a-z. ]+ outfit)\) *Toxicity\: *\(([a-z. ]+)\)/)
+  {
+    my ($tmp1, $tmp2) = ($1, $2);
+    $tmp1 =~ s/ +outfit$//;
+    $data{$name}{6} = mtranslate(6, $tmp1);
+    $data{$name}{7} = mtranslate(7, $tmp2);
+  }
+  elsif ($line =~ /^Warmth\: *\(([a-z. ]+)\) *Toxicity\: *\(([a-z. ]+)\)/)
+  {
+    my ($tmp1, $tmp2) = ($1, $2);
+    $data{$name}{6} = mtranslate(6, $1);
+    $data{$name}{7} = mtranslate(7, $2);
+  }
+  elsif ($line =~ /^Resistivity\: *\(([a-z. ]+ insulator)\) *Malleability\: *\(([a-z. ]+)\)?/)
+  {
+    my ($tmp1, $tmp2) = ($1, $2);
+    $tmp1 =~ s/ +insulator$//;
+    $data{$name}{8} = mtranslate(8, $tmp1);
+    $data{$name}{9} = mtranslate(9, $tmp2);
+  }
+  elsif ($line =~ /^Resistivity\: *\(([a-z. ]+)\) *Malleability\: *\(([a-z. ]+)\)?/)
+  {
+    $data{$name}{8} = mtranslate(8, $1);
+    $data{$name}{9} = mtranslate(9, $2);
+  }
+  elsif ($line =~ /^Mentality\: *\(([a-z. ]+)\) *Reactivity\: *\(([a-z. ]+)\)?/)
+  {
+    $data{$name}{10} = mtranslate(10, $1);
+    $data{$name}{11} = mtranslate(11, $2);
+  }
+  elsif ($line =~ /^Weapon rarity\: *\(([a-z. ]+)\) *Armour rarity\: *\(([a-z. ]+)\)/)
+  {
+    $data{$name}{12} = mtranslate(12, $1);
+    $data{$name}{13} = mtranslate(13, $2);
+  }
+  elsif ($line =~ /^Value \(gp\/kg\)\: *\(([a-z -]+)\) *Rarity\: *\(([a-z. ]+)\)/)
+  {
+    $data{$name}{14} = mtranslate(14, $1);
+    $data{$name}{15} = mtranslate(15, $2);
+  }
+  elsif ($line =~ /^Article\: *([a-z. ]+) *Type: *([A-Za-z]+)/)
+  {
+    $data{$name}{16} = mtranslate(16, $2);
 
-      $data{$name}{"article"} = $1;
-      $data{$name}{"article"} =~ s/ *$//;
-    }
-    elsif (/^Found nature\: *(Yes|No) *Lode name\: *([A-Za-z]+)/)
-    {
-      $data{$name}{17} = mtranslate(17, $1);
-      $data{$name}{18} = mtranslate(18, $2);
-    }
-    elsif (/^Raw names\: *([a-z, ]+[a-z])/)
-    {
-      my $tmp = $1;
-      @{$data{$name}{19}} = map { mtranslate(19, $_) } split(/, */, $tmp);
-    }
-    elsif (/^Refined names\: *([a-z, ]+[a-z])/)
-    {
-      my $tmp = $1;
-      @{$data{$name}{20}} = map { mtranslate(20, $_) } split(/, */, $tmp);
-    }
-    elsif (/^-+$|^\s*$/)
-    {
-      # ok
-    }
-    else
-    {
-      print STDERR "Unparsed line: ".$_."\n";
-    }
+    $data{$name}{"article"} = $1;
+    $data{$name}{"article"} =~ s/ *$//;
+  }
+  elsif ($line =~ /^Found nature\: *(Yes|No) *Lode name\: *([A-Za-z]+)/)
+  {
+    $data{$name}{17} = mtranslate(17, $1);
+    $data{$name}{18} = mtranslate(18, $2);
+  }
+  elsif ($line =~ /^Raw names\: *([a-z, ]+[a-z])/)
+  {
+    my $tmp = $1;
+    @{$data{$name}{19}} = map { mtranslate(19, $_) } split(/, */, $tmp);
+  }
+  elsif ($line =~ /^Refined names\: *([a-z, ]+[a-z])/)
+  {
+    my $tmp = $1;
+    @{$data{$name}{20}} = map { mtranslate(20, $_) } split(/, */, $tmp);
+  }
+  elsif ($line =~ /^-+$|^\s*$/)
+  {
+    # Ignore empty lines, and -*
+  }
+  else
+  {
+    print STDERR "Unparsed line #".$linenum.": ".$line."\n";
+  }
 }
 
 # Sort the entries by name