2
0
Fork 0

1) modf Perl/genere_catalogue_tests.pl : ajout du nom de l auteur du test et de la liste des mots-cles; 2) modif de tous les README : ajout d un rubrique Auteur et ajout de la rubrique mots-cles si elle n existait pas deja; 3) Changement de nom des tests MOONEY_RIVLIN_3D (le repertoire du test n avait pas un nom assez explicite pour figurer dans le catalogue de tests)

This commit is contained in:
troufflard 2015-06-29 15:41:12 +00:00
parent dccf63fdc3
commit 7060e79cd8
30 changed files with 314 additions and 97 deletions

View file

@ -1,3 +1,16 @@
------------------------------------------------------
Auteur
------------------------------------------------------
Julien Troufflard (troufflard@univ-ubs.fr)
------------------------------------------------------
Mots-cles
------------------------------------------------------
axisymetrique
contact
ISOELAS
comparaison Abaqus
------------------------------------------------------
But du test
------------------------------------------------------

View file

@ -1,3 +1,8 @@
------------------------------------------------------------
Auteur
------------------------------------------------------------
Bertille Claude (bertille.claude@univ-ubs.fr)
------------------------------------------------------------
But du test
------------------------------------------------------------
@ -40,5 +45,3 @@ Grandeurs de comparaison
------------------------------------------------------------
Def_principaleI Def_principaleII Sigma_principaleI Sigma_principaleII
(point d'intégration 1 de l'élément 23, qui est situé environ au centre de la membrane)

View file

@ -1,3 +1,8 @@
------------------------------------------------------------
Auteur
------------------------------------------------------------
Bertille Claude (bertille.claude@univ-ubs.fr)
------------------------------------------------------------
But du test
------------------------------------------------------------

View file

@ -1,3 +1,8 @@
------------------------------------------------------------
Auteur
------------------------------------------------------------
Bertille Claude (bertille.claude@univ-ubs.fr)
------------------------------------------------------------
But du test
------------------------------------------------------------

View file

@ -1,8 +1,13 @@
------------------------------------------------------------
Auteur
------------------------------------------------------------
Bertille Claude (bertille.claude@univ-ubs.fr)
------------------------------------------------------------
But du test
------------------------------------------------------------
Le but du calcul est de trouver la forme d'équilibre d'un tunnel gonflé
dont le matériau suit une loi de comportement isotrope élastique (ISOELAST2D_C).
dont le matériau suit une loi de comportement isotrope élastique (ISOELAS2D_C).
------------------------------------------------------------
Description du calcul
@ -10,7 +15,7 @@ Description du calcul
Le calcul s'effectue avec la méthode de relaxation dynamique.
Les paramètres de contrôle de cette méthode sont définis dans KDR.algo
La loi de comportement testée est la loi ISOELAST2D_C.
La loi de comportement testée est la loi ISOELAS2D_C.
Les paramètres utilisés pour la définir sont des paramètres cohérents avec des tests réalisés sur des membranes:
E= 125 MPa
nu = 0,4
@ -27,12 +32,10 @@ Mots-cles
tunnel
isoelastique
relaxation dynamique
ISOELAST2D_C
ISOELAS2D_C
------------------------------------------------------------
Grandeurs de comparaison
------------------------------------------------------------
Def_principaleI Def_principaleII Sigma_principaleI Sigma_principaleII
(point d'intégration 1 de l'élément 116, qui est situé environ au centre de la membrane)

View file

@ -1,3 +1,15 @@
------------------------------------------------------
Auteur
------------------------------------------------------
Julien Troufflard (troufflard@univ-ubs.fr)
------------------------------------------------------
Mots-cles
------------------------------------------------------
cube unitaire
cisaillement simple
ISOHYPER3DFAVIER3
------------------------------------------------------
But du test
------------------------------------------------------

View file

@ -1,3 +1,15 @@
------------------------------------------------------
Auteur
------------------------------------------------------
Julien Troufflard (troufflard@univ-ubs.fr)
------------------------------------------------------
Mots-cles
------------------------------------------------------
cube unitaire
traction uniaxiale
ISOHYPER3DFAVIER3
------------------------------------------------------
But du test
------------------------------------------------------

View file

@ -1,3 +1,15 @@
------------------------------------------------------
Auteur
------------------------------------------------------
Julien Troufflard (troufflard@univ-ubs.fr)
------------------------------------------------------
Mots-cles
------------------------------------------------------
cube unitaire
cisaillement simple
MOONEY_RIVLIN_3D
------------------------------------------------------
But du test
------------------------------------------------------

