class SwedbankPay::SidebarParser
The Sidebar
renderer
Attributes
pages[R]
Public Class Methods
new(site)
click to toggle source
# File lib/sidebar_parser.rb, line 13 def initialize(site) raise ArgumentError, 'Site cannot be nil' if site.nil? raise ArgumentError, 'Site must be a Jekyll::Site' unless site.is_a? Jekyll::Site @pages = convert(site.pages) end
Public Instance Methods
parse(tree)
click to toggle source
# File lib/sidebar_parser.rb, line 20 def parse(tree) raise ArgumentError, 'tree cannot be nil' if tree.nil? raise ArgumentError, 'tree must be a SidebarTreeBuilder' unless tree.is_a? SidebarTreeBuilder parse_html(tree) end
Private Instance Methods
convert(pages)
click to toggle source
# File lib/sidebar_parser.rb, line 29 def convert(pages) pages_hash = {} pages.each do |jekyll_page| if skippable? jekyll_page SidebarLogger.debug("Skipping <#{jekyll_page['url']}>") next end sidebar_page = SidebarPage.new(jekyll_page) pages_hash[sidebar_page.path] = sidebar_page end pages_hash end
find_headers(page)
click to toggle source
# File lib/sidebar_parser.rb, line 60 def find_headers(page) headers = [] # Don't include headers in the sidebar if we're on a card overview page. return headers if page.card_overview? || !page.anchor_headings? page.doc.xpath('//h2').each do |header| id = header['id'] next unless id child_markup = header.last_element_child hash = child_markup['href'].to_s if child_markup.respond_to? :[] title = header.content.strip headers.push({ id: id, title: title, hash: hash }) end headers end
parse_html(pages)
click to toggle source
# File lib/sidebar_parser.rb, line 45 def parse_html(pages) return if pages.nil? || pages.empty? pages.each do |page| page.load page.headers = find_headers(page) page.sidebar_container = find_sidebar_container(page) page.freeze parse_html(page.children) end pages end
skippable?(jekyll_page)
click to toggle source
# File lib/sidebar_parser.rb, line 92 def skippable?(jekyll_page) return true if jekyll_page.is_a? JekyllRedirectFrom::RedirectPage return true if jekyll_page.is_a? JekyllRedirectFrom::PageWithoutAFile false end