Сбежать от & (амперсанд) в начале записи YAML? - PullRequest
11 голосов
/ 18 февраля 2010

Амперсанд в начале записи YAML обычно рассматривается как метка для набора данных, на который можно ссылаться позже.Как вам избежать законного амперсанда в начале записи YAML.Например:

---
- news:
news_text: «Text!»

Я хочу, чтобы & ldquo не был меткой в ​​файле yaml, а скореекогда я получаю синтаксический анализ файла YAML, чтобы текст news_text возвращался с записью «в записи».

Ответы [ 4 ]

13 голосов
/ 18 февраля 2010

Просто заключите в кавычки текст

require 'yaml'

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

puts YAML::load(data).inspect

# produces => [{"news"=>{"news_text"=>"&ldquo;Text!&rsquo;"}}]
3 голосов
/ 18 февраля 2010

Вы, вероятно, можете заключить текст в кавычки:

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

Кроме того, вы, вероятно, также можете использовать правильные символы там:

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

Поместить экранирование, относящееся к совершенно другому языку разметки, в документ, написанный на другом языке разметки, кажется ... как-то странно для меня.

1 голос
/ 12 февраля 2015

Или вы можете поместить строку в следующую строку, если вы поместите '> ' или ' | ' в то место, где раньше была строка. Используя символ ' | ', ваш синтаксический анализатор будет сохранять ваши пользовательские разрывы строк, в то время как '> ' превращает его в одну длинную строку, игнорируя разрывы строк.

- news:
    news_text: >
        &ldquo;Text!&rsquo;
0 голосов
/ 18 февраля 2010

Помещение всей строки в одинарные кавычки будет делать то, что вы хотите:

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

Но я думаю, что любая библиотека yaml должна быть достаточно умной, чтобы сделать это для вас?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...