Class: Rack::ICU4X::Locale::Detector::Cookie

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

Overview

Detects locale from a cookie value.

Examples:

With default cookie name

detector = Cookie.new
env = { "HTTP_COOKIE" => "locale=ja" }
detector.call(env) # => "ja"

With custom cookie name

detector = Cookie.new("user_locale")
env = { "HTTP_COOKIE" => "user_locale=en" }
detector.call(env) # => "en"

Instance Method Summary collapse

Constructor Details

#initialize(name = DEFAULT_NAME) ⇒ Cookie

Returns a new instance of Cookie.

Parameters:

  • name (String) (defaults to: DEFAULT_NAME)

    Cookie name to read locale from



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

def initialize(name=DEFAULT_NAME)
  @name = name
end

Instance Method Details

#call(env) ⇒ String?

Returns Locale from cookie, or nil if not present.

Parameters:

  • env (Hash)

    Rack environment

Returns:

  • (String, nil)

    Locale from cookie, or nil if not present



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

def call(env)
  cookies = ::Rack::Utils.parse_cookies(env)
  locale = cookies[@name]
  return nil if locale.nil? || locale.empty?

  locale
end