#!/usr/bin/perl
-$ERROR_SYNTAX = 1;
-$ERROR_NOPARTS = 2;
+$ERROR_LINE_SYNTAX = 1;
+$ERROR_STROKE_SYNTAX = 2;
+$ERROR_NOPARTS = 4;
use utf8;
binmode STDOUT, ":utf8";
my $data = $form->param('partsdata');
utf8::decode($data);
+$data =~ s/\&/\&\;/g;
+$data =~ s/</\<\;/g;
+$data =~ s/>/\>\;/g;
+$data =~ s/\"/\"\;/g;
@buffer = split(/\r\n|\r|\n/, $data);
$result = "";
foreach $temp (@buffer){
if($temp =~ m/:/ && $temp =~ m/[0-9]/){
$error = 0;
- $check = 0;
- @temp = split(/ |\t|\r\n|\r|\n/, $temp);
+ $error_data = "";
+ @temp = split(/ +|\t|\r\n|\r|\n/, $temp);
+ if(scalar(@temp) != 2){
+ $error = $error | $ERROR_LINE_SYNTAX;
+ }
@temp2 = split(/\$/, $temp[1]);
foreach $temp2 (@temp2){
+ $check = 0;
+ $error_data = $temp2;
if($temp2 =~ m/^1:(0|2):(0|2):/){ $check++; }
if($temp2 =~ m/^1:(0|12|22|32):(0|13|23|32|4):/){ $check++; }
if($temp2 =~ m/^2:(0|12|22|32):(4|5|7):/){ $check++; }
}
}
if($temp2 =~ m/^0:/){ $check++; }
- }
- if($check == 0){
- $error = $error | $ERROR_SYNTAX;
+ if($check == 0){
+ $error = $error | $ERROR_STROKE_SYNTAX;
+ last;
+ }
}
if($error != 0){
- if($error & $ERROR_SYNTAX){
- $result .= "** 文法エラー・処理できない筆画があります **\n";
+ if($error & $ERROR_LINE_SYNTAX){
+ $result .= "** 行の構造が変です。またはコメント行が紛らわしいための誤検出の可能性があります。 **\n";
+ }
+ if($error & $ERROR_STROKE_SYNTAX){
+ $result .= "** 処理できない筆画があります **\n";
+ $temp =~ s/$error_data/<span style="color: red;">$error_data<\/span>/;
}
if($error & $ERROR_NOPARTS){
$result .= "** 99番で使用されている部品が存在しません **\n";
<body>
<div class="main">
<h1>チェック結果</h1>
-<p>チェック結果は以下の通りです。</p>
+<p>チェック結果は以下の通りです。なお、エラーがある場合、ここれで表示される以外にもエラーがある可能性がありますので、エラー修正後、再度チェックを行ってください。</p>
<pre>
$result
</pre>