Sha256: cb205361a2a3e247044c786d0df09419d506df22058a2661f36017a5357cd3a0

Contents?: true

Size: 1.17 KB

Versions: 1

Compression:

Stored size: 1.17 KB

Contents

module Titleizer
  def title(preferred_title)
    preferred_title = nil if preferred_title.empty?

    title = Title.new(title_key, title_options, preferred_title, root_title?)
    title.to_s
  end

  private

  def title_key
    "#{controller_name}.#{action_name}"
  end

  def title_options
    controller.view_assigns.fetch('title_params', {}).merge(default: '')
  end

  def root_title?
    current_page?(root_path)
  end

  class Title
    def initialize(key, options, preferred_title, rootize = false)
      @key = key
      @options = options
      @preferred_title = preferred_title
      @rootize = rootize
    end

    def to_s
      case mode
      when :preferred
        "#{@preferred_title} | #{t('application')}"
      when :root
        "#{t('description')} | #{t('application')}"
      when :default
        "#{t(@key)} | #{t('application')}"
      else
        t('application')
      end
    end

    private

    def mode
      if @preferred_title
        :preferred
      elsif @rootize
        :root
      elsif set?(@key)
        :default
      end
    end

    def set?(key)
      !t(key).empty?
    end

    def t(key)
      I18n.t("title.#{key}", @options)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
titleizer-0.1.0 lib/titleizer/base.rb