J'ai écris il y a quelque temps une petite classe de génération de texte que j'ai nommé TempLight. C'est une évolution d'un ancien travail.
En relisant le code dernièrement je me suis dit que c'était pas trop mal et que ça valait un petit journal.
Cette classe de template offre :
* 3 primitives de bases
** remplacements simples
** remplacements itératifs
** remplacements récursifs à l'aide de structures de données arborescente
* Gestion des langues simple
* Primitive d'inclusion
* Possibilité de réaliser des conditions complexes dans la récursion
* Possibilité de changer facilement les "délimiteurs" du langage de template
* Le langage de Template n'est pas XML, par défaut c'est des commentaires HTML
Et hop le lien : http://dosimple.ch/articles/TempLight/
Ce qui manque cruellement à mon goût ... C'est la possibilité de dériver les template que j'ai découvert avec le framework Django. C'est vraiment super comme truc.
Sinon il y a des ptits choses toute simple que je pourrais rajouter comme des filtres comme "uppercase" ou "return2br" qui permettent de mettre en forme du texte ...
# kit à faire de la pub pour ses moteurs de template ;-)
Posté par manatlan (site web personnel) . Évalué à 3.
ses features:
- lightweight (400 lignes de codes)
- compile les templates en pyc
- gestion des héritages (comme celui de django ;-)
- gestion de l'unicode
- possibilité de structurer son code comme en python (indentation de bloc), permat ainsi de generer du xhtml plus simplement
- gestion des for-in / capture / if-else, et possibilité de mettre des modifier (comme en smarty) sur les données (un simple appel a une methode python)
http://manatlan.online.fr/hypy.php
[^] # Re: kit à faire de la pub pour ses moteurs de template ;-)
Posté par alexissoft . Évalué à 2.
Si ça peut intéresser quelqu'un ...
Sinon mon préféré reste Cheetah (j'ai pas mal recherché sur les frameworks Python aujourd'hui), il est d'ailleurs semblable à celui de Django sur certains points.
[1] : En fait c'était pour faire un django like en tout petit, et tout dans un dossier, comme Karrigell quoi. Mais bon c'était plus un test qu'autre chose, il supporte pas le POST par exemple.
[^] # Re: kit à faire de la pub pour ses moteurs de template ;-)
Posté par manatlan (site web personnel) . Évalué à 2.
et je crois savoir que GVR aussi la fait recemment ;-)
http://www.artima.com/weblogs/viewpost.jsp?thread=146606
J'aime pas trop cheetah ... Mais c'est ce dernier qui a été choisi pour être ré-implémenter (en plus lite, et en plus puissant) dans webpy ...
Du coup, j'ai du faire le mien pour webpy ... d'où hypy ;-)
[^] # Re: kit à faire de la pub pour ses moteurs de template ;-)
Posté par faden . Évalué à 1.
En ce qui concerne la génération automatique des tags HTML je suis dubitatif. Il y a souvent plein de petit trucs que l'on veut rajouter par la suite comme attribut. Une classe CSS ou j'en passe ...
[^] # Re: kit à faire de la pub pour ses moteurs de template ;-)
Posté par faden . Évalué à 2.
# Do simple
Posté par Pooly (site web personnel) . Évalué à 1.
http://dosimple.ch/articles/Template/
là ça devient un peu obscur... limite je préfère Templeet...
[^] # Re: Do simple
Posté par Mouns (site web personnel) . Évalué à 2.
en gros ce tag est du genre :
<TK TMPLON="t1,t2,t3,...,tn" [FROM="node"] [AS="class1,class2,...,classn"]>
template html lisant &attr1; &attrto2; &titi; comme contenu à mapper dans cette partie qui est considéré comme vide si l'attribut FROM est defini. l'attribut AS servant à instancier des classes d'alteration locale pour certains rendu spécifique ( permettant d'eviter le recalcul de certaines recursions "lourde" de type "fermeture transitive d'un graphe orienté" ).
</TK>
un template contenu dans un noeud "arbo_item" :
<dl class="closed">
<dt>&title;</a></dt>
<dd><TK TMLON="sons" FROM="arbo_item" /></dd>
</dl>
n'a besoin que d'une classe truc avec comme propriété title et sons ( ce dernier contenant une liste de truc ) pour faire apparaitre une arborescence complete.
apres, il y a juste 1 appel de fonction du genre
apply_tk( root_node_to_render , root_object );
aujourd'hui cela se mappe aisément sur un DOM.
Apres cette breve présentation, je dois dire que meme si je suis excessivement satisfait de la méthode très proches de certains concepts comme les fonctions recursives & autres machines de turing, et malgré une très grande aisance au debug quand on maitrise la chose ( et ya un putain de temps gagné ) ...
CETTE METHODE EST A DECONSEILLER TRES VIVEMENT A TOUT LE MONDE.
pour donner un exemple simple du probleme sous jacent, c'est comme apprendre la programmation en LISP et avoir comme projet en TD de reimplementer tout emacs21 avec juste un sous ensemble du LISP :p
[^] # Re: Do simple
Posté par faden . Évalué à 1.
[^] # Re: Do simple
Posté par Mouns (site web personnel) . Évalué à 4.
une liste de liste ( ou arbre ) dont tu fais un rendu, tu peux le faire :
- en profondeur d'abord ( recursion des petits enfants pendant itération des fils )
- en largeur d'abord ( iterations des fils puis recursion pour itération des petits enfants )
la stratégie en profondeur d'abord est la plus courante.
la stratégie en largeur d'abord peut etre percu comme une stratégie en profondeur d'abord sur un arbre transformé correctement.
de plus toute condition fausse peut etre consideré comme une itération ou récursion sur une liste vide. à contrario toute condition vrai peut etre considéré comme une liste ne contenant qu'un seul element contenant la liste elle meme à traiter ( voire dans certains cas suffisament générique, la liste elle meme sans le singleton intermediaire ).
Apres pour faire des inclusions, nous avons pour chacunes au moins une de ces contraintes à appliquer :
- obligatoire comme pour inclure une partie commune stockée ailleurs
- conditionné comme pour inclure une partie stockée ailleurs
- répétée comme pour inclure N fois une partie stockée ailleurs
- variable comme pour inclure une partie stockée ailleurs que l'on ne sait pas determiné à l'écriture du template
maintenant, ton template peut nécessiter plus qu'un attribut texte ne serait ce que pour remplir un tag HTML <img> en séparant le rendu du processing et en évitant les templates de gorets. de plus, tu peux vouloir plus d'une liste possible, et vouloir appliquer sur un produit cartesien d'au moins deux listes.
Tu as tout ca dans ce petit tag TK à la con au travers deja des attributs TMPLON et FROM .
je dois avouer que je n'ai eu besoin de l'attribut AS que très très très rarement, malgré le fait que j'ai utilisé ce systeme pour générer beaucoup plus d'autres choses que du HTML , XML , JS , CSS , ...
[^] # Re: Do simple
Posté par faden . Évalué à 1.
C'est surtout moins bien présenté je pense.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.