yaqut 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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: 9791228219fe9b7ca8509a9ff4e84bf71de90a3f
4
+ data.tar.gz: 5da42e4e501e065877f8c1eb6117d4f99fa36be3
5
+ SHA512:
6
+ metadata.gz: 88913d8fd8308df267ad61a7697f1e59fa8c03f5826888daa12e2eb5ea0d5187b7e7cd703711b8a056a37812852a6fccdf6e8c6f30dadc1afe5ad4f63befd6cf
7
+ data.tar.gz: 8cfcbd9dc0355011f8e45d7a801d6aced1d40fd260f27373210f11ad10dc17e922128875c887f8a692a9f96eb347626bc077e0aa5becddb8307380ff5d6c66a0
@@ -0,0 +1,15 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
15
+ trunk/
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in yaqut.gemspec
4
+ gemspec
5
+
6
+ gem 'rspec'
7
+ gem 'unidecoder', :group => :development
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Collin Fair
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,51 @@
1
+ # Yaqut
2
+
3
+ Look up language codes & names.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'yaqut'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install yaqut
20
+
21
+ ## Usage
22
+
23
+ Searching is case-insensitive, but otherwise requires an exact match.
24
+
25
+ ```ruby
26
+ require "yaqut"
27
+
28
+ [...]
29
+
30
+ # Search all fields
31
+ Yaqut.search("english")
32
+ # or, just the language's English name
33
+ Yaqut.search(english_name: "french")
34
+ # or, just the language's native name, in native script
35
+ Yaqut.search(native_name: "العربية")
36
+ # or, just the language's native name, in ASCII
37
+ Yaqut.search(transliterated_native_name: "francais")
38
+ # or, just the ISO 639-1 code
39
+ Yaqut.search(iso_639_1: "el")
40
+
41
+ ```
42
+
43
+ All calls, if successful, return a `Yaqut::Language` instance from which you can ready any of the search fields (`english_name`, `iso_639_1`, etc.)
44
+
45
+ ## Contributing
46
+
47
+ 1. Fork it ( https://github.com/cpfair/yaqut/fork )
48
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
49
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
50
+ 4. Push to the branch (`git push origin my-new-feature`)
51
+ 5. Create a new Pull Request
@@ -0,0 +1,43 @@
1
+ require "bundler"
2
+ require "bundler/gem_tasks"
3
+ require "rexml/document"
4
+ require "yaqut/language"
5
+ require "yaml"
6
+ require "unidecoder"
7
+
8
+ Bundler.require
9
+
10
+ task :default => [:spec]
11
+ require 'rspec/core/rake_task'
12
+ desc "Run specs"
13
+ RSpec::Core::RakeTask.new do |t|
14
+ t.rspec_opts = %w(-fd --color)
15
+ end
16
+
17
+ desc "Rebuild the language table - supply path to trunk of unicode CLDR as an argument"
18
+ task :rebuild do
19
+ Bundler.require(:default, :development)
20
+
21
+ cldr_trunk = ARGV.last
22
+ data_files = Dir["#{cldr_trunk}/common/main/*.xml"].select { |path| !File.basename(path, ".xml").include?("_") }
23
+ languages = {}
24
+ data_files.each { |data_file|
25
+ inspecting_language = File.basename(data_file, ".xml")
26
+ doc = REXML::Document.new(File.read(data_file))
27
+ doc.elements.each("ldml/localeDisplayNames/languages/language") do |lang|
28
+ code_2 = lang.attribute("type").to_s
29
+ if code_2.length == 2
30
+ language = languages[code_2] ||= Yaqut::Language.new()
31
+ language.iso_639_1 = code_2
32
+ if inspecting_language == 'en'
33
+ language.english_name = lang.text.downcase
34
+ end
35
+ if inspecting_language == code_2
36
+ language.native_name = lang.text.downcase
37
+ language.transliterated_native_name = language.native_name.to_ascii
38
+ end
39
+ end
40
+ end
41
+ }
42
+ File.open('config/languages.yml', 'w') {|f| f.write languages.values.to_yaml }
43
+ end
@@ -0,0 +1,805 @@
1
+ ---
2
+ - !ruby/object:Yaqut::Language
3
+ iso_639_1: aa
4
+ native_name: qafar
5
+ transliterated_native_name: qafar
6
+ english_name: afar
7
+ - !ruby/object:Yaqut::Language
8
+ iso_639_1: ab
9
+ english_name: abkhazian
10
+ - !ruby/object:Yaqut::Language
11
+ iso_639_1: af
12
+ native_name: afrikaans
13
+ transliterated_native_name: afrikaans
14
+ english_name: afrikaans
15
+ - !ruby/object:Yaqut::Language
16
+ iso_639_1: ak
17
+ native_name: akan
18
+ transliterated_native_name: akan
19
+ english_name: akan
20
+ - !ruby/object:Yaqut::Language
21
+ iso_639_1: am
22
+ native_name: "አማርኛ"
23
+ transliterated_native_name: "'amaarenyaa"
24
+ english_name: amharic
25
+ - !ruby/object:Yaqut::Language
26
+ iso_639_1: ar
27
+ native_name: "العربية"
28
+ transliterated_native_name: l`rby@
29
+ english_name: arabic
30
+ - !ruby/object:Yaqut::Language
31
+ iso_639_1: as
32
+ native_name: "অসমীয়া"
33
+ transliterated_native_name: asmiiy'aa
34
+ english_name: assamese
35
+ - !ruby/object:Yaqut::Language
36
+ iso_639_1: ay
37
+ english_name: aymara
38
+ - !ruby/object:Yaqut::Language
39
+ iso_639_1: az
40
+ native_name: azəri
41
+ transliterated_native_name: az@ri
42
+ english_name: azeri
43
+ - !ruby/object:Yaqut::Language
44
+ iso_639_1: ba
45
+ english_name: bashkir
46
+ - !ruby/object:Yaqut::Language
47
+ iso_639_1: be
48
+ native_name: "беларуская"
49
+ transliterated_native_name: bielaruskaia
50
+ english_name: belarusian
51
+ - !ruby/object:Yaqut::Language
52
+ iso_639_1: bg
53
+ native_name: "български"
54
+ transliterated_native_name: blgharski
55
+ english_name: bulgarian
56
+ - !ruby/object:Yaqut::Language
57
+ iso_639_1: bm
58
+ native_name: bamanakan
59
+ transliterated_native_name: bamanakan
60
+ english_name: bambara
61
+ - !ruby/object:Yaqut::Language
62
+ iso_639_1: bn
63
+ native_name: "বাংলা"
64
+ transliterated_native_name: baaNlaa
65
+ english_name: bengali
66
+ - !ruby/object:Yaqut::Language
67
+ iso_639_1: bo
68
+ native_name: "བོད་སྐད་"
69
+ transliterated_native_name: bod[nil]skd[nil]
70
+ english_name: tibetan
71
+ - !ruby/object:Yaqut::Language
72
+ iso_639_1: br
73
+ native_name: brezhoneg
74
+ transliterated_native_name: brezhoneg
75
+ english_name: breton
76
+ - !ruby/object:Yaqut::Language
77
+ iso_639_1: bs
78
+ native_name: bosanski
79
+ transliterated_native_name: bosanski
80
+ english_name: bosnian
81
+ - !ruby/object:Yaqut::Language
82
+ iso_639_1: ca
83
+ native_name: català
84
+ transliterated_native_name: catala
85
+ english_name: catalan
86
+ - !ruby/object:Yaqut::Language
87
+ iso_639_1: co
88
+ english_name: corsican
89
+ - !ruby/object:Yaqut::Language
90
+ iso_639_1: cs
91
+ native_name: "čeština"
92
+ transliterated_native_name: cestina
93
+ english_name: czech
94
+ - !ruby/object:Yaqut::Language
95
+ iso_639_1: cu
96
+ english_name: church slavic
97
+ - !ruby/object:Yaqut::Language
98
+ iso_639_1: cy
99
+ native_name: cymraeg
100
+ transliterated_native_name: cymraeg
101
+ english_name: welsh
102
+ - !ruby/object:Yaqut::Language
103
+ iso_639_1: da
104
+ native_name: dansk
105
+ transliterated_native_name: dansk
106
+ english_name: danish
107
+ - !ruby/object:Yaqut::Language
108
+ iso_639_1: de
109
+ native_name: deutsch
110
+ transliterated_native_name: deutsch
111
+ english_name: german
112
+ - !ruby/object:Yaqut::Language
113
+ iso_639_1: dv
114
+ english_name: divehi
115
+ - !ruby/object:Yaqut::Language
116
+ iso_639_1: dz
117
+ native_name: "རྫོང་ཁ"
118
+ transliterated_native_name: rdzong[nil]kh
119
+ english_name: dzongkha
120
+ - !ruby/object:Yaqut::Language
121
+ iso_639_1: ee
122
+ native_name: eʋegbe
123
+ transliterated_native_name: evegbe
124
+ english_name: ewe
125
+ - !ruby/object:Yaqut::Language
126
+ iso_639_1: el
127
+ native_name: "Ελληνικά"
128
+ transliterated_native_name: Ellenika
129
+ english_name: greek
130
+ - !ruby/object:Yaqut::Language
131
+ iso_639_1: en
132
+ native_name: english
133
+ transliterated_native_name: english
134
+ english_name: english
135
+ - !ruby/object:Yaqut::Language
136
+ iso_639_1: eo
137
+ native_name: esperanto
138
+ transliterated_native_name: esperanto
139
+ english_name: esperanto
140
+ - !ruby/object:Yaqut::Language
141
+ iso_639_1: es
142
+ native_name: español
143
+ transliterated_native_name: espanol
144
+ english_name: spanish
145
+ - !ruby/object:Yaqut::Language
146
+ iso_639_1: et
147
+ native_name: eesti
148
+ transliterated_native_name: eesti
149
+ english_name: estonian
150
+ - !ruby/object:Yaqut::Language
151
+ iso_639_1: eu
152
+ native_name: euskara
153
+ transliterated_native_name: euskara
154
+ english_name: basque
155
+ - !ruby/object:Yaqut::Language
156
+ iso_639_1: fa
157
+ native_name: "فارسی"
158
+ transliterated_native_name: frsy
159
+ english_name: persian
160
+ - !ruby/object:Yaqut::Language
161
+ iso_639_1: fi
162
+ native_name: suomi
163
+ transliterated_native_name: suomi
164
+ english_name: finnish
165
+ - !ruby/object:Yaqut::Language
166
+ iso_639_1: fj
167
+ english_name: fijian
168
+ - !ruby/object:Yaqut::Language
169
+ iso_639_1: fo
170
+ native_name: føroyskt
171
+ transliterated_native_name: foroyskt
172
+ english_name: faroese
173
+ - !ruby/object:Yaqut::Language
174
+ iso_639_1: fr
175
+ native_name: français
176
+ transliterated_native_name: francais
177
+ english_name: french
178
+ - !ruby/object:Yaqut::Language
179
+ iso_639_1: fy
180
+ native_name: west-frysk
181
+ transliterated_native_name: west-frysk
182
+ english_name: western frisian
183
+ - !ruby/object:Yaqut::Language
184
+ iso_639_1: ga
185
+ native_name: gaeilge
186
+ transliterated_native_name: gaeilge
187
+ english_name: irish
188
+ - !ruby/object:Yaqut::Language
189
+ iso_639_1: gd
190
+ native_name: gàidhlig
191
+ transliterated_native_name: gaidhlig
192
+ english_name: scottish gaelic
193
+ - !ruby/object:Yaqut::Language
194
+ iso_639_1: gl
195
+ native_name: galego
196
+ transliterated_native_name: galego
197
+ english_name: galician
198
+ - !ruby/object:Yaqut::Language
199
+ iso_639_1: gn
200
+ english_name: guarani
201
+ - !ruby/object:Yaqut::Language
202
+ iso_639_1: gu
203
+ native_name: "ગુજરાતી"
204
+ transliterated_native_name: gujraatii
205
+ english_name: gujarati
206
+ - !ruby/object:Yaqut::Language
207
+ iso_639_1: gv
208
+ native_name: gaelg
209
+ transliterated_native_name: gaelg
210
+ english_name: manx
211
+ - !ruby/object:Yaqut::Language
212
+ iso_639_1: ha
213
+ native_name: hausa
214
+ transliterated_native_name: hausa
215
+ english_name: hausa
216
+ - !ruby/object:Yaqut::Language
217
+ iso_639_1: he
218
+ native_name: "עברית"
219
+ transliterated_native_name: "`bryt"
220
+ english_name: hebrew
221
+ - !ruby/object:Yaqut::Language
222
+ iso_639_1: hi
223
+ native_name: "हिंदी"
224
+ transliterated_native_name: hiNdii
225
+ english_name: hindi
226
+ - !ruby/object:Yaqut::Language
227
+ iso_639_1: hr
228
+ native_name: hrvatski
229
+ transliterated_native_name: hrvatski
230
+ english_name: croatian
231
+ - !ruby/object:Yaqut::Language
232
+ iso_639_1: ht
233
+ english_name: haitian
234
+ - !ruby/object:Yaqut::Language
235
+ iso_639_1: hu
236
+ native_name: magyar
237
+ transliterated_native_name: magyar
238
+ english_name: hungarian
239
+ - !ruby/object:Yaqut::Language
240
+ iso_639_1: hy
241
+ native_name: "հայերեն"
242
+ transliterated_native_name: hayeren
243
+ english_name: armenian
244
+ - !ruby/object:Yaqut::Language
245
+ iso_639_1: ia
246
+ native_name: interlingua
247
+ transliterated_native_name: interlingua
248
+ english_name: interlingua
249
+ - !ruby/object:Yaqut::Language
250
+ iso_639_1: id
251
+ native_name: bahasa indonesia
252
+ transliterated_native_name: bahasa indonesia
253
+ english_name: indonesian
254
+ - !ruby/object:Yaqut::Language
255
+ iso_639_1: ie
256
+ english_name: interlingue
257
+ - !ruby/object:Yaqut::Language
258
+ iso_639_1: ig
259
+ native_name: igbo
260
+ transliterated_native_name: igbo
261
+ english_name: igbo
262
+ - !ruby/object:Yaqut::Language
263
+ iso_639_1: ii
264
+ native_name: "ꆈꌠꉙ"
265
+ transliterated_native_name: nuosuhxop
266
+ english_name: sichuan yi
267
+ - !ruby/object:Yaqut::Language
268
+ iso_639_1: is
269
+ native_name: "íslenska"
270
+ transliterated_native_name: islenska
271
+ english_name: icelandic
272
+ - !ruby/object:Yaqut::Language
273
+ iso_639_1: it
274
+ native_name: italiano
275
+ transliterated_native_name: italiano
276
+ english_name: italian
277
+ - !ruby/object:Yaqut::Language
278
+ iso_639_1: iu
279
+ english_name: inuktitut
280
+ - !ruby/object:Yaqut::Language
281
+ iso_639_1: ja
282
+ native_name: "日本語"
283
+ transliterated_native_name: 'Ri Ben Yu '
284
+ english_name: japanese
285
+ - !ruby/object:Yaqut::Language
286
+ iso_639_1: jv
287
+ english_name: javanese
288
+ - !ruby/object:Yaqut::Language
289
+ iso_639_1: ka
290
+ native_name: "ქართული"
291
+ transliterated_native_name: k`art`uli
292
+ english_name: georgian
293
+ - !ruby/object:Yaqut::Language
294
+ iso_639_1: kg
295
+ english_name: kongo
296
+ - !ruby/object:Yaqut::Language
297
+ iso_639_1: ki
298
+ native_name: gikuyu
299
+ transliterated_native_name: gikuyu
300
+ english_name: kikuyu
301
+ - !ruby/object:Yaqut::Language
302
+ iso_639_1: kk
303
+ native_name: "қазақ тілі"
304
+ transliterated_native_name: k'azak' tili
305
+ english_name: kazakh
306
+ - !ruby/object:Yaqut::Language
307
+ iso_639_1: kl
308
+ native_name: kalaallisut
309
+ transliterated_native_name: kalaallisut
310
+ english_name: kalaallisut
311
+ - !ruby/object:Yaqut::Language
312
+ iso_639_1: km
313
+ native_name: "ខ្មែរ"
314
+ transliterated_native_name: khmaer
315
+ english_name: khmer
316
+ - !ruby/object:Yaqut::Language
317
+ iso_639_1: kn
318
+ native_name: "ಕನ್ನಡ"
319
+ transliterated_native_name: knndd
320
+ english_name: kannada
321
+ - !ruby/object:Yaqut::Language
322
+ iso_639_1: ko
323
+ native_name: "한국어"
324
+ transliterated_native_name: hangugeo
325
+ english_name: korean
326
+ - !ruby/object:Yaqut::Language
327
+ iso_639_1: ks
328
+ native_name: "کٲشُر"
329
+ transliterated_native_name: kh'shur
330
+ english_name: kashmiri
331
+ - !ruby/object:Yaqut::Language
332
+ iso_639_1: ku
333
+ english_name: kurdish
334
+ - !ruby/object:Yaqut::Language
335
+ iso_639_1: kw
336
+ native_name: kernewek
337
+ transliterated_native_name: kernewek
338
+ english_name: cornish
339
+ - !ruby/object:Yaqut::Language
340
+ iso_639_1: ky
341
+ native_name: "кыргызча"
342
+ transliterated_native_name: kyrghyzcha
343
+ english_name: kirghiz
344
+ - !ruby/object:Yaqut::Language
345
+ iso_639_1: la
346
+ english_name: latin
347
+ - !ruby/object:Yaqut::Language
348
+ iso_639_1: lb
349
+ native_name: lëtzebuergesch
350
+ transliterated_native_name: letzebuergesch
351
+ english_name: luxembourgish
352
+ - !ruby/object:Yaqut::Language
353
+ iso_639_1: lg
354
+ native_name: luganda
355
+ transliterated_native_name: luganda
356
+ english_name: ganda
357
+ - !ruby/object:Yaqut::Language
358
+ iso_639_1: li
359
+ english_name: limburgish
360
+ - !ruby/object:Yaqut::Language
361
+ iso_639_1: ln
362
+ native_name: lingála
363
+ transliterated_native_name: lingala
364
+ english_name: lingala
365
+ - !ruby/object:Yaqut::Language
366
+ iso_639_1: lo
367
+ native_name: "ລາວ"
368
+ transliterated_native_name: laaw
369
+ english_name: lao
370
+ - !ruby/object:Yaqut::Language
371
+ iso_639_1: lt
372
+ native_name: lietuvių
373
+ transliterated_native_name: lietuviu
374
+ english_name: lithuanian
375
+ - !ruby/object:Yaqut::Language
376
+ iso_639_1: lu
377
+ native_name: tshiluba
378
+ transliterated_native_name: tshiluba
379
+ english_name: luba-katanga
380
+ - !ruby/object:Yaqut::Language
381
+ iso_639_1: lv
382
+ native_name: latviešu
383
+ transliterated_native_name: latviesu
384
+ english_name: latvian
385
+ - !ruby/object:Yaqut::Language
386
+ iso_639_1: mg
387
+ native_name: malagasy
388
+ transliterated_native_name: malagasy
389
+ english_name: malagasy
390
+ - !ruby/object:Yaqut::Language
391
+ iso_639_1: mi
392
+ english_name: maori
393
+ - !ruby/object:Yaqut::Language
394
+ iso_639_1: mk
395
+ native_name: "македонски"
396
+ transliterated_native_name: makiedonski
397
+ english_name: macedonian
398
+ - !ruby/object:Yaqut::Language
399
+ iso_639_1: ml
400
+ native_name: "മലയാളം"
401
+ transliterated_native_name: mlyaallN
402
+ english_name: malayalam
403
+ - !ruby/object:Yaqut::Language
404
+ iso_639_1: mn
405
+ native_name: "монгол"
406
+ transliterated_native_name: monghol
407
+ english_name: mongolian
408
+ - !ruby/object:Yaqut::Language
409
+ iso_639_1: mr
410
+ native_name: "मराठी"
411
+ transliterated_native_name: mraatthii
412
+ english_name: marathi
413
+ - !ruby/object:Yaqut::Language
414
+ iso_639_1: ms
415
+ native_name: bahasa melayu
416
+ transliterated_native_name: bahasa melayu
417
+ english_name: malay
418
+ - !ruby/object:Yaqut::Language
419
+ iso_639_1: mt
420
+ native_name: malti
421
+ transliterated_native_name: malti
422
+ english_name: maltese
423
+ - !ruby/object:Yaqut::Language
424
+ iso_639_1: my
425
+ native_name: "ဗမာ"
426
+ transliterated_native_name: bmaa
427
+ english_name: burmese
428
+ - !ruby/object:Yaqut::Language
429
+ iso_639_1: nb
430
+ native_name: norsk bokmål
431
+ transliterated_native_name: norsk bokmal
432
+ english_name: norwegian bokmål
433
+ - !ruby/object:Yaqut::Language
434
+ iso_639_1: nd
435
+ native_name: isindebele
436
+ transliterated_native_name: isindebele
437
+ english_name: north ndebele
438
+ - !ruby/object:Yaqut::Language
439
+ iso_639_1: ne
440
+ native_name: "नेपाली"
441
+ transliterated_native_name: nepaalii
442
+ english_name: nepali
443
+ - !ruby/object:Yaqut::Language
444
+ iso_639_1: nl
445
+ native_name: nederlands
446
+ transliterated_native_name: nederlands
447
+ english_name: dutch
448
+ - !ruby/object:Yaqut::Language
449
+ iso_639_1: nn
450
+ native_name: nynorsk
451
+ transliterated_native_name: nynorsk
452
+ english_name: norwegian nynorsk
453
+ - !ruby/object:Yaqut::Language
454
+ iso_639_1: 'no'
455
+ english_name: norwegian
456
+ - !ruby/object:Yaqut::Language
457
+ iso_639_1: nr
458
+ native_name: isindebele
459
+ transliterated_native_name: isindebele
460
+ english_name: south ndebele
461
+ - !ruby/object:Yaqut::Language
462
+ iso_639_1: ny
463
+ english_name: nyanja
464
+ - !ruby/object:Yaqut::Language
465
+ iso_639_1: oc
466
+ english_name: occitan
467
+ - !ruby/object:Yaqut::Language
468
+ iso_639_1: om
469
+ native_name: oromoo
470
+ transliterated_native_name: oromoo
471
+ english_name: oromo
472
+ - !ruby/object:Yaqut::Language
473
+ iso_639_1: or
474
+ native_name: "ଓଡ଼ିଆ"
475
+ transliterated_native_name: odd'iaa
476
+ english_name: oriya
477
+ - !ruby/object:Yaqut::Language
478
+ iso_639_1: os
479
+ native_name: "ирон"
480
+ transliterated_native_name: iron
481
+ english_name: ossetic
482
+ - !ruby/object:Yaqut::Language
483
+ iso_639_1: pa
484
+ native_name: "ਪੰਜਾਬੀ"
485
+ transliterated_native_name: pNjaabii
486
+ english_name: punjabi
487
+ - !ruby/object:Yaqut::Language
488
+ iso_639_1: pl
489
+ native_name: polski
490
+ transliterated_native_name: polski
491
+ english_name: polish
492
+ - !ruby/object:Yaqut::Language
493
+ iso_639_1: ps
494
+ native_name: "پښتو"
495
+ transliterated_native_name: pStw
496
+ english_name: pushto
497
+ - !ruby/object:Yaqut::Language
498
+ iso_639_1: pt
499
+ native_name: português
500
+ transliterated_native_name: portugues
501
+ english_name: portuguese
502
+ - !ruby/object:Yaqut::Language
503
+ iso_639_1: qu
504
+ native_name: runasimi
505
+ transliterated_native_name: runasimi
506
+ english_name: quechua
507
+ - !ruby/object:Yaqut::Language
508
+ iso_639_1: rm
509
+ native_name: rumantsch
510
+ transliterated_native_name: rumantsch
511
+ english_name: romansh
512
+ - !ruby/object:Yaqut::Language
513
+ iso_639_1: rn
514
+ native_name: ikirundi
515
+ transliterated_native_name: ikirundi
516
+ english_name: rundi
517
+ - !ruby/object:Yaqut::Language
518
+ iso_639_1: ro
519
+ native_name: română
520
+ transliterated_native_name: romana
521
+ english_name: romanian
522
+ - !ruby/object:Yaqut::Language
523
+ iso_639_1: ru
524
+ native_name: "русский"
525
+ transliterated_native_name: russkii
526
+ english_name: russian
527
+ - !ruby/object:Yaqut::Language
528
+ iso_639_1: rw
529
+ native_name: kinyarwanda
530
+ transliterated_native_name: kinyarwanda
531
+ english_name: kinyarwanda
532
+ - !ruby/object:Yaqut::Language
533
+ iso_639_1: sa
534
+ english_name: sanskrit
535
+ - !ruby/object:Yaqut::Language
536
+ iso_639_1: sd
537
+ english_name: sindhi
538
+ - !ruby/object:Yaqut::Language
539
+ iso_639_1: se
540
+ native_name: davvisámegiella
541
+ transliterated_native_name: davvisamegiella
542
+ english_name: northern sami
543
+ - !ruby/object:Yaqut::Language
544
+ iso_639_1: sg
545
+ native_name: sängö
546
+ transliterated_native_name: sango
547
+ english_name: sango
548
+ - !ruby/object:Yaqut::Language
549
+ iso_639_1: sh
550
+ english_name: serbo-croatian
551
+ - !ruby/object:Yaqut::Language
552
+ iso_639_1: si
553
+ native_name: "සිංහල"
554
+ transliterated_native_name: siNhl
555
+ english_name: sinhala
556
+ - !ruby/object:Yaqut::Language
557
+ iso_639_1: sk
558
+ native_name: slovenčina
559
+ transliterated_native_name: slovencina
560
+ english_name: slovak
561
+ - !ruby/object:Yaqut::Language
562
+ iso_639_1: sl
563
+ native_name: slovenščina
564
+ transliterated_native_name: slovenscina
565
+ english_name: slovenian
566
+ - !ruby/object:Yaqut::Language
567
+ iso_639_1: sm
568
+ english_name: samoan
569
+ - !ruby/object:Yaqut::Language
570
+ iso_639_1: sn
571
+ native_name: chishona
572
+ transliterated_native_name: chishona
573
+ english_name: shona
574
+ - !ruby/object:Yaqut::Language
575
+ iso_639_1: so
576
+ native_name: soomaali
577
+ transliterated_native_name: soomaali
578
+ english_name: somali
579
+ - !ruby/object:Yaqut::Language
580
+ iso_639_1: sq
581
+ native_name: shqip
582
+ transliterated_native_name: shqip
583
+ english_name: albanian
584
+ - !ruby/object:Yaqut::Language
585
+ iso_639_1: sr
586
+ native_name: "српски"
587
+ transliterated_native_name: srpski
588
+ english_name: serbian
589
+ - !ruby/object:Yaqut::Language
590
+ iso_639_1: ss
591
+ native_name: siswati
592
+ transliterated_native_name: siswati
593
+ english_name: swati
594
+ - !ruby/object:Yaqut::Language
595
+ iso_639_1: st
596
+ english_name: southern sotho
597
+ - !ruby/object:Yaqut::Language
598
+ iso_639_1: su
599
+ english_name: sundanese
600
+ - !ruby/object:Yaqut::Language
601
+ iso_639_1: sv
602
+ native_name: svenska
603
+ transliterated_native_name: svenska
604
+ english_name: swedish
605
+ - !ruby/object:Yaqut::Language
606
+ iso_639_1: sw
607
+ native_name: kiswahili
608
+ transliterated_native_name: kiswahili
609
+ english_name: swahili
610
+ - !ruby/object:Yaqut::Language
611
+ iso_639_1: ta
612
+ native_name: "தமிழ்"
613
+ transliterated_native_name: tmilll
614
+ english_name: tamil
615
+ - !ruby/object:Yaqut::Language
616
+ iso_639_1: te
617
+ native_name: "తెలుగు"
618
+ transliterated_native_name: telugu
619
+ english_name: telugu
620
+ - !ruby/object:Yaqut::Language
621
+ iso_639_1: tg
622
+ english_name: tajik
623
+ - !ruby/object:Yaqut::Language
624
+ iso_639_1: th
625
+ native_name: "ไทย"
626
+ transliterated_native_name: aithy
627
+ english_name: thai
628
+ - !ruby/object:Yaqut::Language
629
+ iso_639_1: ti
630
+ native_name: "ትግርኛ"
631
+ transliterated_native_name: tegerenyaa
632
+ english_name: tigrinya
633
+ - !ruby/object:Yaqut::Language
634
+ iso_639_1: tk
635
+ english_name: turkmen
636
+ - !ruby/object:Yaqut::Language
637
+ iso_639_1: tn
638
+ native_name: setswana
639
+ transliterated_native_name: setswana
640
+ english_name: tswana
641
+ - !ruby/object:Yaqut::Language
642
+ iso_639_1: to
643
+ native_name: lea fakatonga
644
+ transliterated_native_name: lea fakatonga
645
+ english_name: tongan
646
+ - !ruby/object:Yaqut::Language
647
+ iso_639_1: tr
648
+ native_name: türkçe
649
+ transliterated_native_name: turkce
650
+ english_name: turkish
651
+ - !ruby/object:Yaqut::Language
652
+ iso_639_1: ts
653
+ native_name: xitsonga
654
+ transliterated_native_name: xitsonga
655
+ english_name: tsonga
656
+ - !ruby/object:Yaqut::Language
657
+ iso_639_1: tt
658
+ english_name: tatar
659
+ - !ruby/object:Yaqut::Language
660
+ iso_639_1: tw
661
+ english_name: twi
662
+ - !ruby/object:Yaqut::Language
663
+ iso_639_1: ty
664
+ english_name: tahitian
665
+ - !ruby/object:Yaqut::Language
666
+ iso_639_1: ug
667
+ native_name: "ئۇيغۇرچە"
668
+ transliterated_native_name: y'uyGurchae
669
+ english_name: uighur
670
+ - !ruby/object:Yaqut::Language
671
+ iso_639_1: uk
672
+ native_name: "українська"
673
+ transliterated_native_name: ukrayins'ka
674
+ english_name: ukrainian
675
+ - !ruby/object:Yaqut::Language
676
+ iso_639_1: ur
677
+ native_name: "اردو"
678
+ transliterated_native_name: rdw
679
+ english_name: urdu
680
+ - !ruby/object:Yaqut::Language
681
+ iso_639_1: uz
682
+ native_name: oʻzbekcha
683
+ transliterated_native_name: o`zbekcha
684
+ english_name: uzbek
685
+ - !ruby/object:Yaqut::Language
686
+ iso_639_1: ve
687
+ native_name: tshivenḓa
688
+ transliterated_native_name: tshivenda
689
+ english_name: venda
690
+ - !ruby/object:Yaqut::Language
691
+ iso_639_1: vi
692
+ native_name: tiếng việt
693
+ transliterated_native_name: tieng viet
694
+ english_name: vietnamese
695
+ - !ruby/object:Yaqut::Language
696
+ iso_639_1: wo
697
+ english_name: wolof
698
+ - !ruby/object:Yaqut::Language
699
+ iso_639_1: xh
700
+ english_name: xhosa
701
+ - !ruby/object:Yaqut::Language
702
+ iso_639_1: yi
703
+ native_name: "ייִדיש"
704
+ transliterated_native_name: yyidysh
705
+ english_name: yiddish
706
+ - !ruby/object:Yaqut::Language
707
+ iso_639_1: yo
708
+ native_name: "Èdè yorùbá"
709
+ transliterated_native_name: Ede yoruba
710
+ english_name: yoruba
711
+ - !ruby/object:Yaqut::Language
712
+ iso_639_1: zh
713
+ native_name: "中文"
714
+ transliterated_native_name: 'Zhong Wen '
715
+ english_name: chinese
716
+ - !ruby/object:Yaqut::Language
717
+ iso_639_1: zu
718
+ native_name: isizulu
719
+ transliterated_native_name: isizulu
720
+ english_name: zulu
721
+ - !ruby/object:Yaqut::Language
722
+ iso_639_1: bi
723
+ english_name: bislama
724
+ - !ruby/object:Yaqut::Language
725
+ iso_639_1: ik
726
+ english_name: inupiaq
727
+ - !ruby/object:Yaqut::Language
728
+ iso_639_1: na
729
+ english_name: nauru
730
+ - !ruby/object:Yaqut::Language
731
+ iso_639_1: tl
732
+ english_name: tagalog
733
+ - !ruby/object:Yaqut::Language
734
+ iso_639_1: vo
735
+ native_name: volapük
736
+ transliterated_native_name: volapuk
737
+ english_name: volapük
738
+ - !ruby/object:Yaqut::Language
739
+ iso_639_1: za
740
+ english_name: zhuang
741
+ - !ruby/object:Yaqut::Language
742
+ iso_639_1: ae
743
+ english_name: avestan
744
+ - !ruby/object:Yaqut::Language
745
+ iso_639_1: an
746
+ english_name: aragonese
747
+ - !ruby/object:Yaqut::Language
748
+ iso_639_1: av
749
+ english_name: avaric
750
+ - !ruby/object:Yaqut::Language
751
+ iso_639_1: ce
752
+ english_name: chechen
753
+ - !ruby/object:Yaqut::Language
754
+ iso_639_1: ch
755
+ english_name: chamorro
756
+ - !ruby/object:Yaqut::Language
757
+ iso_639_1: cr
758
+ english_name: cree
759
+ - !ruby/object:Yaqut::Language
760
+ iso_639_1: cv
761
+ english_name: chuvash
762
+ - !ruby/object:Yaqut::Language
763
+ iso_639_1: ff
764
+ native_name: pulaar
765
+ transliterated_native_name: pulaar
766
+ english_name: fulah
767
+ - !ruby/object:Yaqut::Language
768
+ iso_639_1: ho
769
+ english_name: hiri motu
770
+ - !ruby/object:Yaqut::Language
771
+ iso_639_1: hz
772
+ english_name: herero
773
+ - !ruby/object:Yaqut::Language
774
+ iso_639_1: io
775
+ english_name: ido
776
+ - !ruby/object:Yaqut::Language
777
+ iso_639_1: kj
778
+ english_name: kuanyama
779
+ - !ruby/object:Yaqut::Language
780
+ iso_639_1: kr
781
+ english_name: kanuri
782
+ - !ruby/object:Yaqut::Language
783
+ iso_639_1: kv
784
+ english_name: komi
785
+ - !ruby/object:Yaqut::Language
786
+ iso_639_1: mh
787
+ english_name: marshallese
788
+ - !ruby/object:Yaqut::Language
789
+ iso_639_1: ng
790
+ english_name: ndonga
791
+ - !ruby/object:Yaqut::Language
792
+ iso_639_1: nv
793
+ english_name: navajo
794
+ - !ruby/object:Yaqut::Language
795
+ iso_639_1: oj
796
+ english_name: ojibwa
797
+ - !ruby/object:Yaqut::Language
798
+ iso_639_1: pi
799
+ english_name: pali
800
+ - !ruby/object:Yaqut::Language
801
+ iso_639_1: sc
802
+ english_name: sardinian
803
+ - !ruby/object:Yaqut::Language
804
+ iso_639_1: wa
805
+ english_name: walloon
@@ -0,0 +1,24 @@
1
+ require "yaqut/version"
2
+ require "yaqut/language"
3
+ require "yaml"
4
+
5
+ module Yaqut
6
+ ALL_FIELDS = [:english_name, :native_name, :transliterated_native_name, :iso_639_1]
7
+
8
+ def self.search(any_field=nil, **search_params)
9
+ raise "Specify at least one search parameter" if any_field.nil? && (search_params.none? || search_params.all? { |param| param.nil? })
10
+ raise "Cannot specify specific fields and a general search term" if any_field && search_params.any?
11
+ # Case changes can be expensive, only do them once
12
+ any_field = any_field.downcase if any_field
13
+ search_params.each{ |key, str| search_params[key] = str.downcase }
14
+ # Not particularly efficient, but there are only ~200
15
+ database.find { |language|
16
+ (!any_field.nil? && ALL_FIELDS.any? { |field| language.send(field) == any_field }) ||
17
+ (search_params.any? && search_params.all? { |field, param| language.send(field) == param })
18
+ }
19
+ end
20
+
21
+ def self.database
22
+ @database ||= YAML::load_file("config/languages.yml")
23
+ end
24
+ end
@@ -0,0 +1,7 @@
1
+ require 'unidecoder'
2
+
3
+ module Yaqut
4
+ class Language
5
+ attr_accessor :english_name, :native_name, :iso_639_1, :transliterated_native_name
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ module Yaqut
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,45 @@
1
+ require 'yaqut'
2
+
3
+ describe Yaqut do
4
+ describe "#search" do
5
+ context "invalid inputs" do
6
+ context "no parameters" do
7
+ it "fails" do
8
+ expect{ Yaqut.search }.to raise_exception
9
+ end
10
+ end
11
+
12
+ context "too many parameters" do
13
+ it "fails" do
14
+ expect{ Yaqut.search("test", english_name: "test") }.to raise_exception
15
+ end
16
+ end
17
+ end
18
+
19
+ context "valid inputs" do
20
+ it "handles multifield search" do
21
+ expect(Yaqut.search("english").iso_639_1).to eq("en")
22
+ end
23
+
24
+ it "isn't overeager" do
25
+ expect(Yaqut.search(iso_639_1: "english")).to be_nil
26
+ end
27
+
28
+ it "handles specific search" do
29
+ expect(Yaqut.search(iso_639_1: "en").iso_639_1).to eq("en")
30
+ end
31
+
32
+ it "handles native-language search" do
33
+ expect(Yaqut.search("français").iso_639_1).to eq("fr")
34
+ end
35
+
36
+ it "handles transliterated native-language search" do
37
+ expect(Yaqut.search("francais").iso_639_1).to eq("fr")
38
+ end
39
+
40
+ it "confuses people who thought native_name was already transliterated" do
41
+ expect(Yaqut.search(native_name: "francais")).to be_nil
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,50 @@
1
+ UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
2
+
3
+ Unicode Data Files include all data files under the directories
4
+ http://www.unicode.org/Public/, http://www.unicode.org/reports/, and
5
+ http://www.unicode.org/cldr/data/. Unicode Data Files do not include PDF
6
+ online code charts under the directory http://www.unicode.org/Public/.
7
+ Software includes any source code published in the Unicode Standard or under
8
+ the directories http://www.unicode.org/Public/,
9
+ http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/.
10
+
11
+ NOTICE TO USER: Carefully read the following legal agreement. BY
12
+ DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES
13
+ ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND
14
+ AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF
15
+ YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA
16
+ FILES OR SOFTWARE.
17
+
18
+ COPYRIGHT AND PERMISSION NOTICE
19
+
20
+ Copyright © 1991-2014 Unicode, Inc. All rights reserved. Distributed under
21
+ the Terms of Use in http://www.unicode.org/copyright.html.
22
+
23
+ Permission is hereby granted, free of charge, to any person obtaining a
24
+ copy of the Unicode data files and any associated documentation (the "Data
25
+ Files") or Unicode software and any associated documentation (the "Software")
26
+ to deal in the Data Files or Software without restriction, including without
27
+ limitation the rights to use, copy, modify, merge, publish, distribute, and/or
28
+ sell copies of the Data Files or Software, and to permit persons to whom the
29
+ Data Files or Software are furnished to do so, provided that (a) the above
30
+ copyright notice(s) and this permission notice appear with all copies of the
31
+ Data Files or Software, (b) both the above copyright notice(s) and this
32
+ permission notice appear in associated documentation, and (c) there is clear
33
+ notice in each modified Data File or in the Software as well as in the
34
+ documentation associated with the Data File(s) or Software that the data or
35
+ software has been modified.
36
+
37
+ THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
38
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
39
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD
40
+ PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
41
+ THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
42
+ DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
43
+ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
44
+ ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE
45
+ DATA FILES OR SOFTWARE.
46
+
47
+ Except as contained in this notice, the name of a copyright holder shall
48
+ not be used in advertising or otherwise to promote the sale, use or other
49
+ dealings in these Data Files or Software without prior written authorization
50
+ of the copyright holder.
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'yaqut/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "yaqut"
8
+ spec.version = Yaqut::VERSION
9
+ spec.authors = ["Collin"]
10
+ spec.email = ["collin@remind101.com"]
11
+ spec.summary = "Look up language names and ISO codes."
12
+ spec.description = "A lightweight database of language names and ISO codes."
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.7"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ end
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: yaqut
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Collin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-11-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ description: A lightweight database of language names and ISO codes.
42
+ email:
43
+ - collin@remind101.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - .gitignore
49
+ - Gemfile
50
+ - LICENSE.txt
51
+ - README.md
52
+ - Rakefile
53
+ - config/languages.yml
54
+ - lib/yaqut.rb
55
+ - lib/yaqut/language.rb
56
+ - lib/yaqut/version.rb
57
+ - spec/yaqut_spec.rb
58
+ - unicode-license.txt
59
+ - yaqut.gemspec
60
+ homepage: ''
61
+ licenses:
62
+ - MIT
63
+ metadata: {}
64
+ post_install_message:
65
+ rdoc_options: []
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ! '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ requirements: []
79
+ rubyforge_project:
80
+ rubygems_version: 2.2.2
81
+ signing_key:
82
+ specification_version: 4
83
+ summary: Look up language names and ISO codes.
84
+ test_files:
85
+ - spec/yaqut_spec.rb