2010-05-12 10 views

Respuesta

5

http://github.com/pvande/differ Puede usar eso, que realiza diff en las cadenas. Tendría que construir alguna lógica para formatearla en un estado listo para la salida. Probablemente usando Builder :: XmlMarkup en un helper.

Hay también: http://github.com/myobie/htmldiff

que parece marcado de salida - pero no es muy bien documentado.

En cuanto a un ayudante incorporado, no creo que Rails tenga nada incorporado. Hay http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Hash/Diff.html - pero a diferencia del primer complemento, esto se usa en hashes, no en cadenas.

2

Para cualquiera que busque una respuesta hoy: https://github.com/samg/diffy es la apuesta más segura. Como las otras gemas y bibliotecas mencionadas aquí han sido abandonadas desde hace algún tiempo.

+0

Sí, suena prometedor Diffy – Saim

0

Hay dos maneras:

1.works también para cadena no Inglés

class String 
    def -(other) 
    s1 = self.mb_chars.downcase.chars 
    s2 = other.mb_chars.downcase.chars 
    s1.size >= s2.size ? s1 - s2 : s2 - s1 
    end 
end 

> 'abcde' - 'abc' 
=> ["d", "e"] 
> 'abc' - 'ac' 
=> ["b"] 

2. de http://tobyho.com/2011/03/26/string-difference-in-ruby/

class String 
    def -(other) 
    self.index(other) == 0 ? self[other.size..self.size] : nil 
    end 
end 

> 'abcde' - 'abc' 
=> "de" 
but 
> 'abc' - 'ac' 
=> nil 
Cuestiones relacionadas