OVH Cloud OVH Cloud

Template, pour ne pas s'ennuyer dans ce newsgroup

14 réponses
Avatar
Méta-MCI
Bonjour !


Les messages ne se bousculant pas, surtout pour un vendredi, je vais donner
un peu de grain à moudre aux lecteurs éventuels.


MCI







# -*- coding: cp1252 -*-


def ttemplate(txt, **dr):
tt=txt
for i in dr:
prefix=''
sufix=''
if i[:2]=='__':
if i[-2:]=='__':
prefix=i[2:-2]+'='
else:
prefix=i[2:-1]+'='
if i[-2:]=='__':
prefix+='"'
sufix='"'
if dr[i]:
tt=tt.replace(i,prefix+str(dr[i])+sufix)
else:
tt=tt.replace(i,'')
if tt[:2]=='//':
i=tt.find(' ')
tag=tt[3:i]
return '<'+tag+tt[i:]+'</'+tag+'>'
else:
return tt


print ttemplate('<div id=_id__ __size__ 12345>',_id__='BLOC',__size__="18")
print ttemplate('<div id=_id__ __size_ 12345>',_id__='BLOC',__size_=18)
print ttemplate('<div id=_id__ _size__
12345>',_id__='BLOC',_size__='size=18')
print ttemplate('<div __id__ _size_ 12345>',__id__='BLOC',_size_='size=18')
print ttemplate('<div __id__ __size_ 12345>',__id__=None,__size_=18)
print ttemplate('//<div __id__>_contenu_',
__id__='BLOC',
_contenu_='''Mais, c'est qu'il est très bien, <br>
ce petit templateur.'''
)






"""
ntemplate - nano-template
---------

Un tout petit outil de template, dont je me sers, pour générer du html


J'en avais marre de tous ces templates, certes (sur)-puissants, mais
illisibles à l'utilisation.

J'en ai fait donc fait un petit, à une sauce qui me convient.




Principe :
--------

- on donne un template-texte (une chaine modèle), dans lequel on va
faire des remplacements
- on donne un ensemble de : valeur_à_remplacer, valeur_de_remplacement
- on récupère, en retour, le résultat





Exemple :
-------
print ttemplate('<div __id__ _size_> _contenu_ </div>',
__id__='BLOC',
_size_='size=18',
_contenu_='AZERTYUIOP'
)


La première ligne contient la chaîne-modèle (le template), soit :
<div __id__ _size_> _contenu_ </div>

Dans laquelle on va remplacer
__id__ par "BLOC"
_size_ par size=18
_contenu_ par AZERTYUIOP
(la chaîne repère s'appelle le "sélecteur", le reste, c'est la "valeur de
remplacement")


Le résultat :
<div id="BLOC" size=18> AZERTYUIOP </div>





Règles de Remplacement :
----------------------

sélecteur commence par __ ==> reprend le sélecteur, suivi d'un '='
sélecteur se termine par __ ==> englobe la valeur avec des guillemets (")
si valeur de remplacement == None, le sélecteur est remplacé par '' (chaîne
vide) donc supprimé
sélecteur précédé par // alors, le tag sera fermé de suite.







Autres exemples :
---------------


print ttemplate('<div id=_id__ __size__ 12345>',
_id__='BLOC',
__size__="18"
)


==> <div id="BLOC" size="18" 12345>




print ttemplate('<div id=_id__ __size_ 12345>',
_id__='BLOC',
__size_=18
)

==> <div id="BLOC" size=18 12345>




print ttemplate('<div id=_id__ _size__ 12345>',
_id__='BLOC',
_size__='size=18'
)

==> <div id="BLOC" "size=18" 12345>




print ttemplate('<div __id__ _size_ 12345>',
__id__='BLOC',
_size_='size=18'
)

==> <div id="BLOC" size=18 12345>




print ttemplate('<div __id__ __size_ 12345>',
__id__=None,
__size_=18
)

==> <div size=18 12345>




print ttemplate('//<div __id__>_contenu_',
__id__='BLOC',
_contenu_='''Mais, c'est qu'il est très bien, <br>
ce petit templateur.'''
)

==> <div id="BLOC">Mais, c'est qu'il est très bien, <br>
ce petit templateur.</div>

4 réponses

1 2
Avatar
Méta-MCI
Bonsoir !

J'ai bien aimé l'idée des macros.

@-salutations

Michel Claveau
Avatar
Bertrand B
Bonsoir !

C'est simple, et clair.
Mais simple.
Très simple, même.

@-salutations

Michel Claveau

Je me trompes certainement mais .....


l'idée des langage de template dans le développement web était me s emble
t'il de permettre aux graphistes de développer leurs pages avec leurs
outils de composition de page sans avoir à connaître la mécanique i nterne.

Là ce n'est pas le cas .... donc ce n'est pas ce que je considère com e
un langage de template (éventuellement un générateur de balise)

Avatar
Gerard Flanagan
Bertrand B wrote:

Bonsoir !

C'est simple, et clair.
Mais simple.
Très simple, même.

@-salutations

Michel Claveau

Je me trompes certainement mais .....


l'idée des langage de template dans le développement web était me s emble
t'il de permettre aux graphistes de développer leurs pages avec leurs
outils de composition de page sans avoir à connaître la mécanique i nterne.

Là ce n'est pas le cas .... donc ce n'est pas ce que je considère come
un langage de template (éventuellement un générateur de balise)


Oui, je t'entends, il est loin d'une 'langage de template', plutot un
generateur qu'on s'en sert pour creer des pages relativement statique,
et sans s'ennuyer de <, /, > !

Gerard


Avatar
Méta-MCI
Bonsoir !

Je partage cette optique, d'aller vers un générateur, plutôt que de traduire
(bêtement ?) Html en un autre langage.
D'ailleurs, ce raisonnement vaut aussi pour la plupart des ORM, sur les SGBD
SQL, qui ne sont, souvent, que des traductions de SQL.

@-salutations

Michel Claveau
1 2