AlchemyCMS/alchemy_cms

View on GitHub
lib/alchemy/hints.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true

module Alchemy
  module Hints
    # Returns a hint
    #
    # To add a hint to a ingredient pass +hint: true+ to the element definition in its element.yml
    #
    # Then the hint itself is placed in the locale yml files.
    #
    # Alternativly you can pass the hint itself to the hint key.
    #
    # == Locale Example:
    #
    #   # elements.yml
    #   - name: headline
    #     ingredients:
    #       - role: headline
    #         type: Text
    #         hint: true
    #
    #   # config/locales/de.yml
    #     de:
    #       ingredient_hints:
    #         headline: Lorem ipsum
    #
    # == Hint Key Example:
    #
    #   - name: headline
    #     ingredients:
    #       - role: headline
    #         type: Text
    #         hint: Lorem ipsum
    #
    # @return String
    #
    def hint
      hint = definition[:hint]
      if hint == true
        Alchemy.t(hint_translation_attribute, scope: hint_translation_scope)
      else
        hint
      end
    end

    # Returns true if the element has a hint defined
    def has_hint?
      !!definition[:hint]
    end

    private

    def hint_translation_attribute
      name
    end

    def hint_translation_scope
      "#{self.class.model_name.to_s.demodulize.downcase}_hints"
    end
  end
end