fedux_org-stdlib 0.6.29 → 0.6.30

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 71dc4bf0767ab3219bc50668bfde8fa9279942b0
4
- data.tar.gz: bf133d1dbbd30301f67f417473b38f6ca84e9726
3
+ metadata.gz: e4888dbea78829991690140df1b4fdbefe2903d3
4
+ data.tar.gz: 6caddb4c6cc6ec1ed9a18c904f5b62407f02b8b8
5
5
  SHA512:
6
- metadata.gz: 9a8483583b670d5a452f8b88addf36f90c208ed14c30ccbe141b9ee1a0d85080479d62cc64d622f80ea43afc72f6c0be9c79fbe95ee4f8e8ae9e9f078b04173a
7
- data.tar.gz: 1c23e6c990a2f02daf17f3dbe932f294673baedea15b7ba2651597c1afc24e384c7b4f22339f35eb9c5ea6f674cb86d93b09177bfb383da74e754af1d6371d86
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
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
  # FeduxOrgStdlib
3
3
  module FeduxOrgStdlib
4
- VERSION = '0.6.29'
4
+ VERSION = '0.6.30'
5
5
  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.29
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-03 00:00:00.000000000 Z
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.2.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