mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-18 04:42:32 +03:00
139 lines
4.7 KiB
Markdown
139 lines
4.7 KiB
Markdown
---
|
|
language: yaml
|
|
filename: learnyaml.yaml
|
|
contributors:
|
|
- ["Adam Brenecki", "https://github.com/adambrenecki"]
|
|
translators:
|
|
- ["Ruben M.", https://github.com/switchhax]
|
|
---
|
|
|
|
YAML ist eine Sprache zur Datenserialisierung, die sofort von Menschenhand geschrieben und gelesen werden kann.
|
|
|
|
YAML ist eine Erweiterung von JSON, mit der Erweiterung von syntaktisch wichtigen Zeilenumbrüche und Einrückung sowie in Python. Anders als in Python erlaubt YAML keine Tabulator-Zeichen.
|
|
|
|
```yaml
|
|
# Kommentare in YAML schauen so aus.
|
|
|
|
#################
|
|
# SKALARE TYPEN #
|
|
#################
|
|
|
|
# Unser Kernobjekt (für das ganze Dokument) wird das Assoziative Datenfeld (Map) sein,
|
|
# welches equivalent zu einem Hash oder einem Objekt einer anderen Sprache ist.
|
|
Schlüssel: Wert
|
|
nochn_Schlüssel: Hier kommt noch ein Wert hin.
|
|
eine_Zahl: 100
|
|
wissenschaftliche_Notation: 1e+12
|
|
boolean: true
|
|
null_Wert: null
|
|
Schlüssel mit Leerzeichen: value
|
|
# Strings müssen nicht immer mit Anführungszeichen umgeben sein, können aber:
|
|
jedoch: "Ein String in Anführungzeichen"
|
|
"Ein Schlüssel in Anführungszeichen": "Nützlich, wenn du einen Doppelpunkt im Schluessel haben willst."
|
|
|
|
# Mehrzeilige Strings schreibst du am besten als 'literal block' (| gefolgt vom Text)
|
|
# oder ein 'folded block' (> gefolgt vom text).
|
|
literal_block: |
|
|
Dieser ganze Block an Text ist der Wert vom Schlüssel literal_block,
|
|
mit Erhaltung der Zeilenumbrüche.
|
|
|
|
Das Literal fährt solange fort bis dieses unverbeult ist und die vorherschende Einrückung wird
|
|
gekürzt.
|
|
|
|
Zeilen, die weiter eingerückt sind, behalten den Rest ihrer Einrückung -
|
|
diese Zeilen sind mit 4 Leerzeichen eingerückt.
|
|
folded_style: >
|
|
Dieser ganze Block an Text ist der Wert vom Schlüssel folded_style, aber diesmal
|
|
werden alle Zeilenumbrüche durch ein Leerzeichen ersetzt.
|
|
|
|
Freie Zeilen, wie obendrüber, werden in einen Zeilenumbruch verwandelt.
|
|
|
|
Weiter eingerückte Zeilen behalten ihre Zeilenumbrüche -
|
|
diese Textpassage wird auf zwei Zeilen sichtbar sein.
|
|
|
|
####################
|
|
# COLLECTION TYPEN #
|
|
####################
|
|
|
|
# Verschachtelung wird duch Einrückung erzielt.
|
|
eine_verschachtelte_map:
|
|
schlüssel: wert
|
|
nochn_Schlüssel: Noch ein Wert.
|
|
noch_eine_verschachtelte_map:
|
|
hallo: hallo
|
|
|
|
# Schlüssel müssen nicht immer String sein.
|
|
0.25: ein Float-Wert als Schluessel
|
|
|
|
# Schlüssel können auch mehrzeilig sein, ? symbolisiert den Anfang des Schlüssels
|
|
? |
|
|
Dies ist ein Schlüssel,
|
|
der mehrzeilig ist.
|
|
: und dies ist sein Wert
|
|
|
|
# YAML erlaubt auch Collections als Schlüssel, doch viele Programmiersprachen
|
|
# werden sich beklagen.
|
|
|
|
# Folgen (equivalent zu Listen oder Arrays) schauen so aus:
|
|
eine_Folge:
|
|
- Artikel 1
|
|
- Artikel 2
|
|
- 0.5 # Folgen können verschiedene Typen enthalten.
|
|
- Artikel 4
|
|
- schlüssel: wert
|
|
nochn_schlüssel: nochn_wert
|
|
-
|
|
- Dies ist eine Folge
|
|
- innerhalb einer Folge
|
|
|
|
# Weil YAML eine Erweiterung von JSON ist, können JSON-ähnliche Maps und Folgen
|
|
# geschrieben werden:
|
|
json_map: {"schlüssel": "wert"}
|
|
json_seq: [3, 2, 1, "Start"]
|
|
|
|
############################
|
|
# EXTRA YAML EIGENSCHAFTEN #
|
|
############################
|
|
|
|
# YAML stellt zusätzlich Verankerung zu Verfügung, welche es einfach machen
|
|
# Inhalte im Dokument zu vervielfältigen. Beide Schlüssel werden den selben Wert haben.
|
|
verankerter_inhalt: &anker_name Dieser String wird als Wert beider Schlüssel erscheinen.
|
|
anderer_anker: *anker_name
|
|
|
|
# YAML hat auch Tags, mit denen man explizit Typangaben angibt.
|
|
explicit_string: !!str 0.5
|
|
# Manche Parser implementieren sprachspezifische Tags wie dieser hier für Pythons
|
|
# komplexe Zahlen.
|
|
python_komplexe_Zahlen: !!python/komplex 1+2j
|
|
|
|
####################
|
|
# EXTRA YAML TYPEN #
|
|
####################
|
|
|
|
# Strings and Zahlen sind nicht die einzigen Skalare, welche YAML versteht.
|
|
# ISO-formatierte Datumsangaben and Zeiangaben können ebenso geparsed werden.
|
|
DatumZeit: 2001-12-15T02:59:43.1Z
|
|
DatumZeit_mit_Leerzeichen: 2001-12-14 21:59:43.10 -5
|
|
Datum: 2002-12-14
|
|
|
|
# Der !!binary Tag zeigt das ein String base64 verschlüsselt ist.
|
|
# Representation des Binären Haufens
|
|
gif_datei: !!binary |
|
|
R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5
|
|
OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+
|
|
+f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC
|
|
AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=
|
|
|
|
# YAML bietet auch Mengen (Sets), welche so ausschauen
|
|
menge:
|
|
? artikel1
|
|
? artikel2
|
|
? artikel3
|
|
|
|
# Wie in Python sind Mengen nicht anderes als Maps nur mit null als Wert; das Beispiel oben drüber ist equivalent zu:
|
|
menge:
|
|
artikel1: null
|
|
artikel2: null
|
|
artikel3: null
|
|
```
|