Sha256: 5983ddd2cc59da3e6dd3293283725d58520fd83ee389508f4a1c972e67ec2a33

Contents?: true

Size: 1.05 KB

Versions: 309

Compression:

Stored size: 1.05 KB

Contents

module GovukPublishingComponents
  module Presenters
    # @private
    class ContentBreadcrumbsBasedOnTaxons
      def self.call(content_item)
        new(content_item).breadcrumbs
      end

      def initialize(content_item)
        @content_item = ContentItem.new(content_item)
      end

      def breadcrumbs
        ordered_parents = all_parents.map.with_index do |parent, index|
          {
            title: parent.title,
            url: parent.url_override.present? ? parent.url_override : parent.base_path,
            is_page_parent: index.zero?,
          }
        end

        ordered_parents << {
          title: "Home",
          url: "/",
          is_page_parent: ordered_parents.empty?,
        }

        ordered_parents.reverse
      end

    private

      attr_reader :content_item

      def all_parents
        parents = []
        direct_parent = content_item.parent_taxon
        while direct_parent
          parents << direct_parent
          direct_parent = direct_parent.parent_taxon
        end

        parents
      end
    end
  end
end

Version data entries

309 entries across 309 versions & 1 rubygems

Version Path
govuk_publishing_components-54.0.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-53.0.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-52.1.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-52.0.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-51.2.1 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-51.2.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-51.1.1 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-51.1.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-51.0.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-50.0.1 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-50.0.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-49.1.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-49.0.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-48.0.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-47.0.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-46.4.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-46.3.1 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-46.3.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-46.2.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb
govuk_publishing_components-46.1.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb