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ý. :-)