Updated 2013-05-16 16:46:29 by AK

YAML = YAML Ain't Markup Language [1]

YAML(tm) (rhymes with "camel") is a straightforward machine parsable data serialization format designed for human readability and interaction with scripting languages such as Perl and Python. YAML is optimized for data serialization, configuration settings, log files, Internet messaging and filtering.

Parsers exist for Perl, Python, and Ruby.

kanryu 20080423: I have made the YAML parser, and registed into head CVS in tcllib. (See http://tcllib.cvs.sourceforge.net/tcllib/tcllib/modules/yaml/)

See also TclYAML

To see typical examples, [2]

Example from [3]: the informal data structure
 PRIVMSG newUri ^http://.*
 PRIVMSG deleteUri ^delete.*
 PRIVMSG randomUri ^random.*

looks in YAML like
---
-
     - PRIVMSG
     - newUri
     - '^http://.*'
-
     - PRIVMSG
     - deleteUri
     - ^delete.*
-
     - PRIVMSG
     - randomUri
     - ^random.*

"Python fans will be happy to note that it uses whitespace as a block delimiter. It also steals ideas from MIME, HTML, XML and SOAP, including aliasing, application-specific types, and a namespace mechanism which is part Java package naming and part XML URI-based namespace naming. But perhaps the biggest influence on YAML is Perl -- which I, as a Python devotee, had to learn not to hold against it! -- especially in the way YAML conceptualizes data structures and types, which it distinguishes into scalars, like integers and strings, and collections, like hashes and arrays."

Correctness of reading and writing:

It is checking that some UTF-8 data causes Mojibakes in Tcl8.4. Although it is checking that a typical data structure can be read correctly, when the data which cannot be read normally is found, please write in of this wiki-page or Tcllib-trac. http://sourceforge.net/tracker/?group_id=12883

Speed:

Now, the speed of reading of this library may not necessarily be enough. As an example, they are 1/3 of the speed of spyc (library written by Pure PHP). Although investigated by profiler, especially the bottleneck that should correct speed was not found. When it desires high-speed more, you should mount binding of libyaml or Syck.