View file

@ -1,3 +1,15 @@
------------------------------------------------------
Auteur
------------------------------------------------------
Julien Troufflard (troufflard@univ-ubs.fr)
------------------------------------------------------
Mots-cles
------------------------------------------------------
cube unitaire
traction uniaxiale
MOONEY_RIVLIN_3D
------------------------------------------------------
But du test
------------------------------------------------------

View file

@ -1,8 +1,13 @@
------------------------------------------------------
Auteur
------------------------------------------------------
Bertille Claude (bertille.claude@univ-ubs.fr)
------------------------------------------------------------
But du test
------------------------------------------------------------
Ce programme teste la loi de comportement isotrope hyperélastique
ISOHYPER3DORGEAS1 sur un cube en traction simple.
ISOHYPER3DORGEAS1 sur un cube en traction uniaxiale.
------------------------------------------------------------
Description du calcul
@ -16,12 +21,13 @@ K= 624; Q0s= 0.4; mu01= 44; mu02= 0.6; mu03= 44; alpha01= 1e-3; alpha02= 1e-3; Q
La structure étudiée est un cube de dimensions 100*100*100 mm^3, discrétisé
avec un seul élément de type volumique (interpolation linéaire, 8noeuds)
L'essai simulé est un essai de traction simple dans la direction 11.
L'essai simulé est un essai de traction uniaxiale dans la direction 11.
------------------------------------------------------------
Mots-cles
------------------------------------------------------------
cube
traction uniaxiale
isohyper3dorgeas1
------------------------------------------------------------

View file

@ -1,3 +1,16 @@
------------------------------------------------------
Auteur
------------------------------------------------------
Julien Troufflard (troufflard@univ-ubs.fr)
------------------------------------------------------
Mots-cles
------------------------------------------------------
cube unitaire
traction uniaxiale
dynamique explicite
ISOELAS
------------------------------------------------------
But du test
------------------------------------------------------

View file

@ -1,3 +1,16 @@
------------------------------------------------------
Auteur
------------------------------------------------------
Julien Troufflard (troufflard@univ-ubs.fr)
------------------------------------------------------
Mots-cles
------------------------------------------------------
cube unitaire
traction uniaxiale
dynamique implicite
ISOELAS
------------------------------------------------------
But du test
------------------------------------------------------

View file

@ -1,3 +1,17 @@
------------------------------------------------------
Auteur
------------------------------------------------------
Julien Troufflard (troufflard@univ-ubs.fr)
------------------------------------------------------
Mots-cles
------------------------------------------------------
coussin circulaire
membrane
traction uniaxiale
ISOELAS2D_C
relaxation dynamique
------------------------------------------------------
But du test
------------------------------------------------------

View file

@ -1,3 +1,17 @@
------------------------------------------------------
Auteur
------------------------------------------------------
Julien Troufflard (troufflard@univ-ubs.fr)
------------------------------------------------------
Mots-cles
------------------------------------------------------
cube unitaire
traction uniaxiale
statique
non_dynamique
ISOELAS
------------------------------------------------------
But du test
------------------------------------------------------

View file

@ -1,3 +1,14 @@
------------------------------------------------------
Auteur
------------------------------------------------------
Erwan Kergourlay (erwan.kergourlayd@univ-ubs.fr)
------------------------------------------------------
Mots-cles
------------------------------------------------------
utilitaires
fusion_elements
------------------------------------------------------------
But du test
------------------------------------------------------------
@ -25,13 +36,3 @@ Comparaison des fichiers cube_soude_nevez.her et cube_soude_nevez.lis avec les f
Informations sur les fichiers facultatifs
------------------------------------------------------------
Des fichiers temporaires sont créés pour la comparaison qui contiennent uniquement les données puis ils sont éffacés à la fin de l'éxécution du programme perl.
------------------------------------------------------------
Comparaison avec des solutions analytiques
------------------------------------------------------------
du texte...
------------------------------------------------------------
Comparaison avec des codes de calcul
------------------------------------------------------------
du texte...

View file

