llaxta 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.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/.rspec +1 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +3 -0
- data/README.md +20 -0
- data/lib/llaxta.rb +54 -0
- data/lib/llaxta/exceptions.rb +21 -0
- data/llaxta.gemspec +29 -0
- data/spec/llaxta_spec.rb +65 -0
- data/spec/spec_helper.rb +10 -0
- metadata +113 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e9bbf0a82b338dcce0967b82a162b6fdbf6991436771641c1a67e108995c0879
|
4
|
+
data.tar.gz: d6799b66953da5df87e6e3af83e27cd8bf77ec01222e3d6c309c25bfef240c53
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 814808049396b86c29212f8fa07d4e13c0c11527b5d8613a581872f2cbe8f4ada21c178a72211383c40c827dec4e93a4d7c6533399b7690409b85f27e6381bcc
|
7
|
+
data.tar.gz: '03429b9e5957abdbeead30e176fdbf69d29388129b439e1653f5623a87ebfc43f0083f0ba8f0dd9415ae816d07c1061875b3f5b34c86da0352198e0908f56004'
|
data/.gitignore
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
.DS_Store
|
2
|
+
.idea
|
3
|
+
.ruby-version
|
4
|
+
.tool-versions
|
5
|
+
gemfiles/*.lock
|
6
|
+
*.gem
|
7
|
+
*.rbc
|
8
|
+
.bundle
|
9
|
+
.config
|
10
|
+
.yardoc
|
11
|
+
Gemfile.lock
|
12
|
+
InstalledFiles
|
13
|
+
_yardoc
|
14
|
+
coverage
|
15
|
+
doc/
|
16
|
+
lib/bundler/man
|
17
|
+
pkg
|
18
|
+
rdoc
|
19
|
+
spec/reports
|
20
|
+
test/tmp
|
21
|
+
test/version_tmp
|
22
|
+
tmp
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--require spec_helper --color
|
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Get the name of any of the 249 countries listed in English US, Spanish, Brazilian Portuguese and/or Simplified Chinese.
|
2
|
+
|
3
|
+
### Usage
|
4
|
+
|
5
|
+
There's an only public method called `t` which receives the country Alpha2 code and the locale corresponding to the language in which the country name is going to be shown.
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
LLaxta.t("CH", "en_us") # => "Switzerland"
|
9
|
+
LLaxta.t("CH", "es") # => "Suiza"
|
10
|
+
LLaxta.t("CH", "pt_br") # => "Suíça"
|
11
|
+
LLaxta.t("CH", "zh_cn") # => "瑞士"
|
12
|
+
```
|
13
|
+
|
14
|
+
For convenience, and because there's only 4 supported locales, you can use the short version of the languages English (`us`), Portuguese (`br`) and Chinese (`cn`):
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
LLaxta.t("CH", "us") # => "Switzerland"
|
18
|
+
LLaxta.t("CH", "br") # => "Suíça"
|
19
|
+
LLaxta.t("CH", "cn") # => "瑞士"
|
20
|
+
```
|
data/lib/llaxta.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "yaml"
|
4
|
+
require "llaxta/exceptions"
|
5
|
+
|
6
|
+
class Llaxta
|
7
|
+
VERSION = Gem::Version.new("0.0.1")
|
8
|
+
|
9
|
+
class << self
|
10
|
+
def t(alpha2, locale)
|
11
|
+
raise Exceptions::AlphaMissing unless alpha2
|
12
|
+
|
13
|
+
dictionary(locale)[alpha2]
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def dictionary(locale)
|
19
|
+
@@locales ||= {}
|
20
|
+
@@locales[locale] ||= new(locale).send(:load_dict)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
attr_reader :locale
|
27
|
+
|
28
|
+
SUPPORTED_LOCALES = {
|
29
|
+
"en_us" => "en_us",
|
30
|
+
"us" => "en_us",
|
31
|
+
"es" => "es",
|
32
|
+
"pt_br" => "pt_br",
|
33
|
+
"br" => "pt_br",
|
34
|
+
"zh_cn" => "zh_cn",
|
35
|
+
"cn" => "zh_cn",
|
36
|
+
}.freeze
|
37
|
+
private_constant :SUPPORTED_LOCALES
|
38
|
+
|
39
|
+
def initialize(locale)
|
40
|
+
raise Exceptions::LocaleMissing unless locale
|
41
|
+
|
42
|
+
@locale = SUPPORTED_LOCALES[locale]
|
43
|
+
end
|
44
|
+
|
45
|
+
def load_dict
|
46
|
+
YAML.load_file(locale_path)
|
47
|
+
rescue Errno::ENOENT
|
48
|
+
raise Exceptions::LocaleNotFound.new(locale)
|
49
|
+
end
|
50
|
+
|
51
|
+
def locale_path
|
52
|
+
File.expand_path("../llaxta/locales/#{locale}.yml", __FILE__)
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Exceptions
|
4
|
+
class AlphaMissing < StandardError
|
5
|
+
def initialize
|
6
|
+
super("Alpha can not be blank!")
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class LocaleMissing < StandardError
|
11
|
+
def initialize
|
12
|
+
super("Locale can not be blank!")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class LocaleNotFound < StandardError
|
17
|
+
def initialize(locale)
|
18
|
+
super("Locale \"#{locale}\" was not found!")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/llaxta.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
lib = File.expand_path("../lib", __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require "llaxta"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "llaxta"
|
7
|
+
spec.required_ruby_version = ">= 2.2.0"
|
8
|
+
spec.homepage = "https://github.com/kucho/llaxta"
|
9
|
+
spec.version = Llaxta::VERSION
|
10
|
+
spec.platform = Gem::Platform::RUBY
|
11
|
+
spec.summary = "Translate ISO 3166-1 codes to Country names given a locale"
|
12
|
+
spec.description = "Translate ISO 3166-1 codes to Country names given a locale"
|
13
|
+
spec.authors = ["Victor Rodriguez", "Sebastian Palma"]
|
14
|
+
spec.email = "victor.rodriguez.guriz@gmail.com"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files`.split($/)
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
spec.metadata = {
|
21
|
+
"source_code_uri" => "https://github.com/kucho/llaxta",
|
22
|
+
"changelog_uri" => "https://github.com/kucho/llaxta/blob/master/CHANGELOG.md"
|
23
|
+
}
|
24
|
+
|
25
|
+
spec.add_development_dependency("bundler", "~> 2.2")
|
26
|
+
spec.add_development_dependency("standard", "~> 1.0")
|
27
|
+
spec.add_development_dependency("rspec", "~> 3.10")
|
28
|
+
spec.add_development_dependency("pry", "~> 0.14.1")
|
29
|
+
end
|
data/spec/llaxta_spec.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe Llaxta do
|
4
|
+
describe ".t" do
|
5
|
+
context "when locale is valid" do
|
6
|
+
context "with locale en_us" do
|
7
|
+
it "returns the country name given the iso_code and locale" do
|
8
|
+
expect(Llaxta.t("CH", "en_us")).to eq("Switzerland")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
context "with locale es" do
|
13
|
+
it "returns the country name given the iso_code and locale" do
|
14
|
+
expect(Llaxta.t("CH", "es")).to eq("Suiza")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context "with locale pt_br" do
|
19
|
+
it "returns the country name given the iso_code and locale" do
|
20
|
+
expect(Llaxta.t("CH", "pt_br")).to eq("Suíça")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context "with locale pt_br" do
|
25
|
+
it "returns the country name given the iso_code and locale" do
|
26
|
+
expect(Llaxta.t("CH", "zh_cn")).to eq("瑞士")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context "using a short-version locale" do
|
32
|
+
context "with locale us" do
|
33
|
+
it { expect(Llaxta.t("CH", "us")).to eq("Switzerland") }
|
34
|
+
end
|
35
|
+
|
36
|
+
context "with locale br" do
|
37
|
+
it { expect(Llaxta.t("CH", "br")).to eq("Suíça") }
|
38
|
+
end
|
39
|
+
|
40
|
+
context "with locale cn" do
|
41
|
+
it { expect(Llaxta.t("CH", "cn")).to eq("瑞士") }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "exceptions" do
|
47
|
+
context "when locale is NOT valid" do
|
48
|
+
it "raises" do
|
49
|
+
expect { Llaxta.t("PE", "2GFA") }.to raise_exception Exceptions::LocaleNotFound
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context "when alpha is nil" do
|
54
|
+
it "raises" do
|
55
|
+
expect { Llaxta.t(nil, "br") }.to raise_exception Exceptions::AlphaMissing
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context "when locale is nil" do
|
60
|
+
it "raises" do
|
61
|
+
expect { Llaxta.t("PE", nil) }.to raise_exception Exceptions::LocaleMissing
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: llaxta
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Victor Rodriguez
|
8
|
+
- Sebastian Palma
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2021-06-09 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '2.2'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '2.2'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: standard
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '1.0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '1.0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rspec
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '3.10'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '3.10'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: pry
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.14.1
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.14.1
|
70
|
+
description: Translate ISO 3166-1 codes to Country names given a locale
|
71
|
+
email: victor.rodriguez.guriz@gmail.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- ".rspec"
|
78
|
+
- CHANGELOG.md
|
79
|
+
- Gemfile
|
80
|
+
- README.md
|
81
|
+
- lib/llaxta.rb
|
82
|
+
- lib/llaxta/exceptions.rb
|
83
|
+
- llaxta.gemspec
|
84
|
+
- spec/llaxta_spec.rb
|
85
|
+
- spec/spec_helper.rb
|
86
|
+
homepage: https://github.com/kucho/llaxta
|
87
|
+
licenses:
|
88
|
+
- MIT
|
89
|
+
metadata:
|
90
|
+
source_code_uri: https://github.com/kucho/llaxta
|
91
|
+
changelog_uri: https://github.com/kucho/llaxta/blob/master/CHANGELOG.md
|
92
|
+
post_install_message:
|
93
|
+
rdoc_options: []
|
94
|
+
require_paths:
|
95
|
+
- lib
|
96
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: 2.2.0
|
101
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
requirements: []
|
107
|
+
rubygems_version: 3.2.15
|
108
|
+
signing_key:
|
109
|
+
specification_version: 4
|
110
|
+
summary: Translate ISO 3166-1 codes to Country names given a locale
|
111
|
+
test_files:
|
112
|
+
- spec/llaxta_spec.rb
|
113
|
+
- spec/spec_helper.rb
|