translit 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +26 -0
- data/bin/translit +17 -0
- data/lib/translit.rb +39 -0
- metadata +78 -0
data/README.markdown
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
## What is it / Что это ##
|
2
|
+
|
3
|
+
It is a simple library allowing you to transliterate between cyrillic and latin.
|
4
|
+
R: Это простая и элегантная программа позволит вам проводить транслитерацию между кирилицой и латиницой.
|
5
|
+
|
6
|
+
It is easy to use from the command line and in your code.
|
7
|
+
R: Ее легко использовать как в коммандной строке так и в вашем коде.
|
8
|
+
|
9
|
+
Install it via:
|
10
|
+
R: Устанавливается она просто:
|
11
|
+
<code>gem install translit</code>
|
12
|
+
|
13
|
+
## USAGE ##
|
14
|
+
|
15
|
+
To use translit from the command line you just type
|
16
|
+
R: Для использовавания translit в командной строке просто напишите
|
17
|
+
<code>translit [your_input_here]</code>
|
18
|
+
where your input could be in cyrillic or latin
|
19
|
+
R: где ваш текст может быть написан успользуя русскую клавиатуру либо латинскую
|
20
|
+
|
21
|
+
Or you can translit stdin now via just:
|
22
|
+
R: Либо вы можете просто вызвать программу и передавать текст в потоке чтения данных
|
23
|
+
<code>translit</code>
|
24
|
+
|
25
|
+
To stop stdin input use .\n (press dot and then enter on the new line)
|
26
|
+
R: Чтобы прервать поток используется стандарная система .\n (напишите . и нажмите enter на чистой строке)
|
data/bin/translit
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'rubygems'
|
3
|
+
require 'translit'
|
4
|
+
|
5
|
+
if ARGV[0]
|
6
|
+
puts Translit.convert ARGV.join(' ')
|
7
|
+
else
|
8
|
+
output = ""
|
9
|
+
while input = STDIN.gets
|
10
|
+
if input == ".\n"
|
11
|
+
puts output
|
12
|
+
break
|
13
|
+
else
|
14
|
+
output += Translit.convert input
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/translit.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
module Translit
|
2
|
+
|
3
|
+
def self.english
|
4
|
+
{ "a"=>["А","а"], "b"=>["Б","б"], "v"=>["В","в"], "g"=>["Г","г"], "d"=>["Д","д"], "e"=>["Е","е"], "jo"=>["Ё","ё"], "yo"=>["Ё","ё"], "ö"=>["Ё","ё"], "zh"=>["Ж","ж"],
|
5
|
+
"z"=>["З","з"], "i"=>["И","и"], "j"=>["Й","й"], "k"=>["К","к"], "l"=>["Л","л"], "m"=>["М","м"], "n"=>["Н","н"], "o"=>["О","о"], "p"=>["П","п"], "r"=>["Р","р"],
|
6
|
+
"s"=>["С","с"], "t"=>["Т","т"], "u"=>["У","у"], "f"=>["Ф","ф"], "h"=>["Х","х"], "x"=>["Х","х"], "c"=>["Ц","ц"], "ch"=>["Ч","ч"], "sh"=>["Ш","ш"], "w"=>["Щ","щ"],
|
7
|
+
"shh"=>["Щ","щ"], "sch"=>["Щ","щ"], "#"=>["Ъ","ъ"], "y"=>["Ы","ы"], "'"=>["Ь","ь"], "je"=>["Э","э"], "ä"=>["Э","э"], "ju"=>["Ю","ю"], "yu"=>["Ю","ю"],
|
8
|
+
"ü"=>["Ю","ю"], "ya"=>["Я","я"], "ja"=>["Я","я"], "q"=>["Я","я"]}
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.russian
|
12
|
+
@russian ||= create_russian_map
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.convert(text)
|
16
|
+
lang = detect_input_language(text.split(/\s+/).first)
|
17
|
+
map = self.send(lang.to_s).sort_by {|k,v| v.length <=> k.length}
|
18
|
+
map.each do |translit_key, translit_value|
|
19
|
+
text.gsub!(translit_key.capitalize, translit_value.first)
|
20
|
+
text.gsub!(translit_key, translit_value.last)
|
21
|
+
end
|
22
|
+
text
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
def self.create_russian_map
|
27
|
+
self.english.inject({}) do |acc, tuple|
|
28
|
+
rus_up, rus_low = tuple.last
|
29
|
+
eng_value = tuple.first
|
30
|
+
acc[rus_up] ? acc[rus_up] << eng_value.capitalize : acc[rus_up] = [eng_value.capitalize]
|
31
|
+
acc[rus_low] ? acc[rus_low] << eng_value : acc[rus_low] = [eng_value]
|
32
|
+
acc
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.detect_input_language(text)
|
37
|
+
text.scan(/\w+/).empty? ? :russian : :english
|
38
|
+
end
|
39
|
+
end
|
metadata
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: translit
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
version: 0.1.0
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- tjbladez
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-09-28 00:00:00 -05:00
|
18
|
+
default_executable: bin/translit
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: !binary |
|
22
|
+
VHJhbnNsaXRlcmF0aW9uIGJldHdlZW4gY3lyaWxsaWMgPC0+IGxhdGluIHwg
|
23
|
+
0KLRgNCw0L3RgdC70LjRgtC10YDQsNGG0LjRjyDQvNC10LbQtNGDINC60LjR
|
24
|
+
gNC40LvQuNGG0L7QuSDQuCDQu9Cw0YLQuNC90LjRhtC+0Lkg
|
25
|
+
|
26
|
+
email: tjbladez@gmail.com
|
27
|
+
executables:
|
28
|
+
- translit
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files: []
|
32
|
+
|
33
|
+
files:
|
34
|
+
- bin/translit
|
35
|
+
- lib/translit.rb
|
36
|
+
- README.markdown
|
37
|
+
has_rdoc: false
|
38
|
+
homepage: http://github.com/tjbladez/translit
|
39
|
+
licenses: []
|
40
|
+
|
41
|
+
post_install_message: !binary |
|
42
|
+
WW91IGFyZSByZWFkeSB0byB0cmFuc2xpdGVyYXRlIHwg0JLRiyDQs9C+0YLQ
|
43
|
+
vtCy0Ysg0Log0YLRgNCw0L3RgdC70LjRgtC10YDQsNGG0LjQuA==
|
44
|
+
|
45
|
+
rdoc_options: []
|
46
|
+
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
segments:
|
54
|
+
- 0
|
55
|
+
version: "0"
|
56
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
segments:
|
61
|
+
- 0
|
62
|
+
version: "0"
|
63
|
+
requirements: []
|
64
|
+
|
65
|
+
rubyforge_project:
|
66
|
+
rubygems_version: 1.3.6
|
67
|
+
signing_key:
|
68
|
+
specification_version: 3
|
69
|
+
summary: !binary |
|
70
|
+
VHJhbnNsaXRlcmF0aW9uIGJldHdlZW4gY3lyaWxsaWMgPC0+IGxhdGluIGZy
|
71
|
+
b20gY29tbWFuZC1saW5lIG9yIHlvdXIgcHJvZ3JhbSB8INCi0YDQsNC90YHQ
|
72
|
+
u9C40YLQtdGA0LDRhtC40Y8g0LzQtdC20LTRgyDQutC40YDQuNC70LjRhtC+
|
73
|
+
0Lkg0Lgg0LvQsNGC0LjQvdC40YbQvtC5INGBINC60L7QvNC80LDQvdC00L3Q
|
74
|
+
vtC5INGB0YLRgNC+0LrQuCDQuNC70Lgg0LIg0YLQstC+0LXQuSDQv9GA0L7Q
|
75
|
+
s9GA0LDQvNC80LU=
|
76
|
+
|
77
|
+
test_files: []
|
78
|
+
|