Class: Rack::ICU4X::Locale::Detector::Query

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/icu4x/locale/detector/query.rb

Overview

Detects locale from a query string parameter.

Examples:

With default parameter name

detector = Query.new
env = Rack::MockRequest.env_for("/?locale=ja")
detector.call(env) # => "ja"

With custom parameter name

detector = Query.new("lang")
env = Rack::MockRequest.env_for("/?lang=en")
detector.call(env) # => "en"

Instance Method Summary collapse

Constructor Details

#initialize(param = DEFAULT_PARAM) ⇒ Query

Returns a new instance of Query.

Parameters:

  • param (String) (defaults to: DEFAULT_PARAM)

    Query parameter name to read locale from



23
24
25
# File 'lib/rack/icu4x/locale/detector/query.rb', line 23

def initialize(param=DEFAULT_PARAM)
  @param = param
end

Instance Method Details

#call(env) ⇒ String?

Returns Locale from query parameter, or nil if not present.

Parameters:

  • env (Hash)

    Rack environment

Returns:

  • (String, nil)

    Locale from query parameter, or nil if not present



29
30
31
32
33
34
35
36
37
38
# File 'lib/rack/icu4x/locale/detector/query.rb', line 29

def call(env)
  query_string = env["QUERY_STRING"]
  return nil if query_string.nil? || query_string.empty?

  params = ::Rack::Utils.parse_query(query_string)
  locale = params[@param]
  return nil if locale.nil? || locale.empty?

  locale
end