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>

10 réponses

1 2
Avatar
ReM
Bonjour,

Perso, je trouve ça toujours un peu compliqué.
Pour ma part, j'utilise dess variables commençant par $ dans mon code
HTML. Je peux donc l'ouvrir et avoir un rendu réaliste dans Dreamveawer
ou FF.
J'ai aussi balisé mon code HTML avec des commentaires ( ex :
<!--LIGNE--> ) qui représentent des bouts de code HTML à afficher.
PS : ça marche aussi avec des fichiers txt ou autres (CSV, XML, ....)

Ex :

<!--DEBUT-->
Bonjour $nom
<!--LIGNE-->
produit $i
<!--FIN-->
Au revoir


dans mon code python ça donne un truc du genre.

f = BuildFile( "/tmp/test.html" ) #Je construis un dictionnaire indexé
sur les commentaires
nom = "Michel"
f.PrintFile( "DEBUT", globals() ) # J'appelle le commentaire à afficher
avec le dictionnaire ds variables. ici j'utilise globals() pour
simplifier, sinon on passe { nom : 'Michel' }

for i in range(10):
f.PrintHTML( "LIGNE", globals() )

f.PrintHTML( "FIN", {} )

Je ne comprends pas comment font les développeurs pour maintenir des
sources python et des pages HTML quand tout est mélangé !!!

Bon week end


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_)
print ttemplate('<div id=_id__ _size__
12345>',_id__='BLOC',_size__='size')
print ttemplate('<div __id__ _size_ 12345>',__id__='BLOC',_size_='size')
print ttemplate('<div __id__ __size_ 12345>',__id__=None,__size_)
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',
_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
_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> 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_
)

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




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

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




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

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




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

==> <div size 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>




Avatar
jean-michel bain-cornu
Bonjour,
Les messages ne se bousculant pas, surtout pour un vendredi, je vais donner
un peu de grain à moudre aux lecteurs éventuels.
Si tu n'as rien à faire, dis-le nous, ça peut s'arranger...


Avatar
Méta-MCI
Salut !

En fait, c'est par démagogie. Je soigne mon image, au cas où j'envisagerais
de me présenter aux élections, en créant un parti pythonien (dans une
section extrémiste, mais majoritaire, windows oblige...)

Accessoirement, ça ferait concurrence au PPF (Parti Pirate Français).

@+

MCI
Avatar
jean-michel bain-cornu
Bonjour,
En fait, c'est par démagogie. Je soigne mon image, au cas où j'envisagerais
de me présenter aux élections, en créant un parti pythonien (dans une
section extrémiste, mais majoritaire, windows oblige...)
Voilà une bonne question : doit-on dire 'pythonien', ou 'pythoniste' ?

Pourquoi pas même 'pythoneux' ou 'pythoneur'. A moins que 'pythonant' ne
soit plus romantique ?

Avatar
BertrandB
Bonjour !


Les messages ne se bousculant pas, surtout pour un vendredi, je vais do nner
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_ )
print ttemplate('<div id=_id__ _size__
12345>',_id__='BLOC',_size__='size')
print ttemplate('<div __id__ _size_ 12345>',__id__='BLOC',_size_='s ize')
print ttemplate('<div __id__ __size_ 12345>',__id__=None,__size_ )
print ttemplate('//<div __id__>_contenu_',
__id__='BLOC',
_contenu_='''Mais, c'est qu'il est très bien, <b r>
ce petit templateur.'''
)






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

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


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_rempl acement
- on récupère, en retour, le résultat





Exemple :
-------
print ttemplate('<div __id__ _size_> _contenu_ </div>',
__id__='BLOC',
_size_='size',
_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
_contenu_ par AZERTYUIOP
(la chaîne repère s'appelle le "sélecteur", le reste, c'est la "v aleur de
remplacement")


Le résultat :
<div id="BLOC" size> 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 guill emets (")
si valeur de remplacement == None, le sélecteur est remplacé pa r '' (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_
)

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




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

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




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

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




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

==> <div size 12345>




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

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

Tant qu'à faire du template autant prendre des choses soit normalisée s

soit légères à la lectures.

Pour le normalisé les "process instructions" voir ta bible html

pour le simple je commence à plancher (mais en dilettante) sur
l'utilisation de la "syntaxe complexe" des chaînes de caractères.

take a look at
http://bertrand.belguise.net/php/phpries.shtml

Avatar
jean-michel bain-cornu
Bonjour,
Oops, je n'avais pas lu jusqu'au bout.
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.
Si tu aime les choses simples, j'avais fait à une époque un petit

générateur à templates que j'ai mis récemment sur internet.
Téléchargement :
http://sourceforge.net/project/showfiles.php?group_id2003

On ne sait jamais, ça peut rendre service.
A+
jm

Avatar
Jean-Baptiste renard
jean-michel bain-cornu wrote:

Voilà une bonne question : doit-on dire 'pythonien', ou 'pythoniste' ?
Pourquoi pas même 'pythoneux' ou 'pythoneur'. A moins que 'pythonant' ne
soit plus romantique ?
J'ai toujours pythoneux. comme matheux :-)


Avatar
Gerard Flanagan
Méta-MCI wrote:

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.



et un autre:

http://gflanagan.net/site/python/utils/htmlbuilder/index.html


Gerard

Avatar
Méta-MCI
Bonsoir !

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

@-salutations

Michel Claveau
Avatar
Méta-MCI
Bonsoir !

...autant prendre des choses soit normalisées...




Dans ce cas, j'aurais opté pour le module template de la librairie standard
de Python.

@+

MCI



1 2