shift @ARGV;
$language = shift @ARGV;
}
+ elsif( $ARGV[ 0 ] eq '-h' ) {
+ usage();
+ exit 0;
+ }
}
my $lineNumber = 1;
# ellipsis
if( $line =~ /(\.\s*\.(\s*\.)?)/ ) { &printError( "ne", $currentSection, $lineNumber, "possible malformed ellipsis", "$1", "<ch.ellips/> or <ch.lellips/>" ); }
- if( $line =~ m{([[:space:]]<ch\.ellips/>)} || $line =~ m{(<ch\.ellips/>[[:space:]])} ) { &printError( "ne", $currentSection, $lineNumber, "<ch.ellips/> with extraneous surrounding space", "$1", "<ch.ellips/>" ); }
+ if( $line =~ m{([[:space:]]<ch\.ellips/>)}) { &printError( "ne", $currentSection, $lineNumber, "<ch.ellips/> with extraneous surrounding space", "$1", "<ch.ellips/>" ); }
if( $line =~ m{([^>])(<ch\.lellips/>)} ) { &printError( "ne", $currentSection, $lineNumber, "possible <ch.lellips/> used in place of <ch.ellips/>", "$1$2", "$1<ch.ellips/>" ); }
if( $line =~ m{(><ch\.ellips/>)} ) { &printError( "ne", $currentSection, $lineNumber, "possible <ch.ellips/> used in place of <ch.lellips/>", "$1", "><ch.lellips/>" ); }
if( $line =~ /[^>](CLOSE\sCOMBAT\sSKILL)/ || $line =~ /(CLOSE\s+COMBAT\s+SKILL)[^<]/ ) {
&printError( "ne", $currentSection, $lineNumber, "possible missing markup", "$1", "<typ class=\"attribute\">$1</typ>" );
}
- if( $line =~ /[^>](ENDURANCE)/ || $line =~ /(ENDURANCE)[^<]/ ) {
+ if( $line =~ /[^>](ENDURANCE)/ || $line =~ /(ENDURANCE)(?! Points)[^<]/ ) {
&printError( "ne", $currentSection, $lineNumber, "possible missing markup", "ENDURANCE", "<typ class=\"attribute\">ENDURANCE</typ>" );
}
if( $line =~ /[^>](WILLPOWER)/ || $line =~ /(WILLPOWER)[^<]/ ) {
}
##### Others
- if( $line =~ m{<!--(?!/?ERRTAG)} ) { &printError( "ne", $currentSection, $lineNumber, "XML comment found (check for editor comments)" ); }
+ if( $line =~ m{<!--(?!/?(link-text|ERRTAG))} ) { &printError( "ne", $currentSection, $lineNumber, "XML comment found (check for editor comments)" ); }
if( $line =~ /([[:upper:]]{5,})/ &&
$` !~ /<signpost>$/ &&
(($language eq 'en' &&
$1 ne "COMBAT" &&
$1 ne "WILLPOWER" &&
$1 ne "HAVOC" &&
+ $1 ne "TARGET" &&
+ $1 ne "RESISTANCE" &&
$1 ne "CLOSE") ||
($language eq 'es' &&
$1 ne 'DESTREZA' &&
++$errorCount;
if( $maxErrorCount > 0 && $errorCount > $maxErrorCount ) { die "Maximum number of errors ($maxErrorCount) exceeded. Quitting.\n"; }
}
+
+sub usage {
+ print "Gamebook lintian checker - reads from standard input a gamebook XML file and prints out possible errors\n\n";
+ print "Usage: gblint.pl [-e <NUMBER>] [-s <NUMBER>] [-i <TEXT>] [--use-corr] [--skip-ASCII-check] [--language CODE]\n";
+ print "Options:\n";
+ print "\t-e <NUMBER>\tStops when NUMBER errors have been reached (by default it does not stop)\n";
+ print "\t-s <NUMBER>\tSkips NUMBER of lines before analysing\n";
+ print "\t-i <TEXT>\tAdds TEXT to error messages (default: '??')\n";
+ print "\t--use-corr\tPrints correction in report (default: disabled)\n";
+ print "\t--skip-ASCII-check\tDoes not check for non-ASCCI characters (default: enabled)\n";
+ print "\t--language CODE\tDefines the language of the gamebook file (default: 'en'\n";
+ print "\t-h\tPrint this help and exit\n";
+}