ruslat 0.1.1 → 1.0.1
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.
- checksums.yaml +5 -5
- data/README.md +33 -10
- data/exe/ruslat +1 -1
- data/lib/ruslat/core.rb +254 -231
- data/lib/ruslat/version.rb +1 -1
- data/lib/ruslat.rb +3 -6
- metadata +12 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ccb4c8190c8faa4cd39922f2233c0238581e787ee1dec17401c3da00e3a02818
|
4
|
+
data.tar.gz: 432d43453786f1f7c0335bc0555240cfec0142a9915a1effd568aacf61e0ea4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e402e50bef7126530534283b20c26994f2f8adf8c6488d8bad40770d7c2fdf0c13384b8045e5ab866e2009e5c3f6c2d4855a04771b0dafc1d4be73289bbb33d
|
7
|
+
data.tar.gz: 63a67746382d3d29e0df40a6d9be5803895031947e8fc35b7b6b858f3f2d9e6da847e181af8f9a75d562f436d7287d8b09587d510ed7ecc0e654279ec1f5c0da
|
data/README.md
CHANGED
@@ -2,14 +2,15 @@
|
|
2
2
|
|
3
3
|
Ruslat is library for bidirectional transliteration for russian to latin.
|
4
4
|
|
5
|
-
It is Ruby implementation of Andrey V. Lukyanov transliteration system.
|
5
|
+
It is Ruby implementation of Andrey V. Lukyanov transliteration system.
|
6
|
+
See <http://tapemark.narod.ru/ruslat.html> for more info.
|
6
7
|
|
7
8
|
## Installation
|
8
9
|
|
9
10
|
Add this line to your application's Gemfile:
|
10
11
|
|
11
12
|
```ruby
|
12
|
-
gem
|
13
|
+
gem "ruslat"
|
13
14
|
```
|
14
15
|
|
15
16
|
And then execute:
|
@@ -23,25 +24,47 @@ Or install it yourself as:
|
|
23
24
|
## Usage
|
24
25
|
|
25
26
|
```ruby
|
26
|
-
require
|
27
|
+
require "ruslat"
|
27
28
|
|
28
|
-
|
29
|
+
Ruslat.rus_to_lat("Привет Мир!") # => "Privet Mir!"
|
30
|
+
Ruslat.lat_to_rus("Privet Mir!") # => "Привет Мир!"
|
29
31
|
|
30
|
-
|
31
|
-
|
32
|
+
Ruslat.rus_to_lat("АЛЁША") # => "ALYoShA"
|
33
|
+
Ruslat.case_correct("ALYoShA") # => "ALYOSHA"
|
34
|
+
|
35
|
+
typo = "CAPA"
|
36
|
+
typo.bytes # => [67, 65, 80, 65]
|
37
|
+
Ruslat.rus_typo_correct(typo) # => "САРА"
|
38
|
+
Ruslat.rus_typo_correct(typo).bytes # => [208, 161, 208, 144, 208, 160, 208, 144]
|
39
|
+
|
40
|
+
typo = "Sаrа"
|
41
|
+
typo.bytes # => [83, 208, 176, 114, 208, 176]
|
42
|
+
Ruslat.lat_typo_correct(typo) # => "Sara"
|
43
|
+
Ruslat.lat_typo_correct(typo).bytes # => [83, 97, 114, 97]
|
32
44
|
```
|
33
45
|
|
34
46
|
## Development
|
35
47
|
|
36
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
48
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
49
|
+
`rake spec` to run the tests. You can also run `bin/console` for an interactive
|
50
|
+
prompt that will allow you to experiment.
|
37
51
|
|
38
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To
|
52
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To
|
53
|
+
release a new version, update the version number in `version.rb`, and then run
|
54
|
+
`bundle exec rake release`, which will create a git tag for the version, push
|
55
|
+
git commits and tags, and push the `.gem` file to
|
56
|
+
[rubygems.org](https://rubygems.org).
|
39
57
|
|
40
58
|
## Contributing
|
41
59
|
|
42
|
-
Bug reports and pull requests are welcome on GitHub at
|
60
|
+
Bug reports and pull requests are welcome on GitHub at
|
61
|
+
[https://github.com/vsuhachev/ruslat](https://github.com/vsuhachev/ruslat). This
|
62
|
+
project is intended to be a safe, welcoming space for collaboration, and
|
63
|
+
contributors are expected to adhere to the
|
64
|
+
[Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
43
65
|
|
44
66
|
|
45
67
|
## License
|
46
68
|
|
47
|
-
The gem is available as open source under the terms of the
|
69
|
+
The gem is available as open source under the terms of the
|
70
|
+
[MIT License](http://opensource.org/licenses/MIT).
|
data/exe/ruslat
CHANGED
data/lib/ruslat/core.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
1
|
module Ruslat
|
4
2
|
# (c) 2008 Andrey V. Lukyanov (e-mail: land@long.yar.ru)
|
5
3
|
# License: I grant anyone the right to use this program
|
@@ -45,246 +43,271 @@ module Ruslat
|
|
45
43
|
module Core
|
46
44
|
# Russian to Latin converter
|
47
45
|
def rus_to_lat(string)
|
48
|
-
string.dup
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
46
|
+
str = string.dup
|
47
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ьй([аоуАОУ])/, '\1jy\2')
|
48
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Ьй([аоуАОУ])/, '\1Jy\2')
|
49
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ьЙ([аоуАОУ])/, '\1jY\2')
|
50
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ЬЙ([аоуАОУ])/, '\1JY\2')
|
51
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ьйе/, '\1jye')
|
52
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ьЙе/, '\1jYe')
|
53
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ьйЕ/, '\1jyE')
|
54
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ьЙЕ/, '\1jYE')
|
55
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Ьйе/, '\1Jye')
|
56
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ЬЙе/, '\1JYe')
|
57
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ЬйЕ/, '\1JyE')
|
58
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ЬЙЕ/, '\1JYE')
|
59
|
+
|
60
|
+
str.gsub!(/([аеёийоуъыьэюяАЕЁИЙОУЪЫЬЭЮЯEe])й([аоуАОУ])/, '\1y\2')
|
61
|
+
str.gsub!(/([аеёийоуъыьэюяАЕЁИЙОУЪЫЬЭЮЯEe])й([аоуАОУ])/, '\1y\2')
|
62
|
+
str.gsub!(/([аеёийоуъыьэюяАЕЁИЙОУЪЫЬЭЮЯEe])Й([аоуАОУ])/, '\1Y\2')
|
63
|
+
str.gsub!(/([аеёийоуъыьэюяАЕЁИЙОУЪЫЬЭЮЯEe])Й([аоуАОУ])/, '\1Y\2')
|
64
|
+
|
65
|
+
str.gsub!(/([^абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯeEyY])й([аоуАОУ])/, '\1y\2')
|
66
|
+
str.gsub!(/([^абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯeEyY])Й([аоуАОУ])/, '\1Y\2')
|
67
|
+
str.gsub!(/^й([аоуАОУ])/, 'y\1')
|
68
|
+
str.gsub!(/^Й([аоуАОУ])/, 'Y\1')
|
69
|
+
|
70
|
+
str.gsub!(/([аеёийоуъыьэюяАЕЁИЙОУЪЫЬЭЮЯEe])йе/, '\1ye')
|
71
|
+
str.gsub!(/([аеёийоуъыьэюяАЕЁИЙОУЪЫЬЭЮЯEe])Йе/, '\1Ye')
|
72
|
+
str.gsub!(/([аеёийоуъыьэюяАЕЁИЙОУЪЫЬЭЮЯEe])йЕ/, '\1yE')
|
73
|
+
str.gsub!(/([аеёийоуъыьэюяАЕЁИЙОУЪЫЬЭЮЯEe])ЙЕ/, '\1YE')
|
74
|
+
|
75
|
+
str.gsub!(/([^абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯeEyY])йе/, '\1ye')
|
76
|
+
str.gsub!(/([^абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯeEyY])Йе/, '\1Ye')
|
77
|
+
str.gsub!(/([^абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯeEyY])йЕ/, '\1yE')
|
78
|
+
str.gsub!(/([^абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯeEyY])ЙЕ/, '\1YE')
|
79
|
+
str.gsub!(/^йе/, "ye")
|
80
|
+
str.gsub!(/^Йе/, "Ye")
|
81
|
+
str.gsub!(/^йЕ/, "yE")
|
82
|
+
str.gsub!(/^ЙЕ/, "YE")
|
83
|
+
|
84
|
+
str.gsub!(/йэ/, "йeh")
|
85
|
+
str.gsub!(/Йэ/, "Йeh")
|
86
|
+
str.gsub!(/йЭ/, "йEh")
|
87
|
+
str.gsub!(/ЙЭ/, "ЙEH")
|
88
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])й/, '\1ih')
|
89
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Й/, '\1Ih')
|
90
|
+
|
91
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ье/, '\1je')
|
92
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Ье/, '\1Je')
|
93
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ьЕ/, '\1jE')
|
94
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ЬЕ/, '\1JE')
|
95
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ьё/, '\1jo')
|
96
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Ьё/, '\1Jo')
|
97
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ьЁ/, '\1jO')
|
98
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ЬЁ/, '\1JO')
|
99
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ью/, '\1ju')
|
100
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Ью/, '\1Ju')
|
101
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ьЮ/, '\1jU')
|
102
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ЬЮ/, '\1JU')
|
103
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ья/, '\1ja')
|
104
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Ья/, '\1Ja')
|
105
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ьЯ/, '\1jA')
|
106
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ЬЯ/, '\1JA')
|
107
|
+
|
108
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ь([бвгджзийклмнпрстфхцчшщБВГДЖЗИЙКЛМНПРСТФХЦЧШЩ])/, '\1j\2')
|
109
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Ь([бвгджзийклмнпрстфхцчшщБВГДЖЗИЙКЛМНПРСТФХЦЧШЩ])/, '\1J\2')
|
110
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ь$/, '\1j')
|
111
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Ь$/, '\1J')
|
112
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ь([^абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯeEyY])/, '\1j\2')
|
113
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Ь([^абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯeEyY])/, '\1J\2')
|
114
|
+
str.gsub!(/ь/, "jh")
|
115
|
+
str.gsub!(/Ь/, "Jh")
|
116
|
+
|
117
|
+
str.gsub!(/й/, "j")
|
118
|
+
str.gsub!(/Й/, "J")
|
119
|
+
|
120
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])е/, '\1e')
|
121
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Е/, '\1E')
|
122
|
+
str.gsub!(/е/, "je")
|
123
|
+
str.gsub!(/Е/, "Je")
|
124
|
+
|
125
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ё/, '\1yo')
|
126
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Ё/, '\1Yo')
|
127
|
+
str.gsub!(/ё/, "jo")
|
128
|
+
str.gsub!(/Ё/, "Jo")
|
129
|
+
|
130
|
+
str.gsub!(/ы([аоуэАОУЭ])/, 'yh\1')
|
131
|
+
str.gsub!(/Ы([аоуэАОУЭ])/, 'Yh\1')
|
132
|
+
str.gsub!(/ы/, "y")
|
133
|
+
str.gsub!(/Ы/, "Y")
|
134
|
+
|
135
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])э/, '\1eh')
|
136
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Э/, '\1Eh')
|
137
|
+
str.gsub!(/э/, "e")
|
138
|
+
str.gsub!(/Э/, "E")
|
139
|
+
|
140
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ю/, '\1yu')
|
141
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Ю/, '\1Yu')
|
142
|
+
str.gsub!(/ю/, "ju")
|
143
|
+
str.gsub!(/Ю/, "Ju")
|
144
|
+
|
145
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])я/, '\1ya')
|
146
|
+
str.gsub!(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Я/, '\1Ya')
|
147
|
+
str.gsub!(/я/, "ja")
|
148
|
+
str.gsub!(/Я/, "Ja")
|
149
|
+
|
150
|
+
str.gsub!(/ж/, "zh")
|
151
|
+
str.gsub!(/ч/, "ch")
|
152
|
+
str.gsub!(/ш/, "sh")
|
153
|
+
str.gsub!(/щ/, "xh")
|
154
|
+
str.gsub!(/Ж/, "Zh")
|
155
|
+
str.gsub!(/Ч/, "Ch")
|
156
|
+
str.gsub!(/Ш/, "Sh")
|
157
|
+
str.gsub!(/Щ/, "Xh")
|
158
|
+
|
159
|
+
str.tr!(
|
160
|
+
"абвгдзиклмнопрстуфхцъАБВГДЗИКЛМНОПРСТУФХЦЪ",
|
161
|
+
"abvgdziklmnoprstufxcqABVGDZIKLMNOPRSTUFXCQ"
|
162
|
+
)
|
163
|
+
|
164
|
+
str.gsub!(/№/, "Nh")
|
165
|
+
|
166
|
+
str
|
165
167
|
end
|
166
168
|
|
167
169
|
# Latin to Russian converter
|
168
170
|
def lat_to_rus(string)
|
169
|
-
string.dup
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
171
|
+
str = string.dup
|
172
|
+
|
173
|
+
str.gsub!(/[nN][hH]/, "№")
|
174
|
+
str.gsub!(/e[hH]/, "э")
|
175
|
+
str.gsub!(/E[hH]/, "Э")
|
176
|
+
str.gsub!(/i[hH]/, "й")
|
177
|
+
str.gsub!(/I[hH]/, "Й")
|
178
|
+
str.gsub!(/j[hH]/, "ь")
|
179
|
+
str.gsub!(/J[hH]/, "Ь")
|
180
|
+
str.gsub!(/y[hH]/, "ы")
|
181
|
+
str.gsub!(/Y[hH]/, "Ы")
|
182
|
+
|
183
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])ja/, '\1ья')
|
184
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])jA/, '\1ьЯ')
|
185
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])Ja/, '\1Ья')
|
186
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])JA/, '\1ЬЯ')
|
187
|
+
str.gsub!(/j[aA]/, "я")
|
188
|
+
str.gsub!(/J[aA]/, "Я")
|
189
|
+
|
190
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])je/, '\1ье')
|
191
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])jE/, '\1ьЕ')
|
192
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])Je/, '\1Ье')
|
193
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])JE/, '\1ЬЕ')
|
194
|
+
str.gsub!(/j[eE]/, "е")
|
195
|
+
str.gsub!(/J[eE]/, "Е")
|
196
|
+
|
197
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])ji/, '\1ьи')
|
198
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])jI/, '\1ьИ')
|
199
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])Ji/, '\1Ьи')
|
200
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])JI/, '\1ЬИ')
|
201
|
+
str.gsub!(/ji/, "йи")
|
202
|
+
str.gsub!(/jI/, "йИ")
|
203
|
+
str.gsub!(/Ji/, "Йи")
|
204
|
+
str.gsub!(/JI/, "ЙИ")
|
205
|
+
|
206
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])jo/, '\1ьё')
|
207
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])jO/, '\1ьЁ')
|
208
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])Jo/, '\1Ьё')
|
209
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])JO/, '\1ЬЁ')
|
210
|
+
str.gsub!(/j[oO]/, "ё")
|
211
|
+
str.gsub!(/J[oO]/, "Ё")
|
212
|
+
|
213
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])ju/, '\1ью')
|
214
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])jU/, '\1ьЮ')
|
215
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])Ju/, '\1Ью')
|
216
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])JU/, '\1ЬЮ')
|
217
|
+
str.gsub!(/j[uU]/, "ю")
|
218
|
+
str.gsub!(/J[uU]/, "Ю")
|
219
|
+
|
220
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])y[aA]/, '\1я')
|
221
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])Y[aA]/, '\1Я')
|
222
|
+
str.gsub!(/ya/, "йа")
|
223
|
+
str.gsub!(/yA/, "йА")
|
224
|
+
str.gsub!(/Ya/, "Йа")
|
225
|
+
str.gsub!(/YA/, "ЙА")
|
226
|
+
|
227
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])y[eE]/, '\1е')
|
228
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])Y[eE]/, '\1Е')
|
229
|
+
str.gsub!(/ye/, "йе")
|
230
|
+
str.gsub!(/yE/, "йЕ")
|
231
|
+
str.gsub!(/Ye/, "Йе")
|
232
|
+
str.gsub!(/YE/, "ЙЕ")
|
233
|
+
|
234
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])y[oO]/, '\1ё')
|
235
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])Y[oO]/, '\1Ё')
|
236
|
+
str.gsub!(/yo/, "йо")
|
237
|
+
str.gsub!(/yO/, "йО")
|
238
|
+
str.gsub!(/Yo/, "Йо")
|
239
|
+
str.gsub!(/YO/, "ЙО")
|
240
|
+
|
241
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])y[uU]/, '\1ю')
|
242
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])Y[uU]/, '\1Ю')
|
243
|
+
str.gsub!(/yu/, "йу")
|
244
|
+
str.gsub!(/yU/, "йУ")
|
245
|
+
str.gsub!(/Yu/, "Йу")
|
246
|
+
str.gsub!(/YU/, "ЙУ")
|
247
|
+
|
248
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])e/, '\1е')
|
249
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])E/, '\1Е')
|
250
|
+
str.tr!("e", "э")
|
251
|
+
str.tr!("E", "Э")
|
252
|
+
|
253
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])j/, '\1ь')
|
254
|
+
str.gsub!(/([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ])J/, '\1Ь')
|
255
|
+
str.tr!("j", "й")
|
256
|
+
str.tr!("J", "Й")
|
257
|
+
|
258
|
+
str.gsub!(/c[hH]/, "ч")
|
259
|
+
str.gsub!(/s[hH]/, "ш")
|
260
|
+
str.gsub!(/x[hH]/, "щ")
|
261
|
+
str.gsub!(/z[hH]/, "ж")
|
262
|
+
|
263
|
+
str.gsub!(/C[hH]/, "Ч")
|
264
|
+
str.gsub!(/S[hH]/, "Ш")
|
265
|
+
str.gsub!(/X[hH]/, "Щ")
|
266
|
+
str.gsub!(/Z[hH]/, "Ж")
|
267
|
+
|
268
|
+
str.tr!(
|
269
|
+
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
270
|
+
"абцдэфгхийклмнопърстуввхызАБЦДЭФГХИЙКЛМНОПЪРСТУВВХЫЗ"
|
271
|
+
)
|
272
|
+
str
|
267
273
|
end
|
268
274
|
|
269
275
|
# Case correct, example: АЛЁША (rus_to_lat)→ ALYoShA (case_correct)→ ALYOSHA
|
270
276
|
def case_correct(string)
|
271
|
-
string.dup
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
277
|
+
str = string.dup
|
278
|
+
str.gsub!(/([A-Z])h([A-Z])/, &:upcase)
|
279
|
+
str.gsub!(/J([aeou])([A-Z])/, &:upcase)
|
280
|
+
|
281
|
+
str.gsub!(/([A-Z])([A-Z])h/, &:upcase)
|
282
|
+
str.gsub!(/([A-Z])J([aeou])/, &:upcase)
|
283
|
+
str.gsub!(/([BCDFGHKLMNPRSTVWXZ])Y([aeou])/, &:upcase)
|
284
|
+
|
285
|
+
str.gsub!(/([A-Z])h\s+([A-Z][A-Z])/, &:upcase)
|
286
|
+
str.gsub!(/J([aeou])\s+([A-Z][A-Z])/, &:upcase)
|
287
|
+
str.gsub!(/([BCDFGHKLMNPRSTVWXZ])Y([aeou])\s+([A-Z][A-Z])/, &:upcase)
|
288
|
+
str
|
289
|
+
end
|
290
|
+
|
291
|
+
# Typo correct replaces 'cyrillic-look-like' latin symbols to cyrillic ones
|
292
|
+
def rus_typo_correct(string)
|
293
|
+
string.tr(
|
294
|
+
"acekopuxyABCEHKMOPTXY",
|
295
|
+
"асекорихуАВСЕНКМОРТХУ"
|
296
|
+
)
|
297
|
+
end
|
298
|
+
|
299
|
+
# Deprecated, use `rus_typo_correct` instead
|
300
|
+
def typo_correct(*args)
|
301
|
+
warn("DEPRECATION WARNING: Usage of `typo_correct` deprecated, use `rus_typo_correct` instead")
|
302
|
+
rus_typo_correct(*args)
|
283
303
|
end
|
284
304
|
|
285
305
|
# Typo correct replaces 'cyrillic-look-like' latin symbols to cyrillic ones
|
286
|
-
def
|
287
|
-
string.tr(
|
306
|
+
def lat_typo_correct(string)
|
307
|
+
string.tr(
|
308
|
+
"асекорихуАВСЕНКМОРТХУ",
|
309
|
+
"acekopuxyABCEHKMOPTXY"
|
310
|
+
)
|
288
311
|
end
|
289
312
|
end
|
290
313
|
end
|
data/lib/ruslat/version.rb
CHANGED
data/lib/ruslat.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruslat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vasiliy Sukhachev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,56 +16,56 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '13'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '3
|
47
|
+
version: '3'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '3
|
54
|
+
version: '3'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: standard
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '1'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '1'
|
69
69
|
description:
|
70
70
|
email:
|
71
71
|
- vsuhachev@yandex.ru
|
@@ -101,8 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: '0'
|
103
103
|
requirements: []
|
104
|
-
|
105
|
-
rubygems_version: 2.5.1
|
104
|
+
rubygems_version: 3.3.16
|
106
105
|
signing_key:
|
107
106
|
specification_version: 4
|
108
107
|
summary: Bidirectional russian transliteration library
|