mardi, janvier 15, 2008

Natural Sort 1.1.0

Sur les conseils de plusieurs personnes, notamment dans les commentaires, j'ai supprimé les méthodes "alias" du projet natural sort et j'ai fait une nouvelle release pour l'occasion: 1.1.0

Si vous voulez participer, n'hésitez pas à jeter un coup d'oeil dans les tests unitaires il y a quelques Fixme/Todo qui vous attendent ;)

Autre axe d'évolution: rendre paramétrable les différents cas de tri, avec une hash. Sachant que le cas par défaut doit être le plus facile possible pour les utilisateurs ;)

6 commentaires:

Sobe a dit…

Testé et approuvé !

Quelques petites questions :

- Est-il nécessaire d'inclure explicitement la méthode dans chaque classe, dans kernel, étant donnée qu'elles contiennent toute Enumerable ? Ou c'est pour la doc ?

- Je comprends pas exactement quel est le soucis dans la méthode de classe... FIXME ?

- Est-il possible de modifier la regexp "(\D+)(\d+)" pour qu'elle prenne en compte le dernier ensemble numérique trouvé ? (Je vois pas comment ("$" ?) : moi et les regexp...). Pour exemple, ['calcul1.struct005.dat', 'calcul1.struct01.dat'].natural_sort ne donne pas le résultat attendu à cause du premier "1".

Jolie petite gem !

Benjamin Francisoud a dit…

- Est-il nécessaire d'inclure explicitement la méthode dans chaque classe, dans kernel, étant donnée qu'elles contiennent toute Enumerable ? Ou c'est pour la doc ?

Si je ne met pas les
class Array
include NaturalSort
end
Ca ne fonctionne pas :(

J'ai ce genre d'erreur:

NoMethodError: undefined method `natural_sort' for ["hello world", "hello world 2", "hello 2 world"]:Array
./test/test_natural_sort_kernel.rb:82:in `test_three_groups'

Je pense que ca vient de l'ordre de "chargement"; quelque chose du genre l'interpreteur ruby démarre accroche les méthodes de Enum à Array puis charge mon natural_sort_kernel.rb qui ajoute les méthodes Enum mais pas à Array si je le fais pas explicitement...

C'est une hypothèse.

Benjamin Francisoud a dit…

- Je comprends pas exactement quel est le soucis dans la méthode de classe... FIXME ?

J'ai copié/collé le code de naturalsort dans natural_sort... c'est mal ;)
Du coup je viens de le corriger dans le trunk :p

Benjamin Francisoud a dit…

- Est-il possible de modifier la regexp "(\D+)(\d+)" pour qu'elle prenne en compte le dernier ensemble numérique trouvé ?...

hehe justement ça fait partie des TODO ;) Si tu as un patch à proposer ;) Sinon je le ferai surment un de ces jours c'est juste qu'en ce moment j'essaye de donner la priorité à 2 autres projets que je fais pour qu'il avancent un peu aussi :)

Failure: test_multiple_string_number(TestNaturalSortKernel) [./test/test_natural_sort_kernel.rb:93]:
TODO Not implemented.

Failure: test_multiple_string_number_2(TestNaturalSortKernel) [./test/test_natural_sort_kernel.rb:99]:
TODO Not implemented.

Sobe a dit…

- Une proposition de patch pour le TODO sur le cas "multiple_string_number" --> sur Pastie (flemme d'ouvrir winCVS : désolé !). Passe les tests, hormis test_decimal (idem prev) et test_range...

- Sur test_range justement, je ne suis pas d'accord avec ton "expected" qui n'est pas vraiment "naturel". En revanche, je suis d'accord avec mon résultat (la mauvaise foi joue, je te l'accorde ;) ) : classement d'entiers par ordre croissant.

Voilou !

Benjamin Francisoud a dit…

Super merci pour la contribution.
Je l'ai intégré au trunk.
Effectivement le expected du test unitaire sur Range était faux.
Je l'ai corrigé.

Je ferai surement une nouvelle release rapidement :)

J'ai ajouté un petit remerciement dans History.txt qui apparaîtra dans la prochaine release note ;)