Я думаю, что ваша проблема в том, что в вашем состоянии
(PLURALIZATION_EXCEPTIONS.include?(e.downcase) || e.match(/^[A-Z]+S$/) ||
e.match(/[memory|hardware]/) )? e : e.pluralize
"perfume"
совпадений /[memory|hardware]/
.
[memory|hardware]
- это класс символов , который соответствует любому из m
, e
, m
, o
, r
и т. Д.
Возможно, вы имели в виду e.match(/(memory|hardware)]/i)
вместо этого? Этот альтернативный шаблон пройдет ваши тесты, но он не использует вашу константу PLURALIZATION_EXCEPTIONS
, поэтому потребуется обновление, если вы добавите какие-либо другие исключения.