#!perl -w
# remd: transformer un texte avec des chapitres
numeroté en fichier html avec des liens (pour env MS ) - alain Adelmar
20 fév 2001.
# initialisation:
$id=0;
$x="x"x25;
# mettre en variable les incontournables___
$p_s_s='<A
HREF="faq2html.html">précédant</A> | <A HREF="lien_ici">suivant</A>
| <A HREF="index.html">sommaire</A>';
$li='<LI>';
$lblhtm='<HTML>';
$lblhtmo='</HTML>';
$ul='<UL>';
$b_in='<LI>';
$b_out='</A></H3>'."\n";
$ancreH3='<H3><A
NAME="'."$numbrut"."\>";
LABEL_TOP:print"Entrez
le nom du fichier à traiter:\n";
chomp($file=<STDIN>);
# sortir le path du filename
$road66=$filename=$file;
$road66=~s/()\\\w+\.\w{3,4}$/$1/i;
$filename=~s/^.+\\\b()/$1/;
if(-e$file){
$df=localtime(-C$file);
$crt="$x\n
Rapport du contenu de $file : $df \n";
print"$crt"
}
else{
print"Erreur,
le fichier $file n\'existe pas\n";
gotoLABEL_TOP;
}
# lit le fichier et met son contenu dans une variable
liste
openF,"$file"ordie"Ouverture
de $file impossible $!";
@contenu=<F>;
closeFordie"Fermeture
impossible: $file $!";
# fait une copie pour pouvoir travailler sans
faire de dégas (la copie doit avoir un nom propre et/ou un numero
particulier)
$copieID="copie
de $file"."_$id"."\.html";
($copie,$ext)=split(/\./,$copieID);
($lbl,$id)=split(/_/,$copie);
while(-edonne_un_nom($copieID)){
$id++;
donne_un_nom($copieID);
}
openCOPF,">$copieID"ordie"Ouverture
de $copieID impossible: $!";
printCOPF$lblhtm;
printCOPF@contenu;
printCOPF$lblhtmo;
closeCOPFordie"Re_merde
c\'est quoi encore $!";
# definir le fichier tmp
$filetmp='C:\Temp\log.html';
openCT,">$filetmp"ordie"Ouverture
de $filetmp impossible $!";
printCOPF$lblhtm;
foreach$line(@contenu){
nextif($line=~/^</);
if($line=~/^sommaire\s/i){
$line='<title>'."$line".'</title>';
}
elsif($line=~/^\d{1,2}\.\d{1,2}\s/){
$lignetitre=$line;#
au cas ou pourra remplacer la merde plus bas
($numbrut,$ttchap)=split(/\s/,$line,1);
($nump,$nums)=split(/\./,$numbrut);
$i++;#numero
me servant au classement
if($nums<=0){
$tt_actif="$li$ancreH3$nump\.$nums\t$ttchap$b_out";
printCT$tt_actif;
push@nwcontenu,$tt_actif;
next;
}
else{
$tt_actift="$li\t$ancre$nump\.$nums\t$ttchap$b_out\n";
printCT$tt_actift;
push@nwcontenu,$tt_actift;
next;
}
}
push@nwcontenu,$line;
}
printCT"\n\n";
printCT@nwcontenu;
printCT$lblhtmo;
closeCTordie"ca
couince avec le temporaire $!";
# routine pour donner un nom qui ne detruira pas
les autres copies ou l'original
subdonne_un_nom($copieID){
my($copieID)=@_;
$copieID="copie
de $file"."_$id"."\.log";
($copie,$ext)=split(/\./,$copieID);
($lbl,$id)=split(/_/,$copie);
return$copieID;
}
END;
ou
# mettre en variable les incontournables___
$lblhtmo = '</HTML>';
LABEL_TOP:print "Entrez le nom du fichier à traiter:\n";
# sortir le path du filename
if (-e $file) {
# lit le fichier et met son contenu dans une variable liste
# fait une copie pour pouvoir travailler sans faire de dégas
(la copie doit avoir un nom propre et/ou un numero particulier)
while (-e donne_un_nom($copieID)) {
open COPF, ">$copieID" or die "Ouverture de $copieID impossible:
$!";
# definir le fichier tmp en lui donnant un nom, un num et un rep
(/tmp/tmp/):
while (-e donne_un_nom($copieID)) {
open CT, ">$filetmp" or die "Ouverture de $filetmp impossible $!";
print CT "\n\n";
# routine pour donner un nom qui ne detruira pas les autres copies
ou l'original
$copieID = "copie_" . "$file" . "_$id" . "\.log";
END;
#============================= version
plus récente (ou tout au moins plus utilisable)
#!/usr/bin/perl -w
# remd: transformer un texte avec des chapitres
numeroté en fichier
# html avec des liens (pour Linux ) - alain
Adelmar 18.03.2001.
# initialisation:
$id = 0;
$x = "x" x 25;
$p_s_s = '<A HREF="lien_ici">précédant</A>
| <A HREF="lien_ici">suivant</A> | <A HREF="index.html">sommaire</A>';
$li = '<LI>';
$lblhtm = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">'
. "\n" . '<HTML>';
$h_ref = '<H REF="' . "s" . "$numbrut" . '">' . "$line" . '</H></H3>'
. "\n";
$ancre_in = '<H3><A NAME="' . "s" . "$numbrut" . "\><\/A\>";
chomp($file = <STDIN>);
$road66 = $filename = $file;
$road66 =~ s/()\/\w+\.\w{3,4}$/$1/i;
$filename =~ s/^.+\/\b()/$1/;
$df = localtime(-C $file);
$crt = "$x\n Rapport du contenu de $file : $df \n";
print "$crt"
}
else {
print "Erreur, le fichier $file n\'existe pas\n";
goto LABEL_TOP;
}
open F, "$file" or die "Ouverture de $file impossible $!";
@contenu = <F>;
close F or die "Fermeture impossible: $file $!";
$copieID = "copie_" . "$file" . "_$id" . "\.html";
($copie, $ext) = split(/\./, $copieID);
($lbl, $id) = split(/_/, $copie);
$id++;
donne_un_nom($copieID);
}
print COPF $lblhtm;
print COPF @contenu;
print COPF $lblhtmo;
close COPF or die "Re_merde c\'est quoi encore $!";
($copie, $ext) = split(/\./, $copieID);
($lbl, $id) = split(/_/, $copie);
$id++;
donne_un_nom($copieID);
}
$filetmp = '/tmp/tmp/' . "$copieID";
print COPF $lblhtm;
foreach $line(@contenu) {
next if ($line =~ /^</);
if ($line =~ /^sommaire\s/i) {
$line = '<h1><title>' . "$line" . '</h1></title>';
}
elsif ($line=~ /^\d{1,2}\.\d{1,2}\s/) {
$lignetitre = $line; # au cas ou pourra
remplacer la merde plus bas
($numbrut, $ttchap) = split(/\s/, $line, 1);
($nump, $nums)= split(/\./, $numbrut);
$i++; #numero me servant au classement
if ($nums<=0) {
$tt_actif_tab = "$li" . '<H3><A
NAME="' . "tab_" . "$nump" . '"></A><H REF="' . "s_" . "$nump" .
'">' . "$line" . '</H></H3>' . "\n";
$tt_actif_s = "$li" . '<H3><A
NAME="' . "s_" . "$nump" . '"></A><H REF="' . "tab_" . "$nump" .
'">' . "$line" . '</H></H3>' . "\n";
print CT $tt_actif_tab;
push @nwcontenu, $tt_actif_s;
next;
}
else {
$tt_actift_tab = "$li\t" . '<H3><A
NAME="' . "tab_" . "$nump" . "$nums" . '"></A><H REF="' . "s_" .
"$nump" . "$nums" . '">' . "$line" . '</H></H3>' . "\n";
$tt_actift_s = "$li" . '<H3><A
NAME="' . "s_" . "$nump" . "$nums" . '"></A><H REF="' . "tab_" .
"$nump" . "$nums" . '">' . "$line" . '</H></H3>' . "\n";
print CT $tt_actift_tab;
push @nwcontenu, $tt_actift_s;
next;
}
}
else {
push @nwcontenu, $line;
}
}
print CT @nwcontenu;
print CT $lblhtmo;
close CT or die "ca couince avec le temporaire $!";
sub donne_un_nom($copieID) {
my ($copieID) = @_;
($copie, $ext) = split(/\./, $copieID);
($lbl, $id) = split(/_/, $copie);
return $copieID;
}