iso-codes 0.3.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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