UaEnv - Ukrainian Environment for Ruby

UaEnv - модуль для роботи з українським текстом в Ruby. Головна ціль UaEnv - полегшити розробку україномовних програм на Ruby (і Rails).

UaEnv підтимує тільки UTF-8 (налаштування: $KCODE / KanjiCode ‘u’).

Переконайтесь, що ваш скрипт правильно працює з Unicode - тобто:

  • Змінна $KCODE включена у режим ‘u’

  • Всі строки уже в кодуванні UTF-8

Величезне спасибі Julik і Mash - розробникам RuTils, на основі якого побудований UaEnv.

Cума прописом

UaEnv реалізує суму прописом для цілих і дробових чисел із додатковим врахуванням роду. Наприклад:

15.propysom => "п'ятнадцять"
1357472.propysom => "один мільйон триста п'ятдесят сім тисяч чотириста сімдесят два"
901.propysom(2) => "дев'ятсот одна"
624.propysom_items(2,'книжка','книжки','книжок') => "шістсот двадцять чотири книжки"

Вибір варіанта числівника в залежності від числа

7.items('самурай','самураї','самураїв') => "самураїв"

і вивід “суми прописом” для сум у гривнях

(666.13).grn => "шістсот шістдесят шість гривень тринадцять копійок"

Дати

В клас Date введені наступні константи:

* UA_ABBR_DAYNAMES (нд пн вт ...)
* UA_DAYNAMES_E (перше друге третє ...)
* UA_ABBR_MONTHNAMES (січ лют бер ...)
* UA_INFLECTED_MONTHNAMES (січня лютого березня)
* UA_DAYNAMES (неділя понеділок вівторок)
* UA_MONTHNAMES (січень лютий березень)

Приклад використання:

require 'date'
date = Date.new(2007, 01, 5)
puts "#{Date::UA_ABBR_MONTHNAMES[date.mon]}" => січ
puts "#{Date::UA_DAYNAMES[date.wday]}" => п'ятниця

Відбувається “перекриття” стандартної функції Time#strftime (“рідну” #strftime можно продовжити використовувати через alias-метод #strftime_nouaenv):

Time.local(2007,"jan",5).strftime("%a, %A, %b, %B") => "пт, п'ятниця, січ, січень"
Time.local(2007,"jan",5).strftime_nouaenv("%a, %A, %b, %B") => "Fri, Friday, Jan, January"
Time.now.strftime("Сьогодні %A, %d %B %Y року, %H:%M:%S") => "Сьогодні субота, 6 січня 2007 року, 14:50:34"

Транслітерація

Транслітерація української кирилиці у латиницю:

"Привіт, як справи?".translify >> "Pryvit, yak spravy?"