class ActionDispatch::Routing::Mapper

Monkey patching for adding in locale urls rubocop:disable Metrics/LineLength

Public Instance Methods

in_locales(locales, &block) click to toggle source
# File lib/murloc/action_dispatch/routing/mapper.rb, line 6
def in_locales(locales, &block)
  scope_name = ':locale'
  scope_args = { locale: /#{locales.join("|")}/ }

  scope(scope_name, scope_args, &block)

  match '',
        to: redirect { |_, request| "#{I18n.locale}#{query_params(request)}" },
        via: :all

  match '*path',
        to: redirect { |params, request| "#{I18n.locale}#{path_params(params)}#{query_params(request)}" },
        constraints: { path: %r{(?!(#{I18n.available_locales.join("|")})\/).*} }, via: :all
end

Private Instance Methods

path_params(params) click to toggle source
# File lib/murloc/action_dispatch/routing/mapper.rb, line 29
def path_params(params)
  "/#{params[:path]
        .gsub(/^#{I18n.available_locales.join("|")}/, '')
        .gsub(%r{^\/}, '')}"
end
query_params(request) click to toggle source

rubocop:enable Metrics/LineLength

# File lib/murloc/action_dispatch/routing/mapper.rb, line 24
def query_params(request)
  qp = request.query_parameters
  "?#{qp.to_query}" if qp.present?
end