Trier des objets suivant un modèle en Ruby

Trier des objets suivant un modèle en Ruby

# Ordre à respecter
modele_tri = ["b","o","x","y","a","z"]
donnees_a_trier = ["x","y","z","a","b","i"]
# Les données qui ne sont pas spécifiées : on les met à la fin (-Float::INFINITY pour les mettres au début)
donnees_tries = donnees_a_trier.sort_by{ |v| modele_tri.index(v) || Float::INFINITY }
# => ["b", "x", "y", "a", "z", "i"] # "i" est à la fin
donnees_tries = donnees_a_trier.sort_by{ |v| modele_tri.index(v) || -Float::INFINITY }
# => ["i", "b", "x", "y", "a", "z"] # "i" est au début