module LocalizableRoutes::Extensions::ActionDispatch::Mapper

Public Class Methods

new(set) click to toggle source
Calls superclass method
# File lib/localizable_routes/extensions/action_dispatch/mapper.rb, line 7
def initialize(set)
  super
  @localization = @locale = nil
end

Public Instance Methods

add_route(action, controller, options, _path, to, via, formatted, anchor, options_constraints) click to toggle source
Calls superclass method
# File lib/localizable_routes/extensions/action_dispatch/mapper.rb, line 24
def add_route(action, controller, options, _path, to, via, formatted, anchor, options_constraints)
  if @localization
    strategy = @localization[:strategy]
    @localization[:locales].each do |locale|
      localized_options = options.dup
      localized_options_constraints = options_constraints.dup
      if strategy == :param
        @locale = locale
        localized_options[:locale] = locale
        localized_options_constraints[:locale] = locale
      else
        @locale = locale.second
        localized_options[strategy] = locale.first
        localized_options_constraints[strategy] = locale.first
      end
      super action, controller, localized_options, _path, to, via, formatted, anchor, localized_options_constraints
    end
    @locale = nil
    if options.fetch(:as, true)
      @set.named_routes.add_localized_url_helper name_for_action(options[:as], action), @localization
    end
  else
    super
  end
end
localized(options) { || ... } click to toggle source
# File lib/localizable_routes/extensions/action_dispatch/mapper.rb, line 12
def localized(options)
  @localization = options
  if options[:strategy] == :param
    scope(':locale') do
      yield
    end
  else
    yield
  end
  @localization = nil
end
name_for_action(as, action) click to toggle source
Calls superclass method
# File lib/localizable_routes/extensions/action_dispatch/mapper.rb, line 50
def name_for_action(as, action)
  candidate = super
  if candidate && @locale
    suffixed_candidate = "#{super}_#{@locale}"
    unless @set.named_routes.key?(suffixed_candidate)
      suffixed_candidate
    end
  else
    candidate
  end
end
path_for_action(action, path) click to toggle source
Calls superclass method
# File lib/localizable_routes/extensions/action_dispatch/mapper.rb, line 62
def path_for_action(action, path)
  candidate = super
  if candidate && @locale
    candidate.gsub(/:?[a-z0-9_-]+/) do |slug|
      if slug =~ /^[\:]/
        slug
      else
        I18n.t "routes.#{slug.gsub('-', '_')}", locale: @locale.to_s, default: slug
      end
    end
  else
    candidate
  end
end