ultra-clean-kit 0.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.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/babosa-2.1.0/Changelog.md +119 -0
  3. data/babosa-2.1.0/MIT-LICENSE +19 -0
  4. data/babosa-2.1.0/README.md +243 -0
  5. data/babosa-2.1.0/Rakefile +36 -0
  6. data/babosa-2.1.0/lib/babosa/identifier.rb +268 -0
  7. data/babosa-2.1.0/lib/babosa/transliterator/base.rb +94 -0
  8. data/babosa-2.1.0/lib/babosa/transliterator/bulgarian.rb +30 -0
  9. data/babosa-2.1.0/lib/babosa/transliterator/cyrillic.rb +108 -0
  10. data/babosa-2.1.0/lib/babosa/transliterator/danish.rb +17 -0
  11. data/babosa-2.1.0/lib/babosa/transliterator/german.rb +18 -0
  12. data/babosa-2.1.0/lib/babosa/transliterator/greek.rb +78 -0
  13. data/babosa-2.1.0/lib/babosa/transliterator/hindi.rb +138 -0
  14. data/babosa-2.1.0/lib/babosa/transliterator/latin.rb +199 -0
  15. data/babosa-2.1.0/lib/babosa/transliterator/macedonian.rb +32 -0
  16. data/babosa-2.1.0/lib/babosa/transliterator/norwegian.rb +16 -0
  17. data/babosa-2.1.0/lib/babosa/transliterator/romanian.rb +16 -0
  18. data/babosa-2.1.0/lib/babosa/transliterator/russian.rb +25 -0
  19. data/babosa-2.1.0/lib/babosa/transliterator/serbian.rb +38 -0
  20. data/babosa-2.1.0/lib/babosa/transliterator/spanish.rb +11 -0
  21. data/babosa-2.1.0/lib/babosa/transliterator/swedish.rb +18 -0
  22. data/babosa-2.1.0/lib/babosa/transliterator/turkish.rb +10 -0
  23. data/babosa-2.1.0/lib/babosa/transliterator/ukrainian.rb +33 -0
  24. data/babosa-2.1.0/lib/babosa/transliterator/vietnamese.rb +146 -0
  25. data/babosa-2.1.0/lib/babosa/version.rb +7 -0
  26. data/babosa-2.1.0/lib/babosa.rb +14 -0
  27. data/babosa-2.1.0/spec/identifier_spec.rb +161 -0
  28. data/babosa-2.1.0/spec/spec_helper.rb +45 -0
  29. data/babosa-2.1.0/spec/transliterators/base_spec.rb +15 -0
  30. data/babosa-2.1.0/spec/transliterators/bulgarian_spec.rb +19 -0
  31. data/babosa-2.1.0/spec/transliterators/danish_spec.rb +16 -0
  32. data/babosa-2.1.0/spec/transliterators/german_spec.rb +16 -0
  33. data/babosa-2.1.0/spec/transliterators/greek_spec.rb +17 -0
  34. data/babosa-2.1.0/spec/transliterators/hindi_spec.rb +17 -0
  35. data/babosa-2.1.0/spec/transliterators/latin_spec.rb +8 -0
  36. data/babosa-2.1.0/spec/transliterators/macedonian_spec.rb +8 -0
  37. data/babosa-2.1.0/spec/transliterators/norwegian_spec.rb +18 -0
  38. data/babosa-2.1.0/spec/transliterators/polish_spec.rb +12 -0
  39. data/babosa-2.1.0/spec/transliterators/romanian_spec.rb +18 -0
  40. data/babosa-2.1.0/spec/transliterators/russian_spec.rb +8 -0
  41. data/babosa-2.1.0/spec/transliterators/serbian_spec.rb +24 -0
  42. data/babosa-2.1.0/spec/transliterators/spanish_spec.rb +12 -0
  43. data/babosa-2.1.0/spec/transliterators/swedish_spec.rb +18 -0
  44. data/babosa-2.1.0/spec/transliterators/turkish_spec.rb +24 -0
  45. data/babosa-2.1.0/spec/transliterators/ukrainian_spec.rb +87 -0
  46. data/babosa-2.1.0/spec/transliterators/vietnamese_spec.rb +18 -0
  47. data/ultra-clean-kit.gemspec +12 -0
  48. metadata +87 -0
