uaenv 0.0.3 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/datetime/datetime.rb +2 -0
- data/lib/fio/fio.rb +149 -0
- data/lib/pluralizer/pluralizer.rb +18 -17
- data/lib/transliteration/iso9.rb +53 -0
- data/lib/transliteration/national.rb +3 -2
- data/lib/transliteration/qwertz.rb +40 -0
- data/lib/transliteration/transliteration.rb +20 -4
- data/lib/uaenv.rb +4 -6
- data/{README → readme} +20 -10
- metadata +45 -35
data/lib/datetime/datetime.rb
CHANGED
data/lib/fio/fio.rb
ADDED
@@ -0,0 +1,149 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# Функція схиляє прізвище, ім'я і по батькові в
|
4
|
+
# давальний відмінок. Наразі функція потребує серйозних доопрацювань!
|
5
|
+
#
|
6
|
+
# * Деякі українські прізвища з очевидною семантикою (наприклад Кіт, Чорновіл, Кривоніс, Білокінь) просто не підлягають відмінюванню за правилами.
|
7
|
+
|
8
|
+
|
9
|
+
module UaEnv::FIO
|
10
|
+
|
11
|
+
# Схиляє прізвища, імені і по батькові (ПІП) у давальний відмінок ("кому? чому?").
|
12
|
+
# Приведений код може містити неточності, ви можете вільно використовувати його на власний розсуд.
|
13
|
+
# Тестування продовжується. Присилайте свої відгуки і зауваження.
|
14
|
+
# (1.9)
|
15
|
+
def self.dative_case(first_name, second_name, patronymic)
|
16
|
+
if !first_name.empty? && !second_name.empty? && !patronymic.empty?
|
17
|
+
if patronymic[-1] == 'ч'
|
18
|
+
# Схиляння чоловічого прізвища
|
19
|
+
first_name = male_first_name_dative_case(first_name)
|
20
|
+
# Схиляння імені чоловіка
|
21
|
+
second_name = male_second_name_dative_case(second_name)
|
22
|
+
# Схилення по батькові
|
23
|
+
patronymic = patronymic + 'у'
|
24
|
+
else
|
25
|
+
# Схилення жіночого прізвища
|
26
|
+
first_name = female_first_name_dative_case(first_name)
|
27
|
+
# Схиляння жіночого імені
|
28
|
+
second_name = female_second_name_dative_case(second_name)
|
29
|
+
# Схилення по батькові
|
30
|
+
patronymic = patronymic[0..-2] + 'ій'
|
31
|
+
end
|
32
|
+
else
|
33
|
+
# Якийсь із параметрів порожній.
|
34
|
+
end
|
35
|
+
return first_name, second_name, patronymic
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
# Схилення чоловічого імені у давальний відмінок
|
41
|
+
# (1.9)
|
42
|
+
#
|
43
|
+
def self.male_second_name_dative_case(second_name)
|
44
|
+
case second_name[-1]
|
45
|
+
when /й|ь/
|
46
|
+
# Сергі(й) => Сергі(ю)
|
47
|
+
second_name = second_name[0..-2] + "ю"
|
48
|
+
when /а|я/
|
49
|
+
# Сан(я) => Сан(і)
|
50
|
+
second_name = second_name[0..-2] + "і"
|
51
|
+
when /о/
|
52
|
+
# Михайл(о) => Михайл(у)
|
53
|
+
second_name = second_name[0..-2] + "у"
|
54
|
+
else
|
55
|
+
# Антон => Антон(у)
|
56
|
+
second_name = second_name + "у"
|
57
|
+
end
|
58
|
+
|
59
|
+
return second_name
|
60
|
+
end
|
61
|
+
|
62
|
+
# Схилення чоловічого прізвища у давальний відмінок
|
63
|
+
# (1.9)
|
64
|
+
def self.male_first_name_dative_case(first_name)
|
65
|
+
case first_name[-1]
|
66
|
+
when /й/
|
67
|
+
if (first_name[-2] =~ /и/)
|
68
|
+
# Гладки(й) => Гладк(ому)
|
69
|
+
first_name = first_name[0..-3] + "ому"
|
70
|
+
else
|
71
|
+
# Водол(і)(й) => Водолі(ю)
|
72
|
+
first_name = first_name[0..-2] + "ю"
|
73
|
+
end
|
74
|
+
when /о/
|
75
|
+
# Головченк(о) => Головченк(у)
|
76
|
+
first_name = first_name[0..-2] + "у"
|
77
|
+
when /а|я/
|
78
|
+
# Всі прізвища які закінчуються на а, перед яким йдуть голосні букви(найчастіше у), не відміняються
|
79
|
+
# Гал(у)(а) => Галуа
|
80
|
+
if first_name[-2] =~ /у/
|
81
|
+
# Нічого не робити
|
82
|
+
else
|
83
|
+
# Зол(а) => Зол(і)
|
84
|
+
first_name = first_name[0..-2] + "і"
|
85
|
+
end
|
86
|
+
when /і|е|є|у|и|ю/
|
87
|
+
# Всі прізвище з е, є, у, і, и, ю на кінці не відмінюються
|
88
|
+
# Дал(і) => Далі
|
89
|
+
else
|
90
|
+
# Так схиляються всі типові чоловічі прізвища
|
91
|
+
first_name = first_name + "у"
|
92
|
+
end
|
93
|
+
|
94
|
+
return first_name
|
95
|
+
end
|
96
|
+
|
97
|
+
# Схилення жіночого прізвища у давальний відмінок
|
98
|
+
# (1.9)
|
99
|
+
#
|
100
|
+
def self.female_first_name_dative_case(first_name)
|
101
|
+
case first_name[-1]
|
102
|
+
when /о|и|і|й|б|в|г|д|ж|з|к|л|м|н|п|р|с|т|ф|х|ц|ч|ш|щ|ь/
|
103
|
+
# Нічого не робити
|
104
|
+
when /я/
|
105
|
+
# Гмир(я) => Гмир(і)
|
106
|
+
first_name = first_name[0..-2] + "і"
|
107
|
+
when /а/
|
108
|
+
if first_name[-3..-2] == "ав"
|
109
|
+
# Перевірка деяких грузинських прізвищ
|
110
|
+
first_name = first_name[0..-2] + "і"
|
111
|
+
elsif first_name[-2] =~ /у/
|
112
|
+
# Нічого не робити
|
113
|
+
# Мар(у)(а) => Маруа
|
114
|
+
else
|
115
|
+
first_name = first_name[0..-2] + "ій"
|
116
|
+
end
|
117
|
+
else
|
118
|
+
# Мамінов(а) => Мамінов(ій)
|
119
|
+
first_name = first_name[0..-2] + "ій"
|
120
|
+
end
|
121
|
+
|
122
|
+
return first_name
|
123
|
+
end
|
124
|
+
|
125
|
+
# Схилення жіночого імені у давальний відмінок
|
126
|
+
# (1.9)
|
127
|
+
#
|
128
|
+
def self.female_second_name_dative_case(second_name)
|
129
|
+
case second_name[-1]
|
130
|
+
when /а|я/
|
131
|
+
if second_name[-2] =~ /і|о/
|
132
|
+
# Мар(і)(я)=> Марі(ї)
|
133
|
+
second_name = second_name[0..-2] + "ї"
|
134
|
+
elsif second_name[-2] == "к"
|
135
|
+
# Марин(к)(а)=> Марин(ці)
|
136
|
+
second_name = second_name[0..-3] + "ці"
|
137
|
+
else
|
138
|
+
# Кат(я) => Кат(і)
|
139
|
+
second_name = second_name[0..-2] + "і"
|
140
|
+
end
|
141
|
+
when /в/
|
142
|
+
# Любо(в) => Любов(і)
|
143
|
+
second_name = second_name + "і"
|
144
|
+
end
|
145
|
+
|
146
|
+
return second_name
|
147
|
+
end
|
148
|
+
|
149
|
+
end
|
@@ -1,12 +1,14 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module UaEnv
|
2
4
|
|
3
5
|
module Pluralization #:nodoc:
|
4
6
|
|
5
|
-
# Вибирає потрібний відмінок в
|
7
|
+
# Вибирає потрібний відмінок в залежності від числа
|
6
8
|
def self.choose_plural( amount, *variants )
|
7
|
-
variant = ( amount % 10 == 1 && amount % 100 != 11 ? 1 : amount % 10 >= 2 && amount % 10 <= 4 && (amount % 100 < 10 || amount % 100 >= 20) ? 2 : 3 )
|
9
|
+
variant = ( (amount % 10 == 1 && amount % 100 != 11) ? ( 1 ) : ( amount % 10 >= 2 && amount % 10 <= 4 && (amount % 100 < 10 || amount % 100 >= 20) ) ? 2 : 3 )
|
8
10
|
|
9
|
-
variants[
|
11
|
+
variants[variant - 1]
|
10
12
|
end # self.choose_plural
|
11
13
|
|
12
14
|
def self.grn( amount )
|
@@ -26,7 +28,7 @@ module UaEnv
|
|
26
28
|
pts.join(' ')
|
27
29
|
end # self.grn
|
28
30
|
|
29
|
-
# Виконує перетворення числа з
|
31
|
+
# Виконує перетворення числа з цифрового виду в символьний
|
30
32
|
# (amount, gender, one_item='', two_items='', five_items='')
|
31
33
|
# amount - числівник
|
32
34
|
# gender = 1 - чоловічий, = 2 - жіночий, = 3 - середній
|
@@ -109,14 +111,14 @@ module UaEnv
|
|
109
111
|
when 18 then "вісімнадцять "
|
110
112
|
when 19 then "дев'ятнадцять "
|
111
113
|
end
|
112
|
-
when 2
|
113
|
-
when 3
|
114
|
-
when 4
|
115
|
-
when 5
|
116
|
-
when 6
|
117
|
-
when 7
|
118
|
-
when 8
|
119
|
-
when 9
|
114
|
+
when 2 then tens = "двадцять "
|
115
|
+
when 3 then tens = "тридцять "
|
116
|
+
when 4 then tens = "сорок "
|
117
|
+
when 5 then tens = "п'ятдесят "
|
118
|
+
when 6 then tens = "шістдесят "
|
119
|
+
when 7 then tens = "сімдесят "
|
120
|
+
when 8 then tens = "вісімдесят "
|
121
|
+
when 9 then tens = "дев'яносто "
|
120
122
|
end
|
121
123
|
#
|
122
124
|
|
@@ -159,11 +161,10 @@ module UaEnv
|
|
159
161
|
end # def self.sum_string_fn
|
160
162
|
|
161
163
|
|
162
|
-
|
163
164
|
# Реалізує вивід прописом будь-якого об'єкта, що реалізує Float
|
164
165
|
module FloatFormatting
|
165
|
-
# Повертає суму прописом із врахуванням дробової частини. Дробова частина
|
166
|
-
# дробова частина закінчується нулями) до найближчої долі (500 тисячних
|
166
|
+
# Повертає суму прописом із врахуванням дробової частини. Дробова частина закруглюється до мільйонної, або (якщо
|
167
|
+
# дробова частина закінчується нулями) до найближчої долі (500 тисячних закруглюється до 5 десятих).
|
167
168
|
# Додатковий аргумент - рід іменника (1 - чоловічий, 2 - жіночий, 3 - середній)
|
168
169
|
def propysom(gender = 2)
|
169
170
|
raise "Це не число!" if self.nan?
|
@@ -187,7 +188,7 @@ module UaEnv
|
|
187
188
|
it << ["трильйонна", "трильйонних", "трильйонних"]
|
188
189
|
|
189
190
|
while it[signs].nil?
|
190
|
-
remainder = (
|
191
|
+
remainder = (remainderi/10).round
|
191
192
|
signs = remainder.to_s.size - 1
|
192
193
|
end
|
193
194
|
|
@@ -247,4 +248,4 @@ end
|
|
247
248
|
|
248
249
|
class Object::Float
|
249
250
|
include UaEnv::Pluralization::FloatFormatting
|
250
|
-
end
|
251
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# Норма ISO 9, 1995 р.
|
4
|
+
# Зокрема, застосовується в Німеччині для обов'язкового транслітерування українських прізвищ та імен
|
5
|
+
# в офіційних документах (паперів при виїзді з України в Німеччину для постійного проживання).
|
6
|
+
# Приклад транслітерації: «Олександр Віталійович Рибальченко» = "Oleksandr Vìtalìjovič Ribal´čenko"
|
7
|
+
#
|
8
|
+
module UaEnv::Transliteration::ISO9
|
9
|
+
|
10
|
+
UA_UPPER = %w{ А Б В Г Ґ Д Е Є Ж З И І Ї Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ю Я Ь ' }
|
11
|
+
UA_LOWER = %w{ а б в г ґ д е є ж з и і ї й к л м н о п р с т у ф х ц ч ш щ ю я ь ' }
|
12
|
+
UA = UA_LOWER + UA_UPPER
|
13
|
+
ISO9_LOWER = ['a', 'b', 'v', 'g', 'ģ', 'd', 'e', 'ê', 'ž', 'z', 'i', 'ì', 'ï', 'j', 'k', 'l', 'm',
|
14
|
+
'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'č', 'š', 'ŝ', 'û', 'â', '´', '"']
|
15
|
+
# VIM : select text and gU
|
16
|
+
ISO9_UPPER = ['A', 'B', 'V', 'G', 'Ģ', 'D', 'E', 'Ê', 'Ž', 'Z', 'I', 'Ì', 'Ï', 'J', 'K', 'L', 'M',
|
17
|
+
'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Č', 'Š', 'Ŝ', 'Û', 'Â', '´', '"']
|
18
|
+
ISO9 = ISO9_LOWER + ISO9_UPPER
|
19
|
+
|
20
|
+
TABLE = {}
|
21
|
+
UA.each_with_index { |char, index| TABLE[char] = ISO9[index] }
|
22
|
+
|
23
|
+
def self.translify(str)
|
24
|
+
chars = str.split(//)
|
25
|
+
|
26
|
+
result = ''
|
27
|
+
chars.each_with_index do |char, index|
|
28
|
+
variant = (index != 0 ? ( chars[index - 1] == " " ? 1 : 0 ) : 1) # Воно ту нафік не здалось :)
|
29
|
+
|
30
|
+
if UA_UPPER.include?(char) && UA_LOWER.include?(chars[index+1])
|
31
|
+
# "Яна" => "Âna"
|
32
|
+
ch = (TABLE[char].is_a?(Array) ? TABLE[char][variant].downcase.capitalize : TABLE[char].downcase.capitalize)
|
33
|
+
result << ch
|
34
|
+
|
35
|
+
elsif UA_UPPER.include?(char)
|
36
|
+
# "ЯНА" => "ÂNA"
|
37
|
+
ch = (TABLE[char].is_a?(Array) ? TABLE[char][variant] : TABLE[char] )
|
38
|
+
result << ch
|
39
|
+
|
40
|
+
elsif UA_LOWER.include?(char)
|
41
|
+
# "яна" => "âna"
|
42
|
+
ch = (TABLE[char].is_a?(Array) ? TABLE[char][variant] : TABLE[char] )
|
43
|
+
result << ch
|
44
|
+
|
45
|
+
else
|
46
|
+
result << char
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
return result
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
|
-
#
|
1
|
+
# encoding: utf-8
|
2
|
+
|
2
3
|
# ** Notes for the Ukrainian National system
|
3
4
|
# Transliteration can be rendered in a simplified form:
|
4
5
|
# 1. Doubled consonants ж, х, ц, ч, ш are simplified, for example Запоріжжя Zaporizhia.
|
@@ -62,4 +63,4 @@ module UaEnv::Transliteration::National
|
|
62
63
|
end
|
63
64
|
|
64
65
|
|
65
|
-
end
|
66
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# Text is converted as if it typed with wrong language selected on en/ua qwerty winkeys keyboard. Non-cyrillic characters also converted.
|
4
|
+
#
|
5
|
+
module UaEnv::Transliteration::QWERTY
|
6
|
+
|
7
|
+
UA_LOWER = %w{ й ц у к е н г ш щ з х ї ф і в а п р о л д ж є я ч с м и т ь б ю . }
|
8
|
+
UA_UPPER = %w{ Й Ц У К Е Н Г Ш Щ З Х Ї Ф І В А П Р О Л Д Ж Є Я Ч С М И Т Ь Б Ю , }
|
9
|
+
UA = UA_LOWER + UA_UPPER
|
10
|
+
|
11
|
+
LAT_LOWER = %w{ q w e r t y u i o p [ ] a s d f g h j k l ; ' z x c v b n m , . / }
|
12
|
+
LAT_UPPER = %w{ Q W E R T Y U I O P { } A S D F G H J K L : " Z X C V B N M < > ? }
|
13
|
+
LAT = LAT_LOWER + LAT_UPPER
|
14
|
+
|
15
|
+
TABLE_LAT_KEYS = {}
|
16
|
+
LAT.each_with_index { |char, index| TABLE_LAT_KEYS[char] = UA[index] }
|
17
|
+
|
18
|
+
TABLE_UA_KEYS = {}
|
19
|
+
UA.each_with_index { |char, index| TABLE_UA_KEYS[char] = LAT[index] }
|
20
|
+
|
21
|
+
|
22
|
+
# Просто замінює символи набрані латиницею у відповідні кириличні символи
|
23
|
+
def self.decode_ua(str)
|
24
|
+
chars = str.split(//)
|
25
|
+
result = ''
|
26
|
+
chars.each{ |char| result << ( LAT.include?(char) ? TABLE_LAT_KEYS[char] : char ) }
|
27
|
+
|
28
|
+
return result
|
29
|
+
end
|
30
|
+
|
31
|
+
# Просто замінює символи набрані кирилицею у відповідні латинські символи
|
32
|
+
def self.decode_lat(str)
|
33
|
+
chars = str.split(//)
|
34
|
+
result = ''
|
35
|
+
chars.each { |char| result << ( UA.include?(char) ? TABLE_UA_KEYS[char] : char ) }
|
36
|
+
|
37
|
+
return result
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
# See also:
|
2
4
|
# http://en.wikipedia.org/wiki/Romanization_of_Ukrainian
|
3
5
|
# http://uk.wikipedia.org/wiki/Транслітерація_української_мови_латиницею
|
@@ -9,20 +11,34 @@ module UaEnv
|
|
9
11
|
end
|
10
12
|
|
11
13
|
require File.join(File.dirname(__FILE__), 'national')
|
14
|
+
require File.join(File.dirname(__FILE__), 'iso9')
|
15
|
+
require File.join(File.dirname(__FILE__), 'qwertz')
|
12
16
|
|
13
17
|
# Реалізує транслітерацію будь-якого об'єкта, що реалізує String
|
14
18
|
module UaEnv::Transliteration::StringFormatting
|
15
19
|
|
16
20
|
#Транслітерація строки у латиницю
|
17
|
-
def
|
21
|
+
def translify_national
|
18
22
|
UaEnv::Transliteration::National::translify(self.to_s)
|
19
23
|
end
|
20
24
|
|
21
|
-
def
|
22
|
-
self.replace(self.
|
25
|
+
def translify_national!
|
26
|
+
self.replace(self.translify_national)
|
27
|
+
end
|
28
|
+
|
29
|
+
def translify_iso9
|
30
|
+
UaEnv::Transliteration::ISO9::translify(self.to_s)
|
23
31
|
end
|
32
|
+
|
33
|
+
def translify_iso9!
|
34
|
+
self.replace(self.translify_iso9)
|
35
|
+
end
|
36
|
+
|
37
|
+
# alias_method :new, :old
|
38
|
+
alias_method :translify, :translify_national
|
39
|
+
alias_method :translify!, :translify_national!
|
24
40
|
end
|
25
41
|
|
26
42
|
class Object::String
|
27
43
|
include UaEnv::Transliteration::StringFormatting
|
28
|
-
end
|
44
|
+
end
|
data/lib/uaenv.rb
CHANGED
@@ -1,18 +1,15 @@
|
|
1
|
-
|
1
|
+
# encoding: utf-8
|
2
2
|
|
3
3
|
module UaEnv
|
4
4
|
# Каталог, куди встановлений модуль UaEnv. Потрібен для автоматичного копіювання у інші додатки.
|
5
5
|
INSTALLATION_DIRECTORY = File.expand_path(File.dirname(__FILE__) + '/../') #:nodoc:
|
6
6
|
MAJOR = 0
|
7
7
|
MINOR = 0
|
8
|
-
TINY =
|
8
|
+
TINY = 6
|
9
9
|
|
10
10
|
# Версія UaEnv
|
11
11
|
VERSION = [MAJOR, MINOR ,TINY].join('.') #:nodoc:
|
12
12
|
|
13
|
-
# Стандартний маркер для підстановок - invalid UTF sequence
|
14
|
-
SUBSTITUTION_MARKER = "\xF0\xF0\xF0\xF0" #:nodoc:
|
15
|
-
|
16
13
|
def self.load_component(name) #:nodoc:
|
17
14
|
require File.join(UaEnv::INSTALLATION_DIRECTORY, "lib", name.to_s, name.to_s)
|
18
15
|
end
|
@@ -23,5 +20,6 @@ module UaEnv
|
|
23
20
|
end
|
24
21
|
|
25
22
|
UaEnv::load_component :datetime # Дата і час без локалі
|
26
|
-
UaEnv::load_component :pluralizer
|
23
|
+
UaEnv::load_component :pluralizer # Вивід чисел прописом
|
27
24
|
UaEnv::load_component :transliteration # Транслітерація
|
25
|
+
UaEnv::load_component :fio # Відмінювання прізвища, імені і по батькові у давальний відмінок
|
data/{README → readme}
RENAMED
@@ -3,15 +3,11 @@
|
|
3
3
|
UaEnv - модуль для роботи з українським текстом в Ruby. Головна ціль UaEnv - полегшити
|
4
4
|
розробку україномовних програм на Ruby (і Rails).
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
Переконайтесь, що ваш скрипт правильно працює з Unicode - тобто:
|
9
|
-
|
10
|
-
* Змінна $KCODE включена у режим 'u'
|
11
|
-
* Всі строки уже в кодуванні UTF-8
|
6
|
+
Версія > 0.0.6 не підтримує Ruby < 1.9.0
|
12
7
|
|
13
8
|
Величезне спасибі Julik і Mash - розробникам RuTils, на основі якого побудований UaEnv.
|
14
9
|
|
10
|
+
|
15
11
|
== Cума прописом
|
16
12
|
|
17
13
|
UaEnv реалізує суму прописом для цілих і дробових чисел із додатковим врахуванням роду. Наприклад:
|
@@ -20,14 +16,13 @@ UaEnv реалізує суму прописом для цілих і дробо
|
|
20
16
|
901.propysom(2) => "дев'ятсот одна"
|
21
17
|
624.propysom_items(2,'книжка','книжки','книжок') => "шістсот двадцять чотири книжки"
|
22
18
|
|
23
|
-
|
24
|
-
|
25
19
|
Вибір варіанта числівника в залежності від числа
|
26
20
|
7.items('самурай','самураї','самураїв') => "самураїв"
|
27
21
|
|
28
22
|
і вивід "суми прописом" для сум у гривнях
|
29
23
|
(666.13).grn => "шістсот шістдесят шість гривень тринадцять копійок"
|
30
24
|
|
25
|
+
|
31
26
|
== Дати
|
32
27
|
|
33
28
|
В клас Date введені наступні константи:
|
@@ -52,7 +47,22 @@ UaEnv реалізує суму прописом для цілих і дробо
|
|
52
47
|
Time.local(2007,"jan",5).strftime_nouaenv("%a, %A, %b, %B") => "Fri, Friday, Jan, January"
|
53
48
|
Time.now.strftime("Сьогодні %A, %d %B %Y року, %H:%M:%S") => "Сьогодні субота, 6 січня 2007 року, 14:50:34"
|
54
49
|
|
50
|
+
|
55
51
|
== Транслітерація
|
56
52
|
|
57
|
-
Транслітерація української кирилиці у
|
58
|
-
"Привіт, як
|
53
|
+
Транслітерація української кирилиці у латиницю (національна):
|
54
|
+
"Привіт, як ся маєш?".translify => "Pryvit, yak sia maiesh?"
|
55
|
+
"Привіт, як ся маєш?".translify_national => "Pryvit, yak sia maiesh?"
|
56
|
+
|
57
|
+
Транслітерація української кирилиці у латиницю (ISO9):
|
58
|
+
"Привіт, як ся маєш?".translify_iso9 => "Privìt, âk sâ maêš?"
|
59
|
+
|
60
|
+
Текст кодується так, як ніби він набраний на qwerty-клавіатурі (winkeys) з неправильною активно розкладкою (en замість ua). Кодування відбувається в обидві сторони:
|
61
|
+
UaEnv::Transliteration::QWERTY::decode_ua("Ghbdsn? zr cghfdb") => "Привіт, як справи"
|
62
|
+
UaEnv::Transliteration::QWERTY::decode_lat("Руддщб рщц фку нщг") => "Hello, how are you"
|
63
|
+
|
64
|
+
|
65
|
+
== Відмінювання прізвища, імені і по батькові
|
66
|
+
|
67
|
+
Відміняє призвище, ім'я і по батькові у давальний відмінок. Ця функція потребує серйозної доводки.
|
68
|
+
UaEnv::FIO::dative_case("Іванченко", "Іван", "Іванович") => ["Іванченку", "Івану", "Івановичу"]
|
metadata
CHANGED
@@ -1,51 +1,61 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.0
|
3
|
-
specification_version: 1
|
4
2
|
name: uaenv
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
7
|
-
date: 2007-01-17 00:00:00 +02:00
|
8
|
-
summary: Simple processing of Ukrainian strings
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: anton.linux @nospam@ google.com
|
12
|
-
homepage: http://rubyforge.org/projects/uaenv
|
13
|
-
rubyforge_project: uaenv
|
14
|
-
description:
|
15
|
-
autorequire: uaenv
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 0.0.6
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
7
|
- Anton Maminov
|
8
|
+
autorequire: uaenv
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-02-16 00:00:00 +02:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description:
|
17
|
+
email: anton.linux @nospam@ google.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- readme
|
31
24
|
files:
|
32
25
|
- lib/uaenv.rb
|
33
|
-
- lib/datetime/datetime.rb
|
34
26
|
- lib/pluralizer/pluralizer.rb
|
27
|
+
- lib/datetime/datetime.rb
|
35
28
|
- lib/transliteration/transliteration.rb
|
29
|
+
- lib/transliteration/qwertz.rb
|
36
30
|
- lib/transliteration/national.rb
|
37
|
-
-
|
38
|
-
|
39
|
-
|
31
|
+
- lib/transliteration/iso9.rb
|
32
|
+
- lib/fio/fio.rb
|
33
|
+
- readme
|
34
|
+
has_rdoc: true
|
35
|
+
homepage: http://rubyforge.org/projects/uaenv
|
36
|
+
post_install_message:
|
40
37
|
rdoc_options: []
|
41
38
|
|
42
|
-
|
43
|
-
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
39
|
+
require_paths:
|
40
|
+
- lib
|
41
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: "0"
|
46
|
+
version:
|
47
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: "0"
|
52
|
+
version:
|
48
53
|
requirements: []
|
49
54
|
|
50
|
-
|
55
|
+
rubyforge_project: uaenv
|
56
|
+
rubygems_version: 1.2.0
|
57
|
+
signing_key:
|
58
|
+
specification_version: 2
|
59
|
+
summary: Simple processing of Ukrainian strings
|
60
|
+
test_files: []
|
51
61
|
|