language_list 0.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.
- data/.gitignore +6 -0
- data/Gemfile +4 -0
- data/README.md +22 -0
- data/Rakefile +2 -0
- data/data/languages.yml +61657 -0
- data/language_list.gemspec +21 -0
- data/lib/language_list.rb +51 -0
- data/lib/language_list/version.rb +3 -0
- data/test/language_list_test.rb +51 -0
- metadata +65 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
|
3
|
+
require "language_list/version"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |s|
|
|
6
|
+
s.name = "language_list"
|
|
7
|
+
s.version = LanguageList::VERSION
|
|
8
|
+
s.platform = Gem::Platform::RUBY
|
|
9
|
+
s.authors = ["Steve Smith"]
|
|
10
|
+
s.email = ["gems@dynedge.co.uk"]
|
|
11
|
+
s.homepage = "https://github.com/scsmith/language_list"
|
|
12
|
+
s.summary = %q{A list of languages and methods to find and work with these langauges.}
|
|
13
|
+
s.description = %q{A list of languages based upon ISO-639-1 and ISO-639-3 with functions to retrieve only common languages.}
|
|
14
|
+
|
|
15
|
+
s.rubyforge_project = "language_list"
|
|
16
|
+
|
|
17
|
+
s.files = `git ls-files`.split("\n")
|
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
20
|
+
s.require_paths = ["lib"]
|
|
21
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require 'yaml'
|
|
2
|
+
|
|
3
|
+
module LanguageList
|
|
4
|
+
class LanguageInfo
|
|
5
|
+
attr_reader :name, :iso_639_3, :iso_639_1, :type
|
|
6
|
+
|
|
7
|
+
def initialize(options)
|
|
8
|
+
@name = options[:name]
|
|
9
|
+
@iso_639_3 = options[:iso_639_3]
|
|
10
|
+
@iso_639_1 = options[:iso_639_1]
|
|
11
|
+
@common = options[:common]
|
|
12
|
+
@type = options[:type]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def common?
|
|
16
|
+
@common
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def iso_639_1?
|
|
20
|
+
!@iso_639_1.nil?
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
[:ancient, :constructed, :extinct, :historical, :living, :special].each do |type|
|
|
24
|
+
define_method("#{type.to_s}?") do
|
|
25
|
+
@type == type
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def to_s
|
|
30
|
+
"#{@iso_639_3}#{" (#{@iso_639_1})" if @iso_639_1} - #{@name}"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.find_by_iso_639_1(code)
|
|
34
|
+
LanguageList::ISO_639_1.detect{|l| l.iso_639_1 == code }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def self.find_by_iso_639_3(code)
|
|
38
|
+
LanguageList::ALL_LANGUAGES.detect{|l| l.iso_639_3 == code }
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def self.find(code)
|
|
42
|
+
find_by_iso_639_1(code) || find_by_iso_639_3(code)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
LANGUAGE_HASH = YAML.load_file(File.expand_path(File.join(File.dirname(__FILE__),'..', 'data', 'languages.yml')))
|
|
47
|
+
ALL_LANGUAGES = LANGUAGE_HASH.map{|e| LanguageInfo.new(e) }
|
|
48
|
+
ISO_639_1 = ALL_LANGUAGES.select(&:iso_639_1?)
|
|
49
|
+
LIVING_LANGUAGES = ALL_LANGUAGES.select(&:living?)
|
|
50
|
+
COMMON_LANGUAGES = ALL_LANGUAGES.select(&:common?)
|
|
51
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
$:.unshift(File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib')))
|
|
4
|
+
require 'test/unit'
|
|
5
|
+
require 'language_list'
|
|
6
|
+
|
|
7
|
+
class LanguageListTest < Test::Unit::TestCase
|
|
8
|
+
def test_all_languages
|
|
9
|
+
assert_equal 7707, LanguageList::ALL_LANGUAGES.length
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_common_languages
|
|
13
|
+
assert_equal 71, LanguageList::COMMON_LANGUAGES.length
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_living_languages
|
|
17
|
+
assert_equal 6986, LanguageList::LIVING_LANGUAGES.length
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_iso_iso_639_1_languages
|
|
21
|
+
assert_equal 184, LanguageList::ISO_639_1.length
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_find_by_iso_639_1
|
|
25
|
+
english = LanguageList::LanguageInfo.find_by_iso_639_1('en')
|
|
26
|
+
assert_equal 'en', english.iso_639_1
|
|
27
|
+
assert_equal 'eng', english.iso_639_3
|
|
28
|
+
assert_equal 'English', english.name
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_find_by_iso_639_3
|
|
32
|
+
english = LanguageList::LanguageInfo.find_by_iso_639_3('eng')
|
|
33
|
+
assert_equal 'en', english.iso_639_1
|
|
34
|
+
assert_equal 'eng', english.iso_639_3
|
|
35
|
+
assert_equal 'English', english.name
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_find_with_iso_639_1_code
|
|
39
|
+
english = LanguageList::LanguageInfo.find('en')
|
|
40
|
+
assert_equal 'en', english.iso_639_1
|
|
41
|
+
assert_equal 'eng', english.iso_639_3
|
|
42
|
+
assert_equal 'English', english.name
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_find_with_iso_639_3_code
|
|
46
|
+
english = LanguageList::LanguageInfo.find('eng')
|
|
47
|
+
assert_equal 'en', english.iso_639_1
|
|
48
|
+
assert_equal 'eng', english.iso_639_3
|
|
49
|
+
assert_equal 'English', english.name
|
|
50
|
+
end
|
|
51
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: language_list
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
prerelease:
|
|
5
|
+
version: 0.0.1
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- Steve Smith
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
|
|
13
|
+
date: 2011-06-15 00:00:00 +01:00
|
|
14
|
+
default_executable:
|
|
15
|
+
dependencies: []
|
|
16
|
+
|
|
17
|
+
description: A list of languages based upon ISO-639-1 and ISO-639-3 with functions to retrieve only common languages.
|
|
18
|
+
email:
|
|
19
|
+
- gems@dynedge.co.uk
|
|
20
|
+
executables: []
|
|
21
|
+
|
|
22
|
+
extensions: []
|
|
23
|
+
|
|
24
|
+
extra_rdoc_files: []
|
|
25
|
+
|
|
26
|
+
files:
|
|
27
|
+
- .gitignore
|
|
28
|
+
- Gemfile
|
|
29
|
+
- README.md
|
|
30
|
+
- Rakefile
|
|
31
|
+
- data/languages.yml
|
|
32
|
+
- language_list.gemspec
|
|
33
|
+
- lib/language_list.rb
|
|
34
|
+
- lib/language_list/version.rb
|
|
35
|
+
- test/language_list_test.rb
|
|
36
|
+
has_rdoc: true
|
|
37
|
+
homepage: https://github.com/scsmith/language_list
|
|
38
|
+
licenses: []
|
|
39
|
+
|
|
40
|
+
post_install_message:
|
|
41
|
+
rdoc_options: []
|
|
42
|
+
|
|
43
|
+
require_paths:
|
|
44
|
+
- lib
|
|
45
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
46
|
+
none: false
|
|
47
|
+
requirements:
|
|
48
|
+
- - ">="
|
|
49
|
+
- !ruby/object:Gem::Version
|
|
50
|
+
version: "0"
|
|
51
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
52
|
+
none: false
|
|
53
|
+
requirements:
|
|
54
|
+
- - ">="
|
|
55
|
+
- !ruby/object:Gem::Version
|
|
56
|
+
version: "0"
|
|
57
|
+
requirements: []
|
|
58
|
+
|
|
59
|
+
rubyforge_project: language_list
|
|
60
|
+
rubygems_version: 1.6.2
|
|
61
|
+
signing_key:
|
|
62
|
+
specification_version: 3
|
|
63
|
+
summary: A list of languages and methods to find and work with these langauges.
|
|
64
|
+
test_files:
|
|
65
|
+
- test/language_list_test.rb
|