YAML, introduktion: Difference between revisions

From Linuxwiki
Jump to navigation Jump to search
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


Kategori:YAML