mise en page html répertoire

alain Adelmar
aadelmar@numericable.fr beuuh c est quoi ca

Mise en page html répertoire, par un script Perl. J'ai construis liste_des_pages.html grace à ce script. En fait j'en ai écris 3 differants à 3 ans d'intervalle. Je sais pas lequel est le mieux mais le dernier est rep2html_nw.


#!/usr/bin/perl -w
#!perl -w          
# remd: liste le contenu des repertoires désiré dans un fichier rep.html et un rep.dat.*
# requier le module FrDate.pm pour l'affichage de (la date et l'heure en français)     *
# écris par Alain Adelmar aadelmar@free.fr _  peut être utiliser sur tout OS (Lx, M$)  * 
# Multi environement (UNIX-Like, MicroSoft, msys, cygwin)_ version:2.2 du 20/03/2004   *
# Usage: rep2html [repertoire]    pour avoir un repertoire au choix                    *
# rep2html                        pour avoir le repertoire courant (defaut) :          *
# ------------------écrit par alain Adelmar -------------------------------------------*
# Enjoyed, that's a aadelmar's script, fun free and french     "hé, ouai mon pote"     *
#--------------------------------------------------------------------------------------* 

use Cwd;
$dir = cwd;

use FrDate;
$mod_affichage = 2;
$fd = maintenant($mod_affichage);

my $vide = " " x 30;
my $x ="*-" x 25;
my $tiret = "-" x50;
my $nlr = 0;
my $al = "\t=== A_l_a_i_n -\/\/- A_d_e_l_m_a_r ===      |";
my $lbl = "$x\n$al\n$x\n\n";
my $mi = "<hr\>alain Adelmar <a href=\"mailto:aadelmar\@free.fr\"\>aadelmar\@free.fr<\/a\>\n";


if (@ARGV) {
  
if($ARGV[0] =~ /^-/) {
    
s/-()/$1/;
    
$argv = $1;
    
$d = $ARGV[1];
    
print "$x\n$al\n\n$x\n\n";
  
}
  
else {
    
$d = $ARGV[0];
    
print "$x\n$al\n\n$x\n\n";
  
}
}
else {
  
print 
  
print "usage: rep2html [répértoire] \n";
  
print "Indiquez le dossier a traiter:\n";
  
chomp($d = <STDIN>);
}

  
format STDOUT_TOP =
Page @<<
$%

 
Fichier                     Date du dernier changement
=====================       ===========================
.


if ($d eq "") {
  
$d = $dir;
}
else {
  
unless (-d $d) {
    
print "Entrez un chemin de fichier valide:\n";
    
$d = <STDIN>;
    
chomp $d;
  
}
}

if ($ENV{"MACHTYPE"}=~ /[msys|cygwin|gnu]$/) {
  
$gnus++;
  
print "this is a real gnu OS, congratulation\n";
}
elsif ($ENV{"PATH"}=~ /^\//) {
  
$gnus++;
  
print "this is a real gnu OS, congratulation\n";
}

@gnul = ("\\", "\/");

@ds = split(/$gnul[$gnus]/, $d);
$ds = pop @ds;


$fout = "rep_" . "$ds" . ".html";
&gnotise($fout);
$fout_dat = "rep_" . "$ds" . ".dat";
&gnotise($fout_dat);

open OUT, ">$fout" or die "Ouverture du fichier rep impossible $!";
print OUT "<HTML\>\n\t<head\>\n\t\t<meta http-equiv=\"Content-Type\" content=\"text\/html;
charset=iso-8859-1\"\>\n\t\t<meta name=\"author\" content=\"adelmar alain et
Perl\"\>\n\t<\/head\>\n<body\><br>\n"
;
print OUT "Edité automatiquement par le script rep2html\.pl le: " . "$fd" . "\nn\'efféctuez pas
de modifications (SVP)\.\n<hr\>\n"
;
open OUTDAT, ">$fout_dat" or die "Screugneugneu $fout_dat ne veux pas souvrir $!";
print OUTDAT "Edité automatiquement par le script rep\.pl le: " . "$fd" . "\nn\'efféctuez pas de modifications (SVP)\.\n";


