YAML, introduktion: Difference between revisions
Linuxwiki>Wikiadmin No edit summary |
m 10 revisions imported |
||
| (6 intermediate revisions by one other user not shown) | |||
| Line 50: | Line 50: | ||
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: | 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] | { 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''' | |||
[[Kategori:YAML]] | [[Kategori:YAML]] | ||
Latest revision as of 21:53, 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