alEd

Petit éditeur de texte sur console

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

sommaire » programmation alEd.html » linux + perl » exemple

Editeur de texte pour console, style "post-it", qui sauvegarde vos message par defaut, sous le label trav_date.log
Il insére l'extention (.txt) si vous l'avez omise.  J'ai volontairement laisser le source en couleur pour l'exemple.
Pour copier ce script : saisir à la souris le scripte ci-dessous puis le coller dans un éditeur en le sauvant sous le nom de alEd.pl
puis le rendre exécutable, en tapant au prompt du shell:
$ chmod +x alEd.pl
pour le lancer tapez:
$ ./alEd.pl

Ce script est très vieux et fait parti de mes premiers script Perl.
J'ai réécris cet éditeur mais en placant la note, papier, fichier texte dans un répertoire ~/journal-perso/ il donne un récapitulatif des post-it sur une feuille .HTML et donc est consultable depuis son navigateur et ouvre les fichiers, note en cliquant sur un lien. C'est un journal de notes qui les classe par note de programmation, note de gestion et divers.
très pratique       (trouvez le topo ici et le script ici, le manuel aj.1)


#!/usr/bin/perl
# remd: Mon editeur alEd avec un menu. (ce programme tourne a merveille)    *
# Il accepte les noms de fichiers en arguments et s'utilise depuis le shell *
# alain adelmar vers: 1.03  Novembre 2002   (fonctionne trop bien)          *
#**********************************************************************
$dt = localtime(time);
$fdt = time();

if($ARGV[0] ne "") {
  if ($ARGV[0] =~ /^\"|\"$/) {
    s/^\"()\"$/$1/;
    $nbase = $1;
    print $nbase;
  }
  
  $filename = $ARGV[0];
  $argv = 1;
  &ouvrir;
}
else {
  print "\nVous auriez pu entrer un nom de fichier comme argument,\npensez y la prochaine fois.\n";
  $argv = 0;
}

        

# les différantes variables ***************
$x = "x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*\n";
$bienvenu = "$x$dt\tx*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";
$prompt = "Entrer KK votre choix: (0)nouveau, (1)ouvrir, (2)sauvegarder\n(q)quitter ou (Enter) pour continuez...\n";
# initialisé à
$choix = 0;
$travail = 0;

print "$prompt";
chomp($choix = <STDIN>);

&choix;

sub choix {
  while($choix ne "q") {
    chop($choix);
    if($choix eq "0")        {
      &nouveau;
      print "$prompt";
      $choix = <STDIN>;
    }
    if($choix eq "1") {
      if ($travail >= 1) {
        &eb_sauve_alors;
      }
      else {
        &ouvrir;
      }
    }
    elsif($choix eq "2"){
      &sauv;
    }
    else {
      if ($travail >= 1) {
        &eb_sauve_alors;
      }
      else {
        &nouveau;
      }
    }
  }
  die "$x\nTchao !!! s'eut été un plaisir\n$x\n";
}


  
sub nouveau {
  print "$bienvenu";
  $travail++;
  
  @contenu = <STDIN>;
  print "n'oublier pas de sauver votre travail qui par defaut sera sauvegarder sur votre repertoire avec pour nom 'edition_date_du_jour.log'\n";
  
  $filetmp = "trav_" . "$fdt" . "\.log";
  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 $!";
}

sub ouvrir {
  if ($argv == 0) {
    &lequel($filename);
  }
  if(-e $filename) {
    print "alEd va ouvrir $filename pour vous\n";
  }
  else {
    print "veuillez enrer un nom de fichier correct, (svp)\n";
    $filename = <STDIN>;
    chomp $filename;
  }
  open FO, "$filename" or die "Ouverture impossible $!";
  @contenu = <FO>;
  $ajout = "\n#== ajout éffectué par alEd le :$dt ==\>\n\n";
  push @contenu, $ajout;
  close FO or die "fermeture impossible $!";

  # voir si il est possible de directement ecrire print <STDOUT> @contenu
  foreach $ligne(@contenu) {
    print $ligne;
}
  
  print "\n";
  print $bienvenu;
  @nwcontenu = <STDIN>;
  if ($argv == 1) {
    print "voulez vous sauver l\'ensemble du travail sur le fichier d\'origine $filename :\[Oui-Non]?\n";
    chomp($respond = <STDIN>);
    if($respond =~ /^o|oui/i) {
      push @contenu, @nwcontenu;
      open FO, ">$filename" or die "Ouverture impossible $!";
      print FO @contenu;
      close FO or die "fermeture impossible $!";
      print "$prompt";
      chomp($choix = <STDIN>);
      &choix;
    }
    else {
      print "n'oublier pas de sauver votre travail\nqui par defaut sera sauvegarder\nsur votre repertoire avec pour nom:\n'edition_date_du_jour.log'\n";
      $filetmp = "trav_" . "$fdt" . "\.log";
      
      push @contenu, "@nwcontenu";
      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++;
      print "$prompt";
      chomp($choix = <STDIN>);
    }
  }
}

sub sauv {
  exec '/usr/bin/clear';
  print "\nentrez le nom de votre travail\n";
  
  print "\n" . @contenu . "\nPour ce travail\nnom du fichier:\t";
  $filename = <STDIN>;
  chomp $filename;
  # controler si un fichier n'a pas le meme nom
  if (-e $filename) {
    ($file, $ext)= split(/./, $filename);
    $new_filename = "$file" . "_$fdt" . "\.$ext";
    print "Votre travail sera sauvegarder sous $new_filename\n";
    open(F, ">$new_filename") or die "Ouverture impossible $!";
    print "$x\nEdite automatiquement par alEd le: $dt --\>\n$x\n\n";
    print F @contenu;
    close F || die "fermeture impossible $!";
    $travail--;
    print "$prompt";
    $choix = <STDIN>;
  }
  else {
    print "Votre travail sera sauvegarder sous $new_filename\n";
    open(F, ">$filename") 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--;
  }
}

