cyrillizer 0.2.1 → 0.3.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.
- checksums.yaml +5 -5
- data/.github/workflows/build.yml +33 -0
- data/.gitignore +11 -3
- data/.ruby-version +1 -0
- data/CHANGELOG +13 -0
- data/Gemfile.lock +19 -11
- data/README.md +11 -10
- data/cyrillizer.gemspec +1 -1
- data/lib/alphabets/bulgarian.yml +35 -35
- data/lib/alphabets/macedonian.yml +34 -34
- data/lib/alphabets/russian.yml +38 -38
- data/lib/alphabets/serbian.yml +38 -29
- data/lib/alphabets/ukrainian.yml +69 -0
- data/lib/alphabets/uzbek.yml +41 -41
- data/lib/cyrillizer/alphabet.rb +7 -0
- data/lib/cyrillizer/converter.rb +11 -3
- data/lib/cyrillizer/version.rb +1 -1
- data/spec/cyrillizer/alphabet_spec.rb +26 -13
- data/spec/cyrillizer/converter_spec.rb +31 -16
- data/spec/spec_helper.rb +14 -0
- metadata +10 -9
- data/.travis.yml +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 30501fa01e5a66e293feb886192ac4c4be5e7695b2fbd96ef3639e694cb4f08c
|
4
|
+
data.tar.gz: 8e991c76fe111535573ad63438e8f08d47587bd5afaf833f03334d3c259cb07b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3c66b1783f6653ed40facfc1362da83632f98ac563e3ee1fadd4fc44f573cb7678d36a4ba1a7f961d4be956d88c325de86c4a6a1941b63a407e05b3241bc79a
|
7
|
+
data.tar.gz: ca7795a15009e96947ed986503bde142c7c9a9c4ed6283f91a488c61151d76fa867cdaccdc4c0ae0dd56ee01016561cf6f017d7dcc03cadf5cb55a26e3732808
|
@@ -0,0 +1,33 @@
|
|
1
|
+
name: Build
|
2
|
+
|
3
|
+
on:
|
4
|
+
pull_request:
|
5
|
+
branches:
|
6
|
+
- "*"
|
7
|
+
push:
|
8
|
+
branches:
|
9
|
+
- master
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
specs:
|
13
|
+
runs-on: ${{ matrix.os }}
|
14
|
+
name: specs ruby-${{ matrix.ruby }} ${{ matrix.os }}
|
15
|
+
strategy:
|
16
|
+
matrix:
|
17
|
+
os: [ ubuntu-20.04, macos-11 ]
|
18
|
+
ruby: [ 2.7, 3.0, 3.1 ]
|
19
|
+
fail-fast: false
|
20
|
+
|
21
|
+
steps:
|
22
|
+
- uses: actions/checkout@master
|
23
|
+
|
24
|
+
- name: Set up Ruby
|
25
|
+
uses: ruby/setup-ruby@v1
|
26
|
+
with:
|
27
|
+
ruby-version: ${{ matrix.ruby }}
|
28
|
+
bundler: default
|
29
|
+
bundler-cache: true
|
30
|
+
|
31
|
+
- name: Run specs
|
32
|
+
run: |
|
33
|
+
bundle exec rspec spec
|
data/.gitignore
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
3.1.0
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
=== 0.3.0 2022-04-05
|
2
|
+
* Add Ukrainian alphabet
|
3
|
+
* Add Github Actions build script
|
4
|
+
|
5
|
+
=== 0.2.3 2015-10-16
|
6
|
+
* Make alphabet conversion not depend on letters order
|
7
|
+
|
8
|
+
=== 0.2.2 2015-08-02
|
9
|
+
* Support for custom alphabet
|
10
|
+
|
11
|
+
=== 0.2.1 2015-07-26
|
12
|
+
* Add more alphabets
|
13
|
+
|
1
14
|
=== 0.2.0 2013-08-28
|
2
15
|
* Multi-language support
|
3
16
|
* Add Gemfile
|
data/Gemfile.lock
CHANGED
@@ -1,24 +1,32 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cyrillizer (0.
|
4
|
+
cyrillizer (0.3.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
diff-lcs (1.
|
10
|
-
rspec (
|
11
|
-
rspec-core (~>
|
12
|
-
rspec-expectations (~>
|
13
|
-
rspec-mocks (~>
|
14
|
-
rspec-core (
|
15
|
-
|
16
|
-
|
17
|
-
|
9
|
+
diff-lcs (1.5.0)
|
10
|
+
rspec (3.11.0)
|
11
|
+
rspec-core (~> 3.11.0)
|
12
|
+
rspec-expectations (~> 3.11.0)
|
13
|
+
rspec-mocks (~> 3.11.0)
|
14
|
+
rspec-core (3.11.0)
|
15
|
+
rspec-support (~> 3.11.0)
|
16
|
+
rspec-expectations (3.11.0)
|
17
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
18
|
+
rspec-support (~> 3.11.0)
|
19
|
+
rspec-mocks (3.11.1)
|
20
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
21
|
+
rspec-support (~> 3.11.0)
|
22
|
+
rspec-support (3.11.0)
|
18
23
|
|
19
24
|
PLATFORMS
|
20
25
|
ruby
|
21
26
|
|
22
27
|
DEPENDENCIES
|
23
28
|
cyrillizer!
|
24
|
-
rspec
|
29
|
+
rspec (~> 3.11.0)
|
30
|
+
|
31
|
+
BUNDLED WITH
|
32
|
+
2.3.10
|
data/README.md
CHANGED
@@ -1,11 +1,7 @@
|
|
1
|
-

|
2
|
-
|
3
1
|
# cyrillizer
|
4
2
|
|
5
3
|
Character conversion from latin to cyrillic and vice versa.
|
6
4
|
|
7
|
-
Please contribute conversion alphabets if yours is missing.
|
8
|
-
|
9
5
|
## INSTALL
|
10
6
|
|
11
7
|
gem install cyrillizer
|
@@ -16,11 +12,17 @@ Please contribute conversion alphabets if yours is missing.
|
|
16
12
|
puts 'kirilica'.to_cyr # => 'кирилица'
|
17
13
|
puts 'латиница'.to_lat # => 'latinica'
|
18
14
|
|
19
|
-
|
15
|
+
Specify conversion language:
|
20
16
|
|
21
17
|
Cyrillizer.language = :russian
|
22
|
-
puts "пульт управления" # => "pul't upravleniya"
|
23
|
-
puts "pul't upravleniya" # => "пульт управления"
|
18
|
+
puts "пульт управления".to_lat # => "pul't upravleniya"
|
19
|
+
puts "pul't upravleniya".to_cyr # => "пульт управления"
|
20
|
+
|
21
|
+
Contribute conversion alphabets if you want yours built into the gem.
|
22
|
+
|
23
|
+
Or use your own custom alphabet:
|
24
|
+
|
25
|
+
Cyrillizer.alphabet = "alphabet/russian.yml" # path to the alphabet
|
24
26
|
|
25
27
|
## TESTS
|
26
28
|
|
@@ -29,14 +31,13 @@ Or change conversion language:
|
|
29
31
|
|
30
32
|
## CONTRIBUTORS
|
31
33
|
|
32
|
-
|
33
|
-
- Peco Danajlovski ([@Vortex](https://github.com/Vortex))
|
34
|
+
See [contributors](https://github.com/dalibor/cyrillizer/graphs/contributors) list.
|
34
35
|
|
35
36
|
## LICENSE:
|
36
37
|
|
37
38
|
(The MIT License)
|
38
39
|
|
39
|
-
Copyright (c) 2009-
|
40
|
+
Copyright (c) 2009-2015 Dalibor Nasevic
|
40
41
|
|
41
42
|
Permission is hereby granted, free of charge, to any person obtaining
|
42
43
|
a copy of this software and associated documentation files (the
|
data/cyrillizer.gemspec
CHANGED
data/lib/alphabets/bulgarian.yml
CHANGED
@@ -1,61 +1,61 @@
|
|
1
1
|
---
|
2
|
-
'
|
3
|
-
'
|
4
|
-
'
|
5
|
-
'
|
2
|
+
'А': 'A'
|
3
|
+
'Б': 'B'
|
4
|
+
'В': 'V'
|
5
|
+
'Г': 'G'
|
6
|
+
'Д': 'D'
|
7
|
+
'Е': 'E'
|
6
8
|
'Ж': 'Zh'
|
7
|
-
'
|
9
|
+
'З': 'Z'
|
10
|
+
'И': 'I'
|
11
|
+
'Й': 'J'
|
12
|
+
'К': 'K'
|
13
|
+
'Л': 'L'
|
14
|
+
'М': 'M'
|
15
|
+
'Н': 'N'
|
16
|
+
'О': 'O'
|
17
|
+
'П': 'P'
|
18
|
+
'Р': 'R'
|
19
|
+
'С': 'S'
|
20
|
+
'Т': 'T'
|
21
|
+
'У': 'U'
|
22
|
+
'Ф': 'F'
|
23
|
+
'Х': 'H'
|
8
24
|
'Ц': 'Ts'
|
9
|
-
'
|
25
|
+
'Ч': 'Ch'
|
26
|
+
'Ш': 'Sh'
|
27
|
+
'Щ': 'Sht'
|
28
|
+
'Ъ': 'Y'
|
10
29
|
'Ю': 'Yu'
|
11
|
-
'ю': 'yu'
|
12
|
-
'я': 'Ya'
|
13
30
|
'Я': 'Ya'
|
14
|
-
'Ч': 'Ch'
|
15
|
-
'ч': 'ch'
|
16
|
-
'Й': 'J'
|
17
|
-
'й': 'j'
|
18
|
-
'ь': 'x'
|
19
|
-
'ѝ': 'X'
|
20
|
-
'А': 'A'
|
21
31
|
'а': 'a'
|
22
|
-
'Б': 'B'
|
23
32
|
'б': 'b'
|
24
|
-
'В': 'V'
|
25
33
|
'в': 'v'
|
26
|
-
'Г': 'G'
|
27
34
|
'г': 'g'
|
28
|
-
'Д': 'D'
|
29
35
|
'д': 'd'
|
30
|
-
'Е': 'E'
|
31
36
|
'е': 'e'
|
32
|
-
'
|
37
|
+
'ж': 'zh'
|
33
38
|
'з': 'x'
|
34
|
-
'И': 'I'
|
35
39
|
'и': 'i'
|
36
|
-
'
|
40
|
+
'й': 'j'
|
37
41
|
'к': 'k'
|
38
|
-
'Л': 'L'
|
39
42
|
'л': 'l'
|
40
|
-
'М': 'M'
|
41
43
|
'м': 'm'
|
42
|
-
'Н': 'N'
|
43
44
|
'н': 'n'
|
44
|
-
'О': 'O'
|
45
45
|
'о': 'o'
|
46
|
-
'П': 'P'
|
47
46
|
'п': 'p'
|
48
|
-
'Р': 'R'
|
49
47
|
'р': 'r'
|
50
|
-
'С': 'S'
|
51
48
|
'с': 's'
|
52
|
-
'Т': 'T'
|
53
49
|
'т': 't'
|
54
|
-
'У': 'U'
|
55
50
|
'у': 'u'
|
56
|
-
'Ф': 'F'
|
57
51
|
'ф': 'f'
|
58
|
-
'Х': 'H'
|
59
52
|
'х': 'h'
|
60
|
-
'
|
53
|
+
'ц': 'ts'
|
54
|
+
'ч': 'ch'
|
55
|
+
'ш': 'sh'
|
56
|
+
'щ': 'sht'
|
61
57
|
'ъ': 'y'
|
58
|
+
'ь': 'x'
|
59
|
+
'ю': 'yu'
|
60
|
+
'я': 'Ya'
|
61
|
+
'ѝ': 'X'
|
@@ -1,63 +1,63 @@
|
|
1
1
|
---
|
2
|
-
'Џ': 'Dzh'
|
3
|
-
'џ': 'dzh'
|
4
2
|
'Ѓ': 'Gj'
|
5
|
-
'ѓ': 'gj'
|
6
|
-
'Ж': 'Zh'
|
7
|
-
'ж': 'zh'
|
8
3
|
'Ѕ': 'Dz'
|
9
|
-
'
|
4
|
+
'Ј': 'J'
|
10
5
|
'Љ': 'Lj'
|
11
|
-
'љ': 'lj'
|
12
6
|
'Њ': 'Nj'
|
13
|
-
'њ': 'nj'
|
14
7
|
'Ќ': 'Kj'
|
15
|
-
'
|
8
|
+
'Џ': 'Dzh'
|
9
|
+
'А': 'A'
|
10
|
+
'Б': 'B'
|
11
|
+
'В': 'V'
|
12
|
+
'Г': 'G'
|
13
|
+
'Д': 'D'
|
14
|
+
'Е': 'E'
|
15
|
+
'Ж': 'Zh'
|
16
|
+
'З': 'Z'
|
17
|
+
'И': 'I'
|
18
|
+
'К': 'K'
|
19
|
+
'Л': 'L'
|
20
|
+
'М': 'M'
|
21
|
+
'Н': 'N'
|
22
|
+
'О': 'O'
|
23
|
+
'П': 'P'
|
24
|
+
'Р': 'R'
|
25
|
+
'С': 'S'
|
26
|
+
'Т': 'T'
|
27
|
+
'У': 'U'
|
28
|
+
'Ф': 'F'
|
29
|
+
'Х': 'H'
|
30
|
+
'Ц': 'C'
|
16
31
|
'Ч': 'Ch'
|
17
|
-
'ч': 'ch'
|
18
32
|
'Ш': 'Sh'
|
19
|
-
'ш': 'sh'
|
20
|
-
'А': 'A'
|
21
33
|
'а': 'a'
|
22
|
-
'Б': 'B'
|
23
34
|
'б': 'b'
|
24
|
-
'В': 'V'
|
25
35
|
'в': 'v'
|
26
|
-
'Г': 'G'
|
27
36
|
'г': 'g'
|
28
|
-
'Д': 'D'
|
29
37
|
'д': 'd'
|
30
|
-
'Е': 'E'
|
31
38
|
'е': 'e'
|
32
|
-
'
|
39
|
+
'ж': 'zh'
|
33
40
|
'з': 'z'
|
34
|
-
'И': 'I'
|
35
41
|
'и': 'i'
|
36
|
-
'Ј': 'J'
|
37
|
-
'ј': 'j'
|
38
|
-
'К': 'K'
|
39
42
|
'к': 'k'
|
40
|
-
'Л': 'L'
|
41
43
|
'л': 'l'
|
42
|
-
'М': 'M'
|
43
44
|
'м': 'm'
|
44
|
-
'Н': 'N'
|
45
45
|
'н': 'n'
|
46
|
-
'О': 'O'
|
47
46
|
'о': 'o'
|
48
|
-
'П': 'P'
|
49
47
|
'п': 'p'
|
50
|
-
'Р': 'R'
|
51
48
|
'р': 'r'
|
52
|
-
'С': 'S'
|
53
49
|
'с': 's'
|
54
|
-
'Т': 'T'
|
55
50
|
'т': 't'
|
56
|
-
'У': 'U'
|
57
51
|
'у': 'u'
|
58
|
-
'Ф': 'F'
|
59
52
|
'ф': 'f'
|
60
|
-
'Х': 'H'
|
61
53
|
'х': 'h'
|
62
|
-
'Ц': 'C'
|
63
54
|
'ц': 'c'
|
55
|
+
'ч': 'ch'
|
56
|
+
'ш': 'sh'
|
57
|
+
'ѓ': 'gj'
|
58
|
+
'ѕ': 'dz'
|
59
|
+
'ј': 'j'
|
60
|
+
'љ': 'lj'
|
61
|
+
'њ': 'nj'
|
62
|
+
'ќ': 'kj'
|
63
|
+
'џ': 'dzh'
|
data/lib/alphabets/russian.yml
CHANGED
@@ -1,66 +1,66 @@
|
|
1
1
|
---
|
2
|
-
'
|
3
|
-
'
|
4
|
-
'
|
5
|
-
'
|
2
|
+
'Ё': 'Ye'
|
3
|
+
'А': 'A'
|
4
|
+
'Б': 'B'
|
5
|
+
'В': 'V'
|
6
|
+
'Г': 'G'
|
7
|
+
'Д': 'D'
|
8
|
+
'Е': 'E'
|
9
|
+
'Ж': 'Zh'
|
10
|
+
'З': 'Z'
|
11
|
+
'И': 'I'
|
12
|
+
'Й': 'Y'
|
13
|
+
'К': 'K'
|
14
|
+
'Л': 'L'
|
15
|
+
'М': 'M'
|
16
|
+
'Н': 'N'
|
17
|
+
'О': 'O'
|
18
|
+
'П': 'P'
|
19
|
+
'Р': 'R'
|
20
|
+
'С': 'S'
|
21
|
+
'Т': 'T'
|
22
|
+
'У': 'U'
|
23
|
+
'Ф': 'F'
|
24
|
+
'Х': 'H'
|
6
25
|
'Ц': 'Ts'
|
7
|
-
'ц': 'ts'
|
8
26
|
'Ч': 'Ch'
|
9
|
-
'ч': 'ch'
|
10
27
|
'Ш': 'Sh'
|
11
|
-
'
|
28
|
+
'Щ': 'Shch'
|
29
|
+
'Ъ': 'ʺ'
|
30
|
+
'Ь': "ʹ"
|
31
|
+
'Э': 'E'
|
12
32
|
'Ю': 'Yu'
|
13
|
-
'ю': 'yu'
|
14
33
|
'Я': 'Ya'
|
15
|
-
'я': 'ya'
|
16
|
-
'Ё': 'Ye'
|
17
|
-
'ё': 'ye'
|
18
|
-
'Ж': 'Zh'
|
19
|
-
'ж': 'zh'
|
20
|
-
'А': 'A'
|
21
34
|
'а': 'a'
|
22
|
-
'Б': 'B'
|
23
35
|
'б': 'b'
|
24
|
-
'В': 'V'
|
25
36
|
'в': 'v'
|
26
|
-
'Г': 'G'
|
27
37
|
'г': 'g'
|
28
|
-
'Д': 'D'
|
29
38
|
'д': 'd'
|
30
|
-
'Е': 'e'
|
31
39
|
'е': 'e'
|
32
|
-
'
|
40
|
+
'ж': 'zh'
|
33
41
|
'з': 'z'
|
34
|
-
'И': 'I'
|
35
42
|
'и': 'i'
|
36
|
-
'Й': 'Y'
|
37
43
|
'й': 'y'
|
38
|
-
'К': 'k'
|
39
44
|
'к': 'k'
|
40
|
-
'Л': 'L'
|
41
45
|
'л': 'l'
|
42
|
-
'М': 'M'
|
43
46
|
'м': 'm'
|
44
|
-
'Н': 'N'
|
45
47
|
'н': 'n'
|
46
|
-
'О': 'o'
|
47
48
|
'о': 'o'
|
48
|
-
'П': 'P'
|
49
49
|
'п': 'p'
|
50
|
-
'Р': 'R'
|
51
50
|
'р': 'r'
|
52
|
-
'С': 'S'
|
53
51
|
'с': 's'
|
54
|
-
'Т': 'T'
|
55
52
|
'т': 't'
|
56
|
-
'У': 'U'
|
57
53
|
'у': 'u'
|
58
|
-
'Ф': 'F'
|
59
54
|
'ф': 'f'
|
60
|
-
'Х': 'H'
|
61
55
|
'х': 'h'
|
62
|
-
'
|
63
|
-
'
|
64
|
-
'
|
65
|
-
'
|
56
|
+
'ц': 'ts'
|
57
|
+
'ч': 'ch'
|
58
|
+
'ш': 'sh'
|
59
|
+
'щ': 'Shch'
|
60
|
+
'ъ': '"'
|
66
61
|
'ы': "y"
|
62
|
+
'ь': "'"
|
63
|
+
'э': 'e'
|
64
|
+
'ю': 'yu'
|
65
|
+
'я': 'ya'
|
66
|
+
'ё': 'ye'
|
data/lib/alphabets/serbian.yml
CHANGED
@@ -1,53 +1,62 @@
|
|
1
1
|
---
|
2
|
+
'Ђ': 'Đ'
|
3
|
+
'Ј': 'J'
|
4
|
+
'Љ': 'Lj'
|
5
|
+
'Њ': 'Nj'
|
6
|
+
'Ћ': 'Ć'
|
7
|
+
'Џ': 'Dž'
|
8
|
+
'А': 'A'
|
9
|
+
'Б': 'B'
|
10
|
+
'В': 'V'
|
11
|
+
'Г': 'G'
|
12
|
+
'Д': 'D'
|
13
|
+
'Е': 'E'
|
14
|
+
'Ж': 'Ž'
|
15
|
+
'З': 'Z'
|
16
|
+
'И': 'I'
|
17
|
+
'К': 'K'
|
18
|
+
'Л': 'L'
|
19
|
+
'М': 'M'
|
20
|
+
'Н': 'N'
|
21
|
+
'О': 'O'
|
22
|
+
'П': 'P'
|
23
|
+
'Р': 'R'
|
24
|
+
'С': 'S'
|
25
|
+
'Т': 'T'
|
26
|
+
'У': 'U'
|
27
|
+
'Ф': 'F'
|
28
|
+
'Х': 'H'
|
29
|
+
'Ц': 'C'
|
30
|
+
'Ч': 'Č'
|
31
|
+
'Ш': 'Š'
|
2
32
|
'а': 'a'
|
3
33
|
'б': 'b'
|
4
34
|
'в': 'v'
|
5
35
|
'г': 'g'
|
6
|
-
'џ': 'dž'
|
7
36
|
'д': 'd'
|
8
|
-
'
|
37
|
+
'е': 'e'
|
9
38
|
'ж': 'ž'
|
10
39
|
'з': 'z'
|
11
40
|
'и': 'i'
|
12
41
|
'к': 'k'
|
13
|
-
'љ': 'lj'
|
14
42
|
'л': 'l'
|
15
43
|
'м': 'm'
|
16
|
-
'њ': 'nj'
|
17
44
|
'н': 'n'
|
45
|
+
'о': 'o'
|
18
46
|
'п': 'p'
|
19
47
|
'р': 'r'
|
20
48
|
'с': 's'
|
21
49
|
'т': 't'
|
22
|
-
'ћ': 'ć'
|
23
50
|
'у': 'u'
|
24
51
|
'ф': 'f'
|
25
52
|
'х': 'h'
|
26
53
|
'ц': 'c'
|
27
54
|
'ч': 'č'
|
28
55
|
'ш': 'š'
|
29
|
-
'
|
30
|
-
'
|
31
|
-
'
|
32
|
-
'
|
33
|
-
'
|
34
|
-
'
|
35
|
-
'Ж': 'Ž'
|
36
|
-
'З': 'Z'
|
37
|
-
'И': 'I'
|
38
|
-
'Љ': 'Lj'
|
39
|
-
'Л': 'L'
|
40
|
-
'М': 'M'
|
41
|
-
'Њ': 'Nj'
|
42
|
-
'Н': 'N'
|
43
|
-
'П': 'P'
|
44
|
-
'Р': 'R'
|
45
|
-
'С': 'S'
|
46
|
-
'Ћ': 'Ć'
|
47
|
-
'У': 'U'
|
48
|
-
'Ф': 'F'
|
49
|
-
'Х': 'H'
|
50
|
-
'Ц': 'C'
|
51
|
-
'Ч': 'Č'
|
52
|
-
'Ш': 'Š'
|
56
|
+
'ђ': 'đ'
|
57
|
+
'ј': 'j'
|
58
|
+
'љ': 'lj'
|
59
|
+
'њ': 'nj'
|
60
|
+
'ћ': 'ć'
|
61
|
+
'џ': 'dž'
|
53
62
|
---
|
@@ -0,0 +1,69 @@
|
|
1
|
+
---
|
2
|
+
'А': 'A'
|
3
|
+
'Б': 'B'
|
4
|
+
'В': 'V'
|
5
|
+
'Г': 'H'
|
6
|
+
'Ґ': 'G'
|
7
|
+
'Д': 'D'
|
8
|
+
'Е': 'E'
|
9
|
+
'Є': 'Ye'
|
10
|
+
'Ж': 'Zh'
|
11
|
+
'З': 'Z'
|
12
|
+
'И': 'Y'
|
13
|
+
'І': 'I'
|
14
|
+
'Ї': 'Yi'
|
15
|
+
'Й': 'Y'
|
16
|
+
'К': 'K'
|
17
|
+
'Л': 'L'
|
18
|
+
'М': 'M'
|
19
|
+
'Н': 'N'
|
20
|
+
'О': 'O'
|
21
|
+
'П': 'P'
|
22
|
+
'Р': 'R'
|
23
|
+
'С': 'S'
|
24
|
+
'Т': 'T'
|
25
|
+
'У': 'U'
|
26
|
+
'Ф': 'F'
|
27
|
+
'Х': 'Kh'
|
28
|
+
'Ц': 'Ts'
|
29
|
+
'Ч': 'Ch'
|
30
|
+
'Ш': 'Sh'
|
31
|
+
'Щ': 'Shch'
|
32
|
+
'Ь': "ʹ"
|
33
|
+
'Ю': 'Yu'
|
34
|
+
'Я': 'Ya'
|
35
|
+
'`': '`'
|
36
|
+
"'": "'"
|
37
|
+
'а': 'a'
|
38
|
+
'б': 'b'
|
39
|
+
'в': 'v'
|
40
|
+
'г': 'g'
|
41
|
+
'ґ': 'g'
|
42
|
+
'д': 'd'
|
43
|
+
'е': 'e'
|
44
|
+
'є': 'ye'
|
45
|
+
'ж': 'zh'
|
46
|
+
'з': 'z'
|
47
|
+
'и': 'y'
|
48
|
+
'і': 'i'
|
49
|
+
'ї': 'yi'
|
50
|
+
'й': 'y'
|
51
|
+
'к': 'k'
|
52
|
+
'л': 'l'
|
53
|
+
'м': 'm'
|
54
|
+
'н': 'n'
|
55
|
+
'о': 'o'
|
56
|
+
'п': 'p'
|
57
|
+
'р': 'r'
|
58
|
+
'с': 's'
|
59
|
+
'т': 't'
|
60
|
+
'у': 'u'
|
61
|
+
'ф': 'f'
|
62
|
+
'х': 'h'
|
63
|
+
'ц': 'ts'
|
64
|
+
'ч': 'ch'
|
65
|
+
'ш': 'sh'
|
66
|
+
'щ': 'Shch'
|
67
|
+
'ь': "'"
|
68
|
+
'ю': 'yu'
|
69
|
+
'я': 'ya'
|
data/lib/alphabets/uzbek.yml
CHANGED
@@ -1,71 +1,71 @@
|
|
1
1
|
---
|
2
|
+
'Ё': 'Yo'
|
2
3
|
'Ў': 'Oʻ'
|
3
|
-
'
|
4
|
-
'
|
5
|
-
'
|
6
|
-
'
|
7
|
-
'
|
8
|
-
'
|
9
|
-
'
|
10
|
-
'
|
11
|
-
'
|
4
|
+
'А': 'A'
|
5
|
+
'Б': 'B'
|
6
|
+
'В': 'V'
|
7
|
+
'Г': 'G'
|
8
|
+
'Д': 'D'
|
9
|
+
'Е': 'e'
|
10
|
+
'Ж': 'J'
|
11
|
+
'З': 'Z'
|
12
|
+
'И': 'I'
|
13
|
+
'Й': 'Y'
|
14
|
+
'К': 'k'
|
15
|
+
'Л': 'L'
|
16
|
+
'М': 'M'
|
17
|
+
'Н': 'N'
|
18
|
+
'О': 'o'
|
19
|
+
'П': 'P'
|
20
|
+
'Р': 'R'
|
21
|
+
'С': 'S'
|
22
|
+
'Т': 'T'
|
23
|
+
'У': 'U'
|
24
|
+
'Ф': 'F'
|
25
|
+
'Х': 'X'
|
12
26
|
'Ц': 'S'
|
13
|
-
'ц': 's'
|
14
27
|
'Ч': 'Ch'
|
15
|
-
'ч': 'ch'
|
16
28
|
'Ш': 'Sh'
|
17
|
-
'
|
29
|
+
'Ъ': 'ʻ'
|
30
|
+
'Ь': 'ʻ'
|
31
|
+
'Э': 'E'
|
18
32
|
'Ю': 'Yu'
|
19
|
-
'ю': 'yu'
|
20
33
|
'Я': 'Ya'
|
21
|
-
'я': 'ya'
|
22
|
-
'Ё': 'Yo'
|
23
|
-
'ё': 'yo'
|
24
|
-
'Ж': 'J'
|
25
|
-
'ж': 'j'
|
26
|
-
'А': 'A'
|
27
34
|
'а': 'a'
|
28
|
-
'Б': 'B'
|
29
35
|
'б': 'b'
|
30
|
-
'В': 'V'
|
31
36
|
'в': 'v'
|
32
|
-
'Г': 'G'
|
33
37
|
'г': 'g'
|
34
|
-
'Д': 'D'
|
35
38
|
'д': 'd'
|
36
|
-
'Е': 'e'
|
37
39
|
'е': 'e'
|
38
|
-
'
|
40
|
+
'ж': 'j'
|
39
41
|
'з': 'z'
|
40
|
-
'И': 'I'
|
41
42
|
'и': 'i'
|
42
|
-
'Й': 'Y'
|
43
43
|
'й': 'y'
|
44
|
-
'К': 'k'
|
45
44
|
'к': 'k'
|
46
|
-
'Л': 'L'
|
47
45
|
'л': 'l'
|
48
|
-
'М': 'M'
|
49
46
|
'м': 'm'
|
50
|
-
'Н': 'N'
|
51
47
|
'н': 'n'
|
52
|
-
'О': 'o'
|
53
48
|
'о': 'o'
|
54
|
-
'П': 'P'
|
55
49
|
'п': 'p'
|
56
|
-
'Р': 'R'
|
57
50
|
'р': 'r'
|
58
|
-
'С': 'S'
|
59
51
|
'с': 's'
|
60
|
-
'Т': 'T'
|
61
52
|
'т': 't'
|
62
|
-
'У': 'U'
|
63
53
|
'у': 'u'
|
64
|
-
'Ф': 'F'
|
65
54
|
'ф': 'f'
|
66
|
-
'Х': 'X'
|
67
55
|
'х': 'x'
|
68
|
-
'
|
56
|
+
'ц': 's'
|
57
|
+
'ч': 'ch'
|
58
|
+
'ш': 'sh'
|
69
59
|
'ъ': 'ʻ'
|
70
|
-
'Ь': 'ʻ'
|
71
60
|
'ь': 'ʻ'
|
61
|
+
'э': 'e'
|
62
|
+
'ю': 'yu'
|
63
|
+
'я': 'ya'
|
64
|
+
'ё': 'yo'
|
65
|
+
'ў': 'oʻ'
|
66
|
+
'Ғ': 'Gʻ'
|
67
|
+
'ғ': 'gʻ'
|
68
|
+
'Қ': 'Q'
|
69
|
+
'қ': 'q'
|
70
|
+
'Ҳ': 'H'
|
71
|
+
'ҳ': 'h'
|
data/lib/cyrillizer/alphabet.rb
CHANGED
@@ -15,6 +15,13 @@ module Cyrillizer
|
|
15
15
|
@alphabet = nil
|
16
16
|
end
|
17
17
|
|
18
|
+
def alphabet=(file)
|
19
|
+
if file
|
20
|
+
@alphabet = YAML.load_file(file)
|
21
|
+
@language = File.basename(file, File.extname(file))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
18
25
|
def alphabet
|
19
26
|
@alphabet ||= YAML.load_file(File.join(File.dirname(__FILE__), "../alphabets/#{language.to_s}.yml"))
|
20
27
|
end
|
data/lib/cyrillizer/converter.rb
CHANGED
@@ -4,11 +4,11 @@ module Cyrillizer
|
|
4
4
|
module Converter
|
5
5
|
|
6
6
|
def to_cyr
|
7
|
-
code(self.dup,
|
7
|
+
code(self.dup, inverted_alphabet)
|
8
8
|
end
|
9
9
|
|
10
10
|
def to_cyr!
|
11
|
-
code(self,
|
11
|
+
code(self, inverted_alphabet)
|
12
12
|
end
|
13
13
|
|
14
14
|
def to_lat
|
@@ -29,7 +29,15 @@ module Cyrillizer
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def alphabet
|
32
|
-
Cyrillizer.alphabet
|
32
|
+
@alphabet ||= sort(Cyrillizer.alphabet)
|
33
|
+
end
|
34
|
+
|
35
|
+
def inverted_alphabet
|
36
|
+
@inverted_alphabet ||= sort(alphabet.invert)
|
37
|
+
end
|
38
|
+
|
39
|
+
def sort(alphabet)
|
40
|
+
alphabet.sort_by { |k, v| k.length }.reverse.to_h
|
33
41
|
end
|
34
42
|
end
|
35
43
|
end
|
data/lib/cyrillizer/version.rb
CHANGED
@@ -2,31 +2,44 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
describe Cyrillizer do
|
5
|
+
RSpec.describe Cyrillizer do
|
6
|
+
after :each do
|
7
|
+
Cyrillizer.language = nil
|
8
|
+
end
|
9
|
+
|
6
10
|
describe ".language" do
|
7
|
-
it "defaults to macedonian" do
|
8
|
-
Cyrillizer.language.
|
11
|
+
it "defaults to macedonian language" do
|
12
|
+
expect(Cyrillizer.language).to eq(:macedonian)
|
9
13
|
end
|
10
14
|
end
|
11
15
|
|
12
16
|
describe ".language=" do
|
13
|
-
|
14
|
-
Cyrillizer.language =
|
17
|
+
it "can specify existing language" do
|
18
|
+
Cyrillizer.language = :russian
|
19
|
+
expect(Cyrillizer.language).to eq(:russian)
|
15
20
|
end
|
16
21
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
22
|
+
it "can load all defined languages" do
|
23
|
+
Dir.children("lib/alphabets").each do |file|
|
24
|
+
language = file.chomp('.yml')
|
25
|
+
Cyrillizer.language = language
|
26
|
+
expect('Б'.to_lat).to eq('B')
|
27
|
+
expect('B'.to_cyr).to eq('Б')
|
28
|
+
end
|
24
29
|
end
|
25
30
|
end
|
26
31
|
|
27
32
|
describe ".alphabet" do
|
28
33
|
it "can load alphabet for a language" do
|
29
|
-
Cyrillizer.alphabet[
|
34
|
+
expect(Cyrillizer.alphabet['Џ']).to eq('Dzh')
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe ".alphabet=" do
|
39
|
+
it "can set alphabet and language with alphabet file" do
|
40
|
+
Cyrillizer.alphabet = File.join(File.dirname(__FILE__), '../../lib/alphabets/russian.yml')
|
41
|
+
expect(Cyrillizer.alphabet['Щ']).to eq('Shch')
|
42
|
+
expect(Cyrillizer.language).to eq('russian')
|
30
43
|
end
|
31
44
|
end
|
32
45
|
end
|
@@ -2,66 +2,66 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
describe Cyrillizer::Converter do
|
5
|
+
RSpec.describe Cyrillizer::Converter do
|
6
6
|
let(:string) { 'anything' }
|
7
7
|
|
8
8
|
|
9
9
|
describe "#to_cyr" do
|
10
10
|
it "converts latin to cyrillic" do
|
11
|
-
|
11
|
+
expect('Cela rechenica na latinica'.to_cyr).to eq('Цела реченица на латиница')
|
12
12
|
end
|
13
13
|
|
14
14
|
it "converts letters with multiple characters" do
|
15
|
-
|
15
|
+
expect('Kjeljav Dzhip'.to_cyr).to eq('Ќељав Џип')
|
16
16
|
end
|
17
17
|
|
18
18
|
it "it copies string before changing" do
|
19
|
-
string.to_cyr.object_id.
|
19
|
+
expect(string.to_cyr.object_id).not_to eq(string.object_id)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
describe "#to_cyr!" do
|
24
24
|
it "converts latin to cyrilic" do
|
25
|
-
|
25
|
+
expect('Cela rechenica na latinica'.to_cyr!).to eq('Цела реченица на латиница')
|
26
26
|
end
|
27
27
|
|
28
28
|
it "changes original string" do
|
29
|
-
string.to_cyr!.object_id.
|
29
|
+
expect(string.to_cyr!.object_id).to eq(string.object_id)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
33
|
describe "#to_lat" do
|
34
34
|
it "converts cyrillic to latin" do
|
35
|
-
|
35
|
+
expect('Цела реченица на латиница'.to_lat).to eq('Cela rechenica na latinica')
|
36
36
|
end
|
37
37
|
|
38
38
|
it "converts letters with multiple characters" do
|
39
|
-
|
39
|
+
expect('Ќељав Џип'.to_lat).to eq('Kjeljav Dzhip')
|
40
40
|
end
|
41
41
|
|
42
42
|
it "it copies string before changing" do
|
43
|
-
string.to_lat.object_id.
|
43
|
+
expect(string.to_lat.object_id).not_to eq(string.object_id)
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
47
|
describe "#to_lat!" do
|
48
48
|
it "converts cyrilic to latin" do
|
49
|
-
|
49
|
+
expect('Цела реченица на латиница'.to_lat!).to eq('Cela rechenica na latinica')
|
50
50
|
end
|
51
51
|
|
52
52
|
it "changes original string" do
|
53
|
-
string.to_lat!.object_id.
|
53
|
+
expect(string.to_lat!.object_id).to eq(string.object_id)
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
57
|
context "conversion" do
|
58
58
|
it "converts to latin" do
|
59
|
-
|
60
|
-
|
59
|
+
expect('Цела реченица на латиница'.to_lat).to eq('Cela rechenica na latinica')
|
60
|
+
expect('Ќељав Џип'.to_lat).to eq('Kjeljav Dzhip')
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
-
describe "using
|
64
|
+
describe "using russion language" do
|
65
65
|
before :each do
|
66
66
|
Cyrillizer.language = :russian
|
67
67
|
end
|
@@ -71,8 +71,23 @@ describe Cyrillizer::Converter do
|
|
71
71
|
end
|
72
72
|
|
73
73
|
it "can convert from different language" do
|
74
|
-
"пульт управления".to_lat.
|
75
|
-
"pul't upravleniya".to_cyr.
|
74
|
+
expect("пульт управления".to_lat).to eq("pul't upravleniya")
|
75
|
+
expect("pul't upravleniya".to_cyr).to eq("пульт управления")
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "using serbian language" do
|
80
|
+
before :each do
|
81
|
+
Cyrillizer.language = :serbian
|
82
|
+
end
|
83
|
+
|
84
|
+
after :each do
|
85
|
+
Cyrillizer.language = nil
|
86
|
+
end
|
87
|
+
|
88
|
+
it "can convert from different language" do
|
89
|
+
expect('њ'.to_lat).to eq('nj')
|
90
|
+
expect('nj'.to_cyr).to eq('њ')
|
76
91
|
end
|
77
92
|
end
|
78
93
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'cyrillizer'
|
4
|
+
|
5
|
+
RSpec.configure do |config|
|
6
|
+
# Enable flags like --only-failures and --next-failure
|
7
|
+
config.example_status_persistence_file_path = '.rspec_status'
|
8
|
+
|
9
|
+
# Disable RSpec exposing methods globally on `Module` and `main`
|
10
|
+
config.disable_monkey_patching!
|
11
|
+
|
12
|
+
config.expect_with :rspec do |c|
|
13
|
+
c.syntax = :expect
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cyrillizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dalibor Nasevic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-04-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 3.11.0
|
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: 3.11.0
|
27
27
|
description: Character conversion from latin to cyrillic.
|
28
28
|
email:
|
29
29
|
- dalibor.nasevic@gmail.com
|
@@ -31,9 +31,10 @@ executables: []
|
|
31
31
|
extensions: []
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
|
+
- ".github/workflows/build.yml"
|
34
35
|
- ".gitignore"
|
35
36
|
- ".rspec"
|
36
|
-
- ".
|
37
|
+
- ".ruby-version"
|
37
38
|
- CHANGELOG
|
38
39
|
- Gemfile
|
39
40
|
- Gemfile.lock
|
@@ -44,6 +45,7 @@ files:
|
|
44
45
|
- lib/alphabets/macedonian.yml
|
45
46
|
- lib/alphabets/russian.yml
|
46
47
|
- lib/alphabets/serbian.yml
|
48
|
+
- lib/alphabets/ukrainian.yml
|
47
49
|
- lib/alphabets/uzbek.yml
|
48
50
|
- lib/cyrillizer.rb
|
49
51
|
- lib/cyrillizer/alphabet.rb
|
@@ -71,8 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
71
73
|
- !ruby/object:Gem::Version
|
72
74
|
version: '0'
|
73
75
|
requirements: []
|
74
|
-
|
75
|
-
rubygems_version: 2.2.2
|
76
|
+
rubygems_version: 3.3.3
|
76
77
|
signing_key:
|
77
78
|
specification_version: 4
|
78
79
|
summary: Character conversion from latin to cyrillic and vice versa.
|