Module: Jekyll::Breadcrumbs
- Defined in:
- lib/fenton-jekyll-plugin/jb_jekyll_breadcrumbs.rb,
lib/fenton-jekyll-plugin/jb_jekyll_breadcrumbs.rb
Defined Under Namespace
Classes: BreadcrumbItem
Constant Summary collapse
- @@config =
{}
- @@siteAddress =
''
- @@sideAddresses =
{}
Class Method Summary collapse
- .addAddressItem(url, title) ⇒ Object
- .buildSideBreadcrumbs(side, payload) ⇒ Object
- .clearAddressCache ⇒ Object
- .createAddressCacheKey(path) ⇒ Object
- .findAddressItem(path) ⇒ Object
- .loadAddressCache(site) ⇒ Object
-
.loadConfig(site) ⇒ Object
Config.
- .root_hide ⇒ Object
- .root_image ⇒ Object
Class Method Details
.addAddressItem(url, title) ⇒ Object
47 48 49 50 |
# File 'lib/fenton-jekyll-plugin/jb_jekyll_breadcrumbs.rb', line 47 def self.addAddressItem(url, title) key = createAddressCacheKey(url) @@sideAddresses[key] = {:url => url, :title => title} end |
.buildSideBreadcrumbs(side, payload) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/fenton-jekyll-plugin/jb_jekyll_breadcrumbs.rb', line 61 def self.buildSideBreadcrumbs(side, payload) payload['breadcrumbs'] = [] return if side.url == @@siteAddress && root_hide === true drop = Jekyll::Breadcrumbs::BreadcrumbItem position = 0 path = side.url.chomp('/').split(/(?=\/)/) -1.upto(path.size - 1) do |int| joined_path = int == -1 ? '' : path[0..int].join item = findAddressItem(joined_path) if item position += 1 item[:position] = position item[:root_image] = root_image payload['breadcrumbs'] << drop.new(item) end end end |
.clearAddressCache ⇒ Object
36 37 38 |
# File 'lib/fenton-jekyll-plugin/jb_jekyll_breadcrumbs.rb', line 36 def self.clearAddressCache @@sideAddresses = {} end |
.createAddressCacheKey(path) ⇒ Object
57 58 59 |
# File 'lib/fenton-jekyll-plugin/jb_jekyll_breadcrumbs.rb', line 57 def self.createAddressCacheKey(path) path.chomp('/').empty? ? '/' : path.chomp('/') end |
.findAddressItem(path) ⇒ Object
52 53 54 55 |
# File 'lib/fenton-jekyll-plugin/jb_jekyll_breadcrumbs.rb', line 52 def self.findAddressItem(path) key = createAddressCacheKey(path) @@sideAddresses[key] if key end |
.loadAddressCache(site) ⇒ Object
40 41 42 43 44 45 |
# File 'lib/fenton-jekyll-plugin/jb_jekyll_breadcrumbs.rb', line 40 def self.loadAddressCache(site) clearAddressCache site.documents.each { |page| addAddressItem(page.url, page['nav-title'] || page['title'] || '') } # collection files including posts site.pages.each { |page| addAddressItem(page.url, page['nav-title'] || page['title'] || '') } # pages site.posts.docs.each { |page| addAddressItem(page.url, page['nav-title'] || page['title'] || '') } # posts end |
.loadConfig(site) ⇒ Object
Config
82 83 84 85 86 87 88 89 90 |
# File 'lib/fenton-jekyll-plugin/jb_jekyll_breadcrumbs.rb', line 82 def self.loadConfig(site) config = site.config['breadcrumbs'] || {'root' => { 'hide' => false, 'image' => false}} root = config['root'] @@config[:root_hide] = root['hide'] || false @@config[:root_image] = root['image'] || false @@siteAddress = site.config['baseurl'] || '/' @@siteAddress = '/' if @@siteAddress.empty? end |
.root_hide ⇒ Object
92 93 94 |
# File 'lib/fenton-jekyll-plugin/jb_jekyll_breadcrumbs.rb', line 92 def self.root_hide @@config[:root_hide] end |
.root_image ⇒ Object
96 97 98 |
# File 'lib/fenton-jekyll-plugin/jb_jekyll_breadcrumbs.rb', line 96 def self.root_image @@config[:root_image] end |