OVH Cloud OVH Cloud

[CGI.pm] Différencier les colonnes dans un tableau

4 réponses
Avatar
Jogo
Bonjour,

On a un tableau rempli de ma manière suivante :

print $query->Tr($query->td([$a,$b,$c,$d])) ;

Je voudrait par exemple que la 2° colonne soit de la classe "num".
Existe-t-il une autre solution que de tout remplacer par :

$query->Tr($query->td($a),$query->td({-class=>"num"},$b),
$query->td([$c,$d]))

ce qui est quand même très moche.

--
Pour produire de l'HTML, utilisez HTML::Template, pas CGI.pm.

4 réponses

Avatar
Paul Gaborit
À (at) Tue, 10 May 2005 13:24:26 +0200,
Jogo écrivait (wrote):
On a un tableau rempli de ma manière suivante :

print $query->Tr($query->td([$a,$b,$c,$d])) ;

Je voudrait par exemple que la 2° colonne soit de la classe "num".
Existe-t-il une autre solution que de tout remplacer par :

$query->Tr($query->td($a),$query->td({-class=>"num"},$b),
$query->td([$c,$d]))

ce qui est quand même très moche.


C'est pourtant la bonne méthode. On ne peut évidemment pas factoriser les
appels à 'td' puisque ils ne sont pas tous bâtis sur le même modèle.

Si vous avez en tête un syntaxe plus simple permettant de faire ce que vous
souhaitez (et si elle n'est pas ambigüe par rapport à ce qui existe déjà dans
CGI.pm), on peut éventuellement proposer une amélioration de CGI.pm.

--
Pour produire de l'HTML, utilisez HTML::Template, pas CGI.pm.


Cette signature me semble providentielle... ;-)

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
Jogo
Le 11 mai 2005, Paul Gaborit a écrit dans fr.comp.lang.perl :

Existe-t-il une autre solution que de tout remplacer par :

$query->Tr($query->td($a),$query->td({-class=>"num"},$b),
$query->td([$c,$d]))

Si vous avez en tête un syntaxe plus simple permettant de faire ce que

vous souhaitez (et si elle n'est pas ambigüe par rapport à ce qui
existe déjà dans CGI.pm), on peut éventuellement proposer une
amélioration de CGI.pm.


J'avais pensé à un truc du genre :
$q->Tr($q->td([$a,({-class=>"num"},$b),$c,$d]))

Mais le problème c'est qu'il me semble bien que pour Perl :
[$a,($b,$c),$d] <=> [$a,$b,$c,$d]

Peut-être donc quelque chose comme :
$q->Tr($q->td([$a,[{-class=>"num"},$b],$c,$d]))

Ou bien :
$q->Tr($q->td([$a,{-class=>"num", inside=>$b},$c,$d]))


Avatar
Paul Gaborit
Le 11 mai 2005, Paul Gaborit a écrit dans fr.comp.lang.perl :
Si vous avez en tête un syntaxe plus simple permettant de faire ce que
vous souhaitez (et si elle n'est pas ambigüe par rapport à ce qui
existe déjà dans CGI.pm), on peut éventuellement proposer une
amélioration de CGI.pm.



À (at) Fri, 13 May 2005 11:00:57 +0200,
Jogo écrivait (wrote):
J'avais pensé à un truc du genre :
$q->Tr($q->td([$a,({-class=>"num"},$b),$c,$d]))

Mais le problème c'est qu'il me semble bien que pour Perl :
[$a,($b,$c),$d] <=> [$a,$b,$c,$d]


C'est tout à fait cela.

Peut-être donc quelque chose comme :
$q->Tr($q->td([$a,[{-class=>"num"},$b],$c,$d]))


Ou bien :
$q->Tr($q->td([$a,{-class=>"num", inside=>$b},$c,$d]))


Les deux seraient acceptables... mais quitte à choisir, je prendrai la
première qui me semble plus cohérente par rapport à l'existant (pas de nommage
des arguments) et qui permettrait même des trucs comme :

$q->Tr($q->td([$a,[{-class=>"colscentrales"}, [$b, $c]],$d]))

Ceci étant, ce qu'on gagnerait en pouvoir expressif, on le perdrait en
lisibilité. Et comme elle est déjà limite...

De plus, le module CGI.pm est destiné à être remplacé par des modules mieux
ciblés (ils existent déjà - par exemple CGI::Lite). Et en ce qui concerne la
génération de HTML, je vous rappelle ce que disait votre signature initiale :
utilisez les templates. C'est plus souple, plus propre et bien plus
compréhensible. Je vous conseille Template::Toolkit.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>


Avatar
Jogo
Le 13 mai 2005, Paul Gaborit a écrit dans fr.comp.lang.perl :

De plus, le module CGI.pm est destiné à être remplacé par des modules
mieux ciblés (ils existent déjà - par exemple CGI::Lite). Et en ce qui
concerne la génération de HTML, je vous rappelle ce que disait votre
signature initiale : utilisez les templates. C'est plus souple, plus
propre et bien plus compréhensible. Je vous conseille
Template::Toolkit.


La signature de mon 1° message n'était _pas_ automatique !
J'utilise habituellement HTML::Template que je trouve très rapide (c'est
surement un à priori, mais bon). Mais il s'agit là de modifier Webnews, qui
est relativement bien écrit, mais avec CGI.pm. Le "traduire" serait moins
intéressant et aussi long que de repartir de zéro. Je vais donc écrire
directement le HTML comme je le faisait avant de découvrir HTML::Template.

merci pour Template::Toolkit que je ne connaissais pas.