Ho scritto una piccola applicazione rapida che prende un file di codice di base con alcune parole chiave, un file di sostituzioni per le parole chiave e genera un nuovo file con le parole chiave sostituite.Ruby 1.9 Array.to_s si comporta diversamente?
Quando stavo usando Ruby 1.8, le mie uscite sarebbero andate bene. Ora, quando si utilizza Ruby 1.9, il mio codice sostituito ha i caratteri di nuova riga al suo posto invece dei feed di riga.
Per esempio, vedo qualcosa di simile:
["\r\nDim RunningNormal_1 As Boolean", "\r\nDim RunningNormal_2 As Boolean", "\r\nDim RunningNormal_3 As Boolean"]
invece di:
Dim RunningNormal_1 As Boolean
Dim RunningNormal_2 As Boolean
Dim RunningNormal_3 As Boolean
io uso un hash di sostituzioni { "KEYWORD" => [ "1", "2", "3"]} e una matrice delle linee sostituite.
Io uso questo blocco per completare la sostituzione:
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
mia impressione è che sto stampando la matrice invece delle corde all'interno dell'array. Qualsiasi suggerimento su una correzione. Quando eseguo il debug e stampo la mia stringa sostituita usando puts, l'output sembra corretto. Quando uso il metodo to_s (che è il modo in cui la mia app scrive l'output nel file di output), il mio output sembra sbagliato.
Una correzione sarebbe buona, ma quello che voglio veramente sapere è ciò che è cambiato tra Ruby 1.8 e 1.9 che causa questo comportamento. Il metodo to_s è cambiato in qualche modo in Ruby 1.9?
* io sono inesperto in Ruby
codice di esempio sarebbe bello – orip
ho aggiunto il codice sorgente che spero è rilevante. – jrsconfitto
+1. Sto usando Ruby 1.8 e 1.9 un bel po ', ma non ho mai saputo di questa differenza! –