# HG changeset patch # User Matti Hamalainen # Date 1530100640 -10800 # Node ID 102ac4f0bd22c7125bc2e0d7ab46c2c0544db52c # Parent 6f4baa8abf82c9c6d466a205c185a586f25bcb97 Make findreqs.pl more forgiving to inaccuracies in log data. diff -r 6f4baa8abf82 -r 102ac4f0bd22 nun/tasks/findreqs.pl --- a/nun/tasks/findreqs.pl Wed Jun 27 14:40:27 2018 +0300 +++ b/nun/tasks/findreqs.pl Wed Jun 27 14:57:20 2018 +0300 @@ -2,11 +2,13 @@ use strict; use warnings; my %taskList = (); +my %taskNames = (); my @tmpList = (); my $wasFound = 0; my $n; my $nline = 0; + ### Process and parse input logfile while (defined(my $line = )) { @@ -21,22 +23,24 @@ } elsif ($line =~ /^You now have '(.+)' at ([0-9]+)\% without special bonuses\.$/ && $wasFound) { - my $tmpName = $1; + my $tmpName = lc($1); my $tmpPercentage = $2; $n = 10; for my $taskName (@tmpList) { - if (defined($taskList{$taskName}{$tmpName})) + my $lcName = lc($taskName); + if (defined($taskList{$lcName}{$tmpName})) { - if ($tmpPercentage < $taskList{$taskName}{$tmpName}) + if ($tmpPercentage < $taskList{$lcName}{$tmpName}) { - $taskList{$taskName}{$tmpName} = $tmpPercentage; + $taskList{$lcName}{$tmpName} = $tmpPercentage; } } else { - $taskList{$taskName}{$tmpName} = $tmpPercentage; + $taskList{$lcName}{$tmpName} = $tmpPercentage; + $taskNames{$lcName} = $taskName; } } } @@ -46,9 +50,11 @@ $wasFound = 0; for my $taskName (@tmpList) { - if (!defined($taskList{$taskName})) + my $lcName = lc($taskName); + if (!defined($taskList{$lcName})) { - $taskList{$taskName} = (); + $taskList{$lcName} = {}; + $taskNames{$lcName} = $taskName; } } @tmpList = (); @@ -62,6 +68,13 @@ } +sub print_line($$$) +{ + my ($task, $skill, $perc) = @_; + printf "| %-36s | %-25s | %3d |\n", $task, $skill, $perc; +} + + ### Print out the results $n = 0; if ($#ARGV >= 0) { @@ -69,7 +82,7 @@ { for my $taskName (sort keys %taskList) { - print $taskName."\n"; + print $taskNames{$taskName}."\n"; } } elsif ($ARGV[0] eq "-dump") @@ -87,7 +100,7 @@ } else { - my $sepLine = 0; + my $separator = 0; print ",------------------------------------------------------------------------.\n"; print "| Task name | Skill/spell | Min |\n"; print "+--------------------------------------+---------------------------+-----+\n"; @@ -98,29 +111,29 @@ if ($nreqs == 0) { # No requirement data for task - print_separator() if ($sepLine); + print_separator() if ($separator); printf "| %-36s | %-31s |\n", $taskName, "UNKNOWN or no requirements"; print_separator(); - $sepLine = 1; + $separator = 1; } elsif ($nreqs == 1) { for my $skillName (sort keys %{$taskList{$taskName}}) { - printf "| %-36s | %-25s | %3d |\n", $taskName, $skillName, $taskList{$taskName}{$skillName}; + print_line($taskNames{$taskName}, $skillName, $taskList{$taskName}{$skillName}); } - $sepLine = 1; + $separator = 1; } else { - print_separator() if ($sepLine); - printf "| %-70s |\n", $taskName; + print_separator() if ($separator); + printf "| %-70s |\n", $taskNames{$taskName}; for my $skillName (sort keys %{$taskList{$taskName}}) { - printf "| %-36s | %-25s | %3d |\n", "", $skillName, $taskList{$taskName}{$skillName}; + print_line("", $skillName, $taskList{$taskName}{$skillName}); } print_separator(); - $sepLine = 0; + $separator = 0; } $n++;