codes yacs reloaded

Proposition d'un nouveau mécanisme, à base d'une classe à dériver, et en s'inspirant de la solution de Christophe.

J'ai passé quelque temps sur le sujet, voici ma proposition, basée sur celle de Christophe :

  • une nouvelle interface, sous la forme d'une classe abstraite, représente un code yacs (avec ces variantes) ;
  • l'interface donne un canevas pour déclarer un code yacs. Un peu comme overlay.php ;
  • par convention, un fichier d'une classe code yacs devrait toujours commencer par "code_" ;
  • l'interface, et ses dérivés, sont à placer dans le module /codes ;
  • dans shared/codes.php, plus de gigantesque tableau "expression-captée/code-executé". Ce dernier est construit à mesure de la lecture des fichiers codes_yacs ;
  • les méthodes render() sont transposées dans les classes. On garde quand même un exemplaire pour compatibilité ascendante, qui fait appel aux nouveaux fichiers ;
  • ce sera l'occasion de comprimer un peu le code de ce fichier. Par exemple render_published() et render_updated() sont identiques à 99%, ce n'est pas vraiment DRY !


Mais je ne suis pas encore vraiment satisfait de la mécanique. Si elle permet de déclarer facilement de nouveaux codes, sans craindre une perte lors de mise à jour du serveur, elle ne permet cependant pas de surcharger le traitement d'un code existant. J'y réfléchis !

Pas encore commencé : la classe devrait permettre de peupler automatiquement les pages d'exemples de codes de formattage du serveur.
Elle proposera également des outils pour formatter les exemples, et éventuellement faciliter l'écriture des expressions régulières à détecter.

J'ai chargé mon travail en cours sur github :
http://github.com/rair/yacs/tree/formatting-codes-reloaded
pour l'instant seuls sont implémentés les codes yacs "scroller" et "calendar". Mais les autres seraient dans le même esprit, ou plus simple (pas de render mais un simple retour HTML)