#!/usr/bin/perl -w # remd: petit éditeur pour console, sorti au format html. # (adaptation de Aled pour écrire du html)_ alain Adelmar 29 decembre 2001 ~ Novembre 2002 system(clear); $time_in_s = time(); #facultatif mais peut être pour divers tempfile $dt = localtime($time_in_s); $mt =""; $y = 0; $ip = 1; #-------------liste des commandes-- @it = ( 'i%', "", "<\/i\>"); @gr = ( 'g%', "", "<\/b\>"); @sl = ( 'u%', "", "<\/u\>"); @ex = ( 'ex%', "", "<\/strike\>"); @cl = ( 'cl%', "", "<\/blink\>"); @tt = ( 'tt%', "", "<\/tt\>"); @pg = ( '+%', "", "<\/font\>"); @pp = ( '+%', "", "<\/font\>"); @tt_h1 = ( 'h1%', "", "<\/h1\>"); @tt_h2 = ( 'h2%', "", "<\/h3\>"); @tt_h3 = ( 'h3%', "", "<\/h3\>"); @tt_h4 = ( 'h4%', "", "<\/h4\>"); @tt_h5 = ( 'h5%', "", "<\/h5\>"); @tt_h6 = ( 'h6%', "", "<\/h6\>"); @lo = ( 'lo%', ""); @alC = ( 'ac%', "", "<\/center\>"); @alD = ( 'ad%', "
", "<\/div\>"); @cgris = ( 'cg%', "", "<\/font\>"); @cvert = ( 'cv%', "", "<\/font\>"); @crg = ( 'cr%', "", "<\/font\>"); @y = ( 'tab ', ""); #index pour les tag $revenir = '¤'; #---------------------------- #===== assignation au différantes variables ======================== #a)***présentation de l'application à l'écran *** $x = "x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x\n"; $bienvenu = "$x * $dt *\n$x Bienvenu sur l'éditeur aled2Html\nl\'editeur HTML alain A_d_e_l_m_a_r\n$x"; #b)**recolte des informations de base. print "Je vais maintenant procéder à la collécte des informations de base\n"; print "votre nom:\t"; chomp ($auteur = ); print "votre prénom:\t"; chomp ($prenom = ); print "votre e_mail:\t"; chomp ($email = ); ($login, $fai)= split(/\@/, $email); print "$x merci, $prenom\n$bienvenu\n"; print "On va pouvoir commencer,\nmais avant quel sera le titre de ce document?\n(de preferance sans espace),\nil servira de nom pour le document\n"; chomp ($titre = ); $titre =~ s/\s//; if ($titre =~ /\.htm.?$/i) { &titre_et_mini_titre; } else { $root = $titre; $ext = "html"; &titre_et_mini_titre; } while (-e $titre) { print "désolé mais il existe déjà un fichier portant le nom de $titre, veuiller entrer un autre nom\n"; chomp ($titre = ); &titre_et_mini_titre; } $mini_titre .= "\.html"; $titre = "$root" . "\.$ext"; print "donc vous préférez:\n\t [1] $mini_titre\nou\n\t [2] $titre\n"; $rtitre = ; chomp $rtitre; if ($rtitre == 1) { $titre = $mini_titre; } elsif ($rtitre == 2) { print "tres bon chois\n"; } else { $titre = "$root" . "\.htm"; print "Le titre sera dans ce cas $titre\n"; } print "Récapitulation:\nMaintenant que le document est défini, en cas d'erreurs, quoi qu'il arrive il vous suffira de taper:\nalEd2html.pl $mini_titre\net vous pourrez reprendre le document ou vous l'avez laissé\nUn bref tutorial est accessible en tapant: TUT\nLa liste des commandes d'éditions en tapant: C\nUn aperçu du travail en tapant: VOIR\n$x $root\t $dt page $ip pour continuer taper:\t\n"; $ligne = ; chomp $ligne; $ilc = 1; $tut = "TUT"; #appel au tutorial $voir = "VOIR"; #appel au compte rendu, visionner le document $com = "C"; &control; #appel a la fonction control sub control { $ilc++; # on peut mettre un compteur de page ici if ($ligne eq $tut) { &tutorial; } elsif ($ligne eq $com) { &play_commands; } elsif ($ligne eq $voir) { &vu; } elsif ($ligne =~ /^q|:q/i) { &closet; &sauve_par_def; &quitte; } elsif ($ligne eq ":wq!") { &closet; &sauve; &quitte; } elsif ($ligne eq "") { $ligne_in = "\n"; } else { $l++; &ligne_in($ligne); } } sub ligne_in($ligne) { my($ligne) = @_; while ($ligne) { push @reste, $it[2] if s/$it[0]/$it[1]/; push @reste, $gr[2] if s/$gr[0]/$gr[1]/; push @reste, $sl[2] if s/$sl[0]/$sl[1]/; push @reste, $pg[2] if s/$pg[0]/$pg[1]/; push @reste, $pp[2] if s/$pp[0]/$pp[1]/; push @reste, $h1[2] if s/$h1[0]/$h1[1]/; s/$h2[0]/$h2[1]/ && push @reste, $h2[2]; s/$h3[0]/$h3[1]/ && push @reste, $h3[2]; s/$h4[0]/$h4[1]/ && push @reste, $h4[2]; s/$h5[0]/$h5[1]/ && push @reste, $h5[2]; s/$h6[0]/$h6[1]/ && push @reste, $h6[2]; s/$ex[0]/$ex[1]/ && push @reste, $ex[2]; s/$tt[0]/$tt[1]/ && push @reste, $tt[2]; s/$cl[0]/$cl[1]/ && push @reste, $cl[2]; s/$cgris[0]/$cgris[1]/ && push @reste, $cgris[2]; s/$cvert[0]/$cvert[1]/ && push @reste, $cvert[2]; s/$crg[0]/$crg[1]/ && push @reste, $crg[2]; s/$alD[0]/$alD[1]/ && push @reste, $alD[2]; s/$alC[0]/$alC[1]/ && push @reste, $alC[2]; s/$tt_h1[0]/$tt_h1[1]/ && push @reste, $tt_h1[2]; s/$tt_h2[0]/$tt_h2[1]/ && push @reste, $tt_h2[2]; s/$tt_h3[0]/$tt_h3[1]/ && push @reste, $tt_h3[2]; s/$tt_h4[0]/$tt_h4[1]/ && push @reste, $tt_h4[2]; s/$tt_h5[0]/$tt_h5[1]/ && push @reste, $tt_h5[2]; s/$tt_h6[0]/$tt_h6[1]/ && push @reste, $tt_h6[2]; s/$lo[0]/$lo[1]\n/; s/$y[0]/$y[1]/ && $y++; } &et_ferme($ligne); # $ligne = " " . $ligne . "@reste\n"; # ou pour fermer les modif a la fin: $ligne = " " . $ligne; push @nwline, $ligne; &ma_ligne; } # le document ============== $lib_deb = ''; sub et_ferme($ligne) { my($ligne)=@_; for $i (0 .. $#reste) { s/$revenir/shift(@reste)/; } } sub ma_ligne { $ligne = ; chomp $ligne; &control($ligne); } sub titre_et_mini_titre { ($root, $ext)= split(/\./, $titre); @q = split(//,$root); for $i(0..7) { $mt .= "$q[$i]"; } $mini_titre = $mt; } sub sauve_par_def { $titre = "temp-" . $dt . "\.html"; open FO, ">$titre" or die "ouverture de $titre impossible $!"; print FO "$lib_deb\n"; print FO "\t\"\>\n\t\n"; print FO "@nwline\n"; print FO "<\/body\>\n<\/html\>\n"; close FO || die "fermeture de $titre impossible $!"; } sub sauve { open FO, ">$titre" or die "ouverture de $titre impossible $!"; print FO "$lib_deb\n"; print FO "\t\"\>\n\t\n"; print FO "@nwline\n"; print FO "<\/body\>\n<\/html\>\n"; close FO || die "fermeture de $titre impossible $!"; } sub closet { &et_ferme; print "@reste voilà il ne reste que ca\n"; } print "$x $ilc appel pour $l $lignes de code html\n"; sub quitte { die "$xTchao!\n"; } END;