srbovanje 1.0.1 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a09ee6eb793e6ace6968c7eb2b3738e4f30a2f485d76ba7636b0f4ac09caf7eb
4
+ data.tar.gz: 8e3fb654769805812d421291cf3725e9d927eaf3c604a8926fcdaf11af109fb0
5
+ SHA512:
6
+ metadata.gz: 3f2e3b9d9f02bcf709a32a7cf7879fef6762d6b590a2eaf03b0aad8daa8dc9ddccdc9d38b37780247ed50ea8707a0471c5c9e281472c890276584e01277fe867
7
+ data.tar.gz: 2e9dc541af2534abaea5fa85f2a11dfa2b599c25863b2d241ba9605f1273e7415b20d99bf18a39af6850fa671e1c1f7021360e165bfbce81a60c121092aeb21a
@@ -0,0 +1,30 @@
1
+ ## 2.0.0, 2014-07-13
2
+ * preimenovana metoda na_latinici => latinicom
3
+ * utisan warning "[deprecated] I18n.enforce_available_locales will default to true in the future..."
4
+
5
+ ## 1.0.2, 2013-02-26
6
+ * Railtie za i18n konfigurisanje
7
+
8
+ ## 1.0.1, 2013-02-26
9
+ * Konfigurisanje i18n preslovljavanja
10
+
11
+ ## 1.0.0, 2013-02-25
12
+ * Novi, čistiji API; izbačen slugify
13
+
14
+ ## 0.2.1, 2011-01-05
15
+ * Ruby 1.9.2 fix: upozorenja
16
+ * Ruby 1.9.2 fix: load path za testove
17
+
18
+ ## 0.2.0, 2011-01-05
19
+ * Fix nadogradnje Stringa upotrebom String.class_eval metode
20
+ * Ruby 1.9 podrška
21
+
22
+ ## 0.1.0, 2009-03-14
23
+ * String#slugify
24
+
25
+ ## 0.0.2, 2009-03-12
26
+ * "danger" metode (recode_sr_latin!, recode_sr_ascii_latin!)
27
+ * String.abeceda
28
+
29
+ ## 0.0.1, 2009-03-12
30
+ * Inicijalna verzija
data/README.md CHANGED
@@ -1,27 +1,61 @@
1
1
  srbovanje
2
2
  =========
3
3
 
4
- Ruby gem za preslovanjavanje ćirilice na latinicu i tzv. "ošišanu" latinicu
5
-
4
+ Ruby gem za preslovljavanje ćirilice na latinicu i tzv. "ošišanu" (ASCII) latinicu.
6
5
 
7
6
  ## Instaliranje
8
7
 
9
- gem install srbovanje
8
+ U Gemfile projekta dodajte:
9
+
10
+ ```ruby
11
+ gem 'srbovanje'
12
+ ```
10
13
 
14
+ Implementacija je u "čistom" Rubiju pa radi na svim platformama i verzijama Rubija.
11
15
 
12
16
  ## Korišćenje
13
17
 
14
- >> "Ђурђевак".na_latinici
15
- => "Đurđevak"
18
+ ```ruby
19
+ >> "Љубав".latinicom
20
+ => "Ljubav"
21
+
22
+ >> "ĐURĐEVAK".latinicom_ascii
23
+ => "DJURDJEVAK"
24
+ ```
25
+
26
+ U primerima je takodje demostrirano pravilno preslovljavanje velikih digrafa:
27
+ 1. **Lj**ubav a ne **LJ**ubav
28
+ 2. **DJ**URDJEVAK a ne **Dj**URDJEVAK
29
+
30
+ Ako zatreba, tu je i niz sa slovima abecede:
31
+
32
+ ```ruby
33
+ >> Srbovanje.abeceda
34
+ => ["A", "B", "C", "Č", "Ć", "D", "Dž", "Đ", "E", "F", "G", "H", "I", "J", "K", "L", "Lj", "M", "N", "Nj", "O", "P", "R", "S", "Š", "T", "U", "V", "Z", "Ž"]
35
+ ```
36
+
37
+ Ako koristite Srbovanje uz Rails dobićete setovana pravila za preslovljavanja
38
+ koje koristi i18n gem, tako da će npr. parameterize raditi pravilnije:
39
+
40
+ ```ruby
41
+ ## bez Srbovanja
42
+
43
+ >> "Karađorđeva šnicla".parameterize
44
+ => "karadordeva-snicla"
45
+
46
+ >> "Шабан Шаулић".parameterize
47
+ => ""
16
48
 
17
- >> "Ђурђевак".na_latinici :ascii
18
- => "Djurdjevak"
49
+ ## uz Srbovanje
19
50
 
20
- >> Srbovanje.abeceda
21
- => ["A", "B", "C", "Č", "Ć", "D", "DŽ", "Đ", "E", "F", "G", "H", "I", "J", "K", "L", "LJ", "M", "N", "NJ", "O", "P", "R", "S", "Š", "T", "U", "V", "Z", "Ž"]
51
+ >> "Karađorđeva šnicla".parameterize
52
+ => "karadjordjeva-snicla"
22
53
 
54
+ >> "Шабан Шаулић".parameterize
55
+ => "saban-saulic"
56
+ ```
23
57
 
24
- ## MIT Licence
58
+ ## MIT License
25
59
 
26
60
  Copyright (c) 2009 Dejan Simic
27
61
 
@@ -0,0 +1,5 @@
1
+ I18n.backend.store_translations(:sr, i18n: {
2
+ transliterate: {
3
+ rule: lambda { |string| Srbovanje.latinicom_ascii(string) }
4
+ }
5
+ })
@@ -2,6 +2,14 @@
2
2
 
3
3
  $KCODE = 'UTF8' if RUBY_VERSION.to_f < 1.9
4
4
 
5
- require 'srbovanje/srbovanje.rb'
6
- require 'srbovanje/string_ext.rb'
7
- require 'srbovanje/i18n_config.rb'
5
+ require 'srbovanje/srbovanje'
6
+ require 'srbovanje/string_ext'
7
+
8
+ if defined?(Rails)
9
+ require 'srbovanje/railtie'
10
+ elsif defined?(I18n)
11
+ require 'i18n_config'
12
+ end
13
+
14
+ module Srbovanje
15
+ end
@@ -0,0 +1,9 @@
1
+ module Srbovanje
2
+ class Railtie < Rails::Railtie
3
+ config.i18n.enforce_available_locales = true
4
+ config.i18n.default_locale = :sr
5
+ config.after_initialize do
6
+ require 'i18n_config'
7
+ end
8
+ end
9
+ end
@@ -1,102 +1,945 @@
1
1
  # encoding: utf-8
