Sha256: 402b9aa4adc03ab464f4c9e73c75b34201f706c2018ad7a7ceb754cd2595fb5e

Contents?: true

Size: 1.06 KB

Versions: 9

Compression:

Stored size: 1.06 KB

Contents

class Guide::Diplomat
  def initialize(session, params, default_locale)
    @session = session
    @params = params
    @default_locale = default_locale
  end

  def negotiate_locale
    store_new_locale_in_session if supported_locales.has_value? new_locale

    best_locale
  end

  def supported_locales
    Guide.configuration.supported_locales
  end

  def multiple_supported_locales?
    supported_locales.keys.size > 1
  end

  def current_locale
    if supported_locales.has_value? locale_from_session
      locale_from_session
    else
      clear_locale_from_session
      @default_locale
    end
  end

  private

  def best_locale
    if supported_locales.has_value? temporary_locale
      temporary_locale
    else
      current_locale
    end
  end

  def new_locale
    @params[:locale]
  end

  def temporary_locale
    @params[:temp_locale]
  end

  def locale_from_session
    @session[:guide_locale]
  end

  def store_new_locale_in_session
    @session[:guide_locale] = new_locale
  end

  def clear_locale_from_session
    @session.delete(:guide_locale)
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
guide-0.8.0 app/models/guide/diplomat.rb
guide-0.7.0 app/models/guide/diplomat.rb
guide-0.6.1 app/models/guide/diplomat.rb
guide-0.6.0 app/models/guide/diplomat.rb
guide-0.5.0 app/models/guide/diplomat.rb
guide-0.4.1 app/models/guide/diplomat.rb
guide-0.4.0 app/models/guide/diplomat.rb
guide-0.3.2 app/models/guide/diplomat.rb
guide-0.3.1 app/models/guide/diplomat.rb