PLURALIZATION_EXCEPTIONS = "hardware",'memory'
def pluralize_category_name(name)
category = name.split(' and ')
exceptions_to_exp = ""
category.map! { |e|
if e.match(/^[A-Z]+$/) and !e.match(/^[A-Z]+S$/)
e = e.pluralize
end
(PLURALIZATION_EXCEPTIONS.include?(e.downcase) || e.match(/^[A-Z]+S$/) ||
e.match(/[memory|hardware]/) )? e : e.pluralize
}.join(' and ')
end
Тест должен, и ожидание должно быть следующие:
it "properly pluralizes hardware as hardware" do
pluralize_category_name("hardware").should == "hardware"
end
it "properly pluralizes UPS as UPS" do
pluralize_category_name("UPS").should == "UPS"
end
it "properly pluralizes PDA and Portable Hardware as PDAs and Portable Hardware" do
pluralize_category_name("PDA and Portable Hardware").should == "PDAs and Portable Hardware"
end
it "properly pluralizes perfume and cologne as perfumes and colognes" do
pluralize_category_name("perfume and cologne").should == "perfumes and colognes"
end
Последние тестовые сбои :(
На помощь!
Думаю, ваша проблема в том, что в вашем состоянии
(PLURALIZATION_EXCEPTIONS.include?(e.downcase) || e.match(/^[A-Z]+S$/) ||
e.match(/[memory|hardware]/) )? e : e.pluralize
«духи»
соответствуют / [память | оборудование] /
.
[память | оборудование]
- это класс символов , который соответствует любому из m
, e
, m
], o
, r
и т. Д.
Возможно, вы вместо этого имели в виду e.match (/ (память | оборудование)] / i)
? Этот альтернативный шаблон прошел бы ваши тесты, но он не использует вашу константу PLURALIZATION_EXCEPTIONS
, поэтому его потребуется обновить, если вы добавите какие-либо другие исключения.