# 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 Schlüssel 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 Schlüssel # 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 und Zahlen sind nicht die einzigen Skalare, welche YAML versteht. # ISO-formatierte Datumsangaben and Zeitangaben 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