Sha256: 17caa5e631c32d7c4accdba63492bcff6ea538ce983736aca6e2c894e7a65d5a

Contents?: true

Size: 804 Bytes

Versions: 18

Compression:

Stored size: 804 Bytes

Contents

require 'jekyll'
require 'safe_yaml'

module GuidesStyle18F
  class Breadcrumbs
    def self.generate(site, docs)
      breadcrumbs = create_breadcrumbs(site)
      docs.each do |page|
        page.data['breadcrumbs'] = breadcrumbs[page.permalink || page.url]
      end
    end

    def self.create_breadcrumbs(site)
      (site.config['navigation'] || []).flat_map do |nav|
        Breadcrumbs.generate_breadcrumbs(nav, '/', [])
      end.to_h
    end

    def self.generate_breadcrumbs(nav, parent_url, parents)
      url = parent_url + (nav['url'] || '')
      crumbs = parents + [{ 'url' => url, 'text' => nav['text'] }]
      child_crumbs = (nav['children'] || []).flat_map do |child|
        generate_breadcrumbs(child, url, crumbs)
      end
      [[url, crumbs]] + child_crumbs
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
guides_style_18f-1.0.6 lib/guides_style_18f/breadcrumbs.rb
guides_style_18f-2.0.1 lib/guides_style_18f/breadcrumbs.rb
guides_style_18f-2.0.0 lib/guides_style_18f/breadcrumbs.rb
guides_style_18f-1.0.4 lib/guides_style_18f/breadcrumbs.rb
guides_style_18f-1.0.3 lib/guides_style_18f/breadcrumbs.rb
guides_style_18f-1.0.2 lib/guides_style_18f/breadcrumbs.rb
guides_style_18f-1.0.1 lib/guides_style_18f/breadcrumbs.rb
guides_style_18f-1.0.0 lib/guides_style_18f/breadcrumbs.rb
guides_style_18f-0.4.9 lib/guides_style_18f/breadcrumbs.rb
guides_style_18f-0.4.8 lib/guides_style_18f/breadcrumbs.rb
guides_style_18f-0.4.7 lib/guides_style_18f/breadcrumbs.rb
guides_style_18f-0.4.6 lib/guides_style_18f/breadcrumbs.rb
guides_style_18f-0.4.5 lib/guides_style_18f/breadcrumbs.rb
guides_style_18f-0.4.4 lib/guides_style_18f/breadcrumbs.rb
guides_style_18f-0.4.3 lib/guides_style_18f/breadcrumbs.rb
guides_style_18f-0.4.2 lib/guides_style_18f/breadcrumbs.rb
guides_style_18f-0.4.1 lib/guides_style_18f/breadcrumbs.rb
guides_style_18f-0.4.0 lib/guides_style_18f/breadcrumbs.rb