2010-09-29 6 views
0

Vous cherchez un moteur de différenciation Ruby. Ainsi, vous pouvez faire certaines des mêmes choses que le visualiseur.moteur de différence rubis

Par exemple, vous avez ce premier ensemble de code par ligne:

  1. String1
  2. String2
  3. String3

2e set:

  1. String1
  2. String3
  3. string4

La diff viendrait pour montrer les lignes 2 et 3 sont différents.

J'utilise déjà celui-ci: http://github.com/pvande/differ, mais ce n'est certainement pas parfait mais plutôt bon. Je voudrais ajouter à cela, mais j'essaie de trouver des connaissances sur un autre avant d'aller plus loin avec cette différence.

+0

Google "Ruby diff" -> http://rubydiff.rubyforge.org/. Avez-vous regardé ça? – Nakilon

+0

gem intéressante! On dirait que tout développement est mort avec, mais vaut encore un coup d'oeil – nictrix

+1

duplication possible de [diff une chaîne de ruby ​​ou tableau] (http://stackoverflow.com/questions/80091/diff-a-ruby-string-or-array) – sawa

Répondre

1

La solution « standard » est une bibliothèque d'Austin Ziegler diff-lcs, qui   – comme son nom l'indique   – implémente un algorithme de plus long-séquence commune. Plus précisément, l'algorithme LCS de McIlroy et Hunt. Cette bibliothèque est un portage de l'implémentation Smalltalk de Mario I. Wolczko de l'algorithme McIlroy-Hunt de 1993 ainsi que la bibliothèque Perl Algorithm::Diff.

Malheureusement, il n'y a pas eu de version depuis 2004. Ce qui ne serait pas si grave, puisque l'algorithme de McIlroy-Hunt n'a pas changé depuis 1976, mais la manipulation de Ruby a beaucoup changé dans Ruby 1.9.

+0

Merci pour l'histoire et la compréhension, je vais utiliser la même gemme pour l'instant, mais prévoyez d'ajouter ou de créer quelque chose de plus flexible. – nictrix