2
2
 
3
- class Srbovanje
4
- def self.abeceda
5
- %w(A B C Č Ć D Đ E F G H I J K L LJ M N NJ O P R S Š T U V Z Ž)
6
- end
3
+ module Srbovanje
4
+
5
+ ABECEDA = %w(A B C Č Ć D Đ E F G H I J K L Lj M N Nj O P R S Š T U V Z Ž)
6
+
7
+ LATINICA_FULL_MAP = {
8
+ "ЉА" => "LJA",
9
+ "АЉ" => "ALJ",
10
+ "ЉБ" => "LJB",
11
+ "БЉ" => "BLJ",
12
+ "ЉВ" => "LJV",
13
+ "ВЉ" => "VLJ",
14
+ "ЉГ" => "LJG",
15
+ "ГЉ" => "GLJ",
16
+ "ЉД" => "LJD",
17
+ "ДЉ" => "DLJ",
18
+ "ЉЂ" => "LJĐ",
19
+ "ЂЉ" => "ĐLJ",
20
+ "ЉЕ" => "LJE",
21
+ "ЕЉ" => "ELJ",
22
+ "ЉЖ" => "LJŽ",
23
+ "ЖЉ" => "ŽLJ",
24
+ "ЉЗ" => "LJZ",
25
+ "ЗЉ" => "ZLJ",
26
+ "ЉИ" => "LJI",
27
+ "ИЉ" => "ILJ",
28
+ "ЉЈ" => "LJJ",
29
+ "ЈЉ" => "JLJ",
30
+ "ЉК" => "LJK",
31
+ "КЉ" => "KLJ",
32
+ "ЉЛ" => "LJL",
33
+ "ЛЉ" => "LLJ",
34
+ "ЉЉ" => "LJLJ",
35
+ "ЉМ" => "LJM",
36
+ "МЉ" => "MLJ",
37
+ "ЉН" => "LJN",
38
+ "НЉ" => "NLJ",
39
+ "ЉЊ" => "LJNJ",
40
+ "ЊЉ" => "NJLJ",
41
+ "ЉО" => "LJO",
42
+ "ОЉ" => "OLJ",
43
+ "ЉП" => "LJP",
44
+ "ПЉ" => "PLJ",
45
+ "ЉР" => "LJR",
46
+ "РЉ" => "RLJ",
47
+ "ЉС" => "LJS",
48
+ "СЉ" => "SLJ",
49
+ "ЉТ" => "LJT",
50
+ "ТЉ" => "TLJ",
51
+ "ЉЋ" => "LJĆ",
52
+ "ЋЉ" => "ĆLJ",
53
+ "ЉЦ" => "LJC",
54
+ "ЦЉ" => "CLJ",
55
+ "ЉУ" => "LJU",
56
+ "УЉ" => "ULJ",
57
+ "ЉФ" => "LJF",
58
+ "ФЉ" => "FLJ",
59
+ "ЉХ" => "LJH",
60
+ "ХЉ" => "HLJ",
61
+ "ЉЧ" => "LJČ",
62
+ "ЧЉ" => "ČLJ",
63
+ "ЉЏ" => "LJDŽ",
64
+ "ЏЉ" => "DŽLJ",
65
+ "ЉШ" => "LJŠ",
66
+ "ШЉ" => "ŠLJ",
67
+ "ЊА" => "NJA",
68
+ "АЊ" => "ANJ",
69
+ "ЊБ" => "NJB",
70
+ "БЊ" => "BNJ",
71
+ "ЊВ" => "NJV",
72
+ "ВЊ" => "VNJ",
73
+ "ЊГ" => "NJG",
74
+ "ГЊ" => "GNJ",
75
+ "ЊД" => "NJD",
76
+ "ДЊ" => "DNJ",
77
+ "ЊЂ" => "NJĐ",
78
+ "ЂЊ" => "ĐNJ",
79
+ "ЊЕ" => "NJE",
80
+ "ЕЊ" => "ENJ",
81
+ "ЊЖ" => "NJŽ",
82
+ "ЖЊ" => "ŽNJ",
83
+ "ЊЗ" => "NJZ",
84
+ "ЗЊ" => "ZNJ",
85
+ "ЊИ" => "NJI",
86
+ "ИЊ" => "INJ",
87
+ "ЊЈ" => "NJJ",
88
+ "ЈЊ" => "JNJ",
89
+ "ЊК" => "NJK",
90
+ "КЊ" => "KNJ",
91
+ "ЊЛ" => "NJL",
92
+ "ЛЊ" => "LNJ",
93
+ "ЊМ" => "NJM",
94
+ "МЊ" => "MNJ",
95
+ "ЊН" => "NJN",
96
+ "НЊ" => "NNJ",
97
+ "ЊЊ" => "NJNJ",
98
+ "ЊО" => "NJO",
99
+ "ОЊ" => "ONJ",
100
+ "ЊП" => "NJP",
101
+ "ПЊ" => "PNJ",
102
+ "ЊР" => "NJR",
103
+ "РЊ" => "RNJ",
104
+ "ЊС" => "NJS",
105
+ "СЊ" => "SNJ",
106
+ "ЊТ" => "NJT",
107
+ "ТЊ" => "TNJ",
108
+ "ЊЋ" => "NJĆ",
109
+ "ЋЊ" => "ĆNJ",
110
+ "ЊЦ" => "NJC",
111
+ "ЦЊ" => "CNJ",
112
+ "ЊУ" => "NJU",
113
+ "УЊ" => "UNJ",
114
+ "ЊФ" => "NJF",
115
+ "ФЊ" => "FNJ",
116
+ "ЊХ" => "NJH",
117
+ "ХЊ" => "HNJ",
118
+ "ЊЧ" => "NJČ",
119
+ "ЧЊ" => "ČNJ",
120
+ "ЊЏ" => "NJDŽ",
121
+ "ЏЊ" => "DŽNJ",
122
+ "ЊШ" => "NJŠ",
123
+ "ШЊ" => "ŠNJ",
124
+ "ЏА" => "DŽA",
125
+ "АЏ" => "ADŽ",
126
+ "ЏБ" => "DŽB",
127
+ "БЏ" => "BDŽ",
128
+ "ЏВ" => "DŽV",
129
+ "ВЏ" => "VDŽ",
130
+ "ЏГ" => "DŽG",
131
+ "ГЏ" => "GDŽ",
132
+ "ЏД" => "DŽD",
133
+ "ДЏ" => "DDŽ",
134
+ "ЏЂ" => "DŽĐ",
135
+ "ЂЏ" => "ĐDŽ",
136
+ "ЏЕ" => "DŽE",
137
+ "ЕЏ" => "EDŽ",
138
+ "ЏЖ" => "DŽŽ",
139
+ "ЖЏ" => "ŽDŽ",
140
+ "ЏЗ" => "DŽZ",
141
+ "ЗЏ" => "ZDŽ",
142
+ "ЏИ" => "DŽI",
143
+ "ИЏ" => "IDŽ",
144
+ "ЏЈ" => "DŽJ",
145
+ "ЈЏ" => "JDŽ",
146
+ "ЏК" => "DŽK",
147
+ "КЏ" => "KDŽ",
148
+ "ЏЛ" => "DŽL",
149
+ "ЛЏ" => "LDŽ",
150
+ "ЏМ" => "DŽM",
151
+ "МЏ" => "MDŽ",
152
+ "ЏН" => "DŽN",
153
+ "НЏ" => "NDŽ",
154
+ "ЏО" => "DŽO",
155
+ "ОЏ" => "ODŽ",
156
+ "ЏП" => "DŽP",
157
+ "ПЏ" => "PDŽ",
158
+ "ЏР" => "DŽR",
159
+ "РЏ" => "RDŽ",
160
+ "ЏС" => "DŽS",
161
+ "СЏ" => "SDŽ",
162
+ "ЏТ" => "DŽT",
163
+ "ТЏ" => "TDŽ",
164
+ "ЏЋ" => "DŽĆ",
165
+ "ЋЏ" => "ĆDŽ",
166
+ "ЏЦ" => "DŽC",
167
+ "ЦЏ" => "CDŽ",
168
+ "ЏУ" => "DŽU",
169
+ "УЏ" => "UDŽ",
170
+ "ЏФ" => "DŽF",
171
+ "ФЏ" => "FDŽ",
172
+ "ЏХ" => "DŽH",
173
+ "ХЏ" => "HDŽ",
174
+ "ЏЧ" => "DŽČ",
175
+ "ЧЏ" => "ČDŽ",
176
+ "ЏЏ" => "DŽDŽ",
177
+ "ЏШ" => "DŽŠ",
178
+ "ШЏ" => "ŠDŽ",
179
+ 'а' => 'a',
180
+ 'А' => 'A',
181
+ 'б' => 'b',
182
+ 'Б' => 'B',
183
+ 'в' => 'v',
184
+ 'В' => 'V',
185
+ 'г' => 'g',
186
+ 'Г' => 'G',
187
+ 'д' => 'd',
188
+ 'Д' => 'D',
189
+ 'ђ' => 'đ',
190
+ 'Ђ' => 'Đ',
191
+ 'е' => 'e',
192
+ 'Е' => 'E',
193
+ 'ж' => 'ž',
194
+ 'Ж' => 'Ž',
195
+ 'з' => 'z',
196
+ 'З' => 'Z',
197
+ 'и' => 'i',
198
+ 'И' => 'I',
199
+ 'ј' => 'j',
200
+ 'Ј' => 'J',
201
+ 'к' => 'k',
202
+ 'К' => 'K',
203
+ 'л' => 'l',
204
+ 'Л' => 'L',
205
+ 'љ' => 'lj',
206
+ 'Љ' => 'Lj',
207
+ 'м' => 'm',
208
+ 'М' => 'M',
209
+ 'н' => 'n',
210
+ 'Н' => 'N',
211
+ 'њ' => 'nj',
212
+ 'Њ' => 'Nj',
213
+ 'о' => 'o',
214
+ 'О' => 'O',
215
+ 'п' => 'p',
216
+ 'П' => 'P',
217
+ 'р' => 'r',
218
+ 'Р' => 'R',
219
+ 'с' => 's',
220
+ 'С' => 'S',
221
+ 'т' => 't',
222
+ 'Т' => 'T',
223
+ 'ћ' => 'ć',
224
+ 'Ћ' => 'Ć',
225
+ 'ц' => 'c',
226
+ 'Ц' => 'C',
227
+ 'у' => 'u',
228
+ 'У' => 'U',
229
+ 'ф' => 'f',
230
+ 'Ф' => 'F',
231
+ 'х' => 'h',
232
+ 'Х' => 'H',
233
+ 'ч' => 'č',
234
+ 'Ч' => 'Č',
235
+ 'џ' => 'dž',
236
+ 'Џ' => 'Dž',
237
+ 'ш' => 'š',
238
+ 'Ш' => 'Š'
239
+ }
240
+
241
+ LATINICA_ASCII_MAP = {
242
+ "ЉA" => "LJA",
243
+ "AЉ" => "ALJ",
244
+ "ЉB" => "LJB",
245
+ "BЉ" => "BLJ",
246
+ "ЉC" => "LJC",
247
+ "CЉ" => "CLJ",
248
+ "ЉD" => "LJD",
249
+ "DЉ" => "DLJ",
250
+ "ЉE" => "LJE",
251
+ "EЉ" => "ELJ",
252
+ "ЉF" => "LJF",
253
+ "FЉ" => "FLJ",
254
+ "ЉG" => "LJG",
255
+ "GЉ" => "GLJ",
256
+ "ЉH" => "LJH",
257
+ "HЉ" => "HLJ",
258
+ "ЉI" => "LJI",
259
+ "IЉ" => "ILJ",
260
+ "ЉJ" => "LJJ",
261
+ "JЉ" => "JLJ",
262
+ "ЉK" => "LJK",
263
+ "KЉ" => "KLJ",
264
+ "ЉL" => "LJL",
265
+ "LЉ" => "LLJ",
266
+ "ЉM" => "LJM",
267
+ "MЉ" => "MLJ",
268
+ "ЉN" => "LJN",
269
+ "NЉ" => "NLJ",
270
+ "ЉO" => "LJO",
271
+ "OЉ" => "OLJ",
272
+ "ЉP" => "LJP",
273
+ "PЉ" => "PLJ",
274
+ "ЉQ" => "LJQ",
275
+ "QЉ" => "QLJ",
276
+ "ЉR" => "LJR",
277
+ "RЉ" => "RLJ",
278
+ "ЉS" => "LJS",
279
+ "SЉ" => "SLJ",
280
+ "ЉT" => "LJT",
281
+ "TЉ" => "TLJ",
282
+ "ЉU" => "LJU",
283
+ "UЉ" => "ULJ",
284
+ "ЉV" => "LJV",
285
+ "VЉ" => "VLJ",
286
+ "ЉW" => "LJW",
287
+ "WЉ" => "WLJ",
288
+ "ЉX" => "LJX",
289
+ "XЉ" => "XLJ",
290
+ "ЉА" => "LJA",
291
+ "АЉ" => "ALJ",
292
+ "ЉБ" => "LJB",
293
+ "БЉ" => "BLJ",
294
+ "ЉВ" => "LJV",
295
+ "ВЉ" => "VLJ",
296
+ "ЉГ" => "LJG",
297
+ "ГЉ" => "GLJ",
298
+ "ЉД" => "LJD",
299
+ "ДЉ" => "DLJ",
300
+ "ЉЂ" => "LJDJ",
301
+ "ЂЉ" => "DJLJ",
302
+ "ЉĐ" => "LJDJ",
303
+ "ĐЉ" => "DJLJ",
304
+ "ЉЕ" => "LJE",
305
+ "ЕЉ" => "ELJ",
306
+ "ЉЖ" => "LJZ",
307
+ "ЖЉ" => "ZLJ",
308
+ "ЉŽ" => "LJZ",
309
+ "ŽЉ" => "ZLJ",
310
+ "ЉЗ" => "LJZ",
311
+ "ЗЉ" => "ZLJ",
312
+ "ЉИ" => "LJI",
313
+ "ИЉ" => "ILJ",
314
+ "ЉЈ" => "LJJ",
315
+ "ЈЉ" => "JLJ",
316
+ "ЉК" => "LJK",
317
+ "КЉ" => "KLJ",
318
+ "ЉЛ" => "LJL",
319
+ "ЛЉ" => "LLJ",
320
+ "ЉЉ" => "LJLJ",
321
+ "ЉМ" => "LJM",
322
+ "МЉ" => "MLJ",
323
+ "ЉН" => "LJN",
324
+ "НЉ" => "NLJ",
325
+ "ЉЊ" => "LJNJ",
326
+ "ЊЉ" => "NJLJ",
327
+ "ЉО" => "LJO",
328
+ "ОЉ" => "OLJ",
329
+ "ЉП" => "LJP",
330
+ "ПЉ" => "PLJ",
331
+ "ЉР" => "LJR",
332
+ "РЉ" => "RLJ",
333
+ "ЉС" => "LJS",
334
+ "СЉ" => "SLJ",
335
+ "ЉТ" => "LJT",
336
+ "ТЉ" => "TLJ",
337
+ "ЉЋ" => "LJC",
338
+ "ЋЉ" => "CLJ",
339
+ "ЉĆ" => "LJC",
340
+ "ĆЉ" => "CLJ",
341
+ "ЉЦ" => "LJC",
342
+ "ЦЉ" => "CLJ",
343
+ "ЉУ" => "LJU",
344
+ "УЉ" => "ULJ",
345
+ "ЉФ" => "LJF",
346
+ "ФЉ" => "FLJ",
347
+ "ЉХ" => "LJH",
348
+ "ХЉ" => "HLJ",
349
+ "ЉЧ" => "LJC",
350
+ "ЧЉ" => "CLJ",
351
+ "ЉČ" => "LJC",
352
+ "ČЉ" => "CLJ",
353
+ "ЉЏ" => "LJDZ",
354
+ "ЏЉ" => "DZLJ",
355
+ "ЉШ" => "LJS",
356
+ "ШЉ" => "SLJ",
357
+ "ЉŠ" => "LJS",
358
+ "ŠЉ" => "SLJ",
359
+ "ЊA" => "NJA",
360
+ "AЊ" => "ANJ",
361
+ "ЊB" => "NJB",
362
+ "BЊ" => "BNJ",
363
+ "ЊC" => "NJC",
364
+ "CЊ" => "CNJ",
365
+ "ЊD" => "NJD",
366
+ "DЊ" => "DNJ",
367
+ "ЊE" => "NJE",
368
+ "EЊ" => "ENJ",
369
+ "ЊF" => "NJF",
370
+ "FЊ" => "FNJ",
371
+ "ЊG" => "NJG",
372
+ "GЊ" => "GNJ",
373
+ "ЊH" => "NJH",
374
+ "HЊ" => "HNJ",
375
+ "ЊI" => "NJI",
376
+ "IЊ" => "INJ",
377
+ "ЊJ" => "NJJ",
378
+ "JЊ" => "JNJ",
379
+ "ЊK" => "NJK",
380
+ "KЊ" => "KNJ",
381
+ "ЊL" => "NJL",
382
+ "LЊ" => "LNJ",
383
+ "ЊM" => "NJM",
384
+ "MЊ" => "MNJ",
385
+ "ЊN" => "NJN",
386
+ "NЊ" => "NNJ",
387
+ "ЊO" => "NJO",
388
+ "OЊ" => "ONJ",
389
+ "ЊP" => "NJP",
390
+ "PЊ" => "PNJ",
391
+ "ЊQ" => "NJQ",
392
+ "QЊ" => "QNJ",
393
+ "ЊR" => "NJR",
394
+ "RЊ" => "RNJ",
395
+ "ЊS" => "NJS",
396
+ "SЊ" => "SNJ",
397
+ "ЊT" => "NJT",
398
+ "TЊ" => "TNJ",
399
+ "ЊU" => "NJU",
400
+ "UЊ" => "UNJ",
401
+ "ЊV" => "NJV",
402
+ "VЊ" => "VNJ",
403
+ "ЊW" => "NJW",
404
+ "WЊ" => "WNJ",
405
+ "ЊX" => "NJX",
406
+ "XЊ" => "XNJ",
407
+ "ЊА" => "NJA",
408
+ "АЊ" => "ANJ",
409
+ "ЊБ" => "NJB",
410
+ "БЊ" => "BNJ",
411
+ "ЊВ" => "NJV",
412
+ "ВЊ" => "VNJ",
413
+ "ЊГ" => "NJG",
414
+ "ГЊ" => "GNJ",
415
+ "ЊД" => "NJD",
416
+ "ДЊ" => "DNJ",
417
+ "ЊЂ" => "NJDJ",
418
+ "ЂЊ" => "DJNJ",
419
+ "ЊĐ" => "NJDJ",
420
+ "ĐЊ" => "DJNJ",
421
+ "ЊЕ" => "NJE",
422
+ "ЕЊ" => "ENJ",
423
+ "ЊЖ" => "NJZ",
424
+ "ЖЊ" => "ZNJ",
425
+ "ЊŽ" => "NJZ",
426
+ "ŽЊ" => "ZNJ",
427
+ "ЊЗ" => "NJZ",
428
+ "ЗЊ" => "ZNJ",
429
+ "ЊИ" => "NJI",
430
+ "ИЊ" => "INJ",
431
+ "ЊЈ" => "NJJ",
432
+ "ЈЊ" => "JNJ",
433
+ "ЊК" => "NJK",
434
+ "КЊ" => "KNJ",
435
+ "ЊЛ" => "NJL",
436
+ "ЛЊ" => "LNJ",
437
+ "ЊМ" => "NJM",
438
+ "МЊ" => "MNJ",
439
+ "ЊН" => "NJN",
440
+ "НЊ" => "NNJ",
441
+ "ЊЊ" => "NJNJ",
442
+ "ЊО" => "NJO",
443
+ "ОЊ" => "ONJ",
444
+ "ЊП" => "NJP",
445
+ "ПЊ" => "PNJ",
446
+ "ЊР" => "NJR",
447
+ "РЊ" => "RNJ",
448
+ "ЊС" => "NJS",
449
+ "СЊ" => "SNJ",
450
+ "ЊТ" => "NJT",
451
+ "ТЊ" => "TNJ",
452
+ "ЊЋ" => "NJC",
453
+ "ЋЊ" => "CNJ",
454
+ "ЊĆ" => "NJC",
455
+ "ĆЊ" => "CNJ",
456
+ "ЊЦ" => "NJC",
457
+ "ЦЊ" => "CNJ",
458
+ "ЊУ" => "NJU",
459
+ "УЊ" => "UNJ",
460
+ "ЊФ" => "NJF",
461
+ "ФЊ" => "FNJ",
462
+ "ЊХ" => "NJH",
463
+ "ХЊ" => "HNJ",
464
+ "ЊЧ" => "NJC",
465
+ "ЧЊ" => "CNJ",
466
+ "ЊČ" => "NJC",
467
+ "ČЊ" => "CNJ",
468
+ "ЊЏ" => "NJDZ",
469
+ "ЏЊ" => "DZNJ",
470
+ "ЊШ" => "NJS",
471
+ "ШЊ" => "SNJ",
472
+ "ЊŠ" => "NJS",
473
+ "ŠЊ" => "SNJ",
474
+ "ЏA" => "DZA",
475
+ "AЏ" => "ADZ",
476
+ "ЏB" => "DZB",
477
+ "BЏ" => "BDZ",
478
+ "ЏC" => "DZC",
479
+ "CЏ" => "CDZ",
480
+ "ЏD" => "DZD",
481
+ "DЏ" => "DDZ",
482
+ "ЏE" => "DZE",
483
+ "EЏ" => "EDZ",
484
+ "ЏF" => "DZF",
485
+ "FЏ" => "FDZ",
486
+ "ЏG" => "DZG",
487
+ "GЏ" => "GDZ",
488
+ "ЏH" => "DZH",
489
+ "HЏ" => "HDZ",
490
+ "ЏI" => "DZI",
491
+ "IЏ" => "IDZ",
492
+ "ЏJ" => "DZJ",
493
+ "JЏ" => "JDZ",
494
+ "ЏK" => "DZK",
495
+ "KЏ" => "KDZ",
496
+ "ЏL" => "DZL",
497
+ "LЏ" => "LDZ",
498
+ "ЏM" => "DZM",
499
+ "MЏ" => "MDZ",
500
+ "ЏN" => "DZN",
501
+ "NЏ" => "NDZ",
502
+ "ЏO" => "DZO",
503
+ "OЏ" => "ODZ",
504
+ "ЏP" => "DZP",
505
+ "PЏ" => "PDZ",
506
+ "ЏQ" => "DZQ",
507
+ "QЏ" => "QDZ",
508
+ "ЏR" => "DZR",
509
+ "RЏ" => "RDZ",
510
+ "ЏS" => "DZS",
511
+ "SЏ" => "SDZ",
512
+ "ЏT" => "DZT",
513
+ "TЏ" => "TDZ",
514
+ "ЏU" => "DZU",
515
+ "UЏ" => "UDZ",
516
+ "ЏV" => "DZV",
517
+ "VЏ" => "VDZ",
518
+ "ЏW" => "DZW",
519
+ "WЏ" => "WDZ",
520
+ "ЏX" => "DZX",
521
+ "XЏ" => "XDZ",
522
+ "ЏА" => "DZA",
523
+ "АЏ" => "ADZ",
524
+ "ЏБ" => "DZB",
525
+ "БЏ" => "BDZ",
526
+ "ЏВ" => "DZV",
527
+ "ВЏ" => "VDZ",
528
+ "ЏГ" => "DZG",
529
+ "ГЏ" => "GDZ",
530
+ "ЏД" => "DZD",
531
+ "ДЏ" => "DDZ",
532
+ "ЏЂ" => "DZDJ",
533
+ "ЂЏ" => "DJDZ",
534
+ "ЏĐ" => "DZDJ",
535
+ "ĐЏ" => "DJDZ",
536
+ "ЏЕ" => "DZE",
537
+ "ЕЏ" => "EDZ",
538
+ "ЏЖ" => "DZZ",
539
+ "ЖЏ" => "ZDZ",
540
+ "ЏŽ" => "DZZ",
541
+ "ŽЏ" => "ZDZ",
542
+ "ЏЗ" => "DZZ",
543
+ "ЗЏ" => "ZDZ",
544
+ "ЏИ" => "DZI",
545
+ "ИЏ" => "IDZ",
546
+ "ЏЈ" => "DZJ",
547
+ "ЈЏ" => "JDZ",
548
+ "ЏК" => "DZK",
549
+ "КЏ" => "KDZ",
550
+ "ЏЛ" => "DZL",
551
+ "ЛЏ" => "LDZ",
552
+ "ЏМ" => "DZM",
553
+ "МЏ" => "MDZ",
554
+ "ЏН" => "DZN",
555
+ "НЏ" => "NDZ",
556
+ "ЏО" => "DZO",
557
+ "ОЏ" => "ODZ",
558
+ "ЏП" => "DZP",
559
+ "ПЏ" => "PDZ",
560
+ "ЏР" => "DZR",
561
+ "РЏ" => "RDZ",
562
+ "ЏС" => "DZS",
563
+ "СЏ" => "SDZ",
564
+ "ЏТ" => "DZT",
565
+ "ТЏ" => "TDZ",
566
+ "ЏЋ" => "DZC",
567
+ "ЋЏ" => "CDZ",
568
+ "ЏĆ" => "DZC",
569
+ "ĆЏ" => "CDZ",
570
+ "ЏЦ" => "DZC",
571
+ "ЦЏ" => "CDZ",
572
+ "ЏУ" => "DZU",
573
+ "УЏ" => "UDZ",
574
+ "ЏФ" => "DZF",
575
+ "ФЏ" => "FDZ",
576
+ "ЏХ" => "DZH",
577
+ "ХЏ" => "HDZ",
578
+ "ЏЧ" => "DZC",
579
+ "ЧЏ" => "CDZ",
580
+ "ЏČ" => "DZC",
581
+ "ČЏ" => "CDZ",
582
+ "ЏЏ" => "DZDZ",
583
+ "ЏШ" => "DZS",
584
+ "ШЏ" => "SDZ",
585
+ "ЏŠ" => "DZS",
586
+ "ŠЏ" => "SDZ",
587
+ "ЂA" => "DJA",
588
+ "AЂ" => "ADJ",
589
+ "ЂB" => "DJB",
590
+ "BЂ" => "BDJ",
591
+ "ЂC" => "DJC",
592
+ "CЂ" => "CDJ",
593
+ "ЂD" => "DJD",
594
+ "DЂ" => "DDJ",
595
+ "ЂE" => "DJE",
596
+ "EЂ" => "EDJ",
597
+ "ЂF" => "DJF",
598
+ "FЂ" => "FDJ",
599
+ "ЂG" => "DJG",
600
+ "GЂ" => "GDJ",
601
+ "ЂH" => "DJH",
602
+ "HЂ" => "HDJ",
603
+ "ЂI" => "DJI",
604
+ "IЂ" => "IDJ",
605
+ "ЂJ" => "DJJ",
606
+ "JЂ" => "JDJ",
607
+ "ЂK" => "DJK",
608
+ "KЂ" => "KDJ",
609
+ "ЂL" => "DJL",
610
+ "LЂ" => "LDJ",
611
+ "ЂM" => "DJM",
612
+ "MЂ" => "MDJ",
613
+ "ЂN" => "DJN",
614
+ "NЂ" => "NDJ",
615
+ "ЂO" => "DJO",
616
+ "OЂ" => "ODJ",
617
+ "ЂP" => "DJP",
618
+ "PЂ" => "PDJ",
619
+ "ЂQ" => "DJQ",
620
+ "QЂ" => "QDJ",
621
+ "ЂR" => "DJR",
622
+ "RЂ" => "RDJ",
623
+ "ЂS" => "DJS",
624
+ "SЂ" => "SDJ",
625
+ "ЂT" => "DJT",
626
+ "TЂ" => "TDJ",
627
+ "ЂU" => "DJU",
628
+ "UЂ" => "UDJ",
629
+ "ЂV" => "DJV",
630
+ "VЂ" => "VDJ",
631
+ "ЂW" => "DJW",
632
+ "WЂ" => "WDJ",
633
+ "ЂX" => "DJX",
634
+ "XЂ" => "XDJ",
635
+ "ЂА" => "DJA",
636
+ "АЂ" => "ADJ",
637
+ "ЂБ" => "DJB",
638
+ "БЂ" => "BDJ",
639
+ "ЂВ" => "DJV",
640
+ "ВЂ" => "VDJ",
641
+ "ЂГ" => "DJG",
642
+ "ГЂ" => "GDJ",
643
+ "ЂД" => "DJD",
644
+ "ДЂ" => "DDJ",
645
+ "ЂЂ" => "DJDJ",
646
+ "ЂĐ" => "DJDJ",
647
+ "ĐЂ" => "DJDJ",
648
+ "ЂЕ" => "DJE",
649
+ "ЕЂ" => "EDJ",
650
+ "ЂЖ" => "DJZ",
651
+ "ЖЂ" => "ZDJ",
652
+ "ЂŽ" => "DJZ",
653
+ "ŽЂ" => "ZDJ",
654
+ "ЂЗ" => "DJZ",
655
+ "ЗЂ" => "ZDJ",
656
+ "ЂИ" => "DJI",
657
+ "ИЂ" => "IDJ",
658
+ "ЂЈ" => "DJJ",
659
+ "ЈЂ" => "JDJ",
660
+ "ЂК" => "DJK",
661
+ "КЂ" => "KDJ",
662
+ "ЂЛ" => "DJL",
663
+ "ЛЂ" => "LDJ",
664
+ "ЂМ" => "DJM",
665
+ "МЂ" => "MDJ",
666
+ "ЂН" => "DJN",
667
+ "НЂ" => "NDJ",
668
+ "ЂО" => "DJO",
669
+ "ОЂ" => "ODJ",
670
+ "ЂП" => "DJP",
671
+ "ПЂ" => "PDJ",
672
+ "ЂР" => "DJR",
673
+ "РЂ" => "RDJ",
674
+ "ЂС" => "DJS",
675
+ "СЂ" => "SDJ",
676
+ "ЂТ" => "DJT",
677
+ "ТЂ" => "TDJ",
678
+ "ЂЋ" => "DJC",
679
+ "ЋЂ" => "CDJ",
680
+ "ЂĆ" => "DJC",
681
+ "ĆЂ" => "CDJ",
682
+ "ЂЦ" => "DJC",
683
+ "ЦЂ" => "CDJ",
684
+ "ЂУ" => "DJU",
685
+ "УЂ" => "UDJ",
686
+ "ЂФ" => "DJF",
687
+ "ФЂ" => "FDJ",
688
+ "ЂХ" => "DJH",
689
+ "ХЂ" => "HDJ",
690
+ "ЂЧ" => "DJC",
691
+ "ЧЂ" => "CDJ",
692
+ "ЂČ" => "DJC",
693
+ "ČЂ" => "CDJ",
694
+ "ЂШ" => "DJS",
695
+ "ШЂ" => "SDJ",
696
+ "ЂŠ" => "DJS",
697
+ "ŠЂ" => "SDJ",
698
+ "ĐA" => "DJA",
699
+ "AĐ" => "ADJ",
700
+ "ĐB" => "DJB",
701
+ "BĐ" => "BDJ",
702
+ "ĐC" => "DJC",
703
+ "CĐ" => "CDJ",
704
+ "ĐD" => "DJD",
705
+ "DĐ" => "DDJ",
706
+ "ĐE" => "DJE",
707
+ "EĐ" => "EDJ",
708
+ "ĐF" => "DJF",
709
+ "FĐ" => "FDJ",
710
+ "ĐG" => "DJG",
711
+ "GĐ" => "GDJ",
712
+ "ĐH" => "DJH",
713
+ "HĐ" => "HDJ",
714
+ "ĐI" => "DJI",
715
+ "IĐ" => "IDJ",
716
+ "ĐJ" => "DJJ",
717
+ "JĐ" => "JDJ",
718
+ "ĐK" => "DJK",
719
+ "KĐ" => "KDJ",
720
+ "ĐL" => "DJL",
721
+ "LĐ" => "LDJ",
722
+ "ĐM" => "DJM",
723
+ "MĐ" => "MDJ",
724
+ "ĐN" => "DJN",
725
+ "NĐ" => "NDJ",
726
+ "ĐO" => "DJO",
727
+ "OĐ" => "ODJ",
728
+ "ĐP" => "DJP",
729
+ "PĐ" => "PDJ",
730
+ "ĐQ" => "DJQ",
731
+ "QĐ" => "QDJ",
732
+ "ĐR" => "DJR",
733
+ "RĐ" => "RDJ",
734
+ "ĐS" => "DJS",
735
+ "SĐ" => "SDJ",
736
+ "ĐT" => "DJT",
737
+ "TĐ" => "TDJ",
738
+ "ĐU" => "DJU",
739
+ "UĐ" => "UDJ",
740
+ "ĐV" => "DJV",
741
+ "VĐ" => "VDJ",
742
+ "ĐW" => "DJW",
743
+ "WĐ" => "WDJ",
744
+ "ĐX" => "DJX",
745
+ "XĐ" => "XDJ",
746
+ "ĐА" => "DJA",
747
+ "АĐ" => "ADJ",
748
+ "ĐБ" => "DJB",
749
+ "БĐ" => "BDJ",
750
+ "ĐВ" => "DJV",
751
+ "ВĐ" => "VDJ",
752
+ "ĐГ" => "DJG",
753
+ "ГĐ" => "GDJ",
754
+ "ĐД" => "DJD",
755
+ "ДĐ" => "DDJ",
756
+ "ĐĐ" => "DJDJ",
757
+ "ĐЕ" => "DJE",
758
+ "ЕĐ" => "EDJ",
759
+ "ĐЖ" => "DJZ",
760
+ "ЖĐ" => "ZDJ",
761
+ "ĐŽ" => "DJZ",
762
+ "ŽĐ" => "ZDJ",
763
+ "ĐЗ" => "DJZ",
764
+ "ЗĐ" => "ZDJ",
765
+ "ĐИ" => "DJI",
766
+ "ИĐ" => "IDJ",
767
+ "ĐЈ" => "DJJ",
768
+ "ЈĐ" => "JDJ",
769
+ "ĐК" => "DJK",
770
+ "КĐ" => "KDJ",
771
+ "ĐЛ" => "DJL",
772
+ "ЛĐ" => "LDJ",
773
+ "ĐМ" => "DJM",
774
+ "МĐ" => "MDJ",
775
+ "ĐН" => "DJN",
776
+ "НĐ" => "NDJ",
777
+ "ĐО" => "DJO",
778
+ "ОĐ" => "ODJ",
779
+ "ĐП" => "DJP",
780
+ "ПĐ" => "PDJ",
781
+ "ĐР" => "DJR",
782
+ "РĐ" => "RDJ",
783
+ "ĐС" => "DJS",
784
+ "СĐ" => "SDJ",
785
+ "ĐТ" => "DJT",
786
+ "ТĐ" => "TDJ",
787
+ "ĐЋ" => "DJC",
788
+ "ЋĐ" => "CDJ",
789
+ "ĐĆ" => "DJC",
790
+ "ĆĐ" => "CDJ",
791
+ "ĐЦ" => "DJC",
792
+ "ЦĐ" => "CDJ",
793
+ "ĐУ" => "DJU",
794
+ "УĐ" => "UDJ",
795
+ "ĐФ" => "DJF",
796
+ "ФĐ" => "FDJ",
797
+ "ĐХ" => "DJH",
798
+ "ХĐ" => "HDJ",
799
+ "ĐЧ" => "DJC",
800
+ "ЧĐ" => "CDJ",
801
+ "ĐČ" => "DJC",
802
+ "ČĐ" => "CDJ",
803
+ "ĐШ" => "DJS",
804
+ "ШĐ" => "SDJ",
805
+ "ĐŠ" => "DJS",
806
+ "ŠĐ" => "SDJ",
807
+ "A" => "A",
808
+ "B" => "B",
809
+ "C" => "C",
810
+ "D" => "D",
811
+ "E" => "E",
812
+ "F" => "F",
813
+ "G" => "G",
814
+ "H" => "H",
815
+ "I" => "I",
816
+ "J" => "J",
817
+ "K" => "K",
818
+ "L" => "L",
819
+ "M" => "M",
820
+ "N" => "N",
821
+ "O" => "O",
822
+ "P" => "P",
823
+ "Q" => "Q",
824
+ "R" => "R",
825
+ "S" => "S",
826
+ "T" => "T",
827
+ "U" => "U",
828
+ "V" => "V",
829
+ "W" => "W",
830
+ "X" => "X",
831
+ "А" => "A",
832
+ "Б" => "B",
833
+ "В" => "V",
834
+ "Г" => "G",
835
+ "Д" => "D",
836
+ "Ђ" => "Dj",
837
+ "Đ" => "Dj",
838
+ "Е" => "E",
839
+ "Ж" => "Z",
840
+ "Ž" => "Z",
841
+ "З" => "Z",
842
+ "И" => "I",
843
+ "Ј" => "J",
844
+ "К" => "K",
845
+ "Л" => "L",
846
+ "Љ" => "Lj",
847
+ "М" => "M",
848
+ "Н" => "N",
849
+ "Њ" => "Nj",
850
+ "О" => "O",
851
+ "П" => "P",
852
+ "Р" => "R",
853
+ "С" => "S",
854
+ "Т" => "T",
855
+ "Ћ" => "C",
856
+ "Ć" => "C",
857
+ "Ц" => "C",
858
+ "У" => "U",
859
+ "Ф" => "F",
860
+ "Х" => "H",
861
+ "Ч" => "C",
862
+ "Č" => "C",
863
+ "Џ" => "Dz",
864
+ "Ш" => "S",
865
+ "Š" => "S",
866
+ "a" => "a",
867
+ "b" => "b",
868
+ "c" => "c",
869
+ "d" => "d",
870
+ "e" => "e",
871
+ "f" => "f",
872
+ "g" => "g",
873
+ "h" => "h",
874
+ "i" => "i",
875
+ "j" => "j",
876
+ "k" => "k",
877
+ "l" => "l",
878
+ "m" => "m",
879
+ "n" => "n",
880
+ "o" => "o",
881
+ "p" => "p",
882
+ "q" => "q",
883
+ "r" => "r",
884
+ "s" => "s",
885
+ "t" => "t",
886
+ "u" => "u",
887
+ "v" => "v",
888
+ "w" => "w",
889
+ "x" => "x",
890
+ "а" => "a",
891
+ "б" => "b",
892
+ "в" => "v",
893
+ "г" => "g",
894
+ "д" => "d",
895
+ "ђ" => "dj",
896
+ "đ" => "dj",
897
+ "е" => "e",
898
+ "ж" => "z",
899
+ "ž" => "z",
900
+ "з" => "z",
901
+ "и" => "i",
902
+ "ј" => "j",
903
+ "к" => "k",
904
+ "л" => "l",
905
+ "љ" => "lj",
906
+ "м" => "m",
907
+ "н" => "n",
908
+ "њ" => "nj",
909
+ "о" => "o",
910
+ "п" => "p",
911
+ "р" => "r",
912
+ "с" => "s",
913
+ "т" => "t",
914
+ "ћ" => "c",
915
+ "ć" => "c",
916
+ "ц" => "c",
917
+ "у" => "u",
918
+ "ф" => "f",
919
+ "х" => "h",
920
+ "ч" => "c",
921
+ "č" => "c",
922
+ "џ" => "dz",
923
+ "ш" => "s",
924
+ "š" => "s",
925
+ }
7
926
 
