iso-639 0.3.5 → 0.3.6
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 +4 -4
- data/Gemfile.lock +22 -19
- data/README.md +4 -0
- data/iso-639.gemspec +1 -1
- data/lib/iso-639.rb +13 -3
- data/test/helper.rb +2 -0
- data/test/test_iso_639.rb +14 -4
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c009734c8c8f89dcc8ab479124f1c274b854e926a3aab219d9548ff08ca4fe3
|
4
|
+
data.tar.gz: 7ebdb1a4c925a1eb0a58df46a50f5fce5c629a385fa6fcb8b8d189eb7d312641
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 520ba2092a5df4d0f67621f685df720a5cade3760e90a16e445ffff9fe3ed8105e1837e2fec9af500818ccafb2db4721cc81cea89fbf0d5a12343192162a4ad6
|
7
|
+
data.tar.gz: e3c55fc6423fe290f205924a779400b45394a067a38c75390209e64384d75a8e1ec5c053499d65fae9a541c37a6ccdfc33fbee38a097b3b6db7bb28f1fd0cf7f
|
data/Gemfile.lock
CHANGED
@@ -2,30 +2,33 @@ GEM
|
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
4
|
allocation_stats (0.1.5)
|
5
|
-
ast (2.4.
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
power_assert (1.1.6)
|
5
|
+
ast (2.4.2)
|
6
|
+
minitest (5.14.4)
|
7
|
+
mocha (1.13.0)
|
8
|
+
parallel (1.21.0)
|
9
|
+
parser (3.0.2.0)
|
10
|
+
ast (~> 2.4.1)
|
11
|
+
power_assert (2.0.1)
|
13
12
|
rainbow (3.0.0)
|
14
|
-
rake (13.0.
|
15
|
-
rdoc (6.
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
rake (13.0.6)
|
14
|
+
rdoc (6.3.3)
|
15
|
+
regexp_parser (2.1.1)
|
16
|
+
rexml (3.2.5)
|
17
|
+
rubocop (1.22.3)
|
19
18
|
parallel (~> 1.10)
|
20
|
-
parser (>=
|
19
|
+
parser (>= 3.0.0.0)
|
21
20
|
rainbow (>= 2.2.2, < 4.0)
|
21
|
+
regexp_parser (>= 1.8, < 3.0)
|
22
22
|
rexml
|
23
|
+
rubocop-ast (>= 1.12.0, < 2.0)
|
23
24
|
ruby-progressbar (~> 1.7)
|
24
|
-
unicode-display_width (>= 1.4.0, <
|
25
|
-
|
26
|
-
|
25
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
26
|
+
rubocop-ast (1.13.0)
|
27
|
+
parser (>= 3.0.1.1)
|
28
|
+
ruby-progressbar (1.11.0)
|
29
|
+
test-unit (3.5.1)
|
27
30
|
power_assert
|
28
|
-
unicode-display_width (1.
|
31
|
+
unicode-display_width (2.1.0)
|
29
32
|
|
30
33
|
PLATFORMS
|
31
34
|
ruby
|
@@ -40,4 +43,4 @@ DEPENDENCIES
|
|
40
43
|
test-unit
|
41
44
|
|
42
45
|
BUNDLED WITH
|
43
|
-
2.
|
46
|
+
2.2.28
|
data/README.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# ISO 639
|
2
2
|
|
3
|
+
[](https://travis-ci.org/xwmx/iso-639)
|
4
|
+
[](http://rubygems.org/gems/iso-639)
|
5
|
+
[](http://rubygems.org/gems/iso-639)
|
6
|
+
|
3
7
|
A Ruby gem that provides the ISO 639-2 and ISO 639-1 data sets along with some
|
4
8
|
convenience methods for accessing different entries and entry fields. The data
|
5
9
|
comes from the
|
data/iso-639.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'iso-639'
|
5
|
-
s.version = '0.3.
|
5
|
+
s.version = '0.3.6'
|
6
6
|
s.licenses = ['MIT']
|
7
7
|
s.summary = 'ISO 639-1 and ISO 639-2 language code entries and convenience methods.'
|
8
8
|
s.description = 'ISO 639-1 and ISO 639-2 language code entries and convenience methods.'
|
data/lib/iso-639.rb
CHANGED
@@ -16,6 +16,7 @@ class ISO_639 < Array
|
|
16
16
|
# https://www.loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt
|
17
17
|
ISO_639_2 = lambda do
|
18
18
|
dataset = []
|
19
|
+
|
19
20
|
File.open(
|
20
21
|
File.join(File.dirname(__FILE__), 'data', 'ISO-639-2_utf-8.txt'),
|
21
22
|
'r:bom|utf-8'
|
@@ -24,6 +25,7 @@ class ISO_639 < Array
|
|
24
25
|
dataset << self[*row.map { |v| v || '' }].freeze
|
25
26
|
end
|
26
27
|
end
|
28
|
+
|
27
29
|
return dataset
|
28
30
|
end.call.freeze
|
29
31
|
|
@@ -31,21 +33,25 @@ class ISO_639 < Array
|
|
31
33
|
# all words and codes in all fields.
|
32
34
|
INVERTED_INDEX = lambda do
|
33
35
|
index = {}
|
36
|
+
|
34
37
|
ISO_639_2.each_with_index do |record, i|
|
35
38
|
record.each do |field|
|
36
39
|
downcased = field.downcase
|
40
|
+
|
37
41
|
words = (
|
38
42
|
downcased.split(/[[:blank:]]|\(|\)|,|;/) +
|
39
43
|
downcased.split(/;/)
|
40
44
|
)
|
45
|
+
|
41
46
|
words.each do |word|
|
42
47
|
unless word.empty?
|
43
48
|
index[word] ||= []
|
44
|
-
index[word] <<
|
49
|
+
index[word] << i
|
45
50
|
end
|
46
51
|
end
|
47
52
|
end
|
48
53
|
end
|
54
|
+
|
49
55
|
return index
|
50
56
|
end.call.freeze
|
51
57
|
|
@@ -66,7 +72,7 @@ class ISO_639 < Array
|
|
66
72
|
return if code.nil?
|
67
73
|
|
68
74
|
case code.length
|
69
|
-
when 3
|
75
|
+
when 3, 7
|
70
76
|
ISO_639_2.detect do |entry|
|
71
77
|
entry if [entry.alpha3, entry.alpha3_terminologic].include?(code)
|
72
78
|
end
|
@@ -76,6 +82,7 @@ class ISO_639 < Array
|
|
76
82
|
end
|
77
83
|
end
|
78
84
|
end
|
85
|
+
|
79
86
|
alias_method :find, :find_by_code
|
80
87
|
|
81
88
|
# Returns the entry array for a language specified by its English name.
|
@@ -96,9 +103,11 @@ class ISO_639 < Array
|
|
96
103
|
# of any kind, or it can be one of the words contained in the English or
|
97
104
|
# French name field.
|
98
105
|
def search(term)
|
99
|
-
term
|
106
|
+
term ||= ''
|
107
|
+
|
100
108
|
normalized_term = term.downcase.strip
|
101
109
|
indexes = INVERTED_INDEX[normalized_term]
|
110
|
+
|
102
111
|
indexes ? ISO_639_2.values_at(*indexes).uniq : []
|
103
112
|
end
|
104
113
|
end
|
@@ -107,6 +116,7 @@ class ISO_639 < Array
|
|
107
116
|
def alpha3_bibliographic
|
108
117
|
self[0]
|
109
118
|
end
|
119
|
+
|
110
120
|
alias_method :alpha3, :alpha3_bibliographic
|
111
121
|
|
112
122
|
# The entry's alpha-3 terminologic (when given)
|
data/test/helper.rb
CHANGED
@@ -7,6 +7,7 @@ begin
|
|
7
7
|
rescue Bundler::BundlerError => e
|
8
8
|
warn e.message
|
9
9
|
warn 'Run `bundle install` to install missing gems'
|
10
|
+
|
10
11
|
exit e.status_code
|
11
12
|
end
|
12
13
|
require 'minitest/autorun'
|
@@ -15,4 +16,5 @@ require 'mocha/minitest'
|
|
15
16
|
|
16
17
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
17
18
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
19
|
+
|
18
20
|
require 'iso-639'
|
data/test/test_iso_639.rb
CHANGED
@@ -12,11 +12,11 @@ describe ISO_639 do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'should return nil find_by_code when code does not exist or is invalid' do
|
15
|
-
assert ISO_639.find_by_code(nil).nil?,
|
16
|
-
assert ISO_639.find_by_code('xxx').nil?,
|
17
|
-
assert ISO_639.find_by_code('xx').nil?,
|
15
|
+
assert ISO_639.find_by_code(nil).nil?, 'nil code'
|
16
|
+
assert ISO_639.find_by_code('xxx').nil?, 'xxx alfa-3 not existing code'
|
17
|
+
assert ISO_639.find_by_code('xx').nil?, 'xx alfa-2 not existing code'
|
18
18
|
assert ISO_639.find_by_code('xxxx').nil?, 'xxxx lengthy code'
|
19
|
-
assert ISO_639.find_by_code('').nil?,
|
19
|
+
assert ISO_639.find_by_code('').nil?, 'empty string code'
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'should return entry for alpha-2 code' do
|
@@ -24,6 +24,15 @@ describe ISO_639 do
|
|
24
24
|
assert_equal ['eng', '', 'en', 'English', 'anglais'], ISO_639.find('en')
|
25
25
|
end
|
26
26
|
|
27
|
+
it 'should return entry for alpha-3 bibliographic code' do
|
28
|
+
assert_equal %w[ger deu de German allemand], ISO_639.find('ger')
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should return entry for 7-character alpha-3 terminologic code (qaa-qtz)' do
|
32
|
+
assert_equal ['qaa-qtz', '', '', 'Reserved for local use', "réservée à l'usage local"], ISO_639.find_by_code('qaa-qtz')
|
33
|
+
assert_equal ['qaa-qtz', '', '', 'Reserved for local use', "réservée à l'usage local"], ISO_639.find('qaa-qtz')
|
34
|
+
end
|
35
|
+
|
27
36
|
it 'should return entry for alpha-3 terminologic code' do
|
28
37
|
assert_equal %w[ger deu de German allemand], ISO_639.find('deu')
|
29
38
|
end
|
@@ -46,6 +55,7 @@ describe ISO_639 do
|
|
46
55
|
].each_with_index do |m, i|
|
47
56
|
it "should respond to and return #{m}" do
|
48
57
|
@entry = ISO_639.find('en')
|
58
|
+
|
49
59
|
assert @entry.respond_to?(m)
|
50
60
|
assert_equal ['eng', 'eng', '', 'en', 'English', 'anglais'][i], @entry.send(m)
|
51
61
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iso-639
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Melody
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -133,7 +133,7 @@ homepage: http://github.com/xwmx/iso-639
|
|
133
133
|
licenses:
|
134
134
|
- MIT
|
135
135
|
metadata: {}
|
136
|
-
post_install_message:
|
136
|
+
post_install_message:
|
137
137
|
rdoc_options: []
|
138
138
|
require_paths:
|
139
139
|
- lib
|
@@ -148,8 +148,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
148
148
|
- !ruby/object:Gem::Version
|
149
149
|
version: '0'
|
150
150
|
requirements: []
|
151
|
-
rubygems_version: 3.
|
152
|
-
signing_key:
|
151
|
+
rubygems_version: 3.2.22
|
152
|
+
signing_key:
|
153
153
|
specification_version: 4
|
154
154
|
summary: ISO 639-1 and ISO 639-2 language code entries and convenience methods.
|
155
155
|
test_files: []
|