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.
@@ -0,0 +1,3 @@
1
+ module ISOCodes
2
+ VERSION = '1.2.0' unless defined?(ISOCodes::VERSION)
3
+ end
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 (see
10
- # http://www.sil.org/iso639-3/download.asp).
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 (see
14
- # http://www.sil.org/iso639-3/download.asp).
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 "Individual languages given for individual language" if individual_languages # FIXME
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 "Macrolanguage given for macrolanguage" if macrolanguage # FIXME
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
- Zlib::GzipReader.open(get_data_filename(filename)).each_line do |l|
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-3_#{ISO_639_3_VERSION}.tab.gz", 8, "\t", true) do |args|
129
- identifier, part2b, part2t, part1, scope, language_type, ref_name, comment = args
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
- nil
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-macrolanguages_#{ISO_639_3_MACROLANGUAGE_MAPPINGS_VERSION}.tab.gz", 3, "\t", true) do |args|
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
- hash: 19
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
- - "Marius L. J\xC3\xB8hndal"
14
- autorequire:
6
+ authors:
7
+ - Marius L. Jøhndal
8
+ autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2011-12-11 00:00:00 Z
19
- dependencies: []
20
-
21
- description: A database of ISO language and script codes.
22
- email: mariuslj (at) ifi [dot] uio (dot) no
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
- extra_rdoc_files:
28
- - README.rdoc
29
- files:
30
- - CHANGELOG
31
- - README.rdoc
32
- - Rakefile
33
- - VERSION
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
- - test/test_iso_codes.rb
97
+ - lib/iso_codes/version.rb
39
98
  homepage: http://github.com/mlj/iso-codes
40
- licenses: []
41
-
42
- post_install_message:
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
- none: false
49
- requirements:
106
+ required_ruby_version: !ruby/object:Gem::Requirement
107
+ requirements:
50
108
  - - ">="
51
- - !ruby/object:Gem::Version
52
- hash: 3
53
- segments:
54
- - 0
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
- hash: 3
62
- segments:
63
- - 0
64
- version: "0"
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
65
116
  requirements: []
66
-
67
- rubyforge_project: iso-codes
68
- rubygems_version: 1.8.11
69
- signing_key:
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
@@ -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