SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 199 visiteurs en ce moment

Accueil > Documentation > Tutoriaux pour le code de SPIP > Archives tutoriaux code SPIP > ccmPhraseur

ccmPhraseur

20 octobre 2005

1 vote

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Comment ça marche : le phraseur de squelettes

Le compilateur de squelette inclu un fichier inc-$gram-squel.php3 qui doit définir une fonction phraser.
On peut donc définir son propre phraseur et le mettre en place simplement en surchargeant la valeur de cette variable gram.

Pour l’instant, on va se contenter de décrire la seule version dispo en standard ;-)

La fonction phraser prend 4 arguments :

  • le texte du squelette à parser (ou un extrait quand on parse un sous ensemble)
  • l’id d’un éventuel parent ( ?)
  • la structure de boucles (en passage par référence)
  • le nom de la fonction à générer ( ?)
  • le numéro de ligne où commence l’analyse (1 par défaut)

Le code est « à tiroir » : on analyse certains éléments, et pour chacun, on effectue l’analyse d’autres trucs à l’intérieur.

Dans la fonction phraser elle même, on fait deux choses :

  • pour chaque début de boucle qu’on repère, on l’analyse :
    • isole les parties avant, après ... pour construire les structures Boucle
    • pour chacun, on rappelle récursivement phraser dessus
    • on appelle phraser_champs_etendus sur la partie avant
    • on retire tout le texte qu’on vient de passer pour recommencer avec un texte qui démarre après cette boucle
  • on appelle phraser_champs_etendus pour parser la fin

En clair, on isole les boucle et on appelle phraser_champs_etendus sur tous les bouts qu’on a découpé.

Dans phraser_champs_etendus, on ne fait qu’appeler phraser_champs_interieurs après avoir définir un
séparateur (une suite de caractères dont on vérifie qu’elle n’apparait nulle part dans le texte (qui a dit que c’était moche ;-))

Dans phraser_champs_interieurs : heu ... là, je sèche ! j’y comprend rien.
En gros, on appelle phraser_champs_exterieurs qui appelle phraser_inclure qui appelle phraser_idiomes qui appelle phraser_champs qui appelle phraser_polyglotte, ouf.

Arrivé là, je crois qu’on à fait le tour, à part phraser_critere appelé dans l’analyse de boucle de phraser
et qui appelle lui même phraser_critere_infixe, ainsi que phraser_args appelé à divers endroits pour
analyser des arguments du type filtres je suppose.

L’important est de comprendre le principe général : on isole des éléments d’un type donné, on en déduit les parties avant, dans et après et
pour chacune, on appelle une analyse d’un autre type d’élément.

Donc, si on veut par exemple ajouter le type d’élément <PHP> évoqué à une époque pour inclure du php uniquement évalué lors de l’évaluation du squelette (et non à chaque appel), il faudrait remplacer les appels à un des phraser_xyz par des
appels à phraser_php, dans lequel on appelerait phraser_xyz sur les parties entre chaque bloc php.
Ainsi, on s’insère dans l’enchaînement, le plus dur étant de se mettre à un niveau qui assure qu’on ne va pas louper de morceaux.
Par exemple, l’appel à phraser_polyglotte est assez bas dans la pile car à l’intérieur de ce tag, on n’accepte pas de
boucles ou de champs. On ne risque donc pas de couper un bloc multi en deux à cause d’un élément détecté avant.

Dernière modification de cette page le 17 octobre 2007

Retour en haut de la page

Répondre à cet article

Qui êtes-vous ?
  • [Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Champs Extras 3

    16 janvier 2012 – 523 commentaires

    Ce plugin permet de créer et/ou de gérer des champs supplémentaires dans les objets éditoriaux de SPIP. Il permet donc de prendre en compte et d’afficher de nouveaux éléments dans n’importe quel objet éditorial de SPIP. Screencast Vous n’aimez pas (...)

  • Réservation d’événements

    16 mars 2015 – 188 commentaires

    Ce plugin permet d’offrir aux visiteurs de s’inscrire pour un évènement du plugin Agenda et de gérer les réservations enregistrées. Installation Le plugin s’installe comme n’importe quel plugin. il nécessite : Agenda API de vérification (...)

  • Les crayons

    23 avril 2008 – 815 commentaires

    Ce plugin permet d’éditer les contenus sur les pages publiques du site, sans passer par l’espace privé de SPIP.

  • LESS pour SPIP : Less-CSS (anciennement LESSpip)

    5 novembre 2010 – 43 commentaires

    Less-CSS (Anciennement LESSpip) est un plugin intégrant facilement le logiciel LESS dans SPIP. LESS est une extension de CSS ajoutant les variables, les classes, les opérations, les imbrications au langage. Facilitant ainsi l’écriture de (...)

  • Recommander

    3 avril 2011 – 16 commentaires

    Ce plugin propose une manière simple de suggérer de recommander par email un article à un ami. Fonction « recommander un article à un ami ». On l’ajoute dans n’importe quel squelette sous la forme : #RECOMMANDERtitre de la page,url de la page,intro (...)

Ça spipe par là