Jago
(Journal
Auto-Géré
d'Edition
d'iDées
ou le Journal
d'Alain,
Gestion
d'Edition
Dynamique
ou aJout Atipique de paGEs d'iDées)
conçu par Alain Adelmar
alain Adelmar
Journalise vos notes sur la console, sauvegarde et gé automatiquement aussi.
Il place les notes dans un répertoire ~/jrnl_perso/ et créé un journal ~/jrnl_perso/journal.html
qui indique la date le sujet et un lien permettant d'y accéder.
Vous pouvez trouver:
le script plus bas et jagola aussi
le manuel aj.1
le script aj2.pl et aj
une nouvelle versionet son script aj2.pl et son manuel aj.1
Voilà
Ce script est un dérivé de alEd (mon petit éditeur
de console), qui, tant qu'à éditer simplement les idées
ou les remarques, maintenant les sauvent dans un répértoire
qu'il créé ~/jrnl_perso/.
Il place dans un journal appelé journal.html des liens dynamiques
classés par rubriques et chronologiquement:
Programmation | Gestion | Divers
Je l'ai rendu äpte à reconnaitre les options et arguments
suivant: -cdgp --h nom_de_fichier ou repertoire(a ouvrir ou
a voir)
usage: jaged [-cdgp][--h --heure][nom_du_fichier]
les options:
-c |
pour complet, sert à afficher totalement le
texte ouvert par nom_de_fichier, par defaut il n'affichera que 8
lignes (les 4premiéres et les 4dernières) pour ne pas
surcharger l'écran et pouvoir faire la soudure. |
-dgp |
pour réspectivement: divers, gestion, programmation.
Ainsi un lien dans journal sera créé et ira ce positionné
sous la rubriques désignée gestion programmation ou divers
(divers étant la rubrique par defaut). Bien sûr l'heure et
la date de ce fichier seront aussi afficher en bas de pages (chronologiquement
en récapitulatif). |
--h ou --heure |
pour heure sert à marquer l'heure complette
(accés, modif et création ou changement d'inode) du fichier
ouvert, pour pouvoir la conserver en tant que remarque dans le fichier
ainsi transformé et à l'écran. |
nom_de_fichier |
à ouvrir qui peut être un nom_de_répertoire
(ce qui aura pour consequance d'afficher le contenu de ce-dit répértoire,
afin de ce raffraichir la mémoire et de pouvoir bien ortaugrafié
le fichier à ouvrir). |
Ce petit éditeur à aussi un menu qui vous permettra de
lancer plusieurs éditions sans être obligé de le réouvrir.
Pour le moment il est en mode texte, quand je métriserai plus le
tk je le referai en GUI. Il est intéressant avec l'outils
:
quoi (l'alias grep) et quoi+
(son grand frère Perl) ainsi que taf
(traduct uk-fr) et vide (script videur,
de contenu et de fichiers suivant regexp) et vlink
(verificateur réparateur de liens pour répértoire,
site, page_perso) et autre r2cp,
Compile
, html2rap, all2csv etc...
Ces scripts m'aides tout les jours et sont accessible directement à
la console, mais surtout je me suis régalé à les écrire.
en noir et blanc: fonctionne
En couleur : Roule bien
Ci dessous le script jago
(pour le rendre
executable lire voir )
#!/usr/bin/perl -w
# remd: Mon editeur alEd avec un menu. (ce programme tourne a merveille) *
# fait partie de GEAI (Gestion d'Edition Automatique Interactif) l'editeur *
# place les sauvegardes de votre travail dans ~/journal/trav_date.log puis *
# ajoute une lien dynamique dans la rubrique voulu du fichier Journal.html *
# rubriques défini pour le moment: (programmation, gestionnaire de file et *
# divers) appelé réspéctivement par l'option -p -g -d (par defaut) donc : *
# *
# usage: geai [-cdgp][--h --heure][nom_du_fichier] *
# -c (complet) affiche l'intégralité du contenu de file au lieu d'un *
# récapitulatif (debut ...fin) => 8lignes - par defaut. *
# --h (heure) change l'affichage horaire aaaammjj hhmmss => aaammjjccc *
# Il accepte les noms de fichiers en arguments et s'utilise depuis le shell *
# alain adelmar vers: 2.03 13 Decembre 2003 Pessac (for UNIX-Like ENV) *
#****************************************************************************
# Il tourne de manière satisfaisante Editeur/journal sur ~/jrnl_perso/journal
#system ("clear");
use Cwd;
$dir = cwd;
$path1="";
$somedate = '<A NAME="sum_date"><BR>';
@debut = @interm = @somd;
$prems = $travail = $argv = $deb = 0;
# les différantes variables ***************
$x = ("x*" x 34) . "\n";
$prompt = "Entrer votre choix: (0)nouveau, (1)ouvrir, (2)sauvegarder\n(q)quitter ou (Enter) pour continuez\.\.\.\n";
# initialisé à
undef $choix;
$filename = "";
#------- 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);
@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";
&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:\tjago [-pgd] [nom_de_fichier]\n";
$argv = 0;
}
$bienvenu = "$x\tx $dt x\n$x\nBienvenu sur l'éditeur aled\n editeur alain A_d_e_l_m_a_r\nTaper Ctr-D pour sortir\n\n$x\n\n";
&menu;
sub menu {
&verifj;
print "$prompt";
chomp($choix = <STDIN>);
#-----------------
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 !!! s'eut été un plaisir\n$x\n";
}
sub nouveau {
print "$bienvenu";
@contenu = <STDIN>;
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 = <FO>;
&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;
@nwcontenu = <STDIN>;
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 = <STDIN>);
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 été 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 = <STDIN>);
}
$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 = <STDIN>;
chomp $filename;
if (path1 ne "") {
print "voulez vous le sauver sur $path1\/$filename\n";
$yes = <STDIN>;
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 = <STDIN>;
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 = "<A HREF=\"$filetmp\"\>$filetmp<\/A\>\t =\>\t <font color=\"#666666\"\><I\>fait le<\/I\> $dt<\/font color=\"#666666\"\>\n<BR\>";
$recap_date = "<A HREF=\"$filetmp\"\>$file<\/A\>\t" . '.....' . "Date : $datos\n<BR\>";
# $somedate = "<A NAME=\"sum_date\"";
open OLD, "<$old" or die "Ouverture de $old impossible $!";
@contenu_jrnl = <OLD>;
close OLD || die "Fermeture de $old impossible $!";
#open NEW, ">$new" or die "Ouverture de $journal impossible $!";
if ($arg eq "p") {
$mode = "<A NAME=\"end_puuu\"\><BR\>";
&coupe;
}
elsif ($arg eq "g") {
$mode = "<A NAME=\"end_guuu\"\><BR\>";
&coupe;
}
else {
$mode = "<A NAME=\"end_duuu\"\><BR\>";
&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 = "<HTML\>\n<HEAD\>\n<TITLE\>Journal des modifications</TITLE\>\n\t<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text\/html\; charset=ISO\-8859\-1\"\>\n\t<LINK REV=\"made\" HREF=\"mailto:aadelmar\@free.fr\"\>\n</HEAD\>\n<BODY\>\n<A NAME=\"_top\"\><H1\><U\><CENTER\>Journal édité par alEd</CENTER\><\/U\><\/H1\>\n<BR\><hr WIDTH=\"100%\"\>Ce journal a édité automatiquement par <I\><B\>jago<\/I\><\/B\> (<I\>le script Perl<\/I\>). Il vous permet d\'accéder &aeacute tout les documents édités.\n<BR\>Qui ce veux être un éditeur style \"<I\>carnet de note<\/I\>\" ou \"<I\>pense bête<\/I\>\".<BR\>Grace à son jeu d\'options (<B\>-p<\/B\> (pour programmation), <B\>-g<\/B\> (pour gestion) et <B\>-d<\/B\> (pour divers (<I\>par defaut<\/I\>))) il classe vos notes par rubriques suivant <a href=\"#prog\"\>Programmation<\/a\> | <a href=\"#gest\"\>Gestion<\/a\> | <a href=\"#div\"\>Divers<\/a\> que vous trouverez ci-dessous.<BR\>usage : alEd [-pgd] [--h, --heure] [nom_de_fichier]<BR\>\t<U\><BLOCKQUOTE\>Made by <A HREF=\"mailto:aadelmar\@free.fr\"\>Alain Adelmar<\/A\><\/BLOCKQUOTE\><\/U\>\n" . "\tdebuter le [$dt]<BR\>\n\tdernier accés le [" . "$dt]\n";
$lbl_p = "\n<hr WIDTH=\"100%\"\>\n<A NAME=\"prog\"\><H3\>Programmation :<\/H3\>\n<BR\>\n<BLOCKQUOTE\>\n<A NAME=\"end_puuu\"\><BR\>\n";
$lbl_g = "<\/BLOCKQUOTE\>\n<hr WIDTH=\"100%\"\>\n<A NAME=\"gest\"\><H3\>Gestion de fichiers :<\/H3\>\n<BR\>\n<BLOCKQUOTE\>\n<A NAME=\"end_guuu\"\><BR\>\n";
$lbl_d = "<\/BLOCKQUOTE\>\n<hr WIDTH=\"100%\"\>\n<A NAME=\"div\"\><H3\>Divers :<\/H3\>\n<BR\>\n<BLOCKQUOTE\>\n<A NAME=\"end_duuu\"\><BR\>\n";
$lbl_down = "<\/BLOCKQUOTE\>\n<hr WIDTH=\"100%\"\>\n<A NAME=\"recap\"\><H3\>récapitulatif par date :</H3\>\n<BR\>\n<A NAME=\"sum_date\"\><BR\>\n<hr WIDTH=\"100%\"\>aal<BR\>\n</BODY\>\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";
$old = $journal;
$new = "$journal.tmp.$$";
$bak = "$journal.bak";
if (!(-e $journal)) {
&init_journal;
}
}
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 = <STDIN>);
}
# ce merveilleux script vous à été offert par alain Adelmar (celui qui fait du Perl en se curant le nez);
END;
#
Adelmar Alain l'homme
qui reste égal à lui même, et vice-versa.
précédant | suivant
| sommaire