Sha256: 0ba07da3d23270c8d2dfa593fb8dad6def26c0c2b37df9cd30761c66a90646e6
Contents?: true
Size: 1.5 KB
Versions: 70
Compression:
Stored size: 1.5 KB
Contents
module GovukPublishingComponents module Presenters class Breadcrumbs def initialize(breadcrumbs) @breadcrumbs = breadcrumbs end def structured_data { "@context" => "http://schema.org", "@type" => "BreadcrumbList", "itemListElement" => item_list_element, } end private attr_reader :breadcrumbs def item_list_element breadcrumbs.each_with_index.map { |crumb, index| Breadcrumb.new(crumb, index) } .select(&:is_link?) .map(&:item_list_element) end end class Breadcrumb extend Forwardable def_delegators :@crumb, :[] def initialize(crumb, index) @crumb = crumb @index = index + 1 end def item_list_element { "@type" => "ListItem", "position" => index, "item" => list_item_item, } end def is_link? crumb[:url].present? end def path crumb[:url] end def tracking_data(breadcrumbs_length) { ga4_link: { event_name: "navigation", type: "breadcrumb", index_link: index.to_s, index_total: breadcrumbs_length.to_s, }, } end private attr_reader :crumb, :index def list_item_item path = crumb[:url] item = { "name" => crumb[:title] } item["@id"] = Plek.new.website_root + path if path item end end end end
Version data entries
70 entries across 70 versions & 1 rubygems