414 Stimmen

Wie kann man Indikatorzeichen (Doppelpunkt und Bindestrich) in YAML umgehen?

In einer Konfigurationsdatei habe ich einen Schlüssel, dem ich eine URL zuweisen möchte. Das Problem ist, dass YAML den Schlüssel als : y - Zeichen entweder als Zuordnungen oder als Listen zu erstellen, daher hat es ein Problem mit der Zeile

url: http://www.some-site.example/

(sowohl wegen des Doppelpunkts nach HTTP als auch wegen des Bindestrichs in der Mitte)

Gibt es eine explizite Möglichkeit zu entkommen : y - ? Oder reicht es, das Ganze in einfache Anführungszeichen zu setzen und das war's?

383voto

Ry- Punkte 208020

Zitate:

"url: http://www.some-site.example/"

Um das klarzustellen, ich meinte "den Wert zitieren" und dachte ursprünglich, das Ganze sei der Wert. Wenn http://www.some-site.example/ ist der Wert, zitieren Sie ihn einfach so:

url: "http://www.some-site.example/"

318voto

Micros Punkte 5508

Was auch funktioniert und bei langen, mehrzeiligen Texten noch schöner ist, ist, den Text nach einer Pipe oder einem Größer-als-Zeichen eingerückt in die nächste Zeile zu setzen:

text: >
    Op dit plein stond het hoofdkantoor van de NIROM: Nederlands Indische 
    Radio Omroep

Eine Pipe bewahrt die Zeilenumbrüche, ein gt-Zeichen macht alle folgenden Zeilen zu einer einzigen langen Zeichenkette.

114voto

Steve Bennett Punkte 97061

Nach der YAML-Spezifikation darf weder die : noch die - sollte ein Problem sein. : ist nur ein Schlüsselseparator mit einem Leerzeichen dahinter, und - ist nur ein Array-Indikator am Anfang einer Zeile mit einem Leerzeichen dahinter.

Sollte Ihre YAML-Implementierung jedoch ein Problem damit haben, haben Sie möglicherweise viele Möglichkeiten:

- url: 'http://www.some-site.example/'
- url: "http://www.some-site.example/"
- url:
    http://www.some-site.example/
- url: >-
    http://www.some-site.example/
- url: |-
    http://www.some-site.example/

Es ist explizit keine Form des Escapings möglich in " schlichter Stil ", jedoch.

37voto

Gringo Suave Punkte 27545

Zitate, aber ich bevorzuge sie nur wegen des Wertes:

url: "http://www.some-site.example/"

Wenn man sie über die gesamte Strecke verteilt, könnte das zu Problemen führen.

27voto

ptomato Punkte 53719

Ein anderer Weg, der mit dem in Jekyll verwendeten YAML-Parser funktioniert:

title: My Life: A Memoir

Doppelpunkte, die nicht von Leerzeichen gefolgt werden, scheinen den YAML-Parser von Jekyll hingegen nicht zu stören. Ebenso wenig wie Bindestriche.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X