uaenv 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README +5 -1
- data/lib/datetime/datetime.rb +1 -1
- data/lib/transliteration/national.rb +65 -0
- data/lib/transliteration/transliteration.rb +28 -0
- data/lib/uaenv.rb +2 -1
- metadata +7 -5
data/README
CHANGED
@@ -46,9 +46,13 @@ UaEnv реалізує суму прописом для цілих і дробо
|
|
46
46
|
puts "#{Date::UA_DAYNAMES[date.wday]}" => п'ятниця
|
47
47
|
|
48
48
|
Відбувається "перекриття" стандартної
|
49
|
-
функції Time#strftime ("рідну" #strftime можно продовжити
|
49
|
+
функції Time#strftime ("рідну" #strftime можно продовжити використовувати через alias-метод #strftime_nouaenv):
|
50
50
|
|
51
51
|
Time.local(2007,"jan",5).strftime("%a, %A, %b, %B") => "пт, п'ятниця, січ, січень"
|
52
52
|
Time.local(2007,"jan",5).strftime_nouaenv("%a, %A, %b, %B") => "Fri, Friday, Jan, January"
|
53
|
+
Time.now.strftime("Сьогодні %A, %d %B %Y року, %H:%M:%S") => "Сьогодні субота, 6 січня 2007 року, 14:50:34"
|
53
54
|
|
55
|
+
== Транслітерація
|
54
56
|
|
57
|
+
Транслітерація української кирилиці у латиницю:
|
58
|
+
"Привіт, як справи?".translify >> "Pryvit, yak spravy?"
|
data/lib/datetime/datetime.rb
CHANGED
@@ -20,7 +20,7 @@ end # module UaEnv
|
|
20
20
|
|
21
21
|
class Date
|
22
22
|
UA_MONTHNAMES = [nil] + %w{ січень лютий березень квітень травень червень липень серпень вересень жовтень листопад грудень }
|
23
|
-
UA_DAYNAMES = %w(неділя понеділок вівторок середа
|
23
|
+
UA_DAYNAMES = %w(неділя понеділок вівторок середа червер п'ятниця субота)
|
24
24
|
UA_ABBR_MONTHNAMES = [nil] + %w{ січ лют бер кві тра чер лип сер вер жов лис гру }
|
25
25
|
UA_ABBR_DAYNAMES = %w(нд пн вт ср чт пт сб)
|
26
26
|
UA_INFLECTED_MONTHNAMES = [nil] + %w{ січня лютого березня квітня травня червня липня серпня вересня жовтня листопада грудня }
|
@@ -0,0 +1,65 @@
|
|
1
|
+
#
|
2
|
+
# ** Notes for the Ukrainian National system
|
3
|
+
# Transliteration can be rendered in a simplified form:
|
4
|
+
# 1. Doubled consonants ж, х, ц, ч, ш are simplified, for example Запоріжжя Zaporizhia.
|
5
|
+
# 2. Apostrophe and soft sign are omitted, except for ьо and ьї which are always rendered as ’o and ’i.
|
6
|
+
# 3. gh is used in the romanization of зг (zgh), avoiding confusion with ж (zh).
|
7
|
+
# 4. The second variant is used at the beginning of a word.
|
8
|
+
|
9
|
+
|
10
|
+
module UaEnv::Transliteration::National
|
11
|
+
|
12
|
+
UA_UPPER = %w{ А Б В Г Ґ Д Е Є Ж З И І Ї Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ю Я Ь ' }
|
13
|
+
UA_LOWER = %w{ а б в г ґ д е є ж з и і ї й к л м н о п р с т у ф х ц ч ш щ ю я ь ' }
|
14
|
+
|
15
|
+
UA = UA_LOWER + UA_UPPER
|
16
|
+
|
17
|
+
NATIONAL_LOWER = ['a', 'b', 'v', ['h', 'gh'], 'g', 'd',
|
18
|
+
'e', ['ie','ye'], 'zh', 'z', 'y', 'i',
|
19
|
+
['i','yi'], ['i','y'], 'k', 'l', 'm', 'n',
|
20
|
+
'o', 'p', 'r', 's', 't', 'u',
|
21
|
+
'f', 'kh', 'ts', 'ch', 'sh', 'sch',
|
22
|
+
['iu','yu'], ['ia','ya'], '\'', '"'
|
23
|
+
]
|
24
|
+
|
25
|
+
NATIONAL_UPPER = NATIONAL_LOWER.map{ |i| i.is_a?( Array ) ? i.map{ |j| j.upcase } : i.upcase }
|
26
|
+
|
27
|
+
NATIONAL = NATIONAL_LOWER + NATIONAL_UPPER
|
28
|
+
|
29
|
+
TABLE = {}
|
30
|
+
UA.each_with_index {|char,index| TABLE[char] = NATIONAL[index]}
|
31
|
+
|
32
|
+
|
33
|
+
# Просто замінює кирилицю в строці на латиницю
|
34
|
+
def self.translify(str)
|
35
|
+
chars = str.split(//)
|
36
|
+
|
37
|
+
result = ''
|
38
|
+
chars.each_with_index do | char, index |
|
39
|
+
variant = (index != 0 ? ( chars[index - 1] == " " ? 1 : 0 ) : 1)
|
40
|
+
if UA_UPPER.include?(char) && UA_LOWER.include?(chars[index+1])
|
41
|
+
# "Яна" => "Yana"
|
42
|
+
ch = (TABLE[char].is_a?(Array) ? TABLE[char][variant].downcase.capitalize : TABLE[char].downcase.capitalize)
|
43
|
+
result << ch
|
44
|
+
|
45
|
+
elsif UA_UPPER.include?(char)
|
46
|
+
# "ЯНА" => "YANA"
|
47
|
+
ch = (TABLE[char].is_a?(Array) ? TABLE[char][variant] : TABLE[char] )
|
48
|
+
result << ch
|
49
|
+
|
50
|
+
elsif UA_LOWER.include?(char)
|
51
|
+
# "яна" => "yana"
|
52
|
+
ch = (TABLE[char].is_a?(Array) ? TABLE[char][variant] : TABLE[char] )
|
53
|
+
result << ch
|
54
|
+
|
55
|
+
else
|
56
|
+
result << char
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
return result
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# See also:
|
2
|
+
# http://en.wikipedia.org/wiki/Romanization_of_Ukrainian
|
3
|
+
# http://uk.wikipedia.org/wiki/Транслітерація_української_мови_латиницею
|
4
|
+
# http://www.sdip.gov.ua/ukr/laws/3267/?print=yes
|
5
|
+
|
6
|
+
module UaEnv
|
7
|
+
module Transliteration #:nodoc:
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
require File.join(File.dirname(__FILE__), 'national')
|
12
|
+
|
13
|
+
# Реалізує транслітерацію будь-якого об'єкта, що реалізує String
|
14
|
+
module UaEnv::Transliteration::StringFormatting
|
15
|
+
|
16
|
+
#Транслітерація строки у латиницю
|
17
|
+
def translify
|
18
|
+
UaEnv::Transliteration::National::translify(self.to_s)
|
19
|
+
end
|
20
|
+
|
21
|
+
def translify!
|
22
|
+
self.replace(self.translify)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class Object::String
|
27
|
+
include UaEnv::Transliteration::StringFormatting
|
28
|
+
end
|
data/lib/uaenv.rb
CHANGED
@@ -5,7 +5,7 @@ module UaEnv
|
|
5
5
|
INSTALLATION_DIRECTORY = File.expand_path(File.dirname(__FILE__) + '/../') #:nodoc:
|
6
6
|
MAJOR = 0
|
7
7
|
MINOR = 0
|
8
|
-
TINY =
|
8
|
+
TINY = 3
|
9
9
|
|
10
10
|
# Версія UaEnv
|
11
11
|
VERSION = [MAJOR, MINOR ,TINY].join('.') #:nodoc:
|
@@ -24,3 +24,4 @@ end
|
|
24
24
|
|
25
25
|
UaEnv::load_component :datetime # Дата і час без локалі
|
26
26
|
UaEnv::load_component :pluralizer #Вивід чисел прописом
|
27
|
+
UaEnv::load_component :transliteration # Транслітерація
|
metadata
CHANGED
@@ -3,14 +3,14 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: uaenv
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
7
|
-
date: 2007-01-
|
8
|
-
summary:
|
6
|
+
version: 0.0.3
|
7
|
+
date: 2007-01-17 00:00:00 +02:00
|
8
|
+
summary: Simple processing of Ukrainian strings
|
9
9
|
require_paths:
|
10
10
|
- lib
|
11
11
|
email: anton.linux @nospam@ google.com
|
12
|
-
homepage:
|
13
|
-
rubyforge_project:
|
12
|
+
homepage: http://rubyforge.org/projects/uaenv
|
13
|
+
rubyforge_project: uaenv
|
14
14
|
description:
|
15
15
|
autorequire: uaenv
|
16
16
|
default_executable:
|
@@ -32,6 +32,8 @@ files:
|
|
32
32
|
- lib/uaenv.rb
|
33
33
|
- lib/datetime/datetime.rb
|
34
34
|
- lib/pluralizer/pluralizer.rb
|
35
|
+
- lib/transliteration/transliteration.rb
|
36
|
+
- lib/transliteration/national.rb
|
35
37
|
- README
|
36
38
|
test_files: []
|
37
39
|
|