iso-codes 0.4.0 → 1.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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +29 -0
- data/LICENSE.md +19 -0
- data/README.md +73 -0
- data/bin/console +6 -0
- data/bin/setup +5 -0
- data/lib/iso-639-3-macrolanguages.tab.txt +449 -0
- data/lib/iso-639-3.tab.txt +7848 -0
- data/lib/iso_codes.rb +12 -19
- data/lib/iso_codes/version.rb +3 -0
- metadata +109 -25
- data/CHANGELOG +0 -5
- 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 -45
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 = '20130531'
|
|
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 = '20130531'
|
|
16
9
|
|
|
17
10
|
class Language
|
|
18
11
|
# ISO 639-3 identifier for the language, or +nil+ if none is defined.
|
|
@@ -40,9 +33,9 @@ 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
|
|
@@ -123,7 +116,7 @@ module ISOCodes
|
|
|
123
116
|
end
|
|
124
117
|
|
|
125
118
|
def read_data_file(filename, field_count, delimiter, skip_first)
|
|
126
|
-
|
|
119
|
+
File.open(get_data_filename(filename)).each_line do |l|
|
|
127
120
|
if skip_first
|
|
128
121
|
skip_first = false
|
|
129
122
|
next
|
|
@@ -136,8 +129,8 @@ module ISOCodes
|
|
|
136
129
|
def load_iso_639_3
|
|
137
130
|
data = {}
|
|
138
131
|
|
|
139
|
-
read_data_file("iso-639-
|
|
140
|
-
identifier, part2b, part2t, part1, scope, language_type, ref_name,
|
|
132
|
+
read_data_file("iso-639-3.tab.txt", 8, "\t", true) do |args|
|
|
133
|
+
identifier, part2b, part2t, part1, scope, language_type, ref_name, _ = args
|
|
141
134
|
|
|
142
135
|
# Sanity checks
|
|
143
136
|
raise ArgumentError, "missing identifier" if identifier.nil?
|
|
@@ -176,7 +169,7 @@ module ISOCodes
|
|
|
176
169
|
data[identifier] = [klass, nil, nil, identifier, part2b, part2t, part1, language_type, ref_name]
|
|
177
170
|
end
|
|
178
171
|
|
|
179
|
-
read_data_file("iso-639-3-
|
|
172
|
+
read_data_file("iso-639-3-macrolanguages.tab.txt", 3, "\t", true) do |args|
|
|
180
173
|
macrolanguage_identifier, individual_language_identifier, status = args
|
|
181
174
|
|
|
182
175
|
case status
|
metadata
CHANGED
|
@@ -1,54 +1,138 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: iso-codes
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 1.0.1
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- Marius L. Jøhndal
|
|
9
8
|
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
13
|
-
dependencies:
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
date: 2016-05-11 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: '10.0'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '10.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.8.7
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: 0.8.7
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: rspec
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '3.2'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '3.2'
|
|
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.10'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0.10'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: pry
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0.10'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0.10'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: bundler
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '1.0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '1.0'
|
|
97
|
+
description: A database of ISO language codes and ISO script codes for Ruby.
|
|
98
|
+
email:
|
|
99
|
+
- mariuslj@ifi.uio.no
|
|
16
100
|
executables: []
|
|
17
101
|
extensions: []
|
|
18
|
-
extra_rdoc_files:
|
|
19
|
-
- README.rdoc
|
|
102
|
+
extra_rdoc_files: []
|
|
20
103
|
files:
|
|
21
|
-
- CHANGELOG
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
- lib/iso-639-3-
|
|
27
|
-
- lib/iso-639-
|
|
104
|
+
- CHANGELOG.md
|
|
105
|
+
- LICENSE.md
|
|
106
|
+
- README.md
|
|
107
|
+
- bin/console
|
|
108
|
+
- bin/setup
|
|
109
|
+
- lib/iso-639-3-macrolanguages.tab.txt
|
|
110
|
+
- lib/iso-639-3.tab.txt
|
|
28
111
|
- lib/iso_codes.rb
|
|
29
|
-
-
|
|
112
|
+
- lib/iso_codes/version.rb
|
|
30
113
|
homepage: http://github.com/mlj/iso-codes
|
|
31
|
-
licenses:
|
|
114
|
+
licenses:
|
|
115
|
+
- MIT
|
|
116
|
+
metadata: {}
|
|
32
117
|
post_install_message:
|
|
33
118
|
rdoc_options: []
|
|
34
119
|
require_paths:
|
|
35
120
|
- lib
|
|
36
121
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
37
|
-
none: false
|
|
38
122
|
requirements:
|
|
39
|
-
- -
|
|
123
|
+
- - ">="
|
|
40
124
|
- !ruby/object:Gem::Version
|
|
41
125
|
version: '0'
|
|
42
126
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
43
|
-
none: false
|
|
44
127
|
requirements:
|
|
45
|
-
- -
|
|
128
|
+
- - ">="
|
|
46
129
|
- !ruby/object:Gem::Version
|
|
47
130
|
version: '0'
|
|
48
131
|
requirements: []
|
|
49
|
-
rubyforge_project:
|
|
50
|
-
rubygems_version:
|
|
132
|
+
rubyforge_project:
|
|
133
|
+
rubygems_version: 2.5.1
|
|
51
134
|
signing_key:
|
|
52
|
-
specification_version:
|
|
53
|
-
summary: ISO language and script
|
|
135
|
+
specification_version: 4
|
|
136
|
+
summary: ISO language and script codes
|
|
54
137
|
test_files: []
|
|
138
|
+
has_rdoc:
|
data/CHANGELOG
DELETED
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.4.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.4.0"
|
|
9
|
-
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
|
-
s.authors = ["Marius L. J\u{f8}hndal"]
|
|
12
|
-
s.date = "2012-01-26"
|
|
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,45 +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
|
-
|
|
36
|
-
def test_all_language_instantiation
|
|
37
|
-
ISOCodes.all_iso_639_3_codes.each do |l|
|
|
38
|
-
assert_not_nil l
|
|
39
|
-
|
|
40
|
-
k = ISOCodes::find_language(l)
|
|
41
|
-
assert_not_nil k
|
|
42
|
-
assert_kind_of ISOCodes::Language, k
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|