2010-02-18 9 views
8

Znak ampersand na początku wpisu YAML jest zwykle postrzegany jako etykieta zestawu danych, do których można się odwoływać później. W jaki sposób unikniesz legalnego ampersand na początku wpisu YAML. Na przykład:Escape & ampersand na początku wpisu YAML?

---
- News:
        news_text: & ldquo; tekst! & rsquo;

szukam nie mieć & ldquo być etykieta w pliku YAML, lecz kiedy się analizować plik YAML mieć news_text wrócić z & bdquo; we wpisie.

Odpowiedz

11

Wystarczy umieścić cudzysłowy wokół tekstu

require 'yaml' 

data = <<END 
--- 
- news: 
    news_text: "&ldquo;Text!&rsquo;" 
END 

puts YAML::load(data).inspect 

# produces => [{"news"=>{"news_text"=>"&ldquo;Text!&rsquo;"}}] 
0

stawianie cały ciąg w apostrofach by robić to, co chcesz:

--- 
- news: 
    news_text: '&ldquo;Text!&rsquo;' 

Ale myślę, że każda biblioteka yaml powinna być na tyle silny, aby zrób to dla ciebie?

3

Prawdopodobnie można zamknąć tekst w cudzysłowach:

--- 
- news: 
    news_text: "&ldquo;Text!&rsquo;" 

Poza tym, prawdopodobnie można równie dobrze użyć odpowiednich znaków tam:

--- 
- news: 
    news_text: “Text!’ 

Umieszczenie ucieczek specyficzne dla zupełnie innego języka znaczników do dokumentu napisanego w innym języku znaczników wydaje mi się ... dziwne.

1

Lub możesz umieścić ciąg w następnej linii, jeśli wstawisz ">" lub "| "w miejscu, w którym był ciąg znaków. Używanie "| 'Znakuj twój parser, aby zachować twoją niestandardową linię, a' > 'zmienia ją w jeden długi łańcuch, ignorując łamanie linii.

- news: 
    news_text: > 
     &ldquo;Text!&rsquo;