uaenv 0.0.3 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
|