translit 0.1.0

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.
Files changed (4) hide show
  1. data/README.markdown +26 -0
  2. data/bin/translit +17 -0
  3. data/lib/translit.rb +39 -0
  4. 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
+