8
- def self.latinica_map(charset)
9
- charset.to_s == 'ascii' ? latinica_ascii_map : latinica_full_map
927
+ LATINICOM_REGEXP = Regexp.union(LATINICA_FULL_MAP.keys)
928
+
929
+ LATINICA_ASCII_REGEXP = Regexp.union(LATINICA_ASCII_MAP.keys)
930
+
931
+ def latinicom(text)
932
+ text.gsub(LATINICOM_REGEXP, LATINICA_FULL_MAP)
10
933
  end
11
934
 
12
- def self.latinica_full_map
13
- @@latinica_map ||= {
14
- 'а' => 'a',
15
- 'А' => 'A',
16
- 'б' => 'b',
17
- 'Б' => 'B',
18
- 'в' => 'v',
19
- 'В' => 'V',
20
- 'г' => 'g',
21
- 'Г' => 'G',
22
- 'д' => 'd',
23
- 'Д' => 'D',
24
- 'ђ' => 'đ',
25
- 'Ђ' => 'Đ',
26
- 'е' => 'e',
27
- 'Е' => 'E',
28
- 'ж' => 'ž',
29
- 'Ж' => 'Ž',
30
- 'з' => 'z',
31
- 'З' => 'Z',
32
- 'и' => 'i',
33
- 'И' => 'I',
34
- 'ј' => 'j',
35
- 'Ј' => 'J',
36
- 'к' => 'k',
37
- 'К' => 'K',
38
- 'л' => 'l',
39
- 'Л' => 'L',
40
- 'љ' => 'lj',
41
- 'Љ' => 'LJ',
42
- 'м' => 'm',
43
- 'М' => 'M',
44
- 'н' => 'n',
45
- 'Н' => 'N',
46
- 'њ' => 'nj',
47
- 'Њ' => 'NJ',
48
- 'о' => 'o',
49
- 'О' => 'O',
50
- 'п' => 'p',
51
- 'П' => 'P',
52
- 'р' => 'r',
53
- 'Р' => 'R',
54
- 'с' => 's',
55
- 'С' => 'S',
56
- 'т' => 't',
57
- 'Т' => 'T',
58
- 'ћ' => 'ć',
59
- 'Ћ' => 'Ć',
60
- 'ц' => 'c',
61
- 'Ц' => 'C',
62
- 'у' => 'u',
63
- 'У' => 'U',
64
- 'ф' => 'f',
65
- 'Ф' => 'F',
66
- 'х' => 'h',
67
- 'Х' => 'H',
68
- 'ч' => 'č',
69
- 'Ч' => 'Č',
70
- 'џ' => 'dž',
71
- 'Џ' => 'DŽ',
72
- 'ш' => 'š',
73
- 'Ш' => 'Š' }
935
+ def latinicom_ascii(text)
936
+ text.gsub(LATINICA_ASCII_REGEXP, LATINICA_ASCII_MAP)
74
937
  end
75
938
 
76
- def self.latinica_ascii_map
77
- @@latinica_ascii_map ||= latinica_full_map.merge(
78
- 'ћ' => 'c',
79
- 'ć' => 'c',
80
- 'ч' => 'c',
81
- 'č' => 'c',
82
- 'Ћ' => 'C',
83
- 'Ć' => 'C',
84
- 'Ч' => 'C',
85
- 'Č' => 'C',
86
- 'ж' => 'z',
87
- 'ž' => 'z',
88
- 'Ж' => 'Z',
89
- 'Ž' => 'Z',
90
- 'š' => 's',
91
- 'ш' => 's',
92
- 'Ш' => 'S',
93
- 'Š' => 'S',
94
- 'đ' => 'dj',
95
- 'ђ' => 'dj',
96
- 'Ђ' => 'DJ',
97
- 'Đ' => 'DJ',
98
- 'џ' => 'dz',
99
- 'Џ' => 'DZ')
939
+ def abeceda
940
+ ABECEDA
100
941
  end
101
942
 
943
+ extend self
944
+
102
945
  end