2012-07-02 6 views
138

W pliku konfiguracyjnym, mam klucz do którego chcesz przypisać adres URL. Problemem jest to, że YAML interpretuje: a - znaki albo jako tworzenie odwzorowań lub list, więc to ma problem z liniąJak uciec znaki wskaźnikowe (tj: lub -) w YAML

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

(zarówno ze względu na okrężnicy następującej http i myślnik w środku)

Czy istnieje wyraźny sposób na ucieczkę ":" i "-"? A może chciałoby się po prostu umieścić całość w pojedynczych cytatach i nazwać to dniem?

+0

zobacz także: http://en.wikipedia.org/wiki/Delimiter#Delimiter_collision – dreftymac

Odpowiedz

128

Cytaty:

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

do wyjaśnienia, mam na myśli „podać wartość” i początkowo sądzono, że cała rzecz była wartość. Jeśli http://www.example-site.com/ jest wartością, po prostu zacytować go tak:

url: "http://www.example-site.com/" 
+17

To zależy od parsera, widocznie. To nie działało z Jekyll YAML. – ptomato

+1

YAMLDotNet renderuje również cytaty. – Dr1Ku

+0

Cytując po prawej stronie wydaje się działać prawidłowo w Jekylla teraz. –

16

Innym sposobem, który współpracuje z parsera YAML stosowanych w Jekylla:

title: My Life: A Memoir 

Dwukropki nie obserwowani przez przestrzenie wydają się nie przejmować Jekylla YAML parser, z drugiej strony. Ani myślniki.

+0

... są elementami znaków będącymi częścią YAML? I co Jekyll używa właściwie YAML? – Ryan

+0

Jekyll twierdzi, że go używa: http://jekyllrb.com/docs/frontmatter/ Nie mogę znaleźć niczego o jednostkach postaci w specyfikacji YAML, więc podejrzewam, że Jekyll jest odbiegający od normy, ale myślę, że ta odpowiedź służy dobrze dla ludzi. "yaml escape colon" jak ja ;-) – ptomato

+0

To działało dla mnie. –

25

Cytaty, ale wolę je na tylko wartości:

url: "http://www.example.com/" 

Umieszczenie ich na całej linii wygląda to może powodować problemy.

102

Co działa również i jest nawet ładniejszy dla długich, multilinii tekstów, kładzie swój tekst wcięty w następnym wierszu, po rurze lub większy niż znak:

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

Rura zachowuje znaki nowej linii, GT -sign zamienia wszystkie poniższe linie w jeden długi ciąg.

+5

... a na końcu dodaje się znak nowej linii, co zwykle nie jest tym, czego potrzebujesz. – equaeghe

+23

@ equaeghe: Możesz użyć '> -' lub' | -', aby temu zapobiec. – dtoux

+4

To wspaniałe rozwiązanie. Całkowicie unika ucieczki od innych znaków w tekście. +++ 90000 punktów – bennlich

13

Zgodnie ze specyfikacją YAML, problem nie może być spowodowany przez : ani przez -. : jest tylko klucz separator z miejsca po nim, a - jest tylko wskaźnik tablicy na początku linii z miejsca po niej.

Ale jeśli realizacja YAML ma z tym problem, to potencjalnie mają wiele opcji:

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

Jest wyraźnie nie formą ucieczki możliwe „plain style”, jednak.

+1

Liniowiec TravisCI narzeka na okrężnice w nietypowym - http://lint.travis-ci.org/ – koppor

+0

Dla Travis CI, wydaje się, że dwukropki wewnątrz pojedynczego cudzysłowu są w porządku. – Malvineous