YAML, introduktion: Difference between revisions
Linuxwiki>Wikiadmin |
m 10 revisions imported |
(No difference)
| |
Latest revision as of 17:04, 11 May 2026
Introduktion till YAML
YAML står för "YAML Ain't Markup Language"
Grundläggande
- Använd aldrig TAB som indentering. Normal indentering är två stycken mellanslag.
- Sequences / lists är t ex [ 1, 2, 3, 4 ]
- Mapping / dictionaries är nyckel-värde-par. T ex code: 1342
- Scalars är strängar och värden.
- Kommentar börjar med #
- Dokument börjar med ---
- Data serialization language betyder att YAML syntax kan bli konverterad till text.
Byggblock
YAML består av sequences (dvs listor, arrayer), mappings (dvs nyckel-värde-par), scalars (dvs värden, strängar, nummer, booleans, datum).
Sequences
Det finns två stilar. Antingen "Block style" som är YAMLs egna stil eller "Flow style" som är av JSON-stil.
Exempel på block style:
- första objektet i listan - andra objektet i listan - tredje objektet i listan
Exempel på lista med olika programspråk i block style:
- yaml - php - java - C#
Exempel på flow style:
[objekt1, objekt2, objekt3, objekt4]
Exempel på flow style med programspråk:
[yaml, php, java, C#]
Mapping
Mapping, eller dictionaries, är ett nyckel: värde-par. Notera att det ska vara ett mellanslag efter :
Andra namn på mapping är dictionary, hash, key-value pair.
Mappings förekommer både som block style och flowstyle.
Exempel på block style:
key: value list: - first item - second item - third item
I exemplet med list är nyckeln "list" och värdet är listan "first item, second item och third item". Hade det skrivits i flow style hade det sett ut så här:
{ list: [first item, second item, third item] }
Scalar
Scalars är grundläggande värden som strängar, siffror, tal, booleans, datum. Kan anges som "Flow scalar" eller "Block scalar".
Exempel:
Tool: yaml version: 1.2 awesome: true nothing: null
I exemplet ovan är både nyckel och värdet en scalar.
Fler exempel på grundläggande scalar:
name: gnutten noquotes: vad som helst utan citat-tecken quotes: "vad som helst med citat-tecken" single: 'vad som helst inom enkelfnutt' float: 1.2 octal: 012123111 hexa: 0xABC boolean: true nothing: null moreWeirdStuff: '# Detta är inte en kommentar'
- Undvik enkelfnuttar ifall man vill hantera escapetecken (\). Text inom enkelfnuttar översätter inte escapetecken.
- Tänk på att alla tal som börjar med en nolla kommer att tolkas som ett oktalt tal.
Dates
Exempel:
timestamp: 2022-03-22T22:19:56. 10+02:00 simple_date: 2022-03-22 not_a_date: !!str 2022-03-22
Comments
Kommentarer överlever inte serialization. En kommentar börjar med ett #-tecken och allt efter detta räknas som en kommentar.
Documents
En fil kan innehålla flera dokument. Varje dokument börjar med --- (tre minustecken) och kan avslutas med tre punkter ...
Exempel:
tool: yaml version: 1.2 awesome: true --- Detta är ett nytt dokument --- Detta är ytterligare ett dokument
Annat exempel:
language: yaml
version: 1.2.2
---
Something new (om första vardet
inte börjar med en
nyckel kan inte
nästa heller göra det)
---
key: value
Repeated nodes
Det som ska upprepas börjar med & och får att åberopa detta använder man *. Definitionen initieras alltså med & och skrivs/används med hjälp av *. Exempel:
key: &repeated Hi there new_key: *repeated
Större exempel:
person: &person
name: Maaike
age: 30
address:
streetname: Langstraat
number: 1
zipcode: 1234AB
city: Amsterdam
country: The Netherlands
another_person: *person
Man kan återanvända en node och byta ut enstaka fält med <<-tecken. Exempel:
person: &person
name: Maaike
age: 30
address:
streetname: Langstraat
number: 1
zipcode: 1234AB
city: Amsterdam
country: The Netherlands
another_person: *person
yet_another_person:
<<: *person
name: maria