Avec des caractères génériques dans Ruby

Je voudrais écrire une fonction d'utilité/module qui va donner de simples générique/glob correspondant à cordes. La raison pour laquelle je ne suis pas en utilisant des expressions régulières, c'est que l'utilisateur sera celui qui aura finissent par fournir des modèles pour correspondre à l'aide d'une sorte de fichier de configuration. Je ne pouvais pas trouver un tel joyau stable - essayé joker, mais il avait des problèmes de paramétrage.

La fonctionnalité, je suis à la recherche est simple. Par exemple, pour les modèles suivants, voici les correspondances:

pattern | test-string         | match
========|=====================|====================
*hn     | john, johnny, hanna | true , false, false     # wildcard  , similar to /hn$/i
*hn*    | john, johnny, hanna | true , true , false     # like /hn/i
hn      | john, johnny, hanna | false, false, false     # /^hn$/i
*h*n*   | john, johnny, hanna | true , true , true
etc...

J'aimerais que ce soit aussi efficace que possible. J'ai pensé à la création d'regexes à partir de la structure des chaînes, mais qui semblait plutôt inefficace à faire au moment de l'exécution. Toutes les suggestions sur cette mise en œuvre? merci.

MODIFIER: je suis en utilisant ruby 1.8.7

OriginalL'auteur sa125 | 2011-06-23