Class: FeduxOrgStdlib::ShellLanguageDetector
- Inherits:
-
Object
- Object
- FeduxOrgStdlib::ShellLanguageDetector
- Defined in:
- lib/fedux_org_stdlib/shell_language_detector.rb,
lib/fedux_org_stdlib/shell_language_detector/language.rb
Overview
Detect language of shell
Defined Under Namespace
Classes: Language
Instance Method Summary collapse
-
#detect(allowed: [], overwrite: []) ⇒ Language
The detected language or the default language if no allowed language was detected.
-
#initialize(default_language_code: :en, default_country_code: :gb, default_encoding: :utf_8, environment: ProcessEnvironment.new) ⇒ ShellLanguageDetector
constructor
A new instance of ShellLanguageDetector.
Constructor Details
#initialize(default_language_code: :en, default_country_code: :gb, default_encoding: :utf_8, environment: ProcessEnvironment.new) ⇒ ShellLanguageDetector
Returns a new instance of ShellLanguageDetector.
32 33 34 35 36 37 |
# File 'lib/fedux_org_stdlib/shell_language_detector.rb', line 32 def initialize(default_language_code: :en, default_country_code: :gb, default_encoding: :utf_8, environment: ProcessEnvironment.new) @default_language_code = default_language_code.to_sym @default_country_code = default_country_code.to_sym @default_encoding = default_encoding.to_sym @environment = environment end |
Instance Method Details
#detect(allowed: [], overwrite: []) ⇒ Language
Returns The detected language or the default language if no allowed language was detected.
44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/fedux_org_stdlib/shell_language_detector.rb', line 44 def detect(allowed: [], overwrite: []) allowed = Array(allowed).map(&:to_sym) overwrite = Array(overwrite).map(&:to_sym) lang = environment.fetch 'LANG' language_code, country_code, encoding = lang.scan(/([^_-]+)[_-]([^.]+)\.([A-Za-z0-9_-]*)/i).flatten.map(&:downcase).map { |e| e.gsub('-', '_') }.map { |e| e.to_sym unless e.nil? } language_code, country_code, encoding = *overwrite if !overwrite.blank? && overwrite.none?(&:blank?) return Language.new(language_code: language_code, country_code: country_code, encoding: encoding) if language_code && (allowed.blank? || allowed.include?(language_code)) Language.new(language_code: default_language_code, country_code: default_country_code, encoding: default_encoding) end |