module ShowFor::Content

Public Instance Methods

content(value, options = {}, apply_options = true, &block) click to toggle source
# File lib/show_for/content.rb, line 3
def content(value, options = {}, apply_options = true, &block)
  # cache value for apply_wrapper_options!
  sample_value = value

  # We need to convert value to_a because when dealing with ActiveRecord
  # Array proxies, the follow statement Array# === value return false
  value = value.to_a if value.respond_to?(:to_ary)

  content = case value
    when Date, Time, DateTime
      I18n.l value, format: options.delete(:format) || ShowFor.i18n_format
    when TrueClass
      I18n.t :"show_for.yes", default: "Yes"
    when FalseClass
      I18n.t :"show_for.no", default: "No"
    when Array, Hash
      collection_handler(value, options, &block) unless value.empty?
    when Proc
      @template.capture(&value)
    when Numeric
      value.to_s
    else
      unless value.blank?
        block ? template.capture(value, &block) : value
      end
  end

  if content.blank? && !ShowFor.skip_blanks
    content = blank_value(options)
  end

  options[:content_html] = options.except(:content_tag) if apply_options
  wrap_with(:content, content, apply_wrapper_options!(:content, options, sample_value))
end

Protected Instance Methods

blank_value(options) click to toggle source
# File lib/show_for/content.rb, line 58
def blank_value(options)
  options.delete(:if_blank) || translate_blank_html
end
translate_blank_html() click to toggle source
# File lib/show_for/content.rb, line 50
def translate_blank_html
  template.t(:'show_for.blank_html', default: translate_blank_text)
end
translate_blank_text() click to toggle source
# File lib/show_for/content.rb, line 54
def translate_blank_text
  I18n.t(:'show_for.blank', default: "Not specified")
end