2010-02-18 31 views
8

Una y comercial al comienzo de una entrada YAML normalmente se ve como una etiqueta para un conjunto de datos que se pueden consultar más adelante. ¿Cómo escapas de un signo comercial legítimo al comienzo de una entrada de YAML? Por ejemplo:¿Escape an & (ampersand) al comienzo de una entrada de YAML?

---
- noticia:
        news_text: & ldquo; texto! & rsquo;

Miro para no tener & ldquo ser una etiqueta dentro del archivo YAML, sino más bien cuando llegue a analizar el archivo YAML tener la news_text volver con la & ldquo; en la entrada.

Respuesta

11

sólo hay que poner entre comillas el texto

require 'yaml' 

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

puts YAML::load(data).inspect 

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

Poner toda la cadena entre comillas simples haría lo que quiere:

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

embargo, creo que cualquier biblioteca yaml debe ser lo suficientemente inteligente como para hacer eso por ti?

3

Es probable que pueda encerrar el texto entre comillas:

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

Además, puede probablemente igual de utilizar bien los caracteres apropiados ahí:

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

Poner escapes específicos de un lenguaje de marcado totalmente diferente en un documento escrito en otro lenguaje de marcas parece ... extraño para mí, de alguna manera.

1

O podría colocar la cadena en la siguiente línea, si coloca un '>' o '| 'en el lugar donde solía estar la cuerda. Usando el '| 'carácter, su analizador mantendrá sus saltos de línea personalizados, mientras que' > 'lo convierte en una cadena larga, ignorando los saltos de línea.

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