iso-codes 0.3.0 → 1.2.0
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 +7 -0
- data/CHANGELOG.md +29 -0
- data/LICENSE.md +19 -0
- data/README.md +72 -0
- data/bin/setup +5 -0
- data/lib/iso-639-3-macrolanguages.tab +454 -0
- data/lib/iso-639-3.tab +7894 -0
- data/lib/iso_codes/version.rb +3 -0
- data/lib/iso_codes.rb +26 -22
- metadata +107 -59
- data/CHANGELOG +0 -1
- data/README.rdoc +0 -73
- data/Rakefile +0 -23
- data/VERSION +0 -1
- data/iso-codes.gemspec +0 -44
- data/lib/iso-639-3-macrolanguages_20100128.tab.gz +0 -0
- data/lib/iso-639-3_20110525.tab.gz +0 -0
- data/test/test_iso_codes.rb +0 -35
data/lib/iso_codes.rb
CHANGED
@@ -1,18 +1,11 @@
|
|
1
|
-
|
2
|
-
# iso_codes.rb - A comprehensive database of ISO codes
|
3
|
-
#
|
4
|
-
# Written by Marius L. Jøhndal, 2008, 2010, 2011.
|
5
|
-
#
|
6
|
-
require 'zlib'
|
1
|
+
require 'iso_codes/version'
|
7
2
|
|
8
3
|
module ISOCodes
|
9
|
-
# Version of the ISO 639-3 code set supported
|
10
|
-
|
11
|
-
ISO_639_3_VERSION = '20110525'
|
4
|
+
# Version of the ISO 639-3 code set supported.
|
5
|
+
ISO_639_3_VERSION = '20210218'
|
12
6
|
|
13
|
-
# Version of the ISO 639-3 macrolanguage mappings supported
|
14
|
-
|
15
|
-
ISO_639_3_MACROLANGUAGE_MAPPINGS_VERSION = '20100128'
|
7
|
+
# Version of the ISO 639-3 macrolanguage mappings supported.
|
8
|
+
ISO_639_3_MACROLANGUAGE_MAPPINGS_VERSION = '20210218'
|
16
9
|
|
17
10
|
class Language
|
18
11
|
# ISO 639-3 identifier for the language, or +nil+ if none is defined.
|
@@ -40,19 +33,29 @@ module ISOCodes
|
|
40
33
|
|
41
34
|
def initialize(identifier, part2b, part2t, part1, language_type, ref_name)
|
42
35
|
@identifier = identifier
|
43
|
-
@alpha3_bibliographic = part2b
|
44
|
-
@alpha3_terminology = part2t
|
45
|
-
@alpha2 = part1
|
36
|
+
@alpha3_bibliographic = part2b == '' ? nil : part2b
|
37
|
+
@alpha3_terminology = part2t == '' ? nil : part2t
|
38
|
+
@alpha2 = part1 == '' ? nil : part1
|
46
39
|
@language_type = language_type
|
47
40
|
@reference_name = ref_name
|
48
41
|
end
|
49
42
|
end
|
50
43
|
|
44
|
+
class SpecialSituationLanguage < Language
|
45
|
+
def initialize(individual_languages, macrolanguage, *rest)
|
46
|
+
super(*rest)
|
47
|
+
|
48
|
+
raise ArgumentError, "macrolanguage given for special situation language" if macrolanguage
|
49
|
+
raise ArgumentError, "individual languages given for special situation language" if individual_languages
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
51
53
|
class IndividualLanguage < Language
|
52
54
|
def initialize(individual_languages, macrolanguage, *rest)
|
53
55
|
super(*rest)
|
54
56
|
|
55
|
-
raise "
|
57
|
+
raise ArgumentError, "individual languages given for individual language" if individual_languages
|
58
|
+
|
56
59
|
@macrolanguage = macrolanguage
|
57
60
|
end
|
58
61
|
|
@@ -67,7 +70,8 @@ module ISOCodes
|
|
67
70
|
def initialize(individual_languages, macrolanguage, *rest)
|
68
71
|
super(*rest)
|
69
72
|
|
70
|
-
raise "
|
73
|
+
raise ArgumentError, "macrolanguage given for macrolanguage" if macrolanguage
|
74
|
+
|
71
75
|
@individual_languages = individual_languages
|
72
76
|
end
|
73
77
|
|
@@ -112,7 +116,7 @@ module ISOCodes
|
|
112
116
|
end
|
113
117
|
|
114
118
|
def read_data_file(filename, field_count, delimiter, skip_first)
|
115
|
-
|
119
|
+
File.open(get_data_filename(filename)).each_line do |l|
|
116
120
|
if skip_first
|
117
121
|
skip_first = false
|
118
122
|
next
|
@@ -125,8 +129,8 @@ module ISOCodes
|
|
125
129
|
def load_iso_639_3
|
126
130
|
data = {}
|
127
131
|
|
128
|
-
read_data_file("iso-639-
|
129
|
-
identifier, part2b, part2t, part1, scope, language_type, ref_name,
|
132
|
+
read_data_file("iso-639-3.tab", 8, "\t", true) do |args|
|
133
|
+
identifier, part2b, part2t, part1, scope, language_type, ref_name, _ = args
|
130
134
|
|
131
135
|
# Sanity checks
|
132
136
|
raise ArgumentError, "missing identifier" if identifier.nil?
|
@@ -139,7 +143,7 @@ module ISOCodes
|
|
139
143
|
when 'M'
|
140
144
|
Macrolanguage
|
141
145
|
when 'S'
|
142
|
-
|
146
|
+
SpecialSituationLanguage
|
143
147
|
else
|
144
148
|
raise ArgumentError, "invalid scope"
|
145
149
|
end
|
@@ -165,7 +169,7 @@ module ISOCodes
|
|
165
169
|
data[identifier] = [klass, nil, nil, identifier, part2b, part2t, part1, language_type, ref_name]
|
166
170
|
end
|
167
171
|
|
168
|
-
read_data_file("iso-639-3-
|
172
|
+
read_data_file("iso-639-3-macrolanguages.tab", 3, "\t", true) do |args|
|
169
173
|
macrolanguage_identifier, individual_language_identifier, status = args
|
170
174
|
|
171
175
|
case status
|
metadata
CHANGED
@@ -1,73 +1,121 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: iso-codes
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
- 0
|
10
|
-
version: 0.3.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.2.0
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
13
|
-
-
|
14
|
-
autorequire:
|
6
|
+
authors:
|
7
|
+
- Marius L. Jøhndal
|
8
|
+
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
11
|
+
date: 2021-08-30 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: yard
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simplecov
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bundler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: A database of ISO language codes and ISO script codes for Ruby.
|
84
|
+
email:
|
85
|
+
- mariuslj@ifi.uio.no
|
23
86
|
executables: []
|
24
|
-
|
25
87
|
extensions: []
|
26
|
-
|
27
|
-
|
28
|
-
-
|
29
|
-
|
30
|
-
-
|
31
|
-
-
|
32
|
-
-
|
33
|
-
-
|
34
|
-
- iso-codes.gemspec
|
35
|
-
- lib/iso-639-3-macrolanguages_20100128.tab.gz
|
36
|
-
- lib/iso-639-3_20110525.tab.gz
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- CHANGELOG.md
|
91
|
+
- LICENSE.md
|
92
|
+
- README.md
|
93
|
+
- bin/setup
|
94
|
+
- lib/iso-639-3-macrolanguages.tab
|
95
|
+
- lib/iso-639-3.tab
|
37
96
|
- lib/iso_codes.rb
|
38
|
-
-
|
97
|
+
- lib/iso_codes/version.rb
|
39
98
|
homepage: http://github.com/mlj/iso-codes
|
40
|
-
licenses:
|
41
|
-
|
42
|
-
|
99
|
+
licenses:
|
100
|
+
- MIT
|
101
|
+
metadata: {}
|
102
|
+
post_install_message:
|
43
103
|
rdoc_options: []
|
44
|
-
|
45
|
-
require_paths:
|
104
|
+
require_paths:
|
46
105
|
- lib
|
47
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
-
|
49
|
-
requirements:
|
106
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
50
108
|
- - ">="
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
version: "0"
|
56
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
|
-
requirements:
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
59
113
|
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
|
62
|
-
segments:
|
63
|
-
- 0
|
64
|
-
version: "0"
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
65
116
|
requirements: []
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
specification_version: 3
|
71
|
-
summary: ISO language and script code support
|
117
|
+
rubygems_version: 3.1.6
|
118
|
+
signing_key:
|
119
|
+
specification_version: 4
|
120
|
+
summary: ISO language and script codes
|
72
121
|
test_files: []
|
73
|
-
|
data/CHANGELOG
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
v0.1.0. initial release
|
data/README.rdoc
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
= iso-codes
|
2
|
-
|
3
|
-
A comprehensive database of ISO language and script codes.
|
4
|
-
|
5
|
-
== Installation
|
6
|
-
|
7
|
-
gem install iso-codes
|
8
|
-
|
9
|
-
== Usage
|
10
|
-
|
11
|
-
Language codes can be looked up using +find_language+:
|
12
|
-
|
13
|
-
require 'iso_codes'
|
14
|
-
|
15
|
-
language = ISOCodes.find_language('lav')
|
16
|
-
# ISO 639-3 reference name
|
17
|
-
language.reference_name
|
18
|
-
# ISO 639-3 identifier
|
19
|
-
language.identifier
|
20
|
-
# ISO 639-1 (alpha-2) identifier
|
21
|
-
language.alpha2
|
22
|
-
# ISO 639-2 (alpha-3) identifiers
|
23
|
-
language.alpha3_bibliographic
|
24
|
-
language.alpha3_terminology
|
25
|
-
|
26
|
-
=== Macrolanguages and individual languages
|
27
|
-
|
28
|
-
ISO 639-3 defines language identifiers that covers a set of other language
|
29
|
-
identifiers. For example, the identifier +lav+ for Latvian corresponds to
|
30
|
-
+lvs+ for Standard Latvian and +ltg+ for Latgalian. These identifiers are
|
31
|
-
called macrolanguages (see http://www.sil.org/iso639-3/scope.asp#M for a
|
32
|
-
more formal definition). See http://www.sil.org/iso639-3/macrolanguages.asp
|
33
|
-
for an overview of such identifiers.
|
34
|
-
|
35
|
-
Macrolanguage identifiers can be looked up in the same way as other
|
36
|
-
language codes:
|
37
|
-
|
38
|
-
language = ISOCodes.find_language('lav')
|
39
|
-
language.reference_name
|
40
|
-
# => "Latvian"
|
41
|
-
language.class
|
42
|
-
# => ISOCodes::Macrolanguage
|
43
|
-
language.alpha3_bibliographic
|
44
|
-
# => "lav"
|
45
|
-
language.alpha2
|
46
|
-
# => "lv"
|
47
|
-
|
48
|
-
The individual languages covered by the identifier can be listed:
|
49
|
-
|
50
|
-
>> language.individual_languages.map { |l| l.identifier }
|
51
|
-
# => ["ltg", "lvs"]
|
52
|
-
|
53
|
-
For an individual language the macrolanguage, if any, can be found.
|
54
|
-
|
55
|
-
language = ISOCodes.find_language('ltg')
|
56
|
-
language.class
|
57
|
-
# => ISOCodes::IndividualLanguage
|
58
|
-
language.macrolanguage.identifier
|
59
|
-
# => "lav"
|
60
|
-
|
61
|
-
== TODO
|
62
|
-
|
63
|
-
* ISO 639-1 and ISO 639-2
|
64
|
-
* IANA language codes
|
65
|
-
* country/region codes (ISO 3166-1 through 3)
|
66
|
-
* currencies (ISO 4217:2001 and 2008)
|
67
|
-
|
68
|
-
If you feel like implementing any of this, please fork the project on
|
69
|
-
github.
|
70
|
-
|
71
|
-
== Copyright
|
72
|
-
|
73
|
-
Copyright (c) 2010, 2011 Marius L. Jøhndal.
|
data/Rakefile
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
begin
|
3
|
-
require 'jeweler'
|
4
|
-
|
5
|
-
Jeweler::Tasks.new do |p|
|
6
|
-
p.name = "iso-codes"
|
7
|
-
p.summary = "ISO language and script code support"
|
8
|
-
p.description = "A database of ISO language and script codes."
|
9
|
-
p.authors = ['Marius L. Jøhndal']
|
10
|
-
p.email = "mariuslj (at) ifi [dot] uio (dot) no"
|
11
|
-
p.homepage = "http://github.com/mlj/iso-codes"
|
12
|
-
p.rubyforge_project = "iso-codes"
|
13
|
-
end
|
14
|
-
rescue LoadError
|
15
|
-
puts "Jeweler not available. Install it with: sudo gem install jeweler"
|
16
|
-
end
|
17
|
-
|
18
|
-
require 'rake/testtask'
|
19
|
-
Rake::TestTask.new(:test) do |test|
|
20
|
-
test.libs << 'lib' << 'test'
|
21
|
-
test.pattern = 'test/**/test_*.rb'
|
22
|
-
test.verbose = true
|
23
|
-
end
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.3.0
|
data/iso-codes.gemspec
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = "iso-codes"
|
8
|
-
s.version = "0.3.0"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Marius L. J\303\270hndal"]
|
12
|
-
s.date = "2011-12-11"
|
13
|
-
s.description = "A database of ISO language and script codes."
|
14
|
-
s.email = "mariuslj (at) ifi [dot] uio (dot) no"
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"README.rdoc"
|
17
|
-
]
|
18
|
-
s.files = [
|
19
|
-
"CHANGELOG",
|
20
|
-
"README.rdoc",
|
21
|
-
"Rakefile",
|
22
|
-
"VERSION",
|
23
|
-
"iso-codes.gemspec",
|
24
|
-
"lib/iso-639-3-macrolanguages_20100128.tab.gz",
|
25
|
-
"lib/iso-639-3_20110525.tab.gz",
|
26
|
-
"lib/iso_codes.rb",
|
27
|
-
"test/test_iso_codes.rb"
|
28
|
-
]
|
29
|
-
s.homepage = "http://github.com/mlj/iso-codes"
|
30
|
-
s.require_paths = ["lib"]
|
31
|
-
s.rubyforge_project = "iso-codes"
|
32
|
-
s.rubygems_version = "1.8.11"
|
33
|
-
s.summary = "ISO language and script code support"
|
34
|
-
|
35
|
-
if s.respond_to? :specification_version then
|
36
|
-
s.specification_version = 3
|
37
|
-
|
38
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
39
|
-
else
|
40
|
-
end
|
41
|
-
else
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
Binary file
|
Binary file
|
data/test/test_iso_codes.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'iso_codes'
|
2
|
-
require 'test/unit'
|
3
|
-
|
4
|
-
class ISO6393CodesTestCase < Test::Unit::TestCase
|
5
|
-
def test_find_language
|
6
|
-
l = ISOCodes::find_language("eng")
|
7
|
-
assert_not_nil l
|
8
|
-
assert_equal 'eng', l.identifier
|
9
|
-
assert_equal 'eng', l.alpha3_terminology
|
10
|
-
assert_equal 'eng', l.alpha3_bibliographic
|
11
|
-
assert_equal 'en', l.alpha2
|
12
|
-
assert_equal 'English', l.reference_name
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_find_language_macrolanguage
|
16
|
-
l = ISOCodes::find_language("ara")
|
17
|
-
assert_not_nil l
|
18
|
-
assert_kind_of ISOCodes::Macrolanguage, l
|
19
|
-
assert l.individual_languages.any? { |c| c.identifier == 'arq' }
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_doc_exx
|
23
|
-
language = ISOCodes.find_language('lav')
|
24
|
-
assert_equal 'Latvian', language.reference_name
|
25
|
-
assert_equal ISOCodes::Macrolanguage, language.class
|
26
|
-
assert_equal 'lav', language.alpha3_bibliographic
|
27
|
-
assert_equal 'lv', language.alpha2
|
28
|
-
|
29
|
-
assert_equal ["ltg", "lvs"], language.individual_languages.map { |l| l.identifier }
|
30
|
-
|
31
|
-
language = ISOCodes.find_language('ltg')
|
32
|
-
assert_equal ISOCodes::IndividualLanguage, language.class
|
33
|
-
assert_equal "lav", language.macrolanguage.identifier
|
34
|
-
end
|
35
|
-
end
|