#!/usr/bin/perl -w
# remd: Ce script fait ressortir un texte par rapport à un autre.  alain Adelmar                *
# A l'origine, je l'ai écris pour lors de traduction, pour laisser l'original en grisé ).       *
# Il alterne en grisé ligne par ligne ou paragraphe par paragraphe le contenu de deux fichiers, *
# par defaut. Mais peut éventuellement travaillé sur un seul fichier qui aurai déjà été traité. *
# Il travaille sur plusieurs formats (txt/plain, html, etc...) et sortir en (html, txt ou sgml).*
# usage: tradup [-blmp|sHST] (premier_fichier) (segond_fichier)	                        	*
# les options de clivage:                                                                       *
# -b (bloc) clivage par bloc, paragraphe (= phrase + point + une ligne vide)                    *
# -l (ligne) clivage par ligne (retour à la ligne) (par defaut)                                 *
# -p (phrase) clivage par phrase (jusqu'au point)                                               *
# -m (mot) mot par mot                                                                          *
# les options de sortie:                                                                        *
# -H (pour html) le script créera un fichier html (original en grisé)(par defaut)               *
# -S (pour sgml)  le script créera un fichier sgml (l'original en italique)                     *
# -T (pourtexte)  le script créera un fichier texte                                             *
# l'option de travail: (pas fini)                                                               *
# -s (pour single) lorsque le fichier à déjà les deux versions                                  *
# ----------------------------------------------------------------------------------------------*
# (pour Linux et Windows ) -écirit par alain Adelmar 12.2003-14.02.2004 v1.0 Pessac Gironde fr  |
#          Ca marche pas ___ donc tout reprendre - alain Adelmar                                                                                     | 
#************************************************************************************************
# $ID$

use Cwd;
$dir = cwd;

use DateFrench;
$opt_date_file = 1;
$french_date_now = maintenant();
print "$fr_date_now\n";

#initialisation:
$id = 0;
$x = "x" x 25;
$file = "";


# mettre en variable les incontournables___
$li = '<LI>';
$etiquette= '<!-- ' . "réalisé par tradure.pl v:1.0 le $french_date_now \n\técrit par alain Adelmar aadelmar\@free.fr" . '-->';
$lblhtm_in = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//FR">' . "\n" . '<HTML>' . "\n" . '<link rel="stylesheet" type="text/css" href="trad.css">';
$lblsgml_in = '<!doctype linuxdoc system>' . "\n\t" . '<ARTICLE>' . "\n\t";
$normal_in = '<font color="#OOOOOO">';
$grise_in = '<font color="#666666">';
$font_out = '</font>';
$lblhtm_out = '</HTML>';
$lblsgml_out = "\n" . '</ARTICLE>';


#traiter les options & arguments ----
while (@ARGV) {
  if ($ARGV[0] =~ /^-/) {
    s/-//;
    ($optc="b") if /^b/;
    ($optc="m") if /^m/;
    ($optc="p") if /^p/;
    ($optc="l") if /^l/;
    ($opts="html") if /H$/;
    ($opts="sgml") if /S$/;
    ($opts="txt") if /T$/;
    $argvs++ if /s/;
    $file = $ARGV[1];
    &verifi;
    $fila = $file;
   # $fr_date_file = datefichier($file);

    $file = $ARGV[2];
    $filb = $file;
   # $fr_date_file = datefichier($file);

    }
  elsif ($ARGV[0] =~ /^\/|(\w{3,11}\.\w?)/i) {
    $file = $ARGV[0];
    &verifi;
    $fila = $file;
#    $fr_date_file = datefichier($fila);
 #   $fa = $fr_date_file;
    $file = $ARGV[1];
    $filb = $file;
#    $fr_date_file = datefichier($filb);
 #   $fb=$fr_date_file;
    }
  else {
    print "Usage: tradup [-blmp|sHST] (premier_fichier) (segond_fichier)\n";
    &init_file;
    }
  }	


print "blabla\n";
$file_a = "$dir\/$fila";
# ouverture $fila et stockage contenua
open FA, "$file_a" or die "Ouverture de $fila impossible $!";
@contenua= <FA>;
close FA || die "Fermeture de $fila impossible $!";
#&decoupe_text;
# &traitement;


#ouverture de $filb et stockage contenub
$file_b = "$dir\/$filb";
open FB, "$file_b" or die "Ouverture de $filb impossible $!";
@contenub= <FB>;
close FB || die "Fermeture de $filb impossible $!";
&decoupe_text;
# &traitement;

# choix et ouverture de filout
print 'donner un nom au fichier a créé (exemple: /home/toto/travail.' . "$opts" . "):\n";
chomp ($filout=<STDIN>);
# si le mecton à oublié le path, lui coller le rep courant en guise de path, ca lui fera les pieds.
if ($filout !~ /^\//) {
  s/^\.\///;     #au cas ou il aurai entré un path relatif
  $filout = "$dir" . "\/$filout";
}