@ -1,3 +1,14 @@
------------------------------------------------------
Auteur
------------------------------------------------------
Erwan Kergourlay (erwan.kergourlay@univ-ubs.fr)
------------------------------------------------------
Mots-cles
------------------------------------------------------
utilitaires
fusion_maillages
------------------------------------------------------------
But du test
------------------------------------------------------------
@ -24,13 +35,3 @@ Comparaison des fichiers cube_soude.her et cube_soude.lis avec les fichiers de r
Informations sur les fichiers facultatifs
------------------------------------------------------------
Des fichiers temporaires sont créés pour la comparaison qui contiennent uniquement les données puis ils sont éffacés à la fin de l'éxécution du programme perl.
------------------------------------------------------------
Comparaison avec des solutions analytiques
------------------------------------------------------------
du texte...
------------------------------------------------------------
Comparaison avec des codes de calcul
------------------------------------------------------------
du texte...

View file

@ -1,3 +1,14 @@
------------------------------------------------------
Auteur
------------------------------------------------------
Erwan Kergourlay (erwan.kergourlay@univ-ubs.fr)
------------------------------------------------------
Mots-cles
------------------------------------------------------
utilitaires
fusion_de_noeuds
------------------------------------------------------------
But du test
------------------------------------------------------------
@ -25,13 +36,3 @@ Comparaison des fichiers cube_soude_nevez.her et cube_soude_nevez.lis avec les f
Informations sur les fichiers facultatifs
------------------------------------------------------------
Des fichiers temporaires sont créés pour la comparaison qui contiennent uniquement les données puis ils sont éffacés à la fin de l'éxécution du programme perl.
------------------------------------------------------------
Comparaison avec des solutions analytiques
------------------------------------------------------------
du texte...
------------------------------------------------------------
Comparaison avec des codes de calcul
------------------------------------------------------------
du texte...

View file

@ -1,3 +1,14 @@
------------------------------------------------------
Auteur
------------------------------------------------------
Erwan Kergourlay (erwan.kergourlay@univ-ubs.fr)
------------------------------------------------------
Mots-cles
------------------------------------------------------
utilitaires
suppression_noeud_non_references
------------------------------------------------------------
But du test
------------------------------------------------------------
@ -24,13 +35,3 @@ Comparaison du fichier cube_soude_nevez.her et cube_soude_nevez.lis avec les fic
Informations sur les fichiers facultatifs
------------------------------------------------------------
Des fichiers temporaires sont créés pour la comparaison qui contiennent uniquement les données puis ils sont éffacés à la fin de l'éxécution du programme perl.
------------------------------------------------------------
Comparaison avec des solutions analytiques
------------------------------------------------------------
du texte...
------------------------------------------------------------
Comparaison avec des codes de calcul
------------------------------------------------------------
du texte...

View file

