Сопоставление строк с подстановочными знаками в Ruby

Я хотел бы написать служебную функцию / модуль, который будет обеспечивать простое сопоставление подстановочных знаков / глобусов для строк . Причина, по которой я не использую регулярные выражения, заключается в том, что пользователь будет тем, кто в конечном итоге предоставит шаблоны для сопоставления, используя какой-то файл конфигурации. Я не смог найти такой стабильный гем - попробовал joker, но у него возникли проблемы с настройкой.

Функциональность, которую я ищу, проста. Например, для следующих шаблонов вот совпадения:

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...

Я бы хотел, чтобы это было максимально эффективным. Я думал о создании регулярных выражений из строк шаблона, но во время выполнения это казалось неэффективным. Есть предложения по этой реализации? спасибо.

РЕДАКТИРОВАТЬ : Я использую ruby ​​1.8.7

10
задан sa125 23 June 2011 в 04:33
поделиться