Почему делает этот метод для pluralizing названий категории не, работают во всех случаях?

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

Последние тестовые сбои :(

На помощь!

1
задан mikej 22 July 2010 в 12:47
поделиться

1 ответ

Думаю, ваша проблема в том, что в вашем состоянии

(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 , поэтому его потребуется обновить, если вы добавите какие-либо другие исключения.

2
ответ дан 2 September 2019 в 22:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: