1*d5ef99ddSAndreas Gohr# 2*d5ef99ddSAndreas Gohr# S P Y C 3*d5ef99ddSAndreas Gohr# a simple php yaml class 4*d5ef99ddSAndreas Gohr# 5*d5ef99ddSAndreas Gohr# authors: [vlad andersen (vlad.andersen@gmail.com), chris wanstrath (chris@ozmm.org)] 6*d5ef99ddSAndreas Gohr# websites: [http://www.yaml.org, http://spyc.sourceforge.net/] 7*d5ef99ddSAndreas Gohr# license: [MIT License, http://www.opensource.org/licenses/mit-license.php] 8*d5ef99ddSAndreas Gohr# copyright: (c) 2005-2006 Chris Wanstrath, 2006-2014 Vlad Andersen 9*d5ef99ddSAndreas Gohr# 10*d5ef99ddSAndreas Gohr# spyc.yaml - A file containing the YAML that Spyc understands. 11*d5ef99ddSAndreas Gohr 12*d5ef99ddSAndreas Gohr--- 13*d5ef99ddSAndreas Gohr 14*d5ef99ddSAndreas Gohr# Mappings - with proper types 15*d5ef99ddSAndreas GohrString: Anyone's name, really. 16*d5ef99ddSAndreas GohrInt: 13 17*d5ef99ddSAndreas GohrBadHex: f0xf3 18*d5ef99ddSAndreas GohrHex: 0xf3 19*d5ef99ddSAndreas GohrTrue: true 20*d5ef99ddSAndreas GohrFalse: false 21*d5ef99ddSAndreas GohrZero: 0 22*d5ef99ddSAndreas GohrNull: NULL 23*d5ef99ddSAndreas GohrNotNull: 'null' 24*d5ef99ddSAndreas GohrNotTrue: 'y' 25*d5ef99ddSAndreas GohrNotBoolTrue: 'true' 26*d5ef99ddSAndreas GohrNotInt: '5' 27*d5ef99ddSAndreas GohrFloat: 5.34 28*d5ef99ddSAndreas GohrNegative: -90 29*d5ef99ddSAndreas GohrSmallFloat: 0.7 30*d5ef99ddSAndreas GohrNewLine: \n 31*d5ef99ddSAndreas GohrQuotedNewLine: "\n" 32*d5ef99ddSAndreas Gohr 33*d5ef99ddSAndreas Gohr# A sequence 34*d5ef99ddSAndreas Gohr- PHP Class 35*d5ef99ddSAndreas Gohr- Basic YAML Loader 36*d5ef99ddSAndreas Gohr- Very Basic YAML Dumper 37*d5ef99ddSAndreas Gohr 38*d5ef99ddSAndreas Gohr# A sequence of a sequence 39*d5ef99ddSAndreas Gohr- 40*d5ef99ddSAndreas Gohr - YAML is so easy to learn. 41*d5ef99ddSAndreas Gohr - Your config files will never be the same. 42*d5ef99ddSAndreas Gohr 43*d5ef99ddSAndreas Gohr# Sequence of mappings 44*d5ef99ddSAndreas Gohr- 45*d5ef99ddSAndreas Gohr cpu: 1.5ghz 46*d5ef99ddSAndreas Gohr ram: 1 gig 47*d5ef99ddSAndreas Gohr os : os x 10.4.1 48*d5ef99ddSAndreas Gohr 49*d5ef99ddSAndreas Gohr# Mapped sequence 50*d5ef99ddSAndreas Gohrdomains: 51*d5ef99ddSAndreas Gohr - yaml.org 52*d5ef99ddSAndreas Gohr - php.net 53*d5ef99ddSAndreas Gohr 54*d5ef99ddSAndreas Gohr# A sequence like this. 55*d5ef99ddSAndreas Gohr- program: Adium 56*d5ef99ddSAndreas Gohr platform: OS X 57*d5ef99ddSAndreas Gohr type: Chat Client 58*d5ef99ddSAndreas Gohr 59*d5ef99ddSAndreas Gohr# A folded block as a mapped value 60*d5ef99ddSAndreas Gohrno time: > 61*d5ef99ddSAndreas Gohr There isn't any time 62*d5ef99ddSAndreas Gohr for your tricks! 63*d5ef99ddSAndreas Gohr 64*d5ef99ddSAndreas Gohr Do you understand? 65*d5ef99ddSAndreas Gohr 66*d5ef99ddSAndreas Gohr# A literal block as a mapped value 67*d5ef99ddSAndreas Gohrsome time: | 68*d5ef99ddSAndreas Gohr There is nothing but time 69*d5ef99ddSAndreas Gohr for your tricks. 70*d5ef99ddSAndreas Gohr 71*d5ef99ddSAndreas Gohr# Crazy combinations 72*d5ef99ddSAndreas Gohrdatabases: 73*d5ef99ddSAndreas Gohr - name: spartan 74*d5ef99ddSAndreas Gohr notes: 75*d5ef99ddSAndreas Gohr - Needs to be backed up 76*d5ef99ddSAndreas Gohr - Needs to be normalized 77*d5ef99ddSAndreas Gohr type: mysql 78*d5ef99ddSAndreas Gohr 79*d5ef99ddSAndreas Gohr# You can be a bit tricky 80*d5ef99ddSAndreas Gohr"if: you'd": like 81*d5ef99ddSAndreas Gohr 82*d5ef99ddSAndreas Gohr# Inline sequences 83*d5ef99ddSAndreas Gohr- [One, Two, Three, Four] 84*d5ef99ddSAndreas Gohr 85*d5ef99ddSAndreas Gohr# Nested Inline Sequences 86*d5ef99ddSAndreas Gohr- [One, [Two, And, Three], Four, Five] 87*d5ef99ddSAndreas Gohr 88*d5ef99ddSAndreas Gohr# Nested Nested Inline Sequences 89*d5ef99ddSAndreas Gohr- [This, [Is, Getting, [Ridiculous, Guys]], Seriously, [Show, Mercy]] 90*d5ef99ddSAndreas Gohr 91*d5ef99ddSAndreas Gohr# Inline mappings 92*d5ef99ddSAndreas Gohr- {name: chris, age: young, brand: lucky strike} 93*d5ef99ddSAndreas Gohr 94*d5ef99ddSAndreas Gohr# Nested inline mappings 95*d5ef99ddSAndreas Gohr- {name: mark, age: older than chris, brand: [marlboro, lucky strike]} 96*d5ef99ddSAndreas Gohr 97*d5ef99ddSAndreas Gohr# References -- they're shaky, but functional 98*d5ef99ddSAndreas Gohrdynamic languages: &DLANGS 99*d5ef99ddSAndreas Gohr - Perl 100*d5ef99ddSAndreas Gohr - Python 101*d5ef99ddSAndreas Gohr - PHP 102*d5ef99ddSAndreas Gohr - Ruby 103*d5ef99ddSAndreas Gohrcompiled languages: &CLANGS 104*d5ef99ddSAndreas Gohr - C/C++ 105*d5ef99ddSAndreas Gohr - Java 106*d5ef99ddSAndreas Gohrall languages: 107*d5ef99ddSAndreas Gohr - *DLANGS 108*d5ef99ddSAndreas Gohr - *CLANGS 109*d5ef99ddSAndreas Gohr 110*d5ef99ddSAndreas Gohr# Added in .2.2: Escaped quotes 111*d5ef99ddSAndreas Gohr- you know, this shouldn't work. but it does. 112*d5ef99ddSAndreas Gohr- 'that''s my value.' 113*d5ef99ddSAndreas Gohr- 'again, that\'s my value.' 114*d5ef99ddSAndreas Gohr- "here's to \"quotes\", boss." 115*d5ef99ddSAndreas Gohr 116*d5ef99ddSAndreas Gohr# added in .2.3 117*d5ef99ddSAndreas Gohr- {name: "Foo, Bar's", age: 20} 118*d5ef99ddSAndreas Gohr 119*d5ef99ddSAndreas Gohr# Added in .2.4: bug [ 1418193 ] Quote Values in Nested Arrays 120*d5ef99ddSAndreas Gohr- [a, ['1', "2"], b] 121*d5ef99ddSAndreas Gohr 122*d5ef99ddSAndreas Gohr# Add in .5.2: Quoted new line values. 123*d5ef99ddSAndreas Gohr- "First line\nSecond line\nThird line" 124*d5ef99ddSAndreas Gohr 125*d5ef99ddSAndreas Gohr# Added in .2.4: malformed YAML 126*d5ef99ddSAndreas Gohrall 127*d5ef99ddSAndreas Gohr javascripts: [dom1.js, dom.js] 128*d5ef99ddSAndreas Gohr 129*d5ef99ddSAndreas Gohr# Added in .2 130*d5ef99ddSAndreas Gohr1040: Ooo, a numeric key! # And working comments? Wow! Colons in comments: a menace (0.3). 131*d5ef99ddSAndreas Gohr 132*d5ef99ddSAndreas Gohrhash_1: Hash #and a comment 133*d5ef99ddSAndreas Gohrhash_2: "Hash #and a comment" 134*d5ef99ddSAndreas Gohr"hash#3": "Hash (#) can appear in key too" 135*d5ef99ddSAndreas Gohr 136*d5ef99ddSAndreas Gohrfloat_test: 1.0 137*d5ef99ddSAndreas Gohrfloat_test_with_quotes: '1.0' 138*d5ef99ddSAndreas Gohrfloat_inverse_test: 001 139*d5ef99ddSAndreas Gohr 140*d5ef99ddSAndreas Gohra_really_large_number: 115792089237316195423570985008687907853269984665640564039457584007913129639936 # 2^256 141*d5ef99ddSAndreas Gohr 142*d5ef99ddSAndreas Gohrint array: [ 1, 2, 3 ] 143*d5ef99ddSAndreas Gohr 144*d5ef99ddSAndreas Gohrarray on several lines: 145*d5ef99ddSAndreas Gohr [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 146*d5ef99ddSAndreas Gohr 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ] 147*d5ef99ddSAndreas Gohr 148*d5ef99ddSAndreas Gohrmorelesskey: "<value>" 149*d5ef99ddSAndreas Gohr 150*d5ef99ddSAndreas Gohrarray_of_zero: [0] 151*d5ef99ddSAndreas Gohrsophisticated_array_of_zero: {rx: {tx: [0]} } 152*d5ef99ddSAndreas Gohr 153*d5ef99ddSAndreas Gohrswitches: 154*d5ef99ddSAndreas Gohr - { row: 0, col: 0, func: {tx: [0, 1]} } 155*d5ef99ddSAndreas Gohr 156*d5ef99ddSAndreas Gohrempty_sequence: [ ] 157*d5ef99ddSAndreas Gohrempty_hash: { } 158*d5ef99ddSAndreas Gohr 159*d5ef99ddSAndreas Gohrspecial_characters: "[{]]{{]]" 160*d5ef99ddSAndreas Gohr 161*d5ef99ddSAndreas Gohrasterisks: "*" 162*d5ef99ddSAndreas Gohr 163*d5ef99ddSAndreas Gohrempty_key: 164*d5ef99ddSAndreas Gohr : 165*d5ef99ddSAndreas Gohr key: value 166*d5ef99ddSAndreas Gohr 167*d5ef99ddSAndreas Gohrtrailing_colon: "foo:" 168*d5ef99ddSAndreas Gohr 169*d5ef99ddSAndreas Gohrmultiline_items: 170*d5ef99ddSAndreas Gohr - type: SomeItem 171*d5ef99ddSAndreas Gohr values: [blah, blah, blah, 172*d5ef99ddSAndreas Gohr blah] 173*d5ef99ddSAndreas Gohr ints: [2, 54, 12, 174*d5ef99ddSAndreas Gohr 2143] 175*d5ef99ddSAndreas Gohr 176*d5ef99ddSAndreas Gohrmany_lines: | 177*d5ef99ddSAndreas Gohr A quick 178*d5ef99ddSAndreas Gohr fox 179*d5ef99ddSAndreas Gohr 180*d5ef99ddSAndreas Gohr 181*d5ef99ddSAndreas Gohr jumped 182*d5ef99ddSAndreas Gohr over 183*d5ef99ddSAndreas Gohr 184*d5ef99ddSAndreas Gohr 185*d5ef99ddSAndreas Gohr 186*d5ef99ddSAndreas Gohr 187*d5ef99ddSAndreas Gohr 188*d5ef99ddSAndreas Gohr a lazy 189*d5ef99ddSAndreas Gohr 190*d5ef99ddSAndreas Gohr 191*d5ef99ddSAndreas Gohr 192*d5ef99ddSAndreas Gohr dog 193*d5ef99ddSAndreas Gohr 194*d5ef99ddSAndreas Gohr 195*d5ef99ddSAndreas Gohrwerte: 196*d5ef99ddSAndreas Gohr 1: nummer 1 197*d5ef99ddSAndreas Gohr 0: Stunde 0 198*d5ef99ddSAndreas Gohr 199*d5ef99ddSAndreas Gohrnoindent_records: 200*d5ef99ddSAndreas Gohr- record1: value1 201*d5ef99ddSAndreas Gohr- record2: value2 202*d5ef99ddSAndreas Gohr 203*d5ef99ddSAndreas Gohr"a:1": [1000] 204*d5ef99ddSAndreas Gohr"a:2": 205*d5ef99ddSAndreas Gohr - 2000 206*d5ef99ddSAndreas Gohra:3: [3000] 207*d5ef99ddSAndreas Gohr 208*d5ef99ddSAndreas Gohrcomplex_unquoted_key: 209*d5ef99ddSAndreas Gohr a:b:''test': value 210*d5ef99ddSAndreas Gohr 211*d5ef99ddSAndreas Gohrarray with commas: 212*d5ef99ddSAndreas Gohr ["0","1"] 213*d5ef99ddSAndreas Gohr 214*d5ef99ddSAndreas Gohrinvoice: ["Something", "", '', "Something else"] 215*d5ef99ddSAndreas Gohrquotes: ['Something', "Nothing", 'Anything', "Thing"] 216*d5ef99ddSAndreas Gohr 217*d5ef99ddSAndreas Gohr# [Endloop] 218*d5ef99ddSAndreas Gohrendloop: | 219*d5ef99ddSAndreas Gohr Does this line in the end indeed make Spyc go to an infinite loop? 220