m4 et les virgules

Bruno Bonfils asyd at debian-fr.org
Thu Jan 5 15:33:04 CET 2006


On jeu 05 janvier, Marc Chantreux wrote:
> Bruno Bonfils wrote:
> >Si je peux me permettre, tu es taré
> 
> tu peux ... tu peux aussi me dire pourquoi !

Euh, parce que m4 c'est quand même super relou pour le peu que ca fais ?
(enfin c'est mon impression, je peux me tromper oui, tu dois pouvoir
faire des choses supers puissantes en lisant la ... les sources de m4 et
des outils sendmail :/)

> 
> Je cherche a utiliser la coloration syntaxique de vim pour mes topos, La 
>  macro suivante sera :
> 
> SLIDE(En pratique,
> PAR(maintenant, passons a la pratique)
> CODE( Mon exemple , perl ,
> `
> $a = 12;
> $b = \$a;
> print "$b : $$b\n"
> '))
> 
> Au final, j'ai une page HTML avec un titre un paragraphe et du code coloré!

ah :)
> 
> >>define(`LISTITEM', `ifelse($1,`',,`<li>$1</li>
> >>LISTITEM(shift($*))')')dnl
> >>define(UL,`<ul>
> >>LISTITEM($*)</ul>')
> >>
> >>Le problème est que la chaine 
> >>`m4, avec qq problèmes'
> >
> >pourquoi shift ?
> 
> et bien ...
> J'affiche le premier element :
> `<li>$1</li>
> 
> et je le retire des elements a traiter :
> LISTITEM(shift($*))
> 
> C'est récursif, quoi ... si tu ne shift pas, la récursion ne peut finir.

ah oui au temps pour moi, j'avais oublié le "liste d'argument"

> 
> >hmm voici comment je déclare ma fonction :
> >
> >define(`slice', `$1'`$2')dnl
> >define(`add_slice', add_slice_sub(`primary_disk', $*))dnl
> >define(`add_slice_sub', `filesys         'slice(`$1', $2)        $3 $4)
> >
> >Et mon appel :
> >
> >define(`primary_disk', `c1t0d0')
> >add_slice(s0,2048,/)
> >add_slice(s1,2048,swap)
> >add_slice(s2,all ,overlap)
> 
> Bon ... je suis en train d'essayer de comprendre pourquoi tu fais aussi 
> long alors que j'ai l'impression que tout pourrait etre écrit dans 
> add_slice ...

Alors euh, la raison, déjà, c'est que sans passer par la fonction slice,
je n'arrive pas à coller $1 et $2

par exemple :

define(`add_slice', `filesys        '`primary_disk'`$1'`$2'           $3 $4)dnl

me donne :

filesys        primary_disks02048           /

alors que

define(`add_slice', `filesys        '(`primary_disk')$1        `$2' $3 $4)dnl

me donne bien

filesys        (c1t0d0)s2        all            overlap

mais je veux pas les ()  et je n'ai pas reussi sans passer par une sub
fonction, enfin bon, après 2 jours, je me suis dis que c'est peut être
sympa m4, mais si c'est pour perdre pas mal de temps pour un truc qui
est vraiment peu usité (quoi d'autre a part le sendmail.mc ?)

> 
> >Pour ma part, je voulais faire ca en m4 (pour les non "libristes", c'est
> >pour générer un profile jumpstart)
> 
> J'ai beau etre libriste, je ne sais pas ce qu'est un profil jumpstart :)

Ben justement, c'est parce que tu l'es :P

> >galère, d'une part pour la documentation, d'autre part, ce n'est pas
> >très souple.
> 
> regarde du coté de TT2 : http://template-toolkit.org. j'utilise m4 aussi 
> parceque je veux apprendre a utiliser la chose.

Ben euh j'allais justement te proposer quelque chose du genre, pourquoi
tu fais pas du perl ? (enfin ton modeur de rendu), ton fichier source tu
peux le faire de la meme forme qu'en m4 je pense. 

> >Tu as regardé MGP sinon ?
> 
> Si tu parles de magicpoint, c'est pas bon : je dois faire ca en html 
> pour conserver le syn on de vim dans le code.

Oué ok je vois, enfin le html généré par vim je trouve qu'il est
vraiment pas terrible :/ (redefinition de la couleur a chaque
utilisation, etc.. )




More information about the Shell mailing list