Ruby 2.0, Yaml używający Psych wydaje się mieć problem z wydostaniem się z podwójnego cudzysłowu. Czy ktoś ma pomysł na rozwiązanie tego problemu?YAML: błąd parsujący ciąg znaków z podwójnym podwójnym apostrofem
data_ =<<END_
description: "Acme acquires ILM: Lucas says \"Inevitable!\""
END_
ap YAML.load(data_)
produkuje
/Users/x/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/psych.rb:205:in `parse': (<unknown>): did not find expected key while parsing a block mapping at line 1 column 1 (Psych::SyntaxError)
Uciekając wpis z apostrofami działa, ale jeśli zawiera apostrofów, uciekając im wyniki w błąd, zbyt.
description: 'Acme acquires ILM: Lucas says "It\'s Inevitable!"'
W idealnym świecie, wpisy będą zawierać odpowiednie cytaty unicode typograficzne, ale nie mam kontroli nad tymi (choć mogę je wymienić przed przetworzeniem z YAML) ...
pomysłów o tym, czy YAML poprawnie to przeanalizuje?
Aktualizacja: odpowiadanie na moje pytanie. Okazało się, że jest możliwe, aby uciec apostrof przez powielenie go, tak to działa:
description: 'Acme acquires ILM: Lucas says "It''s Inevitable!"'
odkryłem to za pomocą YAML.dump (the-życzenia-string)
A-ha! Więc szukałem w niewłaściwym miejscu. Dziękuję Ci! – aaandre
Najprawdopodobniej zbuduję strukturę, która ma być obiektami Ruby, a następnie 'to_yaml', aby uzyskać ciąg znaków, mniej cytując bzdury, aby się tym martwić. –