Helper pluralize(count,singular,plural) je krásny príklad podstaty agilného vývoja. Zjednoší nám výpis správneho tvaru podstatného mena s predchádzajúcou číslovkou. Napríklad kód:
<%= pluralize(count,"vote","votes") %>
nám pod anketou pomôže vypísať 1 vote resp. 2 votes, 3 votes ..atď, v závislosti na hodnote parametra count.
Ak by sme sa ho však pokúsili použiť na slovenskom webe, narazili by sme na záludnosť Slovenčiny - a síce, že podstatné meno za číslovkou sa nedá definovať iba dvoma možnosťami:
- 0 osôb
- 1 osoba
- 2,3,4 osoby
- 5,6,7.. osôb
Každopádne nejaký systém v tom určite je a preto ma napadlo preťažiť si tento helper tak, aby som ho mohol využívať aj pri týchto (nielen) slovenských špecifikách. A to všetko pri zachovaní pôvodnej funkcionality pre anglické slová. Stačí do projektového súboru application_helper.rb pridať nasledujúci kód:
module ActionView
module Helpers
module TextHelper
def pluralize(count, singular, plural = nil, even_more = nil)
"#{count || 0} " + if count == 1 || count == '1'
singular
elsif plural
if (count == 2 || count == 3 || count == 4 || count == '2' || count == '3' || count == '4')
plural
elsif even_more
even_more
else
plural
end
elsif Object.const_defined?("Inflector")
Inflector.pluralize(singular)
else
singular + "s"
end
end
end
end
end
Po reštartovaní servera, možeme začať používať helper pluralize s troma parametrami, ktoré nám umožnia dosiahnuť výstup zodpovedajúci slovenským pravopisným pravidlám. Napr.:
Vstávam za <%= pluralize(@count,'hodinu','hodiny','hodín') %>.