class GovukPublishingComponents::Presenters::SharedHelper
def get_heading_level
def get_heading_level return [*1..6].include?(@heading_level) ? "h#{@heading_level}" : "h2" unless @heading_level.zero? "span" end
def get_heading_size(option, fallback)
def get_heading_size(option, fallback) govuk_class = "govuk-heading-" if valid_heading_size?(option) "#{govuk_class}#{option}" else "#{govuk_class}#{fallback}" end end
def get_margin_bottom
def get_margin_bottom [*0..9].include?(@margin_bottom) ? "govuk-!-margin-bottom-#{margin_bottom}" : "govuk-!-margin-bottom-3" end
def get_margin_top
def get_margin_top [*0..9].include?(@margin_top) ? "govuk-!-margin-top-#{margin_top}" : "" end
def initialize(local_assigns)
def initialize(local_assigns) @options = local_assigns @margin_top = @options[:margin_top] || nil @margin_bottom = @options[:margin_bottom] || 3 @heading_level = @options[:heading_level] || 2 if local_assigns.include?(:classes) @classes = local_assigns[:classes].split(" ") unless @classes.all? { |c| c.start_with?("js-") } raise(ArgumentError, "Passed classes must be prefixed with `js-`") end end end
def t_lang(content, options = {})
def t_lang(content, options = {}) locale = t_locale(content, options) "lang=#{locale}" unless locale.eql?(I18n.locale) end
def t_locale(content, options = {})
def t_locale(content, options = {}) # Check if the content string has a translation content_translation_available = translation_present?(content) # True, return locale this_locale = I18n.locale if content_translation_available # If false, return default locale this_locale = I18n.default_locale unless content_translation_available # Check if default string passed in if options[:default].present? # Check if the default string has a translation default_translation_available = translation_present?(options[:default]) # If true, return locale this_locale = I18n.locale if default_translation_available # If false, return default_locale this_locale = I18n.default_locale unless default_translation_available end this_locale end
def t_locale_check(locale)
def t_locale_check(locale) locale.presence unless locale.to_s.eql?(I18n.locale.to_s) end
def translation_present?(content)
def translation_present?(content) default_string = "This is a string to act as a default for the `I18n.translate` method. Comparing the result reveals if there is a translation in the i18n files." I18n.translate( content, default: default_string, fallback: false, ) != default_string end
def valid_heading_size?(size)
def valid_heading_size?(size) %w[xl l m s].include?(size) end