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: 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