Welcome to Day 76 of the #100DaysOfDevOps Challenge! Today we will see about Basic Syntax's part - 2 in YAML Language
Strings
# Strings don't require quotes:
title: Introduction to YAML
# But you can still use them:
title-w-quotes: 'Introduction to YAML'
# Multiline strings start with |
execute: |
npm ci
npm build
npm test
The above code will translate to JSON as:
{
"title": "Introduction to YAML",
"title-w-quotes": "Introduction to YAML",
"execute": "npm ci\nnpm build\nnpm test\n"
}
Numbers
# Integers:
age: 29
# Float:
price: 15.99
# Scientific notation:
population: 2.89e+6
The above code will translate to JSON as:
{
"age": 29,
"price": 15.99,
"population": 2890000
}
Boolean
# Boolean values can be written in different ways:
published: false
published: False
published: FALSE
All of the above will translate to JSON as:
{
"published": false
}
Null values
# Null can be represented by simply not setting a value:
null-value:
# Or more explicitly:
null-value: null
null-value: NULL
null-value: Null
All of the above will translate to JSON as:
{
"null-value": null
}
Dates & timestamps
ISO-Formatted dates can be used, like so:
date: 2002-12-14
canonical: 2001-12-15T02:59:43.1Z
iso8601: 2001-12-14t21:59:43.10-05:00
spaced: 2001-12-14 21:59:43.10 -5
Sequences
Sequences allow us to define lists in YAML:
# A list of numbers using hyphens:
numbers:
- one
- two
- three
# The inline version:
numbers: [ one, two, three ]
Both of the above sequences will parse to JSON as:
{
"numbers": [
"one",
"two",
"three"
]
}
Nested values
We can use all of the above types to create an object with nested values, like so:
# Nineteen eighty four novel data.
nineteen-eighty-four:
author: George Orwell
published-at: 1949-06-08
page-count: 328
description: |
A Novel, often published as 1984, is a dystopian novel by English novelist George Orwell.
It was published in June 1949 by Secker & Warburg as Orwell's ninth and final book.
Which will translate to JSON as:
{
"nineteen-eighty-four": {
"author": "George Orwell",
"published-at": "1949-06-08T00:00:00.000Z",
"page-count": 328,
"description": "A Novel, often published as 1984, is a dystopian novel by English novelist George Orwell.\nIt was published in June 1949 by Secker & Warburg as Orwell's ninth and final book.\n"
}
}
List of objects
Combining sequences and nested values together we can create a lists of objects.
# Let's list books:
- nineteen-eighty-four:
author: George Orwell
published-at: 1949-06-08
page-count: 328
description: |
A Novel, often published as 1984, is a dystopian novel by English novelist George Orwell.
- the-hobbit:
author: J. R. R. Tolkien
published-at: 1937-09-21
page-count: 310
description: |
The Hobbit, or There and Back Again is a children's fantasy novel by English author J. R. R. Tolkien.
Distinctive Features
The following are some more complex features that caught my attention and that also differentiate YAML from JSON.
Comments
As you've probably already noticed in my prior examples, YAML allows comments starting with #
.
# This is a really useful comment.