[Bf-docboard] WML -> XML script

Stefano Selleri bf-docboard@blender.org
Tue, 17 Jun 2003 16:13:56 +0200


This is a multi-part message in MIME format.

------=_NextPart_000_001F_01C334EB.744AE490
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

Mmm... where the *@#$% is my attachment?

Stefano

------=_NextPart_000_001F_01C334EB.744AE490
Content-Type: application/octet-stream;
	name="wml2xml.pl"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="wml2xml.pl"

#!/usr/bin/perl=0A=
##############################################=0A=
# WML -> XML converter                       #=0A=
##############################################=0A=
# (C) S. Selleri (S68) June 2003             #=0A=
#                                            #=0A=
# Warning, explicitely hacked for Blender 2.0#=0A=
# manual, it might not work for anithing else#=0A=
##############################################=0A=
=0A=
use Getopt::Long;=0A=
=0A=
$Filewml=3D'';=0A=
$Filexml=3D'';=0A=
$imgdir=3D'';=0A=
=0A=
GetOptions ( 'wml=3Ds'  =3D> \$Filewml,=0A=
	     'w=3Ds'    =3D> \$Filewml,=0A=
	     'xml=3Ds'  =3D> \$Filexml,=0A=
	     'x=3Ds'    =3D> \$Filexml,=0A=
	     'imgdestroot=3Ds'  =3D> \$imgdir,=0A=
	     'id=3Ds'   =3D> \$imgdir,=0A=
	     'imgsouurceroot=3Ds'  =3D> \$imgsou,=0A=
	     'is=3Ds'   =3D> \$imgsou);=0A=