opendir R, "$d" or die "Ouverture repertoire impossible $!";
$opd = 1;
foreach $file (sort readdir R){
  
$u++;
  
next if ($file =~ /^\./);
  
$frd = datefichier($mod_affichage, $opd, $file);
  
$line = ":$file\n\t$frd\n";
  
if(-d $file) {
    
$reptmp = "d";
    
print OUT "<img SRC=\"folder.jpg\"\>&nbsp;&nbsp;<b\><a href=\"$d" . "$gnul[$gnus]" . "$file\"\>$file<\/a\><\/b\><br\><div align=center\>$frd<\/div\><br\>\n";
    
write;
    
print OUTDAT "$reptmp $line";

  
}
  
elsif(-f $file) {
    
print OUT "<img SRC=\"file.jpg\"\>&nbsp;&nbsp;<a href=\"$d" . "$gnul[$gnus]" . "$file\"\>$file<\/a\><br\><div align=center\>$frd<\/div\><br\>\n";
    
#damned avec remd: je pourrai carrement afficher le commentaire à coté du liens (but no alias sur M$)
    
$reptmp = "f";
    
$rem = &remdthat($file);
    
write;
    
if ($argv eq "c") {
      
print OUTDAT "$reptmp $line\n$rem\n";
    
}
    
print OUTDAT "$reptmp $line";
  
}
  
else {
    
print OUT "<img SRC=\"file.jpg\"\>&nbsp;&nbsp;<a href=\"$d" . "$gnul[$gnus]" . "$file\"\>$file<\/a\><br\><div align=center\>$frd<\/div\><br\>\n";
    
#damned avec remd: je pourrai carrement afficher le commentaire à coté du liens (but no alias sur M$)
    
$reptmp = "f";
    
$rem = &remdthat($file);
    
write;
    
if ($argv eq "c") {
      
print OUTDAT "$reptmp $line\n$rem\n";
    
}
    
print OUTDAT "$reptmp $line";
  
}
}       
closedir R or die "Fermeture du repertoire impossible $!";

print OUTDAT "\n$lbl\n";
close OUTDAT || die "Fartoi encoula granda connasse, 30000 fois saloperie ce ptain de $fout_dat
ne veut pas ce fermer $!"
;
print OUT "$mi\n";
close OUT or die "Fermeture impossible bordel $!";

print "nombre de fichier traite $u\n";
print "\n\nUn fichier $fout a été créé ainsi qu'un fichier $fout_dat\nBonne journée\nalain\n";

sub gnotise($fili) {
  
my($fili)= @_;
  
  
if (-e $fili) {
    
$arch = "$fili" . "~";
    
rename $fili, $arch or die "impossible de faire comme cela $!";
  
}
}

sub remdthat {
  
my($file)=@_;
  
(@contenu, @remd)= "";
  
$filnm = "$d" . "$gnul[$gnus]" . "$file";

  
open F, "$filnm" or die "Ouverture de $file impossible $!";
  
@contenu = F;
  
$nlr = 0;
  
foreach $l(@contenu) {
    
if ($nlr >= 1) {
      
chomp $l;
      
push @remd, $l;
      
goto LABELLE if ($nlr == 1);
      
$nlr--;
    
}
    
elsif ($l =~ /remd:/) {
      
chomp $l;
      
push @remd, $l;
      
print "ok pour $l\n";
      
$nlr = 5;       # nombre de lignes de commantaires +1, changer le nombres ici
    
}
  
}
 
LABELLE:close F || die "Fermeture de $file compromise $!";
  
$rem = join("\n\t", @remd);
  
return $rem;
}
  



format STDOUT =
@<<<<<<<<<<<<<<<<<<<<<<<<<<     @<<<<<<<<<<<<<<<<<<<<<<<<
$file, $frd
.







END;