escribí una pequeña aplicación rápida que toma un archivo base de código con algunas palabras clave, un archivo de reemplazos para las palabras clave y genera un nuevo archivo con las palabras clave reemplazadas.Ruby 1.9 Array.to_s se comporta de manera diferente?
Cuando estaba usando Ruby 1.8, mi salida se vería bien. Ahora, cuando utilizo Ruby 1.9, mi código reemplazado tiene los caracteres de nueva línea en lugar de los feeds de línea.
Por ejemplo, veo algo como:
["\r\nDim RunningNormal_1 As Boolean", "\r\nDim RunningNormal_2 As Boolean", "\r\nDim RunningNormal_3 As Boolean"]
en lugar de:
Dim RunningNormal_1 As Boolean
Dim RunningNormal_2 As Boolean
Dim RunningNormal_3 As Boolean
i utilizar un hash de los reemplazos { "PALABRA CLAVE" => [ "1", "2", "3"]} y una matriz de las líneas reemplazadas.
Puedo usar este bloque para finalizar la sustitución:
resultingLibs.each do |x|
libraryString.sub!(/(<REPEAT>(.*?)<\/REPEAT>)/im) do |match|
x.each do |individual|
individual.to_s
end
end
end
#for each resulting group of the repeatable pattern,
#
#Write out the resulting libs to a combined string
Mi corazonada es que estoy imprimiendo la matriz en lugar de las cadenas dentro de la matriz. Cualquier sugerencia sobre una solución. Cuando depuro e imprimo mi cadena reemplazada usando puts, la salida parece correcta. Cuando uso el método to_s (que es como mi aplicación escribe el resultado en el archivo de salida), mi salida se ve mal.
Una solución sería agradable, pero lo que realmente quiero saber es qué cambió entre Ruby 1.8 y 1.9 que causa este comportamiento. ¿Ha cambiado el método to_s de alguna manera en Ruby 1.9?
* I sin experiencia en Ruby
código de ejemplo sería bueno – orip
he añadido el código fuente que espero es relevante. – jrsconfitto
+1. He estado usando Ruby 1.8 y 1.9 bastante, ¡pero nunca supe esta diferencia! –