J'aurais une question de méthodologie aujourd'hui.
Alors, pour mon Framework, j'ai construit un package YAML. Il supporte tout le langage sans problème, sauf la gestion des quotes dans un cas particulier. Je précise que je vais parler du parseur, et pas du dumper.
Un rapide résumé de YAML.
On appelle mapping tout ce qui est de la forme : key: value.
On appelle sequence tout ce qui est de la forme : - sequence.
YAML définit un mapping comme un tableau, et une sequence comme une liste.
On a aussi des mappings et des sequences sous forme serialisée, telles que : {a: b, c: d, e: f, ..., key: value} est un groupe de mapping, et [a, b, c, d, e, ..., sequence] soit une sequence.
On peut avoir des formes imbriquées, telles que : [{a: b}, c, d, {e: f}, g] ou encore [[a, b, c, d], e, [[f], g], h] etc etc. Après tous les délires sont possibles.
Bien.
Maintenant, on doit s'amuser à gérer les quotes.
En ce qui concerne les mappings et les sequences, je gère sans problème. En revanche pour les formes sérialisées j'ai plus de soucis.
Si on a : {And Bob says: "I'm a ..., hmm a Bobby !"} je devrais avoir : Array { 'And Bob says' => 'I\'m a ..., hmm a Bobby !' } nous sommes bien d'accord.
Mais avec mon programme, je fais un explode par la virgule-espace (', '), et donc il me coupe mon value en 2 parties. Ce que je ne veux pas.
Et je cherche à éviter ça. Et je n'ai aucune piste ^^
A vrai dire, faire un parser YAML est lourd, et compliqué. Ca demande pas mal de réflexion, et après 8 jours none-stop, jsuis au bout. J'arrive plus à avoir de réflexion, alors je viens demander un peu d'aide
Vous trouverez le code sur le Wall de PHPFrance :
- http://www.phpfrance.com/irc/TheWall/in ... ?wall=1091 : fichier YAML
http://www.phpfrance.com/irc/TheWall/in ... ?wall=1092 : fichier YAML_Node
Aussi je me rends bien compte qu'il faille se mettre dans le code pour le comprendre, j'espère que c'est "clair".
Donc sinon, une petite piste, ou si quelqu'un aurait rencontrer un problème similaire, qu'il me le fasse savoir.
Merci
PS : une idée me vient pendant ma relecture ; on pourrait faire un preg_split, mais là, il faudrait écrire une nouvelle expression régulière qui va encore tous nous faire rire ...