Ne, nebojte se. Nezbláznil jsem se, ani jsem doopravdy neudělal z Ruby dokonalý analyzátor jazyka českého. Jen jsem pro výuku programování svého syna dospěl k zajímavému pokusu. Neboť ještě neovládá tak dokonale výrazivo, použité u programovacích jazyků, rozhodl jsem se, že zkusím alespoň “počeštit” Ruby.
Princip je velice jednoduchý. Jistě by to šlo napsat ještě lépe, ale jako prototyp mi to docela stačilo. Vše je v jednom modulu, který stačí přihrát přes require.
module Dictionary
module Czech
Pairs = {
'capitalize' => 'prvni_velke',
'capitalize!' => 'prvni_velke!',
'each' => 'kazdy',
'each_byte' => 'kazdy_bajt',
'each_char' => 'kazdy_znak'
}
end
end
class String
def method_missing(symbol, *args, &block)
if Dictionary::Czech::Pairs.invert.keys.include?(symbol.to_s)
self.send(Dictionary::Czech::Pairs.invert[symbol.to_s], *args)
else
super
end
end
end
Vemte prosím v potaz, ze slovník není kompletní, jen jsem vybral pár metod. Předefinování metody method_missing jsem pak provedl i pro třídy Fixnum, Array, Hash a samozřejmě můžete i pro další.
Jak to použít?
Velice jednoduše :-)
require 'dictionary_czech' [10,20,30].kazdy do |prvek| puts prvek end 3.krat do |cislo| puts 10*cislo end
Pokud byste chtěli získat nějaký základ pro slovník, použijte tuto:
({}.methods + [].methods + 1.methods + "a".methods).uniq.sort
Předpokládám, že udělat si z toho krásné asociativní pole zvládne každý. :-)