12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697 |
- --- %YAML:1.0
- test: Sequence of scalars
- spec: 2.1
- yaml: |
- - Mark McGwire
- - Sammy Sosa
- - Ken Griffey
- php: |
- array('Mark McGwire', 'Sammy Sosa', 'Ken Griffey')
- ---
- test: Mapping of scalars to scalars
- spec: 2.2
- yaml: |
- hr: 65
- avg: 0.278
- rbi: 147
- php: |
- array('hr' => 65, 'avg' => 0.278, 'rbi' => 147)
- ---
- test: Mapping of scalars to sequences
- spec: 2.3
- yaml: |
- american:
- - Boston Red Sox
- - Detroit Tigers
- - New York Yankees
- national:
- - New York Mets
- - Chicago Cubs
- - Atlanta Braves
- php: |
- array('american' =>
- array( 'Boston Red Sox', 'Detroit Tigers',
- 'New York Yankees' ),
- 'national' =>
- array( 'New York Mets', 'Chicago Cubs',
- 'Atlanta Braves' )
- )
- ---
- test: Sequence of mappings
- spec: 2.4
- yaml: |
- -
- name: Mark McGwire
- hr: 65
- avg: 0.278
- -
- name: Sammy Sosa
- hr: 63
- avg: 0.288
- php: |
- array(
- array('name' => 'Mark McGwire', 'hr' => 65, 'avg' => 0.278),
- array('name' => 'Sammy Sosa', 'hr' => 63, 'avg' => 0.288)
- )
- ---
- test: Legacy A5
- todo: true
- spec: legacy_A5
- yaml: |
- ?
- - New York Yankees
- - Atlanta Braves
- :
- - 2001-07-02
- - 2001-08-12
- - 2001-08-14
- ?
- - Detroit Tigers
- - Chicago Cubs
- :
- - 2001-07-23
- perl-busted: >
- YAML.pm will be able to emulate this behavior soon. In this regard
- it may be somewhat more correct than Python's native behaviour which
- can only use tuples as mapping keys. PyYAML will also need to figure
- out some clever way to roundtrip structured keys.
- python: |
- [
- {
- ('New York Yankees', 'Atlanta Braves'):
- [yaml.timestamp('2001-07-02'),
- yaml.timestamp('2001-08-12'),
- yaml.timestamp('2001-08-14')],
- ('Detroit Tigers', 'Chicago Cubs'):
- [yaml.timestamp('2001-07-23')]
- }
- ]
- ruby: |
- {
- [ 'New York Yankees', 'Atlanta Braves' ] =>
- [ Date.new( 2001, 7, 2 ), Date.new( 2001, 8, 12 ), Date.new( 2001, 8, 14 ) ],
- [ 'Detroit Tigers', 'Chicago Cubs' ] =>
- [ Date.new( 2001, 7, 23 ) ]
- }
- syck: |
- struct test_node seq1[] = {
- { T_STR, 0, "New York Yankees" },
- { T_STR, 0, "Atlanta Braves" },
- end_node
- };
- struct test_node seq2[] = {
- { T_STR, 0, "2001-07-02" },
- { T_STR, 0, "2001-08-12" },
- { T_STR, 0, "2001-08-14" },
- end_node
- };
- struct test_node seq3[] = {
- { T_STR, 0, "Detroit Tigers" },
- { T_STR, 0, "Chicago Cubs" },
- end_node
- };
- struct test_node seq4[] = {
- { T_STR, 0, "2001-07-23" },
- end_node
- };
- struct test_node map[] = {
- { T_SEQ, 0, 0, seq1 },
- { T_SEQ, 0, 0, seq2 },
- { T_SEQ, 0, 0, seq3 },
- { T_SEQ, 0, 0, seq4 },
- end_node
- };
- struct test_node stream[] = {
- { T_MAP, 0, 0, map },
- end_node
- };
- ---
- test: Sequence of sequences
- spec: 2.5
- yaml: |
- - [ name , hr , avg ]
- - [ Mark McGwire , 65 , 0.278 ]
- - [ Sammy Sosa , 63 , 0.288 ]
- php: |
- array(
- array( 'name', 'hr', 'avg' ),
- array( 'Mark McGwire', 65, 0.278 ),
- array( 'Sammy Sosa', 63, 0.288 )
- )
- ---
- test: Mapping of mappings
- todo: true
- spec: 2.6
- yaml: |
- Mark McGwire: {hr: 65, avg: 0.278}
- Sammy Sosa: {
- hr: 63,
- avg: 0.288
- }
- php: |
- array(
- 'Mark McGwire' =>
- array( 'hr' => 65, 'avg' => 0.278 ),
- 'Sammy Sosa' =>
- array( 'hr' => 63, 'avg' => 0.288 )
- )
- ---
- test: Two documents in a stream each with a leading comment
- todo: true
- spec: 2.7
- yaml: |
- # Ranking of 1998 home runs
- ---
- - Mark McGwire
- - Sammy Sosa
- - Ken Griffey
- # Team ranking
- ---
- - Chicago Cubs
- - St Louis Cardinals
- ruby: |
- y = YAML::Stream.new
- y.add( [ 'Mark McGwire', 'Sammy Sosa', 'Ken Griffey' ] )
- y.add( [ 'Chicago Cubs', 'St Louis Cardinals' ] )
- documents: 2
- ---
- test: Play by play feed from a game
- todo: true
- spec: 2.8
- yaml: |
- ---
- time: 20:03:20
- player: Sammy Sosa
- action: strike (miss)
- ...
- ---
- time: 20:03:47
- player: Sammy Sosa
- action: grand slam
- ...
- perl: |
- [ 'Mark McGwire', 'Sammy Sosa', 'Ken Griffey' ]
- documents: 2
- ---
- test: Single document with two comments
- spec: 2.9
- yaml: |
- hr: # 1998 hr ranking
- - Mark McGwire
- - Sammy Sosa
- rbi:
- # 1998 rbi ranking
- - Sammy Sosa
- - Ken Griffey
- php: |
- array(
- 'hr' => array( 'Mark McGwire', 'Sammy Sosa' ),
- 'rbi' => array( 'Sammy Sosa', 'Ken Griffey' )
- )
- ---
- test: Node for Sammy Sosa appears twice in this document
- spec: 2.10
- yaml: |
- ---
- hr:
- - Mark McGwire
- # Following node labeled SS
- - &SS Sammy Sosa
- rbi:
- - *SS # Subsequent occurrence
- - Ken Griffey
- php: |
- array(
- 'hr' =>
- array('Mark McGwire', 'Sammy Sosa'),
- 'rbi' =>
- array('Sammy Sosa', 'Ken Griffey')
- )
- ---
- test: Mapping between sequences
- todo: true
- spec: 2.11
- yaml: |
- ? # PLAY SCHEDULE
- - Detroit Tigers
- - Chicago Cubs
- :
- - 2001-07-23
- ? [ New York Yankees,
- Atlanta Braves ]
- : [ 2001-07-02, 2001-08-12,
- 2001-08-14 ]
- ruby: |
- {
- [ 'Detroit Tigers', 'Chicago Cubs' ] => [ Date.new( 2001, 7, 23 ) ],
- [ 'New York Yankees', 'Atlanta Braves' ] => [ Date.new( 2001, 7, 2 ), Date.new( 2001, 8, 12 ), Date.new( 2001, 8, 14 ) ]
- }
- syck: |
- struct test_node seq1[] = {
- { T_STR, 0, "New York Yankees" },
- { T_STR, 0, "Atlanta Braves" },
- end_node
- };
- struct test_node seq2[] = {
- { T_STR, 0, "2001-07-02" },
- { T_STR, 0, "2001-08-12" },
- { T_STR, 0, "2001-08-14" },
- end_node
- };
- struct test_node seq3[] = {
- { T_STR, 0, "Detroit Tigers" },
- { T_STR, 0, "Chicago Cubs" },
- end_node
- };
- struct test_node seq4[] = {
- { T_STR, 0, "2001-07-23" },
- end_node
- };
- struct test_node map[] = {
- { T_SEQ, 0, 0, seq3 },
- { T_SEQ, 0, 0, seq4 },
- { T_SEQ, 0, 0, seq1 },
- { T_SEQ, 0, 0, seq2 },
- end_node
- };
- struct test_node stream[] = {
- { T_MAP, 0, 0, map },
- end_node
- };
- ---
- test: Sequence key shortcut
- spec: 2.12
- yaml: |
- ---
- # products purchased
- - item : Super Hoop
- quantity: 1
- - item : Basketball
- quantity: 4
- - item : Big Shoes
- quantity: 1
- php: |
- array (
- array (
- 'item' => 'Super Hoop',
- 'quantity' => 1,
- ),
- array (
- 'item' => 'Basketball',
- 'quantity' => 4,
- ),
- array (
- 'item' => 'Big Shoes',
- 'quantity' => 1,
- )
- )
- perl: |
- [
- { item => 'Super Hoop', quantity => 1 },
- { item => 'Basketball', quantity => 4 },
- { item => 'Big Shoes', quantity => 1 }
- ]
- ruby: |
- [
- { 'item' => 'Super Hoop', 'quantity' => 1 },
- { 'item' => 'Basketball', 'quantity' => 4 },
- { 'item' => 'Big Shoes', 'quantity' => 1 }
- ]
- python: |
- [
- { 'item': 'Super Hoop', 'quantity': 1 },
- { 'item': 'Basketball', 'quantity': 4 },
- { 'item': 'Big Shoes', 'quantity': 1 }
- ]
- syck: |
- struct test_node map1[] = {
- { T_STR, 0, "item" },
- { T_STR, 0, "Super Hoop" },
- { T_STR, 0, "quantity" },
- { T_STR, 0, "1" },
- end_node
- };
- struct test_node map2[] = {
- { T_STR, 0, "item" },
- { T_STR, 0, "Basketball" },
- { T_STR, 0, "quantity" },
- { T_STR, 0, "4" },
- end_node
- };
- struct test_node map3[] = {
- { T_STR, 0, "item" },
- { T_STR, 0, "Big Shoes" },
- { T_STR, 0, "quantity" },
- { T_STR, 0, "1" },
- end_node
- };
- struct test_node seq[] = {
- { T_MAP, 0, 0, map1 },
- { T_MAP, 0, 0, map2 },
- { T_MAP, 0, 0, map3 },
- end_node
- };
- struct test_node stream[] = {
- { T_SEQ, 0, 0, seq },
- end_node
- };
- ---
- test: Literal perserves newlines
- todo: true
- spec: 2.13
- yaml: |
- # ASCII Art
- --- |
- \//||\/||
- // || ||_
- perl: |
- "\\//||\\/||\n// || ||_\n"
- ruby: |
- "\\//||\\/||\n// || ||_\n"
- python: |
- [
- flushLeft(
- """
- \//||\/||
- // || ||_
- """
- )
- ]
- syck: |
- struct test_node stream[] = {
- { T_STR, 0, "\\//||\\/||\n// || ||_\n" },
- end_node
- };
- ---
- test: Folded treats newlines as a space
- todo: true
- spec: 2.14
- yaml: |
- ---
- Mark McGwire's
- year was crippled
- by a knee injury.
- perl: |
- "Mark McGwire's year was crippled by a knee injury."
- ruby: |
- "Mark McGwire's year was crippled by a knee injury."
- python: |
- [ "Mark McGwire's year was crippled by a knee injury." ]
- syck: |
- struct test_node stream[] = {
- { T_STR, 0, "Mark McGwire's year was crippled by a knee injury." },
- end_node
- };
- ---
- test: Newlines preserved for indented and blank lines
- todo: true
- spec: 2.15
- yaml: |
- --- >
- Sammy Sosa completed another
- fine season with great stats.
- 63 Home Runs
- 0.288 Batting Average
- What a year!
- perl: |
- "Sammy Sosa completed another fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\nWhat a year!\n"
- ruby: |
- "Sammy Sosa completed another fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\nWhat a year!\n"
- python: |
- [
- flushLeft(
- """
- Sammy Sosa completed another fine season with great stats.
- 63 Home Runs
- 0.288 Batting Average
- What a year!
- """
- )
- ]
- syck: |
- struct test_node stream[] = {
- { T_STR, 0, "Sammy Sosa completed another fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\nWhat a year!\n" },
- end_node
- };
- ---
- test: Indentation determines scope
- spec: 2.16
- yaml: |
- name: Mark McGwire
- accomplishment: >
- Mark set a major league
- home run record in 1998.
- stats: |
- 65 Home Runs
- 0.278 Batting Average
- php: |
- array(
- 'name' => 'Mark McGwire',
- 'accomplishment' => "Mark set a major league home run record in 1998.\n",
- 'stats' => "65 Home Runs\n0.278 Batting Average\n"
- )
- ---
- test: Quoted scalars
- todo: true
- spec: 2.17
- yaml: |
- unicode: "Sosa did fine.\u263A"
- control: "\b1998\t1999\t2000\n"
- hexesc: "\x0D\x0A is \r\n"
- single: '"Howdy!" he cried.'
- quoted: ' # not a ''comment''.'
- tie-fighter: '|\-*-/|'
- ruby: |
- {
- "tie-fighter" => "|\\-*-/|",
- "control"=>"\0101998\t1999\t2000\n",
- "unicode"=>"Sosa did fine." + ["263A".hex ].pack('U*'),
- "quoted"=>" # not a 'comment'.",
- "single"=>"\"Howdy!\" he cried.",
- "hexesc"=>"\r\n is \r\n"
- }
- ---
- test: Multiline flow scalars
- todo: true
- spec: 2.18
- yaml: |
- plain:
- This unquoted scalar
- spans many lines.
- quoted: "So does this
- quoted scalar.\n"
- ruby: |
- {
- 'plain' => 'This unquoted scalar spans many lines.',
- 'quoted' => "So does this quoted scalar.\n"
- }
- ---
- test: Integers
- spec: 2.19
- yaml: |
- canonical: 12345
- decimal: +12,345
- octal: 014
- hexadecimal: 0xC
- php: |
- array(
- 'canonical' => 12345,
- 'decimal' => 12345,
- 'octal' => 014,
- 'hexadecimal' => 0xC
- )
- ---
- # FIX: spec shows parens around -inf and NaN
- test: Floating point
- spec: 2.20
- yaml: |
- canonical: 1.23015e+3
- exponential: 12.3015e+02
- fixed: 1,230.15
- negative infinity: -.inf
- not a number: .NaN
- float as whole number: !!float 1
- php: |
- array(
- 'canonical' => 1230.15,
- 'exponential' => 1230.15,
- 'fixed' => 1230.15,
- 'negative infinity' => log(0),
- 'not a number' => -log(0),
- 'float as whole number' => (float) 1
- )
- ---
- test: Miscellaneous
- spec: 2.21
- yaml: |
- null: ~
- true: true
- false: false
- string: '12345'
- php: |
- array(
- '' => null,
- 1 => true,
- 0 => false,
- 'string' => '12345'
- )
- ---
- test: Timestamps
- todo: true
- spec: 2.22
- yaml: |
- canonical: 2001-12-15T02:59:43.1Z
- iso8601: 2001-12-14t21:59:43.10-05:00
- spaced: 2001-12-14 21:59:43.10 -05:00
- date: 2002-12-14 # Time is noon UTC
- php: |
- array(
- 'canonical' => YAML::mktime( 2001, 12, 15, 2, 59, 43, 0.10 ),
- 'iso8601' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ),
- 'spaced' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ),
- 'date' => Date.new( 2002, 12, 14 )
- )
- ---
- test: legacy Timestamps test
- todo: true
- spec: legacy D4
- yaml: |
- canonical: 2001-12-15T02:59:43.00Z
- iso8601: 2001-02-28t21:59:43.00-05:00
- spaced: 2001-12-14 21:59:43.00 -05:00
- date: 2002-12-14
- php: |
- array(
- 'canonical' => Time::utc( 2001, 12, 15, 2, 59, 43, 0 ),
- 'iso8601' => YAML::mktime( 2001, 2, 28, 21, 59, 43, 0, "-05:00" ),
- 'spaced' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0, "-05:00" ),
- 'date' => Date.new( 2002, 12, 14 )
- )
- ---
- test: Various explicit families
- todo: true
- spec: 2.23
- yaml: |
- not-date: !str 2002-04-28
- picture: !binary |
- R0lGODlhDAAMAIQAAP//9/X
- 17unp5WZmZgAAAOfn515eXv
- Pz7Y6OjuDg4J+fn5OTk6enp
- 56enmleECcgggoBADs=
- application specific tag: !!something |
- The semantics of the tag
- above may be different for
- different documents.
- ruby-setup: |
- YAML.add_private_type( "something" ) do |type, val|
- "SOMETHING: #{val}"
- end
- ruby: |
- {
- 'not-date' => '2002-04-28',
- 'picture' => "GIF89a\f\000\f\000\204\000\000\377\377\367\365\365\356\351\351\345fff\000\000\000\347\347\347^^^\363\363\355\216\216\216\340\340\340\237\237\237\223\223\223\247\247\247\236\236\236i^\020' \202\n\001\000;",
- 'application specific tag' => "SOMETHING: The semantics of the tag\nabove may be different for\ndifferent documents.\n"
- }
- ---
- test: Application specific family
- todo: true
- spec: 2.24
- yaml: |
- # Establish a tag prefix
- --- !clarkevans.com,2002/graph/^shape
- # Use the prefix: shorthand for
- # !clarkevans.com,2002/graph/circle
- - !^circle
- center: &ORIGIN {x: 73, 'y': 129}
- radius: 7
- - !^line # !clarkevans.com,2002/graph/line
- start: *ORIGIN
- finish: { x: 89, 'y': 102 }
- - !^label
- start: *ORIGIN
- color: 0xFFEEBB
- value: Pretty vector drawing.
- ruby-setup: |
- YAML.add_domain_type( "clarkevans.com,2002", 'graph/shape' ) { |type, val|
- if Array === val
- val << "Shape Container"
- val
- else
- raise YAML::Error, "Invalid graph of class #{ val.class }: " + val.inspect
- end
- }
- one_shape_proc = Proc.new { |type, val|
- scheme, domain, type = type.split( /:/, 3 )
- if val.is_a? ::Hash
- val['TYPE'] = "Shape: #{type}"
- val
- else
- raise YAML::Error, "Invalid graph of class #{ val.class }: " + val.inspect
- end
- }
- YAML.add_domain_type( "clarkevans.com,2002", 'graph/circle', &one_shape_proc )
- YAML.add_domain_type( "clarkevans.com,2002", 'graph/line', &one_shape_proc )
- YAML.add_domain_type( "clarkevans.com,2002", 'graph/label', &one_shape_proc )
- ruby: |
- [
- {
- "radius" => 7,
- "center"=>
- {
- "x" => 73,
- "y" => 129
- },
- "TYPE" => "Shape: graph/circle"
- }, {
- "finish" =>
- {
- "x" => 89,
- "y" => 102
- },
- "TYPE" => "Shape: graph/line",
- "start" =>
- {
- "x" => 73,
- "y" => 129
- }
- }, {
- "TYPE" => "Shape: graph/label",
- "value" => "Pretty vector drawing.",
- "start" =>
- {
- "x" => 73,
- "y" => 129
- },
- "color" => 16772795
- },
- "Shape Container"
- ]
- # ---
- # test: Unordered set
- # spec: 2.25
- # yaml: |
- # # sets are represented as a
- # # mapping where each key is
- # # associated with the empty string
- # --- !set
- # ? Mark McGwire
- # ? Sammy Sosa
- # ? Ken Griff
- ---
- test: Ordered mappings
- todo: true
- spec: 2.26
- yaml: |
- # ordered maps are represented as
- # a sequence of mappings, with
- # each mapping having one key
- --- !omap
- - Mark McGwire: 65
- - Sammy Sosa: 63
- - Ken Griffy: 58
- ruby: |
- YAML::Omap[
- 'Mark McGwire', 65,
- 'Sammy Sosa', 63,
- 'Ken Griffy', 58
- ]
- ---
- test: Invoice
- dump_skip: true
- spec: 2.27
- yaml: |
- --- !clarkevans.com,2002/^invoice
- invoice: 34843
- date : 2001-01-23
- bill-to: &id001
- given : Chris
- family : Dumars
- address:
- lines: |
- 458 Walkman Dr.
- Suite #292
- city : Royal Oak
- state : MI
- postal : 48046
- ship-to: *id001
- product:
- -
- sku : BL394D
- quantity : 4
- description : Basketball
- price : 450.00
- -
- sku : BL4438H
- quantity : 1
- description : Super Hoop
- price : 2392.00
- tax : 251.42
- total: 4443.52
- comments: >
- Late afternoon is best.
- Backup contact is Nancy
- Billsmer @ 338-4338.
- php: |
- array(
- 'invoice' => 34843, 'date' => mktime(0, 0, 0, 1, 23, 2001),
- 'bill-to' =>
- array( 'given' => 'Chris', 'family' => 'Dumars', 'address' => array( 'lines' => "458 Walkman Dr.\nSuite #292\n", 'city' => 'Royal Oak', 'state' => 'MI', 'postal' => 48046 ) )
- , 'ship-to' =>
- array( 'given' => 'Chris', 'family' => 'Dumars', 'address' => array( 'lines' => "458 Walkman Dr.\nSuite #292\n", 'city' => 'Royal Oak', 'state' => 'MI', 'postal' => 48046 ) )
- , 'product' =>
- array(
- array( 'sku' => 'BL394D', 'quantity' => 4, 'description' => 'Basketball', 'price' => 450.00 ),
- array( 'sku' => 'BL4438H', 'quantity' => 1, 'description' => 'Super Hoop', 'price' => 2392.00 )
- ),
- 'tax' => 251.42, 'total' => 4443.52,
- 'comments' => "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.\n"
- )
- ---
- test: Log file
- todo: true
- spec: 2.28
- yaml: |
- ---
- Time: 2001-11-23 15:01:42 -05:00
- User: ed
- Warning: >
- This is an error message
- for the log file
- ---
- Time: 2001-11-23 15:02:31 -05:00
- User: ed
- Warning: >
- A slightly different error
- message.
- ---
- Date: 2001-11-23 15:03:17 -05:00
- User: ed
- Fatal: >
- Unknown variable "bar"
- Stack:
- - file: TopClass.py
- line: 23
- code: |
- x = MoreObject("345\n")
- - file: MoreClass.py
- line: 58
- code: |-
- foo = bar
- ruby: |
- y = YAML::Stream.new
- y.add( { 'Time' => YAML::mktime( 2001, 11, 23, 15, 01, 42, 00, "-05:00" ),
- 'User' => 'ed', 'Warning' => "This is an error message for the log file\n" } )
- y.add( { 'Time' => YAML::mktime( 2001, 11, 23, 15, 02, 31, 00, "-05:00" ),
- 'User' => 'ed', 'Warning' => "A slightly different error message.\n" } )
- y.add( { 'Date' => YAML::mktime( 2001, 11, 23, 15, 03, 17, 00, "-05:00" ),
- 'User' => 'ed', 'Fatal' => "Unknown variable \"bar\"\n",
- 'Stack' => [
- { 'file' => 'TopClass.py', 'line' => 23, 'code' => "x = MoreObject(\"345\\n\")\n" },
- { 'file' => 'MoreClass.py', 'line' => 58, 'code' => "foo = bar" } ] } )
- documents: 3
- ---
- test: Throwaway comments
- yaml: |
- ### These are four throwaway comment ###
- ### lines (the second line is empty). ###
- this: | # Comments may trail lines.
- contains three lines of text.
- The third one starts with a
- # character. This isn't a comment.
- # These are three throwaway comment
- # lines (the first line is empty).
- php: |
- array(
- 'this' => "contains three lines of text.\nThe third one starts with a\n# character. This isn't a comment.\n"
- )
- ---
- test: Document with a single value
- todo: true
- yaml: |
- --- >
- This YAML stream contains a single text value.
- The next stream is a log file - a sequence of
- log entries. Adding an entry to the log is a
- simple matter of appending it at the end.
- ruby: |
- "This YAML stream contains a single text value. The next stream is a log file - a sequence of log entries. Adding an entry to the log is a simple matter of appending it at the end.\n"
- ---
- test: Document stream
- todo: true
- yaml: |
- ---
- at: 2001-08-12 09:25:00.00 Z
- type: GET
- HTTP: '1.0'
- url: '/index.html'
- ---
- at: 2001-08-12 09:25:10.00 Z
- type: GET
- HTTP: '1.0'
- url: '/toc.html'
- ruby: |
- y = YAML::Stream.new
- y.add( {
- 'at' => Time::utc( 2001, 8, 12, 9, 25, 00 ),
- 'type' => 'GET',
- 'HTTP' => '1.0',
- 'url' => '/index.html'
- } )
- y.add( {
- 'at' => Time::utc( 2001, 8, 12, 9, 25, 10 ),
- 'type' => 'GET',
- 'HTTP' => '1.0',
- 'url' => '/toc.html'
- } )
- documents: 2
- ---
- test: Top level mapping
- yaml: |
- # This stream is an example of a top-level mapping.
- invoice : 34843
- date : 2001-01-23
- total : 4443.52
- php: |
- array(
- 'invoice' => 34843,
- 'date' => mktime(0, 0, 0, 1, 23, 2001),
- 'total' => 4443.52
- )
- ---
- test: Single-line documents
- todo: true
- yaml: |
- # The following is a sequence of three documents.
- # The first contains an empty mapping, the second
- # an empty sequence, and the last an empty string.
- --- {}
- --- [ ]
- --- ''
- ruby: |
- y = YAML::Stream.new
- y.add( {} )
- y.add( [] )
- y.add( '' )
- documents: 3
- ---
- test: Document with pause
- todo: true
- yaml: |
- # A communication channel based on a YAML stream.
- ---
- sent at: 2002-06-06 11:46:25.10 Z
- payload: Whatever
- # Receiver can process this as soon as the following is sent:
- ...
- # Even if the next message is sent long after:
- ---
- sent at: 2002-06-06 12:05:53.47 Z
- payload: Whatever
- ...
- ruby: |
- y = YAML::Stream.new
- y.add(
- { 'sent at' => YAML::mktime( 2002, 6, 6, 11, 46, 25, 0.10 ),
- 'payload' => 'Whatever' }
- )
- y.add(
- { "payload" => "Whatever", "sent at" => YAML::mktime( 2002, 6, 6, 12, 5, 53, 0.47 ) }
- )
- documents: 2
- ---
- test: Explicit typing
- yaml: |
- integer: 12
- also int: ! "12"
- string: !str 12
- php: |
- array( 'integer' => 12, 'also int' => 12, 'string' => '12' )
- ---
- test: Private types
- todo: true
- yaml: |
- # Both examples below make use of the 'x-private:ball'
- # type family URI, but with different semantics.
- ---
- pool: !!ball
- number: 8
- color: black
- ---
- bearing: !!ball
- material: steel
- ruby: |
- y = YAML::Stream.new
- y.add( { 'pool' =>
- YAML::PrivateType.new( 'ball',
- { 'number' => 8, 'color' => 'black' } ) }
- )
- y.add( { 'bearing' =>
- YAML::PrivateType.new( 'ball',
- { 'material' => 'steel' } ) }
- )
- documents: 2
- ---
- test: Type family under yaml.org
- yaml: |
- # The URI is 'tag:yaml.org,2002:str'
- - !str a Unicode string
- php: |
- array( 'a Unicode string' )
- ---
- test: Type family under perl.yaml.org
- todo: true
- yaml: |
- # The URI is 'tag:perl.yaml.org,2002:Text::Tabs'
- - !perl/Text::Tabs {}
- ruby: |
- [ YAML::DomainType.new( 'perl.yaml.org,2002', 'Text::Tabs', {} ) ]
- ---
- test: Type family under clarkevans.com
- todo: true
- yaml: |
- # The URI is 'tag:clarkevans.com,2003-02:timesheet'
- - !clarkevans.com,2003-02/timesheet {}
- ruby: |
- [ YAML::DomainType.new( 'clarkevans.com,2003-02', 'timesheet', {} ) ]
- ---
- test: URI Escaping
- todo: true
- yaml: |
- same:
- - !domain.tld,2002/type\x30 value
- - !domain.tld,2002/type0 value
- different: # As far as the YAML parser is concerned
- - !domain.tld,2002/type%30 value
- - !domain.tld,2002/type0 value
- ruby-setup: |
- YAML.add_domain_type( "domain.tld,2002", "type0" ) { |type, val|
- "ONE: #{val}"
- }
- YAML.add_domain_type( "domain.tld,2002", "type%30" ) { |type, val|
- "TWO: #{val}"
- }
- ruby: |
- { 'same' => [ 'ONE: value', 'ONE: value' ], 'different' => [ 'TWO: value', 'ONE: value' ] }
- ---
- test: URI Prefixing
- todo: true
- yaml: |
- # 'tag:domain.tld,2002:invoice' is some type family.
- invoice: !domain.tld,2002/^invoice
- # 'seq' is shorthand for 'tag:yaml.org,2002:seq'.
- # This does not effect '^customer' below
- # because it is does not specify a prefix.
- customers: !seq
- # '^customer' is shorthand for the full
- # notation 'tag:domain.tld,2002:customer'.
- - !^customer
- given : Chris
- family : Dumars
- ruby-setup: |
- YAML.add_domain_type( "domain.tld,2002", /(invoice|customer)/ ) { |type, val|
- if val.is_a? ::Hash
- scheme, domain, type = type.split( /:/, 3 )
- val['type'] = "domain #{type}"
- val
- else
- raise YAML::Error, "Not a Hash in domain.tld/invoice: " + val.inspect
- end
- }
- ruby: |
- { "invoice"=> { "customers"=> [ { "given"=>"Chris", "type"=>"domain customer", "family"=>"Dumars" } ], "type"=>"domain invoice" } }
- ---
- test: Overriding anchors
- yaml: |
- anchor : &A001 This scalar has an anchor.
- override : &A001 >
- The alias node below is a
- repeated use of this value.
- alias : *A001
- php: |
- array( 'anchor' => 'This scalar has an anchor.',
- 'override' => "The alias node below is a repeated use of this value.\n",
- 'alias' => "The alias node below is a repeated use of this value.\n" )
- ---
- test: Flow and block formatting
- todo: true
- yaml: |
- empty: []
- flow: [ one, two, three # May span lines,
- , four, # indentation is
- five ] # mostly ignored.
- block:
- - First item in top sequence
- -
- - Subordinate sequence entry
- - >
- A folded sequence entry
- - Sixth item in top sequence
- ruby: |
- { 'empty' => [], 'flow' => [ 'one', 'two', 'three', 'four', 'five' ],
- 'block' => [ 'First item in top sequence', [ 'Subordinate sequence entry' ],
- "A folded sequence entry\n", 'Sixth item in top sequence' ] }
- ---
- test: Complete mapping test
- todo: true
- yaml: |
- empty: {}
- flow: { one: 1, two: 2 }
- spanning: { one: 1,
- two: 2 }
- block:
- first : First entry
- second:
- key: Subordinate mapping
- third:
- - Subordinate sequence
- - { }
- - Previous mapping is empty.
- - A key: value pair in a sequence.
- A second: key:value pair.
- - The previous entry is equal to the following one.
- -
- A key: value pair in a sequence.
- A second: key:value pair.
- !float 12 : This key is a float.
- ? >
- ?
- : This key had to be protected.
- "\a" : This key had to be escaped.
- ? >
- This is a
- multi-line
- folded key
- : Whose value is
- also multi-line.
- ? this also works as a key
- : with a value at the next line.
- ?
- - This key
- - is a sequence
- :
- - With a sequence value.
- ?
- This: key
- is a: mapping
- :
- with a: mapping value.
- ruby: |
- { 'empty' => {}, 'flow' => { 'one' => 1, 'two' => 2 },
- 'spanning' => { 'one' => 1, 'two' => 2 },
- 'block' => { 'first' => 'First entry', 'second' =>
- { 'key' => 'Subordinate mapping' }, 'third' =>
- [ 'Subordinate sequence', {}, 'Previous mapping is empty.',
- { 'A key' => 'value pair in a sequence.', 'A second' => 'key:value pair.' },
- 'The previous entry is equal to the following one.',
- { 'A key' => 'value pair in a sequence.', 'A second' => 'key:value pair.' } ],
- 12.0 => 'This key is a float.', "?\n" => 'This key had to be protected.',
- "\a" => 'This key had to be escaped.',
- "This is a multi-line folded key\n" => "Whose value is also multi-line.",
- 'this also works as a key' => 'with a value at the next line.',
- [ 'This key', 'is a sequence' ] => [ 'With a sequence value.' ] } }
- # Couldn't recreate map exactly, so we'll do a detailed check to be sure it's entact
- obj_y['block'].keys.each { |k|
- if Hash === k
- v = obj_y['block'][k]
- if k['This'] == 'key' and k['is a'] == 'mapping' and v['with a'] == 'mapping value.'
- obj_r['block'][k] = v
- end
- end
- }
- ---
- test: Literal explicit indentation
- yaml: |
- # Explicit indentation must
- # be given in all the three
- # following cases.
- leading spaces: |2
- This value starts with four spaces.
- leading line break: |2
- This value starts with a line break.
- leading comment indicator: |2
- # first line starts with a
- # character.
- # Explicit indentation may
- # also be given when it is
- # not required.
- redundant: |2
- This value is indented 2 spaces.
- php: |
- array(
- 'leading spaces' => " This value starts with four spaces.\n",
- 'leading line break' => "\nThis value starts with a line break.\n",
- 'leading comment indicator' => "# first line starts with a\n# character.\n",
- 'redundant' => "This value is indented 2 spaces.\n"
- )
- ---
- test: Chomping and keep modifiers
- yaml: |
- clipped: |
- This has one newline.
- same as "clipped" above: "This has one newline.\n"
- stripped: |-
- This has no newline.
- same as "stripped" above: "This has no newline."
- kept: |+
- This has two newlines.
- same as "kept" above: "This has two newlines.\n\n"
- php: |
- array(
- 'clipped' => "This has one newline.\n",
- 'same as "clipped" above' => "This has one newline.\n",
- 'stripped' => 'This has no newline.',
- 'same as "stripped" above' => 'This has no newline.',
- 'kept' => "This has two newlines.\n\n",
- 'same as "kept" above' => "This has two newlines.\n\n"
- )
- ---
- test: Literal combinations
- todo: true
- yaml: |
- empty: |
- literal: |
- The \ ' " characters may be
- freely used. Leading white
- space is significant.
- Line breaks are significant.
- Thus this value contains one
- empty line and ends with a
- single line break, but does
- not start with one.
- is equal to: "The \\ ' \" characters may \
- be\nfreely used. Leading white\n space \
- is significant.\n\nLine breaks are \
- significant.\nThus this value contains \
- one\nempty line and ends with a\nsingle \
- line break, but does\nnot start with one.\n"
- # Comments may follow a block
- # scalar value. They must be
- # less indented.
- # Modifiers may be combined in any order.
- indented and chomped: |2-
- This has no newline.
- also written as: |-2
- This has no newline.
- both are equal to: " This has no newline."
- php: |
- array(
- 'empty' => '',
- 'literal' => "The \\ ' \" characters may be\nfreely used. Leading white\n space " +
- "is significant.\n\nLine breaks are significant.\nThus this value contains one\n" +
- "empty line and ends with a\nsingle line break, but does\nnot start with one.\n",
- 'is equal to' => "The \\ ' \" characters may be\nfreely used. Leading white\n space " +
- "is significant.\n\nLine breaks are significant.\nThus this value contains one\n" +
- "empty line and ends with a\nsingle line break, but does\nnot start with one.\n",
- 'indented and chomped' => ' This has no newline.',
- 'also written as' => ' This has no newline.',
- 'both are equal to' => ' This has no newline.'
- )
- ---
- test: Folded combinations
- todo: true
- yaml: |
- empty: >
- one paragraph: >
- Line feeds are converted
- to spaces, so this value
- contains no line breaks
- except for the final one.
- multiple paragraphs: >2
- An empty line, either
- at the start or in
- the value:
- Is interpreted as a
- line break. Thus this
- value contains three
- line breaks.
- indented text: >
- This is a folded
- paragraph followed
- by a list:
- * first entry
- * second entry
- Followed by another
- folded paragraph,
- another list:
- * first entry
- * second entry
- And a final folded
- paragraph.
- above is equal to: |
- This is a folded paragraph followed by a list:
- * first entry
- * second entry
- Followed by another folded paragraph, another list:
- * first entry
- * second entry
- And a final folded paragraph.
- # Explicit comments may follow
- # but must be less indented.
- php: |
- array(
- 'empty' => '',
- 'one paragraph' => 'Line feeds are converted to spaces, so this value'.
- " contains no line breaks except for the final one.\n",
- 'multiple paragraphs' => "\nAn empty line, either at the start or in the value:\n".
- "Is interpreted as a line break. Thus this value contains three line breaks.\n",
- 'indented text' => "This is a folded paragraph followed by a list:\n".
- " * first entry\n * second entry\nFollowed by another folded paragraph, ".
- "another list:\n\n * first entry\n\n * second entry\n\nAnd a final folded paragraph.\n",
- 'above is equal to' => "This is a folded paragraph followed by a list:\n".
- " * first entry\n * second entry\nFollowed by another folded paragraph, ".
- "another list:\n\n * first entry\n\n * second entry\n\nAnd a final folded paragraph.\n"
- )
- ---
- test: Single quotes
- todo: true
- yaml: |
- empty: ''
- second: '! : \ etc. can be used freely.'
- third: 'a single quote '' must be escaped.'
- span: 'this contains
- six spaces
- and one
- line break'
- is same as: "this contains six spaces\nand one line break"
- php: |
- array(
- 'empty' => '',
- 'second' => '! : \\ etc. can be used freely.',
- 'third' => "a single quote ' must be escaped.",
- 'span' => "this contains six spaces\nand one line break",
- 'is same as' => "this contains six spaces\nand one line break"
- )
- ---
- test: Double quotes
- todo: true
- yaml: |
- empty: ""
- second: "! : etc. can be used freely."
- third: "a \" or a \\ must be escaped."
- fourth: "this value ends with an LF.\n"
- span: "this contains
- four \
- spaces"
- is equal to: "this contains four spaces"
- php: |
- array(
- 'empty' => '',
- 'second' => '! : etc. can be used freely.',
- 'third' => 'a " or a \\ must be escaped.',
- 'fourth' => "this value ends with an LF.\n",
- 'span' => "this contains four spaces",
- 'is equal to' => "this contains four spaces"
- )
- ---
- test: Unquoted strings
- todo: true
- yaml: |
- first: There is no unquoted empty string.
- second: 12 ## This is an integer.
- third: !str 12 ## This is a string.
- span: this contains
- six spaces
- and one
- line break
- indicators: this has no comments.
- #:foo and bar# are
- both text.
- flow: [ can span
- lines, # comment
- like
- this ]
- note: { one-line keys: but multi-line values }
- php: |
- array(
- 'first' => 'There is no unquoted empty string.',
- 'second' => 12,
- 'third' => '12',
- 'span' => "this contains six spaces\nand one line break",
- 'indicators' => "this has no comments. #:foo and bar# are both text.",
- 'flow' => [ 'can span lines', 'like this' ],
- 'note' => { 'one-line keys' => 'but multi-line values' }
- )
- ---
- test: Spanning sequences
- todo: true
- yaml: |
- # The following are equal seqs
- # with different identities.
- flow: [ one, two ]
- spanning: [ one,
- two ]
- block:
- - one
- - two
- php: |
- array(
- 'flow' => [ 'one', 'two' ],
- 'spanning' => [ 'one', 'two' ],
- 'block' => [ 'one', 'two' ]
- )
- ---
- test: Flow mappings
- yaml: |
- # The following are equal maps
- # with different identities.
- flow: { one: 1, two: 2 }
- block:
- one: 1
- two: 2
- php: |
- array(
- 'flow' => array( 'one' => 1, 'two' => 2 ),
- 'block' => array( 'one' => 1, 'two' => 2 )
- )
- ---
- test: Representations of 12
- todo: true
- yaml: |
- - 12 # An integer
- # The following scalars
- # are loaded to the
- # string value '1' '2'.
- - !str 12
- - '12'
- - "12"
- - "\
- 1\
- 2\
- "
- # Strings containing paths and regexps can be unquoted:
- - /foo/bar
- - d:/foo/bar
- - foo/bar
- - /a.*b/
- php: |
- array( 12, '12', '12', '12', '12', '/foo/bar', 'd:/foo/bar', 'foo/bar', '/a.*b/' )
- ---
- test: "Null"
- todo: true
- yaml: |
- canonical: ~
- english: null
- # This sequence has five
- # entries, two with values.
- sparse:
- - ~
- - 2nd entry
- - Null
- - 4th entry
- -
- four: This mapping has five keys,
- only two with values.
- php: |
- array (
- 'canonical' => null,
- 'english' => null,
- 'sparse' => array( null, '2nd entry', null, '4th entry', null ]),
- 'four' => 'This mapping has five keys, only two with values.'
- )
- ---
- test: Omap
- todo: true
- yaml: |
- # Explicitly typed dictionary.
- Bestiary: !omap
- - aardvark: African pig-like ant eater. Ugly.
- - anteater: South-American ant eater. Two species.
- - anaconda: South-American constrictor snake. Scary.
- # Etc.
- ruby: |
- {
- 'Bestiary' => YAML::Omap[
- 'aardvark', 'African pig-like ant eater. Ugly.',
- 'anteater', 'South-American ant eater. Two species.',
- 'anaconda', 'South-American constrictor snake. Scary.'
- ]
- }
- ---
- test: Pairs
- todo: true
- yaml: |
- # Explicitly typed pairs.
- tasks: !pairs
- - meeting: with team.
- - meeting: with boss.
- - break: lunch.
- - meeting: with client.
- ruby: |
- {
- 'tasks' => YAML::Pairs[
- 'meeting', 'with team.',
- 'meeting', 'with boss.',
- 'break', 'lunch.',
- 'meeting', 'with client.'
- ]
- }
- ---
- test: Set
- todo: true
- yaml: |
- # Explicitly typed set.
- baseball players: !set
- Mark McGwire:
- Sammy Sosa:
- Ken Griffey:
- ruby: |
- {
- 'baseball players' => YAML::Set[
- 'Mark McGwire', nil,
- 'Sammy Sosa', nil,
- 'Ken Griffey', nil
- ]
- }
- ---
- test: Boolean
- yaml: |
- false: used as key
- logical: true
- answer: false
- php: |
- array(
- false => 'used as key',
- 'logical' => true,
- 'answer' => false
- )
- ---
- test: Integer
- yaml: |
- canonical: 12345
- decimal: +12,345
- octal: 014
- hexadecimal: 0xC
- php: |
- array(
- 'canonical' => 12345,
- 'decimal' => 12345,
- 'octal' => 12,
- 'hexadecimal' => 12
- )
- ---
- test: Float
- yaml: |
- canonical: 1.23015e+3
- exponential: 12.3015e+02
- fixed: 1,230.15
- negative infinity: -.inf
- not a number: .NaN
- php: |
- array(
- 'canonical' => 1230.15,
- 'exponential' => 1230.15,
- 'fixed' => 1230.15,
- 'negative infinity' => log(0),
- 'not a number' => -log(0)
- )
- ---
- test: Timestamp
- todo: true
- yaml: |
- canonical: 2001-12-15T02:59:43.1Z
- valid iso8601: 2001-12-14t21:59:43.10-05:00
- space separated: 2001-12-14 21:59:43.10 -05:00
- date (noon UTC): 2002-12-14
- ruby: |
- array(
- 'canonical' => YAML::mktime( 2001, 12, 15, 2, 59, 43, 0.10 ),
- 'valid iso8601' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ),
- 'space separated' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ),
- 'date (noon UTC)' => Date.new( 2002, 12, 14 )
- )
- ---
- test: Binary
- todo: true
- yaml: |
- canonical: !binary "\
- R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5\
- OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+\
- +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC\
- AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs="
- base64: !binary |
- R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5
- OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+
- +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC
- AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=
- description: >
- The binary value above is a tiny arrow
- encoded as a gif image.
- ruby-setup: |
- arrow_gif = "GIF89a\f\000\f\000\204\000\000\377\377\367\365\365\356\351\351\345fff\000\000\000\347\347\347^^^\363\363\355\216\216\216\340\340\340\237\237\237\223\223\223\247\247\247\236\236\236iiiccc\243\243\243\204\204\204\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371!\376\016Made with GIMP\000,\000\000\000\000\f\000\f\000\000\005, \216\2010\236\343@\024\350i\020\304\321\212\010\034\317\200M$z\357\3770\205p\270\2601f\r\e\316\001\303\001\036\020' \202\n\001\000;"
- ruby: |
- {
- 'canonical' => arrow_gif,
- 'base64' => arrow_gif,
- 'description' => "The binary value above is a tiny arrow encoded as a gif image.\n"
- }
- ---
- test: Merge key
- todo: true
- yaml: |
- ---
- - &CENTER { x: 1, y: 2 }
- - &LEFT { x: 0, y: 2 }
- - &BIG { r: 10 }
- - &SMALL { r: 1 }
- # All the following maps are equal:
- - # Explicit keys
- x: 1
- y: 2
- r: 10
- label: center/big
- - # Merge one map
- << : *CENTER
- r: 10
- label: center/big
- - # Merge multiple maps
- << : [ *CENTER, *BIG ]
- label: center/big
- - # Override
- << : [ *BIG, *LEFT, *SMALL ]
- x: 1
- label: center/big
- ruby-setup: |
- center = { 'x' => 1, 'y' => 2 }
- left = { 'x' => 0, 'y' => 2 }
- big = { 'r' => 10 }
- small = { 'r' => 1 }
- node1 = { 'x' => 1, 'y' => 2, 'r' => 10, 'label' => 'center/big' }
- node2 = center.dup
- node2.update( { 'r' => 10, 'label' => 'center/big' } )
- node3 = big.dup
- node3.update( center )
- node3.update( { 'label' => 'center/big' } )
- node4 = small.dup
- node4.update( left )
- node4.update( big )
- node4.update( { 'x' => 1, 'label' => 'center/big' } )
- ruby: |
- [
- center, left, big, small, node1, node2, node3, node4
- ]
- ---
- test: Default key
- todo: true
- yaml: |
- --- # Old schema
- link with:
- - library1.dll
- - library2.dll
- --- # New schema
- link with:
- - = : library1.dll
- version: 1.2
- - = : library2.dll
- version: 2.3
- ruby: |
- y = YAML::Stream.new
- y.add( { 'link with' => [ 'library1.dll', 'library2.dll' ] } )
- obj_h = Hash[ 'version' => 1.2 ]
- obj_h.default = 'library1.dll'
- obj_h2 = Hash[ 'version' => 2.3 ]
- obj_h2.default = 'library2.dll'
- y.add( { 'link with' => [ obj_h, obj_h2 ] } )
- documents: 2
- ---
- test: Special keys
- todo: true
- yaml: |
- "!": These three keys
- "&": had to be quoted
- "=": and are normal strings.
- # NOTE: the following node should NOT be serialized this way.
- encoded node :
- !special '!' : '!type'
- !special|canonical '&' : 12
- = : value
- # The proper way to serialize the above node is as follows:
- node : !!type &12 value
- ruby: |
- { '!' => 'These three keys', '&' => 'had to be quoted',
- '=' => 'and are normal strings.',
- 'encoded node' => YAML::PrivateType.new( 'type', 'value' ),
- 'node' => YAML::PrivateType.new( 'type', 'value' ) }
|