modified HANE adjustment
[chise/kage.git] / makettf / checkdata.cgi
index d156024..7a5edcf 100755 (executable)
@@ -1,7 +1,8 @@
 #!/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";
@@ -11,6 +12,10 @@ $| = 1;
 
 my $data = $form->param('partsdata');
 utf8::decode($data);
+$data =~ s/\&/\&amp\;/g;
+$data =~ s/</\&lt\;/g;
+$data =~ s/>/\&gt\;/g;
+$data =~ s/\"/\&quot\;/g;
 @buffer = split(/\r\n|\r|\n/, $data);
 
 $result = "";
@@ -29,10 +34,15 @@ foreach $temp (@buffer){
 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++; }
@@ -48,13 +58,18 @@ foreach $temp (@buffer){
         }
       }
       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";
@@ -85,7 +100,7 @@ Content-type: text/html;
 <body>
 <div class="main">
 <h1>チェック結果</h1>
-<p>チェック結果は以下の通りです。</p>
+<p>チェック結果は以下の通りです。なお、エラーがある場合、ここれで表示される以外にもエラーがある可能性がありますので、エラー修正後、再度チェックを行ってください。</p>
 <pre>
 $result
 </pre>