2010-05-12 5 views

Répondre

5

http://github.com/pvande/differ Vous pouvez utiliser cela, qui effectue des diff sur les chaînes. Vous auriez à construire une logique pour le formater dans un état prêt à la sortie. Probablement en utilisant Builder :: XmlMarkup dans une aide.

Il y a aussi: http://github.com/myobie/htmldiff

qui semble balisage de sortie - mais pas très bien documenté.

En ce qui concerne l'aide intégrée, je ne pense pas que Rails ait quelque chose de intégré. http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Hash/Diff.html - mais contrairement au premier plugin, il est utilisé sur les hachages, pas sur les chaînes.

2

Pour ceux qui cherchent une réponse aujourd'hui: https://github.com/samg/diffy est le pari le plus sûr. Comme les autres pierres précieuses et les bibliothèques mentionnées ici ont été abandonnées depuis quelque temps maintenant.

+0

Oui, diffy semble prometteur – Saim

0

Il y a deux façons:

1.works aussi pour chaîne non anglais

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 
Questions connexes