2012-07-02 19 views
138

在配置文件中,我有一個我希望分配URL的鍵。的問題是,YAML解釋:和 - 字符作爲要麼創建映射或列表,因此具有與線如何在YAML中轉義指示符字符(即:或 - )

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

的問題(因爲結腸的兩個以下http和在中間的連字符)

有沒有明確的方法來逃避':'和' - '?或者它只會把整個事情放在單引號中並稱之爲一天?

+0

另請參閱:http://en.wikipedia.org/wiki/Delimiter#Delimiter_collision – dreftymac

回答

128

行情:

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

爲了澄清,我的意思是「引用值」和原本以爲整個事情就是價值。如果http://www.example-site.com/是價值,只是引用它,如下所示:

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

顯然,這取決於解析器。這不適用於Jekyll YAML。 – ptomato

+1

YAMLDotNet也呈現報價。 – Dr1Ku

+0

引用右側現在似乎在Jekyll中工作正常。 –

16

,隨着哲基爾使用的YAML解析器工作的另一種方式:

title: My Life: A Memoir 

冒號後面沒有空間似乎並不理會哲基爾的YAML解析器,另一方面。也沒有破折號。

+0

...是字符實體是YAML的一部分嗎? Jekyll實際上使用了YAML? – Ryan

+0

Jekyll聲稱使用它:http://jekyllrb.com/docs/frontmatter/我在YAML規範中找不到關於角色實體的任何內容,所以我懷疑Jekyll是異常的,但我認爲這個答案適用於人們谷歌搜索「yaml越獄冒號」像我一樣;-) – ptomato

+0

這對我有效。 –

25

行情,但我更喜歡他們在剛剛值:

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

在整個線把它們看起來像它可能會引起問題。

102

什麼也適用,是長期,多文本甚至更好的,是把你的文本縮進在下一行,管道或大於號後:

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

的管道保留換行符,一個GT -sign將以下所有行變成一個長字符串。

+5

...並在最後添加換行符,這通常不是您想要的。 – equaeghe

+23

@equaeghe:您可以使用'>或'| -'來防止這種情況。 – dtoux

+4

這是一個很棒的解決方案。完全避免必須在文本中轉義其他字符。 +++ 90000點 – bennlich

13

根據YAML規範,:-都不應該是一個問題。 :只是一個空格後面的關鍵分隔符,而-僅僅是一行後面有一個空格的數組指示符。

但是如果你的YAML實現了出了問題,你可能有很多的選擇:

- 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/ 

有沒有明確的形式「plain style」逃避可能的,但是。

+1

travisCI的linter抱怨不尋常的冒號 - http://lint.travis-ci.org/ – koppor

+0

對於Travis CI,似乎在單引號內的冒號是可以的。 – Malvineous