[LON-CAPA-cvs] cvs: modules /gerd/chm translate.pl

www lon-capa-cvs-allow@mail.lon-capa.org
Wed, 11 Apr 2007 16:13:17 -0000


www		Wed Apr 11 12:13:17 2007 EDT

  Modified files:              
    /modules/gerd/chm	translate.pl 
  Log:
  Appears to be working.
  
  
Index: modules/gerd/chm/translate.pl
diff -u modules/gerd/chm/translate.pl:1.2 modules/gerd/chm/translate.pl:1.3
--- modules/gerd/chm/translate.pl:1.2	Wed Apr 11 10:40:37 2007
+++ modules/gerd/chm/translate.pl	Wed Apr 11 12:13:17 2007
@@ -12,13 +12,15 @@
       $topic=~s/\_/ /g;
       ($subtopic)=($line=~/\s+ST\:\s(.+)$/);
       $intermediate='';
+      undef(%foilvalue);
       next;
    }
    if ($line=~/^\s+Date\(s\)\:\s+(.+)$/) {
       $prevsem=$1;
       if ($intable) {
-         $intermediate.="</tr>\n</table>\n";
+         $intermediate.="</td></tr>\n</table>\n";
       }
+      $intermediate=~s/\<tr\>\s*\<td\>\s*\<\/td\>\s*\<\/tr\>//gs;
       $question=$intermediate;
       next;
    }
@@ -51,6 +53,14 @@
       $image=$1;
       next;
    }
+   if ($line=~/([A-Z])\.\s+\[([^\]]+)\]\s*\([^\)]+\)(.*)$/) {
+      $letter=$1;
+      $correct=$2;
+      $text=$3;
+      if ($correct=~/x/) { $foilvalue{$letter}='true'; } else { $foilvalue{$letter}='false'; }
+      $text=~s/^\s+//;
+      $foiltext{$letter}=$text;
+   }
    $intable=0;
    foreach $subline (split(/\<RET\>/,$line)) {
       unless ($subline=~/\w/) { next; }
@@ -63,8 +73,8 @@
          $intable=0;
       } 
       if ($intable) {
-         $subline=~s/\t/\<\/td\>\<td\>/gs;
-         $subline.="</td></tr>\n<tr>";
+         $subline=~s/\t+/\<\/td\>\<td\>/gs;
+         $subline.="</td></tr>\n<tr><td>";
       } else {
          $subline.="<br />\n";
       }
@@ -92,5 +102,17 @@
     if ($reference) { print OUT "<meta name='reference' content='$reference' />\n" };
     if ($image) { print OUT "<img src='$image' />\n"; }
     print OUT "<startouttext />$question<endouttext />\n";
+    print OUT "<radiobuttonresponse randomize='no'>\n<foilgroup>\n";
+    foreach $letter (A..Z) {
+       if ($foilvalue{$letter}) {
+          if ($foiltext{$letter}=~/\w/) {
+             $text=$foiltext{$letter};
+          } else {
+             $text=$letter;
+          }
+          print OUT "<foil name='foil$letter' value='$foilvalue{$letter}'>\n<startouttext />$text<endouttext />\n</foil>\n";
+       }
+    }
+    print OUT "</foilgroup>\n</radiobuttonresponse>\n";
     print OUT "</problem>\n";
 }