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.
@@ -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,3 @@
1
+ module LanguageList
2
+ VERSION = "0.0.1"
3
+ 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