=0A=
if ($Filewml eq '') {=0A=
  print "WML2XML (C) 2003 Stefano Selleri\n\n";=0A=
  print "Usage: wml2xml.pl -w the/file.wml -x the/exported.xml -id =
place/for/img -ir place/where/img/are\n\n";=0A=
} else {=0A=
  =0A=
  if ($Filexml eq '') {=0A=
    $Filexml=3D$Filewml;=0A=
    $Filexml=3D~s/\.(.*)/.xml/;=0A=
  } else {=0A=
    if ($Filexml=3D~ /\//) {=0A=
      $Filexml =3D~ /(.*?)\/(.*)/;=0A=
      $xmlroot=3D$1.'/';=0A=
    } else {=0A=
      $xmlroot =3D '';=0A=
    }=0A=
  }=0A=
 =0A=
  open (FI,"<$Filewml") || die "Cannot open $Filewml";=0A=
  open (FO,">$Filexml") || die "Cannot open $Filexml";;=0A=
=0A=
  #Go to slurp mode=0A=
  undef $/;=0A=
  $file =3D <FI>;=0A=
=0A=
  #Eliminates comments and stupid tags=0A=
  $file =3D~ s/#(.*?)\n//gi;=0A=
  $file =3D~ s/<page>//gi;=0A=
  $file =3D~ s/<\/page>//gi;=0A=
  $file =3D~ s/<hr>//gi;=0A=
  $file =3D~ s/<me>//gi;=0A=
  $file =3D~ s/<!--(.*?)-->//sgi;=0A=
  $file =3D~ s/\/\*(.*?)\*\///sgi;=0A=
  $file =3D~ s/Last modified:(.*?)\n//gi;=0A=
=0A=
  # all images are actually JPG!!!=0A=
  $file =3D~ s/\.tga"/\.jpg"/sgi;=0A=
=0A=
  # Eliminated double carriage returns=0A=
  while($file =3D~ s/\n\n/\n/gi) {};=0A=
=0A=
  # a chapter is a section=0A=
  $file =3D~ /<chapter>(.*?)<\/chapter>/i;=0A=
  if ($1 ne '') {=0A=
    $file =3D~ s/<chapter>(.*?)<\/chapter>/<section>\n    =
<title>$1<\/title>\n\n<warning><para>WARNING: THIS CONTENT HAS BEEN =
IMPORTED AUTOMATICALLY FROM 2.0 GUIDE - MIGHT BE OUTDATED AND\/OR =
INACCURATELY CONVERTED<\/para><\/warning>\n<para>/i;=0A=
    $file .=3D '</para></section>';=0A=
  } else {=0A=
    $file =3D~ s/<chapter>(.*?)<\/chapter>//i;=0A=
  }=0A=
  if ($file =3D~ /<chapter>(.*?)<\/chapter>/i) {=0A=
    print 'WARNING More than 1 Chapter defined'=0A=
  };=0A=
=0A=
  # a section is a section=0A=
  $file =3D~ /<section>(.*?)<\/section>/i;=0A=
  if ($1 ne '') {=0A=
    $file =3D~ s/<section>(.*?)<\/section>/<section>\n    =
<title>$1<\/title>\n\n<warning><para>WARNING THIS CONTENT HAS BEEN =
IMPORTED AUTOMATICALLY FROM 2.0 GUIDE -MIGHT BE OUTDATED AND\/OR =
INACCURATELY CONVERTED<\/para><\/warning>\n<para> /i;=0A=
    $file .=3D '</para></section>';=0A=
  } else {=0A=
    $file =3D~ s/<section>(.*?)<\/section>//i;=0A=
  }=0A=
  if ($file =3D~ /<section>(.*?)<\/section>/i) {=0A=
    print 'WARNING More than 1 Section defined'=0A=
  };=0A=
=0A=
  # paragraphs=0A=
  $file =3D~ s/<p>/<\/para>\n<para>/gi;=0A=
  =0A=
  #Keystrokes=0A=
  $file =3D~ s/<key[ \n]{1,2}(.*?)>/<keycap>$1<\/keycap>/gi;=0A=
=0A=
  # Inline images=0A=
  while($file =3D~ /<icon[ \n]{1,2}pic=3D"(.*?)">/mi){=0A=
    $img =3D $1;=0A=
    $oimg =3D $img;=0A=
    if ($img=3D~ /\//) {=0A=
      $img =3D~ s/(.*)\/(.*)/$2/;=0A=
    }=0A=
    if ($imgdir ne '') {=0A=
      $img =3D $imgdir."/".$img;=0A=
    }=0A=
=0A=
    $imglist{$oimg}=3D$img;=0A=
=0A=
    $file =3D~ s/<icon[ \n]{1,2}pic=3D"(.*?)">/<guiicon><inlinegraphic =
fileref=3D"$img" scale=3D"50"><\/inlinegraphic><\/guiicon>/mi;=0A=
  }=0A=
=0A=
  # Float images=0A=
  while($file =3D~ /<image[ \n]{1,2}pic=3D"(.*?)">/mi){=0A=
    $img =3D $1;=0A=
    $oimg =3D $img;=0A=
    if ($img=3D~ /\//) {=0A=
      $img =3D~ s/(.*)\/(.*)/$2/;=0A=
    }=0A=
    if ($imgdir ne '') {=0A=
      $img =3D $imgdir."/".$img;=0A=
    }=0A=
    print $img,$oimg,"\n";=0A=
    $imglist{$oimg}=3D$img;=0A=
=0A=
    $file =3D~ s/<image[ \n]{1,2}pic=3D"(.*?)">(.*?)<\/image>/<figure =
float=3D"1">\n<title>Figure $ =
2<\/title>\n<mediaobject>\n<imageobject>\n<imagedata fileref=3D"$img" =
format=3D"PNG"\/>\n<\/imageobject>\n<\/mediaobject>\n<\/figure>\n/mi;=0A=
  }=0A=
=0A=
  # A hint is a Tip!=0A=
  $file =3D~ s/<hint>(.*?)<\/hint>/<tip><title>A =
tip<\/title><para>$1<\/para><\/tip>/si;=0A=
=0A=
  print FO "<!-- -->\n<!-- -->\n<!-- AUTOMATIC TRANSLATION FROM 2.0GUIDE =
-->\n<!-- -->\n<!-- START -->\n";=0A=
  print FO $file;=0A=
  print FO "\n\n<!-- END -->\n<!-- -->\n<!-- AUTOMATIC TRANSLATION FROM =
2.0GUIDE -->\n<!-- -->\n<!-- -->\n";=0A=
=0A=
  close (FI);=0A=
  close (FO);=0A=
=0A=
  if (! -d $xmlroot.$imgdir) {=0A=
    `md $xmlroot.$imgdir`=0A=
  }=0A=
=0A=
  foreach $f (keys(%imglist)) {=0A=
    print `cp $imgsou/$f $xmlroot$imglist{$f}`=0A=
  }=0A=
}=0A=
=0A=

------=_NextPart_000_001F_01C334EB.744AE490--