Sha256: 780764fb3c3b1ee453d7422edebc495da8c37e9f2c446c6f864fd891b7a138dc

Contents?: true

Size: 811 Bytes

Versions: 3

Compression:

Stored size: 811 Bytes

Contents

# frozen_string_literal: true

module FoxTail::Concerns::Placeholderable
  extend ActiveSupport::Concern

  included do
    has_option :placeholder
  end

  def placeholder?
    !!placeholder.presence
  end

  protected

  def retrieve_placeholder
    return placeholder if placeholder.is_a? String
    return nil unless object_name? && method_name?

    value = placeholder unless placeholder.is_a? TrueClass
    placeholder_translator(value: value).translate || default_placeholder
  end

  def default_placeholder
    object = convert_to_model self.object
    return object.class.human_attribute_name(method_name) if object.class.respond_to?(:human_attribute_name)

    method_name&.humanize
  end

  def placeholder_translator(value: nil)
    translator value: value, scope: "helpers.placeholder"
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fox_tail-0.2.1 app/components/fox_tail/concerns/placeholderable.rb
fox_tail-0.2.0 app/components/fox_tail/concerns/placeholderable.rb
fox_tail-0.1.1 app/components/fox_tail/concerns/placeholderable.rb