while (-e $filout) {
  $k++;
  ($rootfile, $ext) = split(/\./, $filout);
  $filout = "$rootfile_$k" . '.' . "$ext";
  }

open FOUT, ">$filout" or die "Ouverture de $filout impossible $!";

sub traitement {
  #traitement des fichiers style html tml xhtml sgml htm etc...
  if ($file =~ /\.{1}s?h?x?t?m{1}l?$/i) {
    #traitemnet par blocs (paragraphe)
    if ($opts eq "H") {
      #for ( $i = 0 ; $i < scalar( @contenua ) ; $i++) {
      foreach $l(@contenua) {
	if ($debut_h == 0) {
	  next if ($first >= 1);
	    if ($l =~ /<body\>/i) {
	      $debut_h++;
	      push @debuth, $l;
		}
	      }
	    else {
	    }
	  }
	}
      }
    # traitement par defaut texte/plain et autres
  else {
    _decoupe_text;
	}
}    

sub init_file { 
  # si utilisateur n'a pas donné le nom du premier fichier en arguments (l'initial):
  print "Entrez le nom du premier fichier à traiter (original):\n";
  chomp($file = <STDIN>);
  &verifi;
  $fila = $file;
#  $fr_date_file = datefichier($file);
#  $fa = $fr_date_file;


  #definir le nom et le mode d'affichage pour la trad
  print "Entrez le nom du segond fichier à traiter (le modifié):\n";
  chomp($file = <STDIN>);
  &verifi;
  $filb = $file;
#  $fr_date_file = datefichier($file);
 # $fb = $fr_date_file;
  }

#-----------------------------------------------------continuer ici moi je vais jouer


sub verifi {
  $u++;
  if (!(-e $file)) {
    print "please, write the right name for file $u\n";
    chomp ($file=<STDIN>);
    }
#  $fr_date_file= datefichier($file);
  $crt = "$x\n Rapport du contenu de $file\n";
  print "$crt";
}





print FOUT $lblhtm;
print FOUT
print FOUT @contenu;
print FOUT $lblhtmo;
close FOUT or die "Re_merde c\'est quoi encore $!";

# definir le fichier tmp en lui donnant un nom, un num et un rep (/tmp/tmp/):
$filename = $fila;
($filetmp, $ext) = split(/\./, $filename);
#($lbl, $id) = split(/_/, $filetmp);
$ftmp = "$filetmp" . "\.html";
$fulltmp = "$dir\/$ftmp";

while (-e $fulltmp) {
#  $id++;
  $fulltmp = &donne_un_nom;
  
 # $fulltmp = "$rep" . "\/" . "$ftmp";
}
# $tmpdir = "\./tmp";
#if (!(-d $tmpdir)) {
#  mkdir $tmpdir;
#}

# $filetmp = "$tmpdir" . "\/" . "$fulltmp";




#print CT "\n\n";
#print CT @nwcontenu;
#print CT $lblhtmo;
#close CT or die "ca couince avec le temporaire $!";


# routine pour donner un nom qui ne detruira pas les autres copies ou l'original
sub donne_un_nom {
  
  $id++;
  $filename = $fila;
  $fulltmp = "$filename" . "_$id" . "\.html";
  #($copie, $ext) = split(/\./, $fulltmp);
#  ($lbl, $id) = split(/_/, $copie);
  return $fulltmp;
}


#----------essai decoupe
sub decoupe_text {
  my (@contenua) = @_;

  if($optc eq "b") {
    # découpe par bloc
    }
  elsif($optc eq "p") {
    # découpe par (jusqu'au point)
    foreach (@contenua) {
      s/\.\s|\.\r\n/\.£/g;
      (chomp $_) if /^[^\n].?/;
      @nl = split(/£/, $_);
      foreach (@nl) {
	if (/\n$/) {
	  push @nwcopim, $_;
	  }
	else {
	  push @nwcopim, "$_\n";
	}
      }
    } 
    # la nouvelle decoupe ce trouve dans @nwcopim  
    
    }
  elsif($optc eq "m") {
    # découpe par bloc
    }
  elsif($optc eq "z") {
    # découpe par za qu'on veut
    }
  else {
    # découpe par ligne (defaut)
    if(@contenub eq "") {
      for($i=0, $i++, @contenua) {
	$contenub[$i]= "traduire le texte ici\n";
	}
      }
    $i = 0;
    foreach (@contenua) {
      $nwline = '<tr>' . "\n" . '<td>' . $i . '</td>' . "\n" . '<td>' . $_ . '/td></tr>' . "\n" . '<tr>' . "\n" . '<td class="traduction">' . "$contenub[$i]" . '</td></tr>' . "\n";
      print FOUT $nwline;
    #  $h_txt{$i}= "$_";
      $i++;
    }

  }
}

#-------------------------------





END;
