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

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

.clearAddressCacheObject



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_hideObject



92
93
94
# File 'lib/fenton-jekyll-plugin/jb_jekyll_breadcrumbs.rb', line 92

def self.root_hide
   @@config[:root_hide]
end

.root_imageObject



96
97
98
# File 'lib/fenton-jekyll-plugin/jb_jekyll_breadcrumbs.rb', line 96

def self.root_image
   @@config[:root_image]
end