@ -18,6 +18,25 @@ my $format_reel = '[+-]?[\.]?\d+[\.]?\d*(?:[eE][+-]?\d*)?';
# disponibles (recopie des rubriques "But du test" et "Description du calcul" du
# fichier README de chaque repertoire de test)
#
#
# Notes a tout le monde :
# une rubrique est un bloc contenu dans un fichier README sous la forme :
# une ligne de tirets
# nom de la rubrique
# une ligne de tirets
# ...
# ...
# une suite de lignes (vides ou non)
# ...
#
# IMPORTANT : ce script repere la fin d une rubrique par la presence d une autre ligne de tirets (ou la fin du fichier)
# ce qui veut dire que toute ligne de tirets (hormis les lignes qui encadrent le nom de la rubrique) met fin a la lecture
# de la rubrique.
# En vue des eventuels risques de fin de lecture prematuree, la variable $MOTIF_FIN_RUBRIQUE a ete definie au cas ou le
# besoin se fait sentir de definir clairement une balise de fin de rubrique (la valeur actuelle de cette variable etant
# pour l instant ecrite de maniere a reperer une ligne de tirets).
#
#
# Notes aux utilisateurs :
# les repertoires de tests sont recherches dans toute l arborescence depuis l endroit ou
# ce script est lance (recherche de tous les repertoires commencant par Test_R ou Test_L)
@ -71,8 +90,11 @@ my @LISTE_RUBRIQUES_README = ('But du test',
'Description du calcul');
#--nom de la rubrique contenant des mots-cles (rq : insensible a la casse)
my $NOM_RUBRIQUE_MOTS_CLES = 'Mots-cles';
#--nom de la rubrique contenant le ou les auteurs d un test (rq : insensible a la casse)
my $NOM_RUBRIQUE_AUTEUR = 'Auteur';
#--motif pour reperer la fin d une rubrique (la recherche de fin de rubrique sera de la forme : ... =~ /^\s*$MOTIF_FIN_RUBRIQUE\s*$/ )
my $MOTIF_FIN_RUBRIQUE = '---+';#motif actuel : une suite d au moins 3 tirets
@ -126,9 +148,9 @@ foreach my $rep_test (@REP_TESTS_R,@REP_TESTS_L) {
#arret du programme si il y a absence d au moins 1 fichier README
if($is_absence_README) {
warn "\n";
afficher_ligne_pointilles('warn');
afficher_ligne_tirets('warn');
warn "Erreur (prog:$NOM_PROG) : arret a cause de l absence de fichier(s) README\n";
afficher_ligne_pointilles('warn');
afficher_ligne_tirets('warn');
die "\n";
}
@ -164,12 +186,12 @@ preambule_fic_tex_tmp($HANDLE_TEX);
#corps du texte (d abord les tests rapides, ensuite les tests longs)
#------------------------------------------------------------------------------------------
#--- tests rapides ---
print $HANDLE_TEX "\\clearpage\\newpage\n";
print $HANDLE_TEX "\\clearpage\n";
print $HANDLE_TEX "\\section{Tests rapides}\n";
recopie_README("R", $HANDLE_TEX, \@REP_TESTS_R, @LISTE_RUBRIQUES_README);
#--- tests longs ---
print $HANDLE_TEX "\\clearpage\\newpage\n";
print $HANDLE_TEX "\\clearpage\n";
print $HANDLE_TEX "\\section{Tests longs}\n";
recopie_README("L", $HANDLE_TEX, \@REP_TESTS_L, @LISTE_RUBRIQUES_README);
@ -178,7 +200,7 @@ recopie_README("L", $HANDLE_TEX, \@REP_TESTS_L, @LISTE_RUBRIQUES_README);
#fin de l ecriture du fichier .tex
#------------------------------------------------------------------------------------------
#ajout de l index (ajout egalement dans le sommaire sans numerotation)
print $HANDLE_TEX "\\clearpage\\newpage\n";
print $HANDLE_TEX "\\clearpage\n";
print $HANDLE_TEX "\\printindex\n";#ecriture de l index
#ajout de \end{document}
@ -251,9 +273,9 @@ chdir "..";
#affichage fin programme
print "\n";
afficher_ligne_pointilles('print');
afficher_ligne_tirets('print');
print "Le fichier $NOM_PDF_CATALOGUE a ete cree...\n";
afficher_ligne_pointilles('print');
afficher_ligne_tirets('print');
print "\n";
@ -321,36 +343,46 @@ sub genere_label_section {
#- - - - - - - - -
#actualisation du label pour le prochain appel
#- - - - - - - - -
#label actuel sous forme d un tableau d entier par conversion
#label actuel sous forme d un tableau d entier par conversion selon la table $TAB_CONVERT_lettre2pos
my @tab_label = map {$TAB_CONVERT_lettre2pos->{$_}} split(//, $LABEL_ACTUEL);
my $nb_chars = $#tab_label + 1;
#test qui ne devrait jamais poser probleme (a moins que la batterie de verif ne contiennent 26 puissance 9 tests !!!!)
#test sur le depassement du nombre max de tests, ce qui ne devrait jamais poser probleme (a moins que la batterie de verif ne contienne 26 puissance 9 tests !!!!)
my $is_max_test = 1;
for(my $i=0; $i<$nb_chars; $i++) {$is_max_test = 0 if($tab_label[$i] != 26);}
if($is_max_test) {
warn "\n";
afficher_ligne_pointilles('warn');
afficher_ligne_tirets('warn');
warn "Erreur (prog:$NOM_PROG) : le nombre de tests de la batterie a atteint son maximum de 26 puissance $nb_chars !!!!!!\n\n";
afficher_ligne_pointilles('warn');
afficher_ligne_tirets('warn');
warn "\n";
sortie_programme();
}
#incrementation du label
# par exemple : si le label actuel est ZZZAAAAAA, le tableau @tab_label en chiffres contient [26][26][26][1][1][1][1][1][1]
# on incremente la premiere case de 1 => [27][26][26][1][1][1][1][1][1]
# algo : pour tout nombre superieur a 27, on le remet a 1 et on incremente de 1 la case suivante
# donc, dans la boucle suivante, ca donne :
# i=0 => $tab_label[0] = 1; $tab_label[1] = 27
# i=1 => $tab_label[1] = 1; $tab_label[2] = 27
# i=2 => $tab_label[2] = 1; $tab_label[3] = 2 => fin de la boucle (last)
# tableau final => [1][1][1][2][1][1][1][1][1], ce qui correspond en lettres au nouveau label suivant : AAABAAAAA
$tab_label[0]++;
for(my $i=0; $i<$nb_chars; $i++) {
#incrementation de l indice suivant si l indice courant depasse 26
if($tab_label[$i] > 26) {
#retour a la lettre A pour l indice courant
$tab_label[$i] = 1;
$tab_label[$i+1]++ if($i != ($nb_chars-1));
#incrementation de l indice suivant
$tab_label[$i+1]++ if($i != ($nb_chars-1));#sauf si c est le dernier indice
}
else {
last;
}
}
#-conversion inverse
#-conversion inverse selon la table $TAB_CONVERT_pos2lettre
$LABEL_ACTUEL = '';
foreach my $val (@tab_label) {$LABEL_ACTUEL .= $TAB_CONVERT_pos2lettre->{$val};}
@ -368,7 +400,7 @@ sub genere_label_section {
# - lettre indiquant test rapide ou long (donc la lettre "R" ou "L")
# - handle du fichier destination (donc deja ouvert par open() )
# - reference vers la liste des repertoires de test (antislash devant pour une reference : par exemple \@REP_TESTS_R)
# - liste des noms de rubriques a recopier (
# - liste des noms de rubriques a recopier
#
# pas de sortie
#
@ -389,8 +421,9 @@ sub recopie_README {
#chemin du fichier README
my $fic_README = "../$rep_test/README";
#derniere partie du nom du repertoire
#derniere partie du nom du repertoire (en supprimant le prefixe Test_R_ ou Test_L_)
my $nom_test = basename $rep_test;
$nom_test =~ s/^Test_[RL]_//;
$nom_test =~ s/_/\$\\_\$/g;#tiret bas entre dollars
#saisie de l encodage du README (par defaut : rien) (rq : on utilise la commande linux/Unix "file" pour avoir des infos sur l encodage)
@ -408,25 +441,65 @@ sub recopie_README {
#- - - - - - - - - - - - - - - -
print $HANDLE_TEX "\\subsection{Test\$\\_\$$lettre_rapide_ou_long n\$^\\circ\$$no_test : $nom_test}\n";
#- - - - - - - - - - - - - - - -
#ecriture du ou des auteurs de ce test
#- - - - - - - - - - - - - - - -
my @auteurs = saisir_mots_rubrique_README($fic_README, $encodage_source, $NOM_RUBRIQUE_AUTEUR);
if($#auteurs > -1) {
print $HANDLE_TEX "\\noindent\n";
print $HANDLE_TEX "\\begin{minipage}{\\linewidth}\n";
print $HANDLE_TEX "\\noindent \\underline{Auteur} :\\\\\n";
foreach my $auteur (@auteurs) {print $HANDLE_TEX "\\hspace*{0.5cm} $auteur\\\\\n";}
print $HANDLE_TEX "\\end{minipage}\n";
print $HANDLE_TEX "\\\\\n\n";
}
else {
warn " Attention (prog:$NOM_PROG) : la rubrique \"Auteur\" n a pas ete trouvee (ou est vide) pour ce test...\n";
print "(entree pour continuer)"; <STDIN>;
}
#- - - - - - - - - - - - - - - -
#indexage et ecriture de la liste des mots-cles eventuels de ce test
#- - - - - - - - - - - - - - - -
my @mots_cles = saisir_mots_cles_README($fic_README, $encodage_source);
my @mots_cles = saisir_mots_rubrique_README($fic_README, $encodage_source, $NOM_RUBRIQUE_MOTS_CLES);
if($#mots_cles > -1) {
#indexage
#--generation d un label
my $label_section = genere_label_section();
print $HANDLE_TEX "\\label{$label_section}\n";
#indexage de chaque mot-cle via commande \ind (voir preambule du document latex dans la subroutine preambule_fic_tex_tmp() )
#--indexage de chaque mot-cle via commande \ind (voir preambule du document latex dans la subroutine preambule_fic_tex_tmp() )
foreach my $mot_cle (@mots_cles) {
print $HANDLE_TEX "\\ind{$mot_cle}{$label_section}\n";
}
#recopie des mots-cles
print $HANDLE_TEX "\\noindent\n";
print $HANDLE_TEX "\\begin{minipage}{\\linewidth}\n";
print $HANDLE_TEX "\\noindent \\underline{Mots-cl\\\'es} :\\\\\n";
@_ = ();
push(@_, @mots_cles);
$_ = shift(@_);
s/\s+/~/g;#espaces insecables
print $HANDLE_TEX "\\hspace*{0.5cm} $_";
foreach my $mot_cle (@_) {
$mot_cle =~ s/\s+/~/g;#espaces insecables
print $HANDLE_TEX ", $mot_cle";
}
print $HANDLE_TEX "\\\\\n";
print $HANDLE_TEX "\\end{minipage}\n";
print $HANDLE_TEX "\\\\\n\n";
}
else {
warn " Attention (prog:$NOM_PROG) : la rubrique \"Mots-cles\" n a pas ete trouvee (ou est vide) pour ce test...\n";
print "(entree pour continuer)"; <STDIN>;
}
#- - - - - - - - - - - - - - - -
#ecriture du nom complet du repertoire sous forme d une arborescence simple
#- - - - - - - - - - - - - - - -
print $HANDLE_TEX "\\noindent\n";
print $HANDLE_TEX "\\begin{minipage}{\\linewidth}\n";
print $HANDLE_TEX "\\noindent \\underline{R\\\'epertoire} :\\\\\n";
my @rep_arbo = split(/\/+/, $rep_test);
shift(@rep_arbo) if($rep_arbo[0] =~ /^\.+$/);#suppression d un eventuel ./ ou ../ devant le nom du repertoire
@ -438,6 +511,8 @@ sub recopie_README {
print $HANDLE_TEX "\\hspace*{${hspace_cm}cm}\$\\triangleright\$ $rep_arbo\\\\\n";
$hspace_cm += $hspace_cm_incr;
}
print $HANDLE_TEX "\\end{minipage}\n";
print $HANDLE_TEX "\\\\\n\n";
#- - - - - - - - - - - - - - - -
@ -504,12 +579,12 @@ sub recopie_rubrique_README {
open(my $Hlocal, "<$encodage_source", "$fic_source");
while(<$Hlocal>) {
next if(not /^\s*$regexp\s*$/i);#recherche du bloc correspondant a la rubrique
#normalement, la ligne suivante est une ligne de pointilles
#normalement, la ligne suivante est une ligne de tirets
$_ = <$Hlocal>; chomp;
#-si ce n est pas une ligne de pointilles => echec
#-si ce n est pas une ligne de tirets => echec
if(not /^\s*-+\s*$/) {
$is_probleme_rubrique = 1;
$message = 'rubrique trouvee mais non conforme (absence de la ligne de pointilles apres le nom de la rubrique)';
$message = 'rubrique trouvee mais non conforme (absence de la ligne de tirets apres le nom de la rubrique)';
last;
}
@ -523,7 +598,7 @@ sub recopie_rubrique_README {
print $handle_fic_destination "\\subsubsection{$nom_rubrique}\n";
while(<$Hlocal>) {
last if(/^\s*-+$/);#critere d arret : ligne de pointilles (a moins que la fin du fichier n ait ete atteinte avant)
last if(/^\s*$MOTIF_FIN_RUBRIQUE\s*$/);#critere d arret : motif de fin de rubrique (a moins que la fin du fichier n ait ete atteinte avant)
chomp;
#gestion des caracteres ou groupes de caracteres speciaux
@ -542,68 +617,69 @@ sub recopie_rubrique_README {
#--------------------------------------------------
#subroutine permettant de saisir les mots-cles contenus dans la rubrique "Mots-cles" d un fichier README
# important : cette subroutine s attend a trouver un seul mot-cle par ligne et pouvant contenir des espaces (exemple : "contraintes planes")
# rq : le nom de la rubrique a trouver est contenu dans la variable $NOM_RUBRIQUE_MOTS_CLES
#subroutine permettant de saisir les mots ou phrases contenus dans une rubrique d un fichier README
# rq : cette subroutine renvoie simplement une liste des lignes non vides d une rubrique
#--------------------------------------------------
#
# en entree :
# - chemin vers le fichier README
# - encodage du fichier README (de la forme ":encoding(nom_encodage)", par exemple : ":encoding(UTF-8)"
# - nom de la rubrique (insensible a la casse)
#
# en sortie :
# - liste de mots-cles
# - liste de mots ou phrases (i.e les lignes non vides de la rubrique)
#
sub saisir_mots_cles_README {
sub saisir_mots_rubrique_README {
my $fic_source = shift;
my $encodage_source = shift;
my $nom_rubrique = shift;
#construction d une expression reguliere pour rechercher la rubrique
$NOM_RUBRIQUE_MOTS_CLES =~ s/^\s+//;
$NOM_RUBRIQUE_MOTS_CLES =~ s/\s+$//;
my @mots_rubrique = split(/\s+/, $NOM_RUBRIQUE_MOTS_CLES);
$nom_rubrique =~ s/^\s+//;
$nom_rubrique =~ s/\s+$//;
my @mots_rubrique = split(/\s+/, $nom_rubrique);
my $regexp = shift(@mots_rubrique);
foreach my $mot (@mots_rubrique) {
$regexp .= '\s+'."$mot";
}
#a ce stade, le motif a trouver est de la forme : mot\s+mot\s+mot etc...
#liste des mots-cles de la rubrique Mots-cles de ce README
my @liste_mots_cles;
#liste des lignes non vides de la rubrique $nom_rubrique de ce README
my @liste_lignes_non_vides;
open(my $Hlocal, "<$encodage_source", "$fic_source");
while(<$Hlocal>) {
next if(not /^\s*$regexp\s*$/i);#recherche du bloc correspondant a la rubrique
#normalement, la ligne suivante est une ligne de pointilles
#normalement, la ligne suivante est une ligne de tirets
$_ = <$Hlocal>; chomp;
#-si ce n est pas une ligne de pointilles => echec
#-si ce n est pas une ligne de tirets => echec
if(not /^\s*-+\s*$/) {
last;
}
#- - - - - - - - - - - - - - - - - - - - - - - - - - -
#saisie des mots-cles
#saisie des lignes non vides
#- - - - - - - - - - - - - - - - - - - - - - - - - - -
while(<$Hlocal>) {
last if(/^\s*-+$/);#critere d arret : ligne de pointilles (a moins que la fin du fichier n ait ete atteinte avant)
next if(/^\s*$/);
last if(/^\s*$MOTIF_FIN_RUBRIQUE\s*$/);#critere d arret : motif de fin de rubrique (a moins que la fin du fichier n ait ete atteinte avant)
next if(/^\s*$/);#on saute les lignes vides
chomp;
s/^\s+//; s/\s+$//;
#gestion des caracteres ou groupes de caracteres speciaux
$_ = translate_to_latex($_);
#ajout du mots-cle a la liste
push(@liste_mots_cles, $_);
#ajout de la ligne a la liste
push(@liste_lignes_non_vides, $_);
}
last;
}
close($Hlocal);
return(@liste_mots_cles);
}#sub saisir_mots_cles_README
return(@liste_lignes_non_vides);
}#sub saisir_mots_rubrique_README
@ -640,25 +716,25 @@ sub translate_to_latex {
#--------------------------------------------------
#subroutine permettant d ecrire une ligne de pointilles de la largeur du terminal
#subroutine permettant d ecrire une ligne de tirets de la largeur du terminal
#--------------------------------------------------
#
# en entree :
# - print ou warn (suivant que l on souhaite afficher avec print (donc vers STDOUT) ou warn (donc vers STDERR)
#
sub afficher_ligne_pointilles {
sub afficher_ligne_tirets {
use Term::ReadKey;
my $nb_char_largeur_terminal = ( GetTerminalSize() )[0];#largeur du terminal en nombre de caracteres (via package Term::ReadKey)
my $funct_disp = shift;
my $ligne_pointilles = '';
$ligne_pointilles .= '-' for(1 .. $nb_char_largeur_terminal);
my $ligne_tirets = '';
$ligne_tirets .= '-' for(1 .. $nb_char_largeur_terminal);
print "$ligne_pointilles\n" if($funct_disp eq 'print');
warn "$ligne_pointilles\n" if($funct_disp eq 'warn');
}#sub afficher_ligne_pointilles
print "$ligne_tirets\n" if($funct_disp eq 'print');
warn "$ligne_tirets\n" if($funct_disp eq 'warn');
}#sub afficher_ligne_tirets
#--------------------------------------------------

Binary file not shown.