123456789_123456789_123456789_123456789_123456789_

Module: ActiveSupport::HtmlSafeTranslation

Do not use. This module is for internal use only.
Relationships & Source Files
Defined in: activesupport/lib/active_support/html_safe_translation.rb

Instance Method Summary

Instance Method Details

#html_escape_translation_options(options) (private)

[ GitHub ]

  
# File 'activesupport/lib/active_support/html_safe_translation.rb', line 35

def html_escape_translation_options(options)
  options.each do |name, value|
    unless i18n_option?(name) || (name == :count && value.is_a?(Numeric))
      options[name] = ERB::Util.html_escape(value.to_s)
    end
  end
end

#html_safe_translation(translation) (private)

[ GitHub ]

  
# File 'activesupport/lib/active_support/html_safe_translation.rb', line 48

def html_safe_translation(translation)
  if translation.respond_to?(:map)
    translation.map { |element| element.respond_to?(:html_safe) ? element.html_safe : element }
  else
    translation.respond_to?(:html_safe) ? translation.html_safe : translation
  end
end

#html_safe_translation_key?(key) ⇒ Boolean

[ GitHub ]

  
# File 'activesupport/lib/active_support/html_safe_translation.rb', line 30

def html_safe_translation_key?(key)
  /(?:_|\b)html\z/.match?(key)
end

#i18n_option?(name) ⇒ Boolean (private)

[ GitHub ]

  
# File 'activesupport/lib/active_support/html_safe_translation.rb', line 43

def i18n_option?(name)
  (@i18n_option_names ||= I18n::RESERVED_KEYS.to_set).include?(name)
end

#translate(key, **options)

[ GitHub ]

  
# File 'activesupport/lib/active_support/html_safe_translation.rb', line 7

def translate(key, **options)
  if html_safe_translation_key?(key)
    html_safe_options = html_escape_translation_options(options)

    exception = false

    exception_handler = ->(*args) do
      exception = true
      I18n.exception_handler.call(*args)
    end

    translation = I18n.translate(key, **html_safe_options, exception_handler: exception_handler)

    if exception
      translation
    else
      html_safe_translation(translation)
    end
  else
    I18n.translate(key, **options)
  end
end