YAML Cheat Sheet

YAML Basics
Scalar types

n1: 1            # integer          
n2: 1.234        # float      

s1: 'abc'        # string
s2: "abc"        # string
s3: abc          # string

b: false         # boolean type

d: 2015-04-05    # date type
                    
Variables

some_thing: &VAR_NAME foobar
other_thing: *VAR_NAME
                    
Comments

# A single line comment example

# block level comment example
# comment line 1
# comment line 2
# comment line 3
                    
Multiline strings

description: |
  hello
  world
                    
Inheritance

parent: &defaults
  a: 2
  b: 3

child:
  <<: *defaults
  b: 4
                    
Reference

values: &ref
  - Will be
  - reused below
  
other_values:
  i_am_ref: *ref
                    
Folded strings

description: >
  hello
  world
                    
Two Documents

---
document: this is doc 1
---
document: this is doc 2
                    

YAML uses --- to separate directives from document content.

YAML Collections
Sequence

- Mark McGwire
- Sammy Sosa
- Ken Griffey                        
                    
Mapping

hr:  65       # Home runs
avg: 0.278    # Batting average
rbi: 147      # Runs Batted In              
                    
Mapping to Sequences

attributes:
  - a1
  - a2
methods: [getter, setter]
                    
Sequence of Mappings

children:
  - name: Jimmy Smith
    age: 15
  - name: Jimmy Smith
    age: 15
  -
    name: Sammy Sosa
    age: 12
                    
Mapping of Mappings

Mark McGwire: {hr: 65, avg: 0.278}
Sammy Sosa: {
    hr: 63,
    avg: 0.288
  }
                    
Sequence of Sequences

my_sequences:
  - [1, 2, 3]
  - [4, 5, 6]
  -  
    - 7
    - 8
    - 9
    - 0
Nested Collections

Jack:
  id: 1
  name: Franc
  salary: 25000
  hobby:
    - a
    - b
  location: {country: "A", city: "A-A"}
                
Unordered Sets

set1: !!set
  ? one
  ? two
set2: !!set {'one', "two"}
                    

Sets are represented as a Mapping where each key is associated with a null value

Ordered Mappings

ordered: !!omap
- Mark McGwire: 65
- Sammy Sosa: 63
- Ken Griffy: 58
YAML Reference
Terms
  • Sequences aka arrays or lists
  • Scalars aka strings or numbers
  • Mappings aka hashes or dictionaries
  • Based on the YAML.org refcard.
More types
!!set
{cherries, plums, apples}
!!omap
[one: 1, two: 2]
Tag Property (usually unspecified)
none
Unspecified tag (automatically resolved by application)
!
Non-specific tag (by default, !!map/!!seq/!!str)
!foo
Primary (by convention, means a local !foo tag)
!!foo
Secondary (by convention, means tag:yaml.org,2002:foo)
!h!foo
Requires %TAG !h! (and then means foo)
!
Verbatim tag (always means foo)
Language Independent Scalar Types
{~, null}
Null (no value).
[1234, 0x4D2, 02333]
[Decimal int, Hexadecimal int, Octal int]
[1_230.15, 12.3015e+02]
[Fixed float, Exponential float]
[.inf, -.Inf, .NAN]
[Infinity (float), Negative, Not a number]
{Y, true, Yes, ON}
Boolean true
{n, FALSE, No, off}
Boolean false
Collection indicators
?
Key indicator
:
Value indicator
-
Nested series entry indicator
,
Separate in-line branch entries
[]
Surround in-line series branch
{}
Surround in-line keyed branch
Scalar indicators
''
Surround in-line unescaped scalar
"
Surround in-line escaped scalar
|
Block scalar indicator
>
Folded scalar indicator
-
Strip chomp modifier (|- or >-)
+
Keep chomp modifier (|+ or >+)
1-9
Explicit indentation modifier (|1 or >2).

Modifiers can be combined (|2-, >+1)

Special keys
=
Default "value" mapping key
<<
Merge keys from another mapping
Misc indicators
#
Throwaway comment indicator
`@
Both reserved for future use
Core types (default automatic tags)
!!map
{Hash table, dictionary, mapping}
!!seq
{List, array, tuple, vector, sequence}
!!str
Unicode string
Document indicators
%
Directive indicator
---
Document header
...
Document terminator
Alias indicators
&
Anchor property
*
Alias indicator



YAML Tutorial | Learn YAML in 10 Minutes

Good specifications will always improve programmer productivity far better than any programming tool or technique.

Milt Bryce

CodersTool Categories