fedux_org-stdlib 0.6.29 → 0.6.30
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e4888dbea78829991690140df1b4fdbefe2903d3
|
4
|
+
data.tar.gz: 6caddb4c6cc6ec1ed9a18c904f5b62407f02b8b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 225fe883a4780639730fecf8c3ab5bf8a8fc0055ecfe7a219455265549b8e6aa7ba461cbd8988c33aea28319a16299a880737b4d1ce2cbd75427f8d957cd288c
|
7
|
+
data.tar.gz: 0089b8203b41f3ac654d42b12dadecf483a30d4c66fac07ef9d256bae14ffc04672056d3480b1ac3788f6e4543e0e0012dad8ef8b3e232f53ca35f83b5bc671a
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module FeduxOrgStdlib
|
3
|
+
class ShellLanguageDetector
|
4
|
+
class Language
|
5
|
+
|
6
|
+
attr_reader :language_code, :country_code, :encoding
|
7
|
+
|
8
|
+
def initialize(language_code:, country_code:, encoding: nil)
|
9
|
+
@language_code = language_code
|
10
|
+
@country_code = country_code
|
11
|
+
@encoding = encoding
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'fedux_org_stdlib/process_environment'
|
3
|
+
require 'fedux_org_stdlib/shell_language_detector/language'
|
4
|
+
|
5
|
+
module FeduxOrgStdlib
|
6
|
+
class ShellLanguageDetector
|
7
|
+
private
|
8
|
+
|
9
|
+
attr_reader :environment, :default_encoding, :default_language_code, :default_country_code
|
10
|
+
|
11
|
+
public
|
12
|
+
|
13
|
+
def initialize(default_language_code: :en, default_country_code: :gb, default_encoding: :utf_8, environment: ProcessEnvironment.new)
|
14
|
+
@default_language_code = default_language_code
|
15
|
+
@default_country_code = default_country_code
|
16
|
+
@default_encoding = default_encoding
|
17
|
+
@environment = environment
|
18
|
+
end
|
19
|
+
|
20
|
+
# @param [Array, Symbol, String] allowed
|
21
|
+
# The languages which are allowed
|
22
|
+
#
|
23
|
+
# @return [Language]
|
24
|
+
# The detected language or the default language if no allowed language was detected
|
25
|
+
def detect(allowed: [])
|
26
|
+
lang = environment.fetch 'LANG'
|
27
|
+
language_code, country_code, encoding = lang.scan(/([^_-]+)[_-]([^.]+)\.([A-Za-z0-9_-]*)/i).flatten.map(&:downcase).map { |e| e.gsub('-', '_') }.map { |e| e.to_sym if !e.nil? }
|
28
|
+
allowed = Array(allowed).map(&:to_sym)
|
29
|
+
|
30
|
+
return Language.new(language_code: language_code, country_code: country_code, encoding: encoding) if language_code && country_code && (allowed.blank? || allowed.include?(language_code))
|
31
|
+
Language.new(language_code: default_language_code, country_code: default_country_code, encoding: default_encoding)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'fedux_org_stdlib/shell_language_detector'
|
4
|
+
|
5
|
+
RSpec.describe ShellLanguageDetector do
|
6
|
+
context '#detect' do
|
7
|
+
it 'returns language' do
|
8
|
+
environment = instance_double('FeduxOrgStdlib::ProcessEnvironment')
|
9
|
+
allow(environment).to receive(:fetch).and_return 'de_DE.UTF-8'
|
10
|
+
|
11
|
+
detector = ShellLanguageDetector.new environment: environment
|
12
|
+
language = detector.detect
|
13
|
+
|
14
|
+
expect(language.language_code).to eq :de
|
15
|
+
expect(language.country_code).to eq :de
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'returns language if is allowed' do
|
19
|
+
environment = instance_double('FeduxOrgStdlib::ProcessEnvironment')
|
20
|
+
allow(environment).to receive(:fetch).and_return 'en_GB.UTF-8'
|
21
|
+
|
22
|
+
detector = ShellLanguageDetector.new environment: environment, default_country_code: :de, default_language_code: :de
|
23
|
+
language = detector.detect allowed: :en
|
24
|
+
|
25
|
+
expect(language.language_code).to eq :en
|
26
|
+
expect(language.country_code).to eq :gb
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'returns default language if is not allowed' do
|
30
|
+
environment = instance_double('FeduxOrgStdlib::ProcessEnvironment')
|
31
|
+
allow(environment).to receive(:fetch).and_return 'en_GB.UTF-8'
|
32
|
+
|
33
|
+
detector = ShellLanguageDetector.new environment: environment, default_country_code: :de, default_language_code: :de
|
34
|
+
language = detector.detect allowed: :de
|
35
|
+
|
36
|
+
expect(language.language_code).to eq :de
|
37
|
+
expect(language.country_code).to eq :de
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'returns default language if is not allowed for multiple languages' do
|
41
|
+
environment = instance_double('FeduxOrgStdlib::ProcessEnvironment')
|
42
|
+
allow(environment).to receive(:fetch).and_return 'en_GB.UTF-8'
|
43
|
+
|
44
|
+
detector = ShellLanguageDetector.new environment: environment, default_country_code: :de, default_language_code: :de
|
45
|
+
language = detector.detect allowed: [:de, :nl]
|
46
|
+
|
47
|
+
expect(language.language_code).to eq :de
|
48
|
+
expect(language.country_code).to eq :de
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fedux_org-stdlib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.30
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Max Meyer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-08-
|
11
|
+
date: 2014-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -118,6 +118,8 @@ files:
|
|
118
118
|
- lib/fedux_org_stdlib/rake_tasks/version/show.rb
|
119
119
|
- lib/fedux_org_stdlib/rake_tasks/version/show_shortcut.rb
|
120
120
|
- lib/fedux_org_stdlib/require_files.rb
|
121
|
+
- lib/fedux_org_stdlib/shell_language_detector.rb
|
122
|
+
- lib/fedux_org_stdlib/shell_language_detector/language.rb
|
121
123
|
- lib/fedux_org_stdlib/version.rb
|
122
124
|
- lib/fedux_org_stdlib/version_management/exceptions.rb
|
123
125
|
- lib/fedux_org_stdlib/version_management/library_builder.rb
|
@@ -159,6 +161,7 @@ files:
|
|
159
161
|
- spec/project/plan_spec.rb
|
160
162
|
- spec/project/report_spec.rb
|
161
163
|
- spec/project/taskjuggler_spec.rb
|
164
|
+
- spec/shell_language_detector_spec.rb
|
162
165
|
- spec/spec_helper.rb
|
163
166
|
- spec/support/environment.rb
|
164
167
|
- spec/support/filesystem.rb
|
@@ -193,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
193
196
|
version: '0'
|
194
197
|
requirements: []
|
195
198
|
rubyforge_project:
|
196
|
-
rubygems_version: 2.
|
199
|
+
rubygems_version: 2.4.1
|
197
200
|
signing_key:
|
198
201
|
specification_version: 4
|
199
202
|
summary: Collection of useful libraries. It maybe depend on external libraries.
|
@@ -226,6 +229,7 @@ test_files:
|
|
226
229
|
- spec/project/plan_spec.rb
|
227
230
|
- spec/project/report_spec.rb
|
228
231
|
- spec/project/taskjuggler_spec.rb
|
232
|
+
- spec/shell_language_detector_spec.rb
|
229
233
|
- spec/spec_helper.rb
|
230
234
|
- spec/support/environment.rb
|
231
235
|
- spec/support/filesystem.rb
|