@@ -0,0 +1,94 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "singleton"
4
+
5
+ module Babosa
6
+ module Transliterator
7
+ def self.get(symbol)
8
+ class_name = symbol.to_s.split("_").map { |a| a.gsub(/\b('?[a-z])/) { Regexp.last_match(1).upcase } }.join
9
+ const_get(class_name)
10
+ end
11
+
12
+ class Base
13
+ include Singleton
14
+
15
+ APPROXIMATIONS = {
16
+ "×" => "x",
17
+ "÷" => "/",
18
+ "‐" => "-",
19
+ "‑" => "-",
20
+ "‒" => "-",
21
+ "–" => "-",
22
+ "—" => "-",
23
+ "―" => "-",
24
+ "‘" => "'",
25
+ "‛" => "'",
26
+ "“" => '"',
27
+ "”" => '"',
28
+ "„" => '"',
29
+ "‟" => '"',
30
+ "’" => "'",
31
+ "," => ",",
32
+ "。" => ".",
33
+ "!" => "!",
34
+ "?" => "?",
35
+ "、" => ",",
36
+ "(" => "(",
37
+ ")" => ")",
38
+ "【" => "[",
39
+ "】" => "]",
40
+ ";" => ";",
41
+ ":" => ":",
42
+ "《" => "<",
43
+ "》" => ">",
44
+ # various kinds of space characters
45
+ "\xc2\xa0" => " ",
46
+ "\xe2\x80\x80" => " ",
47
+ "\xe2\x80\x81" => " ",
48
+ "\xe2\x80\x82" => " ",
49
+ "\xe2\x80\x83" => " ",
50
+ "\xe2\x80\x84" => " ",
51
+ "\xe2\x80\x85" => " ",
52
+ "\xe2\x80\x86" => " ",
53
+ "\xe2\x80\x87" => " ",
54
+ "\xe2\x80\x88" => " ",
55
+ "\xe2\x80\x89" => " ",
56
+ "\xe2\x80\x8a" => " ",
57
+ "\xe2\x81\x9f" => " ",
58
+ "\xe3\x80\x80" => " "
59
+ }.freeze
60
+
61
+ attr_reader :approximations
62
+
63
+ def initialize
64
+ @approximations = if self.class < Base
65
+ self.class.superclass.instance.approximations.dup
66
+ else
67
+ {}
68
+ end
69
+ self.class.const_get(:APPROXIMATIONS).each_with_object(@approximations) do |object, memo|
70
+ index = object[0].codepoints.shift
71
+ value = object[1].codepoints
72
+ memo[index] = value.length == 1 ? value[0] : value
73
+ end
74
+ @approximations.freeze
75
+ end
76
+
77
+ # Accepts a single UTF-8 codepoint and returns the ASCII character code
78
+ # used as the transliteration value.
79
+ def [](codepoint)
80
+ @approximations[codepoint]
81
+ end
82
+
83
+ # Transliterates a string.
84
+ def transliterate(string)
85
+ string.codepoints.map { |char| self[char] || char }.flatten.pack("U*")
86
+ end
87
+ end
88
+ end
89
+ end
90
+
91
+ Dir[File.expand_path("*.rb", __dir__)]
92
+ .reject { |f| f.end_with?("base.rb") }
93
+ .sort
94
+ .each(&method(:require))
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "cyrillic"
4
+
5
+ module Babosa
6
+ module Transliterator
7
+ class Bulgarian < Cyrillic
8
+ APPROXIMATIONS = {
9
+ "Ж" => "J",
10
+ "Й" => "I",
11
+ "Х" => "H",
12
+ "Ц" => "C",
13
+ "Щ" => "Sht",
14
+ "Ъ" => "U",
15
+ "Ь" => "I",
16
+ "Ю" => "Iu",
17
+ "Я" => "Ia",
18
+ "ж" => "j",
19
+ "й" => "i",
20
+ "х" => "h",
21
+ "ц" => "c",
22
+ "щ" => "sht",
23
+ "ъ" => "u",
24
+ "ь" => "i",
25
+ "ю" => "iu",
26
+ "я" => "ia"
27
+ }.freeze
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,108 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Babosa
4
+ module Transliterator
5
+ # Approximations are based on GOST 7.79, System B:
6
+ # http://en.wikipedia.org/wiki/ISO_9#GOST_7.79
7
+ class Cyrillic < Base
8
+ APPROXIMATIONS = {
9
+ "Ё" => "Yo",
10
+ "Ѓ" => "G",
11
+ "Є" => "Ye",
12
+ "Ї" => "Yi",
13
+ "Љ" => "L",
14
+ "Њ" => "N",
15
+ "Ќ" => "K",
16
+ "Ў" => "U",
17
+ "Џ" => "Dh",
18
+ "А" => "A",
19
+ "Б" => "B",
20
+ "В" => "V",
21
+ "Г" => "G",
22
+ "Д" => "D",
23
+ "Е" => "E",
24
+ "Ж" => "Zh",
25
+ "З" => "Z",
26
+ "И" => "I",
27
+ "Й" => "J",
28
+ "К" => "K",
29
+ "Л" => "L",
30
+ "М" => "M",
31
+ "Н" => "N",
32
+ "О" => "O",
33
+ "П" => "P",
34
+ "Р" => "R",
35
+ "С" => "S",
36
+ "Т" => "T",
37
+ "У" => "U",
38
+ "Ф" => "F",
39
+ "Х" => "X",
40
+ "Ц" => "Cz",
41
+ "Ч" => "Ch",
42
+ "Ш" => "Sh",
43
+ "Щ" => "Shh",
44
+ "Ъ" => "",
45
+ "Ы" => "Y",
46
+ "Ь" => "",
47
+ "Э" => "E",
48
+ "Ю" => "Yu",
49
+ "Я" => "Ya",
50
+ "а" => "a",
51
+ "б" => "b",
52
+ "в" => "v",
53
+ "г" => "g",
54
+ "д" => "d",
55
+ "е" => "e",
56
+ "ж" => "zh",
57
+ "з" => "z",
58
+ "и" => "i",
59
+ "й" => "j",
60
+ "к" => "k",
61
+ "л" => "l",
62
+ "м" => "m",
63
+ "н" => "n",
64
+ "о" => "o",
65
+ "п" => "p",
66
+ "р" => "r",
67
+ "с" => "s",
68
+ "т" => "t",
69
+ "у" => "u",
70
+ "ф" => "f",
71
+ "х" => "x",
72
+ "ц" => "cz",
73
+ "ч" => "ch",
74
+ "ш" => "sh",
75
+ "щ" => "shh",
76
+ "ъ" => "",
77
+ "ы" => "y",
78
+ "ь" => "",
79
+ "э" => "e",
80
+ "ю" => "yu",
81
+ "я" => "ya",
82
+ "ё" => "yo",
83
+ "ѓ" => "g",
84
+ "є" => "ye",
85
+ "ї" => "yi",
86
+ "љ" => "l",
87
+ "њ" => "n",
88
+ "ќ" => "k",
89
+ "ў" => "u",
90
+ "џ" => "dh",
91
+ "Ѣ" => "Ye",
92
+ "ѣ" => "ye",
93
+ "Ѫ" => "O",
94
+ "ѫ" => "o",
95
+ "Ѳ" => "Fh",
96
+ "ѳ" => "fh",
97
+ "Ѵ" => "Yh",
98
+ "ѵ" => "yh",
99
+ "Ґ" => "G",
100
+ "ґ" => "g"
101
+ }.freeze
102
+
103
+ def transliterate(string)
104
+ super.gsub(/(c)z([ieyj])/) { "#{Regexp.last_match(1)}#{Regexp.last_match(2)}" }
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "latin"
4
+
5
+ module Babosa
6
+ module Transliterator
7
+ class Danish < Latin
8
+ APPROXIMATIONS = {
9
+ "æ" => "ae",
10
+ "ø" => "oe",
11
+ "å" => "aa",
12
+ "Ø" => "Oe",
13
+ "Å" => "Aa"
14
+ }.freeze
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "latin"
4
+
5
+ module Babosa
6
+ module Transliterator
7
+ class German < Latin
8
+ APPROXIMATIONS = {
9
+ "ä" => "ae",
10
+ "ö" => "oe",
11
+ "ü" => "ue",
12
+ "Ä" => "Ae",
13
+ "Ö" => "Oe",
14
+ "Ü" => "Ue"
15
+ }.freeze
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Babosa
4
+ module Transliterator
5
+ class Greek < Base
6
+ APPROXIMATIONS = {
7
+ "Α" => "A",
8
+ "Ά" => "A",
9
+ "α" => "a",
10
+ "ά" => "a",
11
+ "Β" => "V",
12
+ "β" => "v",
13
+ "Γ" => "G",
14
+ "γ" => "g",
15
+ "Δ" => "D",
16
+ "δ" => "d",
17
+ "Ε" => "E",
18
+ "Έ" => "E",
19
+ "ε" => "e",
20
+ "έ" => "e",
21
+ "Ζ" => "Z",
22
+ "ζ" => "z",
23
+ "Η" => "I",
24
+ "Ή" => "i",
25
+ "η" => "i",
26
+ "ή" => "i",
27
+ "Θ" => "TH",
28
+ "θ" => "th",
29
+ "Ι" => "I",
30
+ "Ί" => "Ι",
31
+ "Î" => "I",
32
+ "ι" => "i",
33
+ "ί" => "i",
34
+ "ϊ" => "i",
35
+ "ΐ" => "i",
36
+ "Κ" => "K",
37
+ "κ" => "k",
38
+ "Λ" => "L",
39
+ "λ" => "l",
40
+ "Μ" => "M",
41
+ "μ" => "m",
42
+ "Ν" => "N",
43
+ "ν" => "n",
44
+ "Ξ" => "KS",
45
+ "ξ" => "ks",
46
+ "Ο" => "O",
47
+ "Ό" => "O",
48
+ "ο" => "o",
49
+ "ό" => "o",
50
+ "Π" => "P",
51
+ "π" => "p",
52
+ "Ρ" => "R",
53
+ "ρ" => "r",
54
+ "Σ" => "S",
55
+ "σ" => "s",
56
+ "ς" => "s",
57
+ "Τ" => "T",
58
+ "τ" => "t",
59
+ "Υ" => "Y",
60
+ "Ύ" => "Y",
61
+ "υ" => "y",
62
+ "ύ" => "y",
63
+ "ϋ" => "y",
64
+ "ΰ" => "y",
65
+ "Φ" => "F",
66
+ "φ" => "f",
67
+ "Χ" => "X",
68
+ "χ" => "x",
69
+ "Ψ" => "PS",
70
+ "ψ" => "ps",
71
+ "Ω" => "O",
72
+ "Ώ" => "O",
73
+ "ω" => "o",
74
+ "ώ" => "o"
75
+ }.freeze
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,138 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Babosa
4
+ module Transliterator
5
+ class Hindi < Base
6
+ APPROXIMATIONS = {
7
+ "ऀ" => "n",
8
+ "ँ" => "n",
9
+ "ं" => "n",
10
+ "ः" => "h",
11
+ "ऄ" => "a",
12
+ "अ" => "a",
13
+ "आ" => "aa",
14
+ "इ" => "i",
15
+ "ई" => "ii",
16
+ "उ" => "u",
17
+ "ऊ" => "uu",
18
+ "ऋ" => "ri",
19
+ "ऌ" => "lri",
20
+ "ऍ" => "e",
21
+ "ऎ" => "e",
22
+ "ए" => "e",
23
+ "ऐ" => "ei",
24
+ "ऑ" => "o",
25
+ "ऒ" => "o",
26
+ "ओ" => "o",
27
+ "औ" => "ou",
28
+ "क" => "k",
29
+ "ख" => "kh",
30
+ "ग" => "g",
31
+ "घ" => "gh",
32
+ "ङ" => "d",
33
+ "च" => "ch",
34
+ "छ" => "chh",
35
+ "ज" => "j",
36
+ "झ" => "jh",
37
+ "ञ" => "ny",
38
+ "ट" => "tt",
39
+ "ठ" => "tth",
40
+ "ड" => "dd",
41
+ "ढ" => "ddh",
42
+ "ण" => "nn",
43
+ "त" => "t",
44
+ "थ" => "th",
45
+ "द" => "d",
46
+ "ध" => "dh",
47
+ "न" => "n",
48
+ "ऩ" => "nnn",
49
+ "प" => "p",
50
+ "फ" => "ph",
51
+ "ब" => "b",
52
+ "भ" => "bh",
53
+ "म" => "m",
54
+ "य" => "y",
55
+ "र" => "r",
56
+ "ऱ" => "rr",
57
+ "ल" => "l",
58
+ "ळ" => "ll",
59
+ "ऴ" => "ll",
60
+ "व" => "v",
61
+ "श" => "sh",
62
+ "ष" => "ss",
63
+ "स" => "s",
64
+ "ह" => "h",
65
+ "ऺ" => "oe",
66
+ "ऻ" => "ooe",
67
+ "़" => "",
68
+ "ऽ" => "-",
69
+ "ा" => "aa",
70
+ "ि" => "i",
71
+ "ी" => "ii",
72
+ "ु" => "u",
73
+ "ू" => "uu",
74
+ "ृ" => "r",
75
+ "ॄ" => "rr",
76
+ "ॅ" => "e",
77
+ "ॆ" => "e",
78
+ "े" => "e",
79
+ "ै" => "ai",
80
+ "ॉ" => "o",
81
+ "ॊ" => "o",
82
+ "ो" => "o",
83
+ "ौ" => "au",
84
+ "्" => "",
85
+ "ॎ" => "e",
86
+ "ॏ" => "aw",
87
+ "ॐ" => "om",
88
+ "॑" => "",
89
+ "॒" => "_",
90
+ "॓" => "",
91
+ "॔" => "",
92
+ "ॕ" => "ee",
93
+ "ॖ" => "ue",
94
+ "ॗ" => "uue",
95
+ "क़" => "q",
96
+ "ख़" => "khh",
97
+ "ग़" => "ghh",
98
+ "ज़" => "za",
99
+ "ड़" => "dddh",
100
+ "ढ़" => "rh",
101
+ "फ़" => "f",
102
+ "य़" => "yy",
103
+ "ॠ" => "rri",
104
+ "ॡ" => "lr",
105
+ "ॢ" => "l",
106
+ "ॣ" => "l",
107
+ "।" => ".",
108
+ "॥" => "..",
109
+ "०" => "0",
110
+ "१" => "1",
111
+ "२" => "2",
112
+ "३" => "3",
113
+ "४" => "4",
114
+ "५" => "5",
115
+ "६" => "6",
116
+ "७" => "7",
117
+ "८" => "8",
118
+ "९" => "9",
119
+ "॰" => ".",
120
+ "ॱ" => ".",
121
+ "ॲ" => "a",
122
+ "ॳ" => "oe",
123
+ "ॴ" => "ooe",
124
+ "ॵ" => "aw",
125
+ "ॶ" => "ue",
126
+ "ॷ" => "uue",
127
+ "ॸ" => "dd",
128
+ "ॹ" => "zh",
129
+ "ॺ" => "y",
130
+ "ॻ" => "gg",
131
+ "ॼ" => "jj",
132
+ "ॽ" => "?",
133
+ "ॾ" => "ddd",
134
+ "ॿ" => "bb"
135
+ }.freeze
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,199 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Babosa
4
+ module Transliterator
5
+ class Latin < Base
6
+ APPROXIMATIONS = {
7
+ "À" => "A",
8
+ "Á" => "A",
9
+ "Â" => "A",
10
+ "Ã" => "A",
11
+ "Ä" => "A",
12
+ "Å" => "A",
13
+ "Æ" => "Ae",
14
+ "Ç" => "C",
15
+ "È" => "E",
16
+ "É" => "E",
17
+ "Ê" => "E",
18
+ "Ë" => "E",
19
+ "Ì" => "I",
20
+ "Í" => "I",
21
+ "Î" => "I",
22
+ "Ï" => "I",
23
+ "Ð" => "D",
24
+ "Ñ" => "N",
25
+ "Ò" => "O",
26
+ "Ó" => "O",
27
+ "Ô" => "O",
28
+ "Õ" => "O",
29
+ "Ö" => "O",
30
+ "Ø" => "O",
31
+ "Ù" => "U",
32
+ "Ú" => "U",
33
+ "Û" => "U",
34
+ "Ü" => "U",
35
+ "Ý" => "Y",
36
+ "Þ" => "Th",
37
+ "ß" => "ss",
38
+ "à" => "a",
39
+ "á" => "a",
40
+ "â" => "a",
41
+ "ã" => "a",
42
+ "ä" => "a",
43
+ "å" => "a",
44
+ "æ" => "ae",
45
+ "ç" => "c",
46
+ "è" => "e",
47
+ "é" => "e",
48
+ "ê" => "e",
49
+ "ë" => "e",
50
+ "ì" => "i",
51
+ "í" => "i",
52
+ "î" => "i",
53
+ "ï" => "i",
54
+ "ð" => "d",
55
+ "ñ" => "n",
56
+ "ò" => "o",
57
+ "ó" => "o",
58
+ "ô" => "o",
59
+ "õ" => "o",
60
+ "ö" => "o",
61
+ "ø" => "o",
62
+ "ù" => "u",
63
+ "ú" => "u",
64
+ "û" => "u",
65
+ "ü" => "u",
66
+ "ý" => "y",
67
+ "þ" => "th",
68
+ "ÿ" => "y",
69
+ "Ā" => "A",
70
+ "Ă" => "A",
71
+ "Ą" => "A",
72
+ "Ć" => "C",
73
+ "Ĉ" => "C",
74
+ "Ċ" => "C",
75
+ "Č" => "C",
76
+ "Ď" => "D",
77
+ "Đ" => "D",
78
+ "Ē" => "E",
79
+ "Ĕ" => "E",
80
+ "Ė" => "E",
81
+ "Ę" => "E",
82
+ "Ě" => "E",
83
+ "Ĝ" => "G",
84
+ "Ğ" => "G",
85
+ "Ġ" => "G",
86
+ "Ģ" => "G",
87
+ "Ĥ" => "H",
88
+ "Ħ" => "H",
89
+ "Ĩ" => "I",
90
+ "Ī" => "I",
91
+ "Ĭ" => "I",
92
+ "Į" => "I",
93
+ "İ" => "I",
94
+ "IJ" => "Ij",
95
+ "Ĵ" => "J",
96
+ "Ķ" => "K",
97
+ "Ĺ" => "L",
98
+ "Ļ" => "L",
99
+ "Ľ" => "L",
100
+ "Ŀ" => "L",
101
+ "Ł" => "L",
102
+ "Ń" => "N",
103
+ "Ņ" => "N",
104
+ "Ň" => "N",
105
+ "Ŋ" => "Ng",
106
+ "Ō" => "O",
107
+ "Ŏ" => "O",
108
+ "Ő" => "O",
109
+ "Œ" => "OE",
110
+ "Ŕ" => "R",
111
+ "Ŗ" => "R",
112
+ "Ř" => "R",
113
+ "Ś" => "S",
114
+ "Ŝ" => "S",
115
+ "Ş" => "S",
116
+ "Š" => "S",
117
+ "Ţ" => "T",
118
+ "Ť" => "T",
119
+ "Ŧ" => "T",
120
+ "Ũ" => "U",
121
+ "Ū" => "U",
122
+ "Ŭ" => "U",
123
+ "Ů" => "U",
124
+ "Ű" => "U",
125
+ "Ų" => "U",
126
+ "Ŵ" => "W",
127
+ "Ŷ" => "Y",
128
+ "Ÿ" => "Y",
129
+ "Ź" => "Z",
130
+ "Ż" => "Z",
131
+ "Ž" => "Z",
132
+ "ā" => "a",
133
+ "ă" => "a",
134
+ "ą" => "a",
135
+ "ć" => "c",
136
+ "ĉ" => "c",
137
+ "ċ" => "c",
138
+ "č" => "c",
139
+ "ď" => "d",
140
+ "đ" => "d",
141
+ "ē" => "e",
142
+ "ĕ" => "e",
143
+ "ė" => "e",
144
+ "ę" => "e",
145
+ "ě" => "e",
146
+ "ĝ" => "g",
147
+ "ğ" => "g",
148
+ "ġ" => "g",
149
+ "ģ" => "g",
150
+ "ĥ" => "h",
151
+ "ħ" => "h",
152
+ "ĩ" => "i",
153
+ "ī" => "i",
154
+ "ĭ" => "i",
155
+ "į" => "i",
156
+ "ı" => "i",
157
+ "ij" => "ij",
158
+ "ĵ" => "j",
159
+ "ķ" => "k",
160
+ "ĸ" => "k",
161
+ "ĺ" => "l",
162
+ "ļ" => "l",
163
+ "ľ" => "l",
164
+ "ŀ" => "l",
165
+ "ł" => "l",
166
+ "ń" => "n",
167
+ "ņ" => "n",
168
+ "ň" => "n",
169
+ "ʼn" => "n",
170
+ "ŋ" => "ng",
171
+ "ō" => "o",
172
+ "ŏ" => "o",
173
+ "ő" => "o",
174
+ "œ" => "oe",
175
+ "ŕ" => "r",
176
+ "ŗ" => "r",
177
+ "ř" => "r",
178
+ "ś" => "s",
179
+ "ŝ" => "s",
180
+ "ş" => "s",
181
+ "š" => "s",
182
+ "ţ" => "t",
183
+ "ť" => "t",
184
+ "ŧ" => "t",
185
+ "ũ" => "u",
186
+ "ū" => "u",
187
+ "ŭ" => "u",
188
+ "ů" => "u",
189
+ "ű" => "u",
190
+ "ų" => "u",
191
+ "ŵ" => "w",
192
+ "ŷ" => "y",
193
+ "ž" => "z",
194
+ "ź" => "z",
195
+ "ż" => "z"
196
+ }.freeze
197
+ end
198
+ end
199
+ end