| [23] | 1 | # |
|---|
| 2 | # S P Y C |
|---|
| 3 | # a simple php yaml class |
|---|
| 4 | # |
|---|
| 5 | # Load this README! |
|---|
| 6 | # >> $readme = Spyc::YAMLLoad('README'); |
|---|
| 7 | # |
|---|
| 8 | --- %YAML:1.1 |
|---|
| 9 | title: Spyc -- a Simple PHP YAML Class |
|---|
| 10 | version: 0.5 |
|---|
| 11 | authors: [chris wanstrath (chris@ozmm.org), vlad andersen (vlad.andersen@gmail.com)] |
|---|
| 12 | websites: [http://www.yaml.org, http://spyc.sourceforge.net] |
|---|
| 13 | license: [MIT License, http://www.opensource.org/licenses/mit-license.php] |
|---|
| 14 | copyright: "(c) 2005-2006 Chris Wanstrath, 2006-2011 Vlad Andersen" |
|---|
| 15 | tested on: [php 5.2.x] |
|---|
| 16 | |
|---|
| 17 | installation: > |
|---|
| 18 | Copy spyc.php to a directory you can |
|---|
| 19 | access with your YAML-ready PHP script. |
|---|
| 20 | |
|---|
| 21 | That's it! |
|---|
| 22 | |
|---|
| 23 | about: > |
|---|
| 24 | From www.yaml.org: |
|---|
| 25 | |
|---|
| 26 | "YAML(tm) (rhymes with 'camel') is a human-friendly, cross language, |
|---|
| 27 | Unicode based data serialization language designed around the common |
|---|
| 28 | native data structures of agile programming languages. It is broadly |
|---|
| 29 | useful for programming needs ranging from configuration files to |
|---|
| 30 | Internet messaging to object persistence to data auditing. Together |
|---|
| 31 | with the Unicode standard for characters, the YAML specification provides |
|---|
| 32 | all the information necessary to understand YAML Version 1.1 and to |
|---|
| 33 | creating programs that process YAML information. |
|---|
| 34 | |
|---|
| 35 | YAML(tm) is a balance of the following design goals: |
|---|
| 36 | - YAML documents are very readable by humans. |
|---|
| 37 | - YAML interacts well with scripting languages. |
|---|
| 38 | - YAML uses host languages' native data structures. |
|---|
| 39 | - YAML has a consistent information model. |
|---|
| 40 | - YAML enables stream-based processing. |
|---|
| 41 | - YAML is expressive and extensible. |
|---|
| 42 | - YAML is easy to implement." |
|---|
| 43 | |
|---|
| 44 | YAML makes a lot of sense. It's easy to use, easy to learn, and cool. |
|---|
| 45 | As the lucky stiff named why once said, "YAML is a beacon of light." |
|---|
| 46 | |
|---|
| 47 | If you're new to YAML, may we suggest YAML In Five Minutes: |
|---|
| 48 | - http://yaml.kwiki.org/?YamlInFiveMinutes |
|---|
| 49 | |
|---|
| 50 | If you don't have five minutes, realize that this README is a completely |
|---|
| 51 | valid YAML document. Dig in, load this or any YAML file into an array |
|---|
| 52 | with Spyc and see how easy it is to translate friendly text into usable |
|---|
| 53 | data. |
|---|
| 54 | |
|---|
| 55 | The purpose of Spyc is to provide a pure PHP alternative to Syck, a |
|---|
| 56 | simple API for loading and dumping YAML documents, a YAML loader which |
|---|
| 57 | understands a usable subset of the YAML spec, and to further spread |
|---|
| 58 | the glory of YAML to the PHP masses. |
|---|
| 59 | |
|---|
| 60 | If you're at all hesitant ("usable subset of YAML?!"), navigate |
|---|
| 61 | http://yaml.org/start.html. Spyc completely understands the YAML |
|---|
| 62 | document shown there, a document which has features way beyond the |
|---|
| 63 | scope of what normal config files might require. Try it for yourself, |
|---|
| 64 | and then start enjoying the peace of mind YAML brings to your life. |
|---|
| 65 | |
|---|
| 66 | meat and a few potatoes: |
|---|
| 67 | - concept: Loading a YAML document into PHP |
|---|
| 68 | brief: > |
|---|
| 69 | $yaml will become an array of all the data in wicked.yaml |
|---|
| 70 | code: | |
|---|
| 71 | |
|---|
| 72 | include('spyc.php'); |
|---|
| 73 | |
|---|
| 74 | $yaml = Spyc::YAMLLoad('wicked.yaml'); |
|---|
| 75 | |
|---|
| 76 | - concept: Loading a YAML string into PHP |
|---|
| 77 | brief: > |
|---|
| 78 | $array will look like this: |
|---|
| 79 | array('A YAML','document in a','string') |
|---|
| 80 | code: | |
|---|
| 81 | |
|---|
| 82 | include('spyc.php'); |
|---|
| 83 | |
|---|
| 84 | $yaml = '- A YAML\n- document in a\n- string.'; |
|---|
| 85 | $array = Spyc::YAMLLoad($yaml); |
|---|
| 86 | |
|---|
| 87 | - concept: Dumping a PHP array to YAML |
|---|
| 88 | brief: > |
|---|
| 89 | $yaml will become a string of a YAML document created from |
|---|
| 90 | $array. |
|---|
| 91 | code: | |
|---|
| 92 | |
|---|
| 93 | include('spyc.php'); |
|---|
| 94 | |
|---|
| 95 | $array['name'] = 'chris'; |
|---|
| 96 | $array['sport'] = 'curbing'; |
|---|
| 97 | |
|---|
| 98 | $yaml = Spyc::YAMLDump($array); |
|---|
| 99 | |
|---|
| 100 | prior art: |
|---|
| 101 | - who: [Brian Ingerson, Clark Evans, Oren Ben-Kiki] |
|---|
| 102 | why?: > |
|---|
| 103 | The YAML spec is really a piece of work, and these guys |
|---|
| 104 | did a great job on it. A simple and elegant language like |
|---|
| 105 | YAML was a long time coming and it's refreshing to know |
|---|
| 106 | such able minded individuals took the task to heart and |
|---|
| 107 | executed it with cunning and strength. In addition to |
|---|
| 108 | their various noteworthy contributions to YAML parsers |
|---|
| 109 | and related projects, YAML.pm's README is a treasure trove |
|---|
| 110 | of information for knowledge seekers. Thanks, guys. |
|---|
| 111 | |
|---|
| 112 | - who: why the lucky stiff |
|---|
| 113 | why?: > |
|---|
| 114 | As the author of Syck, the code used in Ruby for the language's |
|---|
| 115 | YAML class and methods, why is indirectly (directly?) responsible |
|---|
| 116 | for my first exposure to YAML (as a config file in a Ruby web-app) |
|---|
| 117 | and the countless hours I spent playing with this sheik new data |
|---|
| 118 | format afterwards. Syck's README is a YAML file and thus the |
|---|
| 119 | inspiration for this file and, even, this very piece of software. |
|---|
| 120 | |
|---|
| 121 | - who: Steve Howell |
|---|
| 122 | why?: > |
|---|
| 123 | Python's YAML implementation. PyYAML's README file is also YAML, |
|---|
| 124 | so it too inspired the YAML format of this README file. |
|---|
| 125 | |
|---|
| 126 | - who: [Rasmus Lerdorf, Zeev Suraski, Andi Gutmans, et al] |
|---|
| 127 | why?: > |
|---|
| 128 | PHP is great at what it does best. It's also paid a lot of my bills. |
|---|
| 129 | Thanks. |
|---|
| 130 | |
|---|
| 131 | bugs: |
|---|
| 132 | report: > |
|---|
| 133 | Please see Spyc's Sourceforge project page for information on reporting bugs. |
|---|
| 134 | speed: > |
|---|
| 135 | This implementation was not designed for speed. Rather, it |
|---|
| 136 | was designed for those who need a pure PHP implementation of |
|---|
| 137 | a YAML parser and who are not overly concerned with performance. |
|---|
| 138 | If you want speed, check out Syck. |
|---|
| 139 | depth: > |
|---|
| 140 | This parser is by no means a comprehensive YAML parser. For supported |
|---|
| 141 | features and future plans, check the website. |
|---|
| 142 | unicode: > |
|---|
| 143 | YAML is supposed to be unicode, but for now we're just using ASCII. |
|---|
| 144 | PHP has crappy unicode support but who knows what the future holds. |
|---|
| 145 | |
|---|
| 146 | resources: |
|---|
| 147 | - http://www.yaml.org |
|---|
| 148 | - http://www.yaml.org/spec/ |
|---|
| 149 | - http://yaml.kwiki.org/?YamlInFiveMinutes |
|---|
| 150 | - http://www.whytheluckystiff.net/syck/ |
|---|
| 151 | - http://yaml4r.sourceforge.net/cookbook/ |
|---|
| 152 | |
|---|
| 153 | thanks: |
|---|
| 154 | - Adam Wood |
|---|
| 155 | - Daniel Ferreira |
|---|
| 156 | - Aaron Jensen |
|---|
| 157 | - Mike Thornton |
|---|
| 158 | - Fabien Potencier |
|---|
| 159 | - Mustafa Kumas |
|---|