aj2.pl permet de créer et de gérer des notes directement sur la console vers un journal HTML.
Il créé, sauvegarde automatiquement des notes ou des fichiers textes dans un répertoire ~/jrnl_perso/ et place dans le journal
les liens, dates de création et sujet (programmation, gestion, divers) qui vous l'ouvrirons automatiquement sur votre navigateur.
Alain Adelmar
Vous pouvez trouver:
[ -cdgp ][ --h --heure ][ nom_du_fichier ]
#!/usr/bin/perl -w
# remd: aj "Ajoute au Journal". Est un script permettant les "postit" il *
# edite vos notes, log, etc ... en mode console. Au premier lancement il *
# initialise un dossier (HOME~/journal) ou il centralisera vos notes *
# ainsi qu'un fichier journal.html, permettant d'y acceder dynamiquement *
# En cas d'oubli, il sauvegardera automatiquement votre note dans le rep *
# ~/journal/trav_date.log, ajoute une lien dynamique dans la rubrique *
# voulu du fichier Journal.html. *
# rubriques défini pour le moment: (programmation, gestion de fichier et *
# divers) appelé réspéctivement par l'option -p -g -d (par defaut) donc: *
# *
# usage: aj [-rdgp][nom_du_fichier] *
# -r (restreint) affiche un récapitulatif (debut ...fin) => 8lignes *
# alors que par defaut il affiche la totalitée du fichier. *
# *
# Il accepte le nom de fichier en arguments et s'utilise depuis le shell *
#------------------------------------------------------------------------*
# concu & écrit par alain Adelmar mailto: aadelmar@free.fr *
#*************************************************************************
# Fonctionne sur Environnement Linux, Windows, Cgwin *
# Cette version tourne bien et se suffit (pas besoin de FrDate.pm) *
# Certe la prochaine sera mieux écrite car j'ai honte quand je relis ce *
# code (trés maladroit) mais ca tourne, alors que demande le peuple... *
# realease du 18 Mai 2006 tiré de la version 2.03 du 19 Fév 2005 *
#------------------------------------------------------------------------*
#$ID$
$vers = "2.05";
use Cwd;
$dir = cwd;
# Initialisation des différantes variables ***************
$x = ("x*" x 34) . "\n";
$path1="";
$somedate = '
';
@debut = @interm = @somd;
$prems = $travail = $argv = $deb = 0;
$auteur = "Alain Adelmar\naadelmar\@free.fr\n";
$prompt = "Entrer votre choix: (0)nouveau, (1)ouvrir, (2)sauvegarder\n(q)quitter ou (Enter) pour continuez\.\.\.\n";
# initialisé à
undef $choix;
my $filename = "";
my $filetmp = "";
#------- format de date pour file (normal = aaammjj | complet = aaammjj:%%%)
@lsjour = qw(
Dimanche
Lundi
Mardi
Mercredi
Jeudi
Vendredi
Samedi
);
for $i(0 ..6) {
$fj{$i} = $lsjour[$i];
}
$min =(localtime(time()))[1];
$h =(localtime(time()))[2];
$an =(localtime(time()))[5];
$sjour =(localtime(time()))[6];
$fjour = $fj{$sjour};
$datos = localtime (time); # au cas ou
@lstnow = localtime (time());
$j = $lstnow[3];
$m = $lstnow[4]+1;
if ($min <= 9) { $min = "0" . $min; } if ($h <= 9) { $h= "0" . $h; } if ($j <= 9) { $j= "0" . $j; } if ($m <= 9) { $m = "0" . $m; } if ($an >
= 100) {
$an=~ s/1()/20/;
}
else {
$an= "1" . $an;
}
#----------- pour centieme de journée exp: 25 = 25% de journée ou 25 quart d'heures (99 = 1440min = 24h)
$tmp_h2m = ($h * 60) + $min;
# ---- pour $qdh (quantité de jour exprimé de 01~99) ------
$qdh = int ($tmp_h2m/14.5); # pour avoir le centieme de journée sur 2chiffres de 01 à 99
if ($qdh <= 9) { $qdh = "0" . "$qdh"; } # ---------- pour $qdh (quantité de jour exprimé de 01~99) ------- uncomment if ($qdh <= 9) { $qdh = "0" . "$qdh"; } # ---------- pour $qdm (quantité de jour exprimé de 001~999)------ $qdm = int ($tmp_h2m/1.44); # pour avoir le milliéme de journée sur 3chiffres de 1 à 999 if ($qdm <= 9) { $qdm = "00" . "$qdm"; } elsif ($qdm <= 99) { $qdm = "0" . "$qdm"; } #--------------------------------------------------------------------------------- $ma_date_v = "$fjour $j\/" . "$m\/" . "$an" . ":" . "$h" . ":$min"; # Mercredi 30/07/2003 17:30 $ma_date = "$an" . "$m" . "$j" . ":" . "$qdh"; # 20030730:72 $ma_date_h = "$an" . "$m" . "$j" . ":" . "$qdm"; # 20030730:726 $dt = $ma_date_v; #print "ma_date = $ma_date | ma_date_v = $ma_date_v | qdh = $qdh | dt = $dt\n"; $bienvenu = "$x\tx $dt x\n$x\nBienvenu sur l'eéditeur aled\n ecris par Adelmar alainr\nTaper Ctr-D pour sortir\n\n$x\n\n"; &verifj; #-- arg & option possible usage: alEd [-dgp] [--h,--heure] [nom_de_fichier] if (defined $ARGV[0]) { foreach $_ (@ARGV) { ($arg = $_ and &traite_mode($arg)) if /^-\w/; ($ma_date = $ma_date_h) if /^--h/; if ($_ =~ /\w{3,}.*?$/) { $filename = $_; $argv++; &ouvrir($filename); } } } else { print "Usage:\taj [-pgd] [nom_de_fichier]\n"; $argv = 0; } #$bienvenu = "$x\tx $dt x\n$x\nBienvenu sur l'eéditeur aled\n ecrispar Adelmar alainr\nTaper Ctr-D pour sortir\n\n$x\n\n"; &menu; sub menu { #&verifj; print "$prompt"; chomp($choix =
);
#-----------------
while($choix ne "q") {
if($choix eq "1") {
&watarg;
undef $choix;
&ouvrir;
}
elsif($choix eq "2"){
undef $choix;
&sauv;
}
else {
&watarg;
undef $choix;
&nouveau;
}
}
die "$x\nTchao !!! bonne journnee\n$x\n";
}
sub nouveau {
print "$bienvenu";
@contenu = ;
print "si vous ne sauver pas votre travail\nou il le sera (par defaut) en tant que trav_" . "$ma_date\n";
$filetmp = "$dir_journal" . "\/trav_" . "$ma_date" . "\.log";
$file = "\~\/trav_" . "$ma_date" . "\.log";
&lbling;
#-----ajout a journal.html---
&ajout_lnk($filetmp);
open FTMP, ">$filetmp" or die "Ouverture impossible $!";
print "$x\nEdite automatiquement par alEd le: $dt --\>\n$x\n\n";
print FTMP @contenu;
close FTMP or die "fermeture a l'os gros_caca $!";
$travail++;
&menu;
}
sub ouvrir {
print "ouverture de $filename\n";
if ($argv == 0) {
&lequel;
}
$argv = 0 ;
unless (-e $filename) {
&lequel;
}
# sortir le path du fichier ouvert
@rep = split(/\//, $filename);
$file = pop @rep; # nom du fichier seul
$path1 = join('/', @rep); # rep de travail
#------------------------------------
print "alEd va ouvrir $filename pour vous\n";
open FO, "<$filename" or die "Ouverture impossible $!"; @contenu =
;
&lbling;
close FO or die "fermeture impossible $!";
# printer le fichier a completer suivant l'option
if ($argv =~ /^c/) {
my $u = my $fin = 0;
my $pl;
my $numel;
foreach $ligne(@contenu) {
next if ($ligne eq "");
if ($u <= 3) { print $ligne; $u++; } elsif ($u == 4 & $fin == 0) { $pl = "\." x 15; print "$pl" . "\n"; for ($i = 3; $i == 0; $i--) { $numel = $#contenuf; $dl = $contenuf[$numel - $i]; print "$dl" . "\n"; } } } } else { foreach $ligne(@contenu) { print $ligne; } } print "\n"; print "$bienvenu\n"; @nwcontenu =
;
push @contenu, @nwcontenu;
# ---on sauvegarde quand même dans journal
$filetmp = "$dir_journal\/" . "trav_" . "$ma_date" . "\.log";
open FTMP, ">$filetmp" or die "Ouverture impossible $!";
print "$x\nsup à $file édite automatiquement par alEd le: $dt --\>\n$x\n";
print FTMP @contenu;
close FTMP or die "Makash Oualou pour fermer $file \non\nl\'a\ndans\nl\'os\n$x\n $!";
#---------------------------------------et on demande si on veut aussi sauver sur l'original
print "voulez vous sauver l\'ensemble du travail sur:\n [Oui] le fichier d\'origine $filename\n[Non] (par defaut) sur un fichier temporaire\n [nom_du_fichier] donner un nom pour sauvegarder ce fichier\n Récapitulation :\[Oui-Non-nom_du_nouveau_fichier]?\n";
chomp($respond = );
if($respond =~ /^o|oui/i) {
print "$filename\n";
&ajout_lnk($filename);
open FO, ">$filename" or die "Ouverture impossible $!";
print FO @contenu;
close FO or die "fermeture impossible $!";
# placer ici le moyen de copier $filename dans jrnl_perso et effacer trav_date ($filtmp)
# $newdir = "$dir\/jrnl_perso\/";
}
elsif ($respond =~ /^n|non/i) {
$filetmp = "$dir_journal\/" . "trav_" . "$ma_date" . "\.log";
print "Votre travail a eéteé sauver dans $filetmp\n";
#-----ajout a journal.html---
&ajout_lnk($filetmp);
}
else {
if ($respond !~ /^"\.\/\w"|\w{4,}/) {
s/\.\/()/$1/;
$respond = "$dir" . "\/" . "$respond";
}
while (-e $respond) {
print "attention, un fichier existe déjà sous ce nom de fichier,\nVeuillez changer de nom\n";
chomp ($respond = );
}
$filename = $respond;
#-----ajout a journal.html---
&ajout_lnk($filetmp);
}
&menu;
}
sub sauv {
system ('clear');
print "\nentrez un nom pour votre travail\n";
#-----ici tronquer le debut du fichier deux lignes pour ce rappeller
#---plutot que @ (voir sysread ou troncate ou (seek et pop)
print "\n" . @contenu . "\nPour ce travail\nnom du fichier:\t";
$filename = ;
chomp $filename;
if (path1 ne "") {
print "voulez vous le sauver sur $path1\/$filename\n";
$yes = ;
chomp $yes;
if($yes =~ /^y|o/i) {
$filename = "$path1" . "\/$filename";
}
else {
$filename = "$dir_journal" . "\/$filename";
}
}
# controler si un fichier n'a pas le meme nom
if (-e $filename) {
($file, $ext)= split(/./, $filename);
$filename = "$file" . "_" . "$ma_date" . "\.$ext";
$filetmp = $filename;
#-----ajout a journal.html---
&ajout_lnk($filetmp);
print "Votre travail sera sauvegarder sous $filename\n";
open(FO, ">$filename") or die "Ouverture impossible $!";
print "$x\nEdite automatiquement par alEd le: $dt --\>\n$x\n\n";
print FO @contenu;
close FO || die "fermeture impossible $!";
$travail--;
&menu;
}
else {
print "Votre travail sera sauvegarder sous $filename\n";
$filetmp = $filename;
#-----ajout a journal.html---
&ajout_lnk($filetmp);
open(F, ">$filetmp") or die "Ouverture impossible $!";
print F "$x\nEdite automatiquement par alEd le: $dt --\>\n$x\n\n";
print F @contenu;
close F || die "fermeture impossible $!";
$travail--;
}
&menu;
}
sub lequel {
#--- permettre l'ouverture d'un fichier sans le path pour HOME et ~/journal
print "cacaouette\n";
if ($filename !~ /^\//) {
if (!( -e "$dir\/$filename")) {
$filename = "$dir_journal" . "\/$filename";
}
else {
$filename = "$dir" . "\/$filename";
}
}
while (!(-e $filename)) {
print "Quel fichier desirez vous ouvrir:\n";
$filename = ;
chomp $filename;
}
}
sub eb_sauve_alors {
print "Sauvegarder votre travail d'abord\n";
&sauv;
}
# Ce petit programme est une petite merveille
# alain Adelmar, 12 Mai 2003, aadelmar@free.fr
sub ajout_lnk($filetmp) {
my($filetmp)= @_;
@rep = split(/\//, $filetmp);
$file = pop @rep;
$path1 = join('/', @rep);
$ajout_jrnl = "$filetmp<\/A\>\t =\>\t fait le<\/I\> $dt<\/font color=\"#666666\"\>\n
";
$recap_date = "$file<\/A\>\t" . '.....' . "Date : $datos\n
";
# $somedate = "
;
close OLD || die "Fermeture de $old impossible $!";
#open NEW, ">$new" or die "Ouverture de $journal impossible $!";
if ($arg eq "p") {
$mode = "
";
&coupe;
}
elsif ($arg eq "g") {
$mode = "
";
&coupe;
}
else {
$mode = "
";
&coupe;
}
# print NEW "@debut\n";
# print NEW "$ajout_jrnl\n";
# print NEW "@interm\n";
# print NEW "$recap_date\n";
# print NEW "@somd\n";
# close NEW || die "Fermeture de $journal impossible $!";
rename($old, $bak) or die "can't rename $old to $bak: $!";
rename($new, $old) or die "can't rename $new to $old: $!";
}
#--------------si nouveau au dessus pas marcher oter et uncommente dessous
#system ('clear');
# remet une page blanche au shell.
sub lbling {
$rem = "# remd: $filename";
$ajout = "\n$rem\n#== ajout a $file éffectué par alEd le :$dt ==\>\n";
push @contenu, $ajout;
}
sub traite_mode($arg) {
$arg = $_;
$arg =~ s/-//;
print "votre choix $arg\n";
}
#--------ici création du fichier journal. html
sub init_journal {
unless (-e $dir_journal) {
mkdir $dir_journal || die "Ouverture du repertoire $journal impossible $!";
}
$lbl = "\n\nJournal des modifications \n\t\n\t\n\n\nJournal édité par alEd <\/U\><\/H1\>\n
Ce journal est créer par alEd<\/I\><\/B\> (script Perl<\/I\>). Il vous permettra d\'accéder à tout les documents créént par alEd.\n
Qui ce veux être un éditeur style \"carnet de note<\/I\>\" ou \"pense bête<\/I\>\".
Grace à son jeu d\'options (-p<\/B\> (pour programmation), -g<\/B\> (pour gestion) et -d<\/B\> (pour divers (par defaut<\/I\>))) il classe vos notes par rubriques suivant Programmation<\/a\> | Gestion<\/a\> | Divers<\/a\> que vous trouverez ci-dessous.
usage : alEd [-pgd] [--h, --heure] [nom_de_fichier]
\tMade by Alain Adelmar<\/A\><\/BLOCKQUOTE\><\/U\>\n" . "\tdebuter le [$dt]
\n\tdernier accés le [" . "$dt]\n";
$lbl_p = "\n
\nProgrammation :<\/H3\>\n
\n\n
\n";
$lbl_g = "<\/BLOCKQUOTE\>\n
\nGestion de fichiers :<\/H3\>\n
\n\n
\n";
$lbl_d = "<\/BLOCKQUOTE\>\n
\nDivers :<\/H3\>\n
\n\n
\n";
$lbl_down = "<\/BLOCKQUOTE\>\n
\nrécapitulatif par date :
\n
\n
\n
aal
\n\n<\/HTML\>\n";
open FJ, ">$journal" or die "Ouverture de $journal impossible $!";
print FJ "$lbl\n$lbl_p\n$lbl_g\n$lbl_d\n$lbl_down\n";
close FJ || die "Fermeture de $journal impossible $!";
}
sub coupe {
$dac = "\tdernier accés le \[(..)\]\n";
foreach $l(@contenu_jrnl) {
if ($l =~ /$dac/) {
print "$x you win \n";
$ld = "\tdernier acc" . 'és le [' . "$dt\]\n";
# s/"$l"/"$ld"/; #ou $l = $ld;
push @debut, $ld
}
if ($deb == 0) {
if ($l =~ /$mode/) {
$deb++;
}
push @debut, $l;
}
else {
if ($prems == 0) {
if ($l =~ /$somedate/) {
push @interm, $l;
$prems++;
}
else {
push @interm, $l;
}
}
else {
push @somd, $l;
}
}
}
open NEW, ">$new" or die "Ouverture de $journal impossible $!";
print NEW "@debut\n";
print NEW "$ajout_jrnl\n";
print NEW "@interm\n";
print NEW "$recap_date\n";
print NEW "@somd\n";
close NEW || die "Fermeture de $journal impossible $!";
}
#-----------vérifier si ~/journal/journal.html existe sinon le créer
sub verifj {
$dir_journal = "$dir" . "\/jrnl_perso";
$journal = "$dir\/jrnl_perso\/journal.html";
if (!(-e $journal)) {
&init_journal;
}
$old = $journal;
$new = "$journal.tmp.$$";
$bak = "$journal.bak";
}
sub watarg {
print "votre travail ce classera dans:\n[p] pour programmation\n[g] pour gestion de fichier\n[d] pour divers (qui est la mention par defaut)\n";
chomp ($arg = );
}
# ce merveilleux script vous à été offert par alain Adelmar (celui qui fait du Perl en se curant le nez);
# pour plus de détail jetez un oeil au man aj (pour peu que vous l'ayez installez) trouvable sur http://aadelmar.free.fr/man_aj.html
END;