Perhaps Bruno has something? This topic was discussed last Summer (see topic thread appended below).

http://www.yaml.org/refcard.html - YAML reference card

http://en.wikipedia.org/wiki/YAML - YAML intro

http://whytheluckystiff.net/syck/ - PHP extension homepage

http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-php5/syck-php-bindings/ - Gentoo's ebuild for this PHP extension

Cheers,
Gavin

[EMAIL PROTECTED] wrote:
I was making suggestions to a fellow ZF user the other day and I noticed Zend_Config has no YAML format parser. Are there any plans to introduce a YAML config format, or does this require a base YAML parser, such as a Zend_Yaml since PHP is currently without an extension for the format?

There are a few places I find the format useful. The one we were discussing was a more readable configuration file for dynamically constructing filter chains and rulesets. Esp. since XML is a bit bloated (yes, it's human editable but such configurations only have a little nesting and XML can come off as overkill when presenting it to a maintainer).

I googled around a bit and the only reference was back months ago where someone posted a modification of the spyc library to the mailing list. <http://www.patternsforphp.com>
-------- Original Message --------
Subject: [fw-general] Zend-Yaml challenge taken.
Date: Tue, 27 Jun 2006 02:05:26 +0200
From: Bruno Couleau <[EMAIL PROTECTED]>
Organization: The Phocea Experiment
To: 'Zend Framework General' <[email protected]>

Hi,

At the beginning of the month, I was looking to the Zend_Config:XML_Format thread and the idea pops that YAML could be useful for some of us… so I quickly wrote an class to able Zend_Config to process YAML file using the code from Chris Wanstrath (SPYC), that’s the YAML parser used in Symfony.


As I didn’t pay to much attention to the CLA I’ve just upload the file as a “quick & dirty” hack… and finally Andi Gutmans friendly challenges me writing: ‘Now it's up to you to prove that PHP is much easier than .NET :)’.


So after some thinking, I’ve started to write some code but it seems to me that it will be better to have a parser implementation distinct from Zend_Config able to parse an YAML document very much like SAX does for XML … producing events that can be used to call some callback functions. It could be useful if the class can also provide an YAML Object to internally represents the parsed file and some additional method to convert it to an array than can be used with Zend_Config.


So basically I came with this minimal requirements:

- support the YAML 1.1 specification as define on the official web site (http://yaml.org/spec/current.html)

- the main class would be responsible for :

o loading & parsing an YAML document form different sources

o calling used defined callback function to handle parsing events (e.g. : LIST_OPEN, LIST_CLOSE, MAP_OPEN, MAP_CLOSE, LIST_NO_OPEN, MAP_NO_OPEN, DOCUMENT_START, DOCUMENT_END, MAP_SEPARATOR, LIST_ENTRY...) trough an event_handler class.

o provide access to the parsed document using alternatives like

§ returning an YAML Document Object

§ returning an PHP array

- the parser would be as much as possible an OOP implementation with support for

o a virtual class reader than can be derived to process different character stream (e.g.: file processing or http transactions)

o both UTF-8, US-ASCCI & ISO-8859-1 characters sets


So far I’m still working on all this stuff but it came nicely even if writing it’s not as easy as we can thing mostly because I had to write much of the production rules form the YAML language by hand and I haven’t wrote a full parser from scratch for a very long time (By the way, if any one knows about YACC or LEX equivalent tools to produce PHP, just let me know). For now the UML class diagram look just like this:


Except, for all the Yaml_Parser private functions that are omitted on purpose.


Hopefully I will post the first version of the code around 15/07 the time to send the Contributor License Agreement and to make some more progress in the writing/coding process



If you have some ideas on the subject or could help me to review my design, just let me know. I’m also very interested by any suggestion like implementing the multi-character sets support… This part doesn’t look like a piece of cake to me.


Thank you for reading me.


Bruno Couleau, Marseille – France.


Reply via email to