sub lequel($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, 14 Aout 2001, rectifier Nov 2002 a.adelmar@wanadoo.fr

exec '/usr/bin/clear';
# remet une page blanche au shell.

END;


et en couleur grace à l'éditeur wscite


#!/usr/bin/perl
# remd: Mon editeur alEd avec un menu. (ce programme tourne a merveille)    *
# Il accepte les noms de fichiers en arguments et s'utilise depuis le shell    *
# alain adelmar vers: 1.03  Novembre 2002   (fonctionne trop bien)              *
#**********************************************************************
$dt = localtime(time);
$fdt = time();

if($ARGV[0] ne "") {
  if ($ARGV[0] =~ /^\"|\"$/) {
    s/^\"()\"$/$1/;
    $nbase = $1;
    print $nbase;
  }
  
  $filename = $ARGV[0];
  $argv = 1;
  &ouvrir;
}
else {
  print "\nVous auriez pu entrer un nom de fichier comme argument,\npensez y la prochaine fois.\n";
  $argv = 0;
}

        

# les différantes variables ***************
$x = "x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*\n";
$bienvenu = "$x$dt\tx*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";
$prompt = "Entrer KK votre choix: (0)nouveau, (1)ouvrir, (2)sauvegarder\n(q)quitter ou (Enter) pour continuez...\n";
# initialisé à
$choix = 0;
$travail = 0;

print "$prompt";
chomp($choix = <STDIN>);

&choix;

sub choix {
  while($choix ne "q") {
    chop($choix);
    if($choix eq "0")        {
      &nouveau;
      print "$prompt";
      $choix = <STDIN>;
    }
    if($choix eq "1") {
      if ($travail >= 1) {
        &eb_sauve_alors;
      }
      else {
        &ouvrir;
      }
    }
    elsif($choix eq "2"){
      &sauv;
    }
    else {
      if ($travail >= 1) {
        &eb_sauve_alors;
      }
      else {
        &nouveau;
      }
    }
  }
  die "$x\nTchao !!! s'eut été un plaisir\n$x\n";
}


  
sub nouveau {
  print "$bienvenu";
  $travail++;
  
  @contenu = <STDIN>;
  print "n'oublier pas de sauver votre travail qui par defaut sera sauvegarder sur votre repertoire avec pour nom 'edition_date_du_jour.log'\n";
  
  $filetmp = "trav_" . "$fdt" . "\.log";
  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 $!";
}

sub ouvrir {
  if ($argv == 0) {
    &lequel($filename);
  }
  if(-e $filename) {
    print "alEd va ouvrir $filename pour vous\n";
  }
  else {
    print "veuillez enrer un nom de fichier correct, (svp)\n";
    $filename = <STDIN>;
    chomp $filename;
  }
  open FO, "$filename" or die "Ouverture impossible $!";
  @contenu = <FO>;
  $ajout = "\n#== ajout éffectué par alEd le :$dt ==\>\n\n";
  push @contenu, $ajout;
  close FO or die "fermeture impossible $!";

  # voir si il est possible de directement ecrire print <STDOUT> @contenu
  foreach $ligne(@contenu) {
    print $ligne;
}
  
  print "\n";
  print $bienvenu;
  @nwcontenu = <STDIN>;
  if ($argv == 1) {
    print "voulez vous sauver l\'ensemble du travail sur le fichier d\'origine $filename :\[Oui-Non]?\n";
    chomp($respond = <STDIN>);
    if($respond =~ /^o|oui/i) {
      push @contenu, @nwcontenu;
      open FO, ">$filename" or die "Ouverture impossible $!";
      print FO @contenu;
      close FO or die "fermeture impossible $!";
      print "$prompt";
      chomp($choix = <STDIN>);
      &choix;
    }
    else {
      print "n'oublier pas de sauver votre travail\nqui par defaut sera sauvegarder\nsur votre repertoire avec pour nom:\n'edition_date_du_jour.log'\n";
      $filetmp = "trav_" . "$fdt" . "\.log";
      
      push @contenu, "@nwcontenu";
      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++;
      print "$prompt";
      chomp($choix = <STDIN>);
    }
  }
}

sub sauv {
  exec '/usr/bin/clear';
  print "\nentrez le nom de votre travail\n";
  
  print "\n" . @contenu . "\nPour ce travail\nnom du fichier:\t";
  $filename = <STDIN>;
  chomp $filename;
  # controler si un fichier n'a pas le meme nom
  if (-e $filename) {
    ($file, $ext)= split(/./, $filename);
    $new_filename = "$file" . "_$fdt" . "\.$ext";
    print "Votre travail sera sauvegarder sous $new_filename\n";
    open(F, ">$new_filename") or die "Ouverture impossible $!";
    print "$x\nEdite automatiquement par alEd le: $dt --\>\n$x\n\n";
    print F @contenu;
    close F || die "fermeture impossible $!";
    $travail--;
    print "$prompt";
    $choix = <STDIN>;
  }
  else {
    print "Votre travail sera sauvegarder sous $new_filename\n";
    open(F, ">$filename") 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--;
  }
}

sub lequel($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, 14 Aout 2001, rectifier Nov 2002 a.adelmar@wanadoo.fr

exec '/usr/bin/clear';
# remet une page blanche au shell.

END;

Alors qu'il suffit d'entrer les deux lignes suivantes dans un fichier pour avoir un éditeur sur un console:
#!/usr/bin/perl
@mon_texte = <STDIN>;
seulement ceci ne fait pas de sauvegarde.