YAML Grundlagen
by Edi · 24/10/2020
Ursprünglich stand YAML für „Yet Another Markup Language“ aber seit 2002 verbirgt sich dahinter das Akronym „YAML Ain‘t Markup Language“. Somit definiert sich YAML als eine Auszeichnungssprache, die keine ist.
YAML ist designed um sehr leicht leserlich zu sein, dass sollten wir beim Programmieren beachten. Wir müssen mit Leerzeichen arbeiten und jeder Wert muss genau untereinander eingerückt sein, um in den gleichen Block übernommen zu werden. Mit — wird der Beginn eines neuen Abschnitts markiert und wie bei allen Programmiersprachen, kann und soll man auch mit YAML Kommentare schreiben, die nicht ausgeführt werden.
Datentypen
In YAML werden die Datentypen automatisch zugewiesen, sehen wir uns ein paar Beispiele von den wichtigsten Datentypen an.
Alphanumerische Daten Typen
Strings können mit einfachen, doppelten oder ganz ohne Anführungszeichen geschrieben werden.
String1: 'Edis Techlab' String2: "Edis Techlab" String3: Edis Techlab
Numerische Daten Typen
Integer: 25
Octal: 014
Hexadecimal: 0xC
Float: 3.1415
Exp: 12.302e+5
Boolean: true # true/false oder yes/no oder on/off
Date: 2020-10-16 17:43:21 #ISO 8601 JJJJ-MM-TT hh:mm:ss
Daten Typen ändern
Die Automatisch zugewiesenen Datentypen können auch Manuel geändert werden. Dafür wird ein doppeltes Ausrufezeichen !! und der Datentyp vor dem Wert geschrieben.
Preis: !!float 25 # Ergibt 25.0
Nummer: !!str 22 # Wandelt Integer in einen String “22”
Aufbau von YAML Daten
Hier sehen wir Beispiele wie eine Datenstruktur in YAML aufgebaut werden kann. Es ist sehr wichtig, dass wenn ein Wert hinter dem Doppelpunkt geschrieben wird, ein Leerzeichen gemacht werden muss. Es empfiehlt sich, wenn man Daten untereinander schreibt, dass man zwei Leerzeichen einrückt.
Bei einer Auflistung im Dictionary Format spiel die Reihenfolge der Werte keine Rolle, bei einem Array muss darauf geachtet werden. Frucht[1] = Banane und im zweiten Beispiel Birne.
Umgang mit Strings
YAML strings sind Unicode und benötigen in den meisten Fällen keine Anführungszeichen, wenn wir in unserem String Formatierungszeichen verwenden wie z. B. \n dann muss ein Anführungszeichen verwendet werden da sonst YAML einfach \n als zusätzlich Zeichen sieht und nicht als Zeilenumbruch.
Um die Lesbarkeit in YAML weiter zu erhöhen, ist es möglich den Text auf mehrere Zeilen umzubrechen und in dennoch als eine einzelne Zeile Text zu verwalten. Dazu wird das Zeichen Grösser als > verwendet. Wenn man die Formatierung, die man in YAML erstellt beibehalten möchte, kann man das mit dem | Zeichen lösen.
Formatierung von Strings
Text: „Text der umgebrochen wird\n“ # in AnführungszeichenText: >
Das ist ein Text der hier zwar hier umgebrochen ist,
aber als ein einzeiliger Text
verwaltet wird.Text: #Ausgabe
Das ist ein Text der hier zwar hier umgebrochen ist, aber als ein einzeiliger Text verwaltet wird.Text: |
Das ist ein Text der hier umgebrochen ist, und wir
die Formatierung
beibehalten wollen.Text: #Ausgabe
Das ist ein Text der hier umgebrochen ist, und wir
die Formatierung
beibehalten wollen.
Setzen von Anker
Die Datensammlung von YAML kann mit der Zeit sehr Gross werden und da ergibt es Sinn, dass wir gewisse Variablen wieder verwenden können. Das können wir mit einem sogenannten Anker bewerkstelligen. Damit wir einen Anker definieren können, schreiben wir &Ankername und um ihn wieder auszulesen, verwenden wir *Ankername. Man kann einen Anker auch zu ganzen Objekten erstellen, zum Einfügen wird <<: *Ankername verwendet. Machen wir dazu ein kleines Beispiel.
Pi: &zahlPi 3.141592
WasistPi: *zahlPi
WasistPi: 3.141592 # Die AusgabeAutor: &author # Eine ganzes Objekt
Name: Edi
Wo: Edis TechlabMein Code:
Codezeilen: Hier ist mein schöner Code
<<: *authorMein Code: # Die Ausgabe
Codezeilen: Hier ist mein schöner Code
Name: Edi
Wo: Edis Techlab
►Raspberry Pi:
* https://amzn.to/2J3w8j4 – Raspberry Pi 3 Starterset
* https://amzn.to/2Uo9tDu – Raspberry Pi 3
* https://amzn.to/3djpovz – Raspberry Pi 4 -1GB Kit
* https://amzn.to/2QDoiBc – Raspberry Pi 4 -1GB
* https://amzn.to/2WAgkMO – Raspberry Pi 4 -2GB Kit
* https://amzn.to/2Up5Ehj – Raspberry Pi 4 – 2GB
* https://amzn.to/2wr0rxD – Raspberry Pi 4 -4GB Kit
* https://amzn.to/2Uobpfe – Raspberry Pi 4 – 4GB
►Micro SD Speicherkarten:
* https://amzn.to/399tX8c – SanDisk Ultra 16GB
* https://amzn.to/2UrI5Ex – SanDisk Ultra 32GB
* https://amzn.to/3dmbo40 – SanDisk Ultra 64GB
* https://amzn.to/2J7rFfv – SanDisk Ultra 128GB
* https://amzn.to/2U68eKa – SanDisk Ultra 256GB
* https://amzn.to/2U68fxI – SanDisk Ultra 512GB
►Netzteile:
* https://amzn.to/3beWY3V – 2er-Pack USB Ladegerät 5V/2A
* https://amzn.to/398WzP9 – Raspberry Pi 4 Netzteil, USB-C, 5.1V, 3A
* https://amzn.to/2wsS8Bh – HomeSpot Netzteil 3A/5V inkl. 1,5M Micro USB Kabel
All links with "*" are Amazon affiliate links. I receive a small portion of the sales when you place an order, at no extra cost to you.