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:
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 !
- 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.
- 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
- 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.
- 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 !
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 ;)
Enregistrer un commentaire