Sha256: 1fe481fe75e49f256b9a59257ee51934df0db8a6dd9fc8491d50de52316b5a70

Contents?: true

Size: 856 Bytes

Versions: 400

Compression:

Stored size: 856 Bytes

Contents

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

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

      def breadcrumbs
        ordered_ancestors = all_ancestors.map do |ancestor|
          { title: ancestor.title, url: ancestor.base_path }
        end

        ordered_ancestors << { title: "Home", url: "/" }
        ordered_ancestors.reverse!
        ordered_ancestors
      end

    private

      attr_reader :content_item

      def all_ancestors
        ancestors = []

        parent = content_item.parent
        while parent
          ancestors << parent

          parent = parent.parent
        end

        ancestors
      end
    end
  end
end

Version data entries

400 entries across 400 versions & 1 rubygems

Version Path
govuk_publishing_components-55.1.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-55.0.1 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-55.0.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-54.0.1 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-54.0.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-53.0.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-52.1.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-52.0.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-51.2.1 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-51.2.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-51.1.1 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-51.1.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-51.0.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-50.0.1 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-50.0.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-49.1.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-49.0.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-48.0.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-47.0.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb
govuk_publishing_components-46.4.0 lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb