iso-639 0.3.5 → 0.3.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 504e2b6dab9b710bb70fb319bd734397c2e088addc75a11e2948350e51dac6f1
4
- data.tar.gz: b508045598ebf54e2cd347b8230d7a59e613ce90e839e5b89ca659ac278d6b51
3
+ metadata.gz: 82638293b2ce0ad805527d4c94332dc4340f61dedc06c80d55f2db9edc3e97c8
4
+ data.tar.gz: 3aba44af194937d816337f6a53dbbfbf58cfcd8ec4845ca23443c42a500f0497
5
5
  SHA512:
6
- metadata.gz: d960c2d65b684cdd0ab904fabaecdb85e5feab58ec8f1047f2d0c076f17742f67d18a40cf87a269805b12209b4b6fa02efb3ad007db448da6a97ebf3462e8d29
7
- data.tar.gz: c5cfeed25b18c74e605b5814956f84bab3325d1dba63a3bae86981aafa2390bbc58c00638f88200eeff56c55530bc8094fc61a696af3c7721cf35fd1e2c05d46
6
+ metadata.gz: dcaddf82f8af9ac2f1f207b538bfcd5167ab960754e28f39f368f7e582357d0f3501e31bcfb884a5fbb4baf5e4d10ea17eedb44b353c4bffe30f62e4865aee27
7
+ data.tar.gz: 22d0c99651c464c79a69105e7c0012124d8a0d7b5456459008852ce52ed0ee0d3a4d59dba2984ef88c6e1376807cddf3a42bc9b183dda06bf0a6c7527517a272
data/Gemfile CHANGED
@@ -5,6 +5,8 @@ source 'http://rubygems.org'
5
5
  # Example:
6
6
  # gem "activesupport", ">= 2.3.5"
7
7
 
8
+ gem 'csv'
9
+
8
10
  # Add dependencies to develop your gem here.
9
11
  # Include everything needed to run rake, tests, features, etc.
10
12
  group :development, :test do
data/Gemfile.lock CHANGED
@@ -2,36 +2,51 @@ GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
4
  allocation_stats (0.1.5)
5
- ast (2.4.0)
6
- jaro_winkler (1.5.4)
7
- minitest (5.14.0)
8
- mocha (1.11.2)
9
- parallel (1.19.1)
10
- parser (2.7.0.3)
11
- ast (~> 2.4.0)
12
- power_assert (1.1.6)
13
- rainbow (3.0.0)
14
- rake (13.0.1)
15
- rdoc (6.2.1)
16
- rexml (3.2.4)
17
- rubocop (0.80.1)
18
- jaro_winkler (~> 1.5.1)
5
+ ast (2.4.2)
6
+ csv (3.3.0)
7
+ json (2.7.2)
8
+ language_server-protocol (3.17.0.3)
9
+ minitest (5.25.1)
10
+ mocha (2.4.5)
11
+ ruby2_keywords (>= 0.0.5)
12
+ parallel (1.26.3)
13
+ parser (3.3.5.0)
14
+ ast (~> 2.4.1)
15
+ racc
16
+ power_assert (2.0.4)
17
+ psych (5.1.2)
18
+ stringio
19
+ racc (1.8.1)
20
+ rainbow (3.1.1)
21
+ rake (13.2.1)
22
+ rdoc (6.7.0)
23
+ psych (>= 4.0.0)
24
+ regexp_parser (2.9.2)
25
+ rubocop (1.66.1)
26
+ json (~> 2.3)
27
+ language_server-protocol (>= 3.17.0)
19
28
  parallel (~> 1.10)
20
- parser (>= 2.7.0.1)
29
+ parser (>= 3.3.0.2)
21
30
  rainbow (>= 2.2.2, < 4.0)
22
- rexml
31
+ regexp_parser (>= 2.4, < 3.0)
32
+ rubocop-ast (>= 1.32.2, < 2.0)
23
33
  ruby-progressbar (~> 1.7)
24
- unicode-display_width (>= 1.4.0, < 1.7)
25
- ruby-progressbar (1.10.1)
26
- test-unit (3.3.5)
34
+ unicode-display_width (>= 2.4.0, < 3.0)
35
+ rubocop-ast (1.32.3)
36
+ parser (>= 3.3.1.0)
37
+ ruby-progressbar (1.13.0)
38
+ ruby2_keywords (0.0.5)
39
+ stringio (3.1.1)
40
+ test-unit (3.6.2)
27
41
  power_assert
28
- unicode-display_width (1.6.1)
42
+ unicode-display_width (2.6.0)
29
43
 
30
44
  PLATFORMS
31
45
  ruby
32
46
 
33
47
  DEPENDENCIES
34
48
  allocation_stats
49
+ csv
35
50
  minitest
36
51
  mocha
37
52
  rake
@@ -40,4 +55,4 @@ DEPENDENCIES
40
55
  test-unit
41
56
 
42
57
  BUNDLED WITH
43
- 2.1.4
58
+ 2.2.28
data/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # ISO 639
2
2
 
3
+ [![Build Status](https://img.shields.io/github/actions/workflow/status/xwmx/iso-639/tests.yml?branch=master)](https://github.com/xwmx/iso-639/actions)
4
+ [![Gem Version](https://img.shields.io/gem/v/iso-639?color=blue)](http://rubygems.org/gems/iso-639)
5
+ [![Gem Downloads](https://img.shields.io/gem/dt/iso-639)](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'
5
+ s.version = '0.3.8'
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.'
@@ -27,6 +27,7 @@ Gem::Specification.new do |s|
27
27
  ]
28
28
  s.homepage = 'http://github.com/xwmx/iso-639'
29
29
  s.require_paths = ['lib']
30
+ s.add_dependency('csv')
30
31
  s.add_development_dependency('minitest', '~> 5', '>= 0')
31
32
  s.add_development_dependency('mocha', '~> 1', '>= 0')
32
33
  s.add_development_dependency('rdoc', '~> 6', '>= 0')
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,29 +25,34 @@ class ISO_639 < Array
24
25
  dataset << self[*row.map { |v| v || '' }].freeze
25
26
  end
26
27
  end
27
- return dataset
28
+
29
+ dataset
28
30
  end.call.freeze
29
31
 
30
32
  # An inverted index generated from the ISO_639_2 data. Used for searching
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] << i
49
+ index[word] << i
45
50
  end
46
51
  end
47
52
  end
48
53
  end
49
- return index
54
+
55
+ index
50
56
  end.call.freeze
51
57
 
52
58
  # The ISO 639-1 dataset as an array of entries. Each entry is an array with
@@ -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?, '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'
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?, 'empty string code'
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,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iso-639
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.8
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: 2020-03-19 00:00:00.000000000 Z
11
+ date: 2024-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: csv
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: minitest
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -133,7 +147,7 @@ homepage: http://github.com/xwmx/iso-639
133
147
  licenses:
134
148
  - MIT
135
149
  metadata: {}
136
- post_install_message:
150
+ post_install_message:
137
151
  rdoc_options: []
138
152
  require_paths:
139
153
  - lib
@@ -148,8 +162,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
162
  - !ruby/object:Gem::Version
149
163
  version: '0'
150
164
  requirements: []
151
- rubygems_version: 3.1.2
152
- signing_key:
165
+ rubygems_version: 3.5.3
166
+ signing_key:
153
167
  specification_version: 4
154
168
  summary: ISO 639-1 and ISO 639-2 language code entries and convenience methods.
155
169
  test_files: []