import logging from bs4 import BeautifulSoup from mkdocs.structure.pages import Page def inject_link(html: str, href: str, page: Page, logger: logging) -> str: """Adding PDF View button on navigation bar(using material theme)""" def _pdf_icon(): _ICON = ''' ''' # noqa: E501 return BeautifulSoup(_ICON, 'html.parser') logger.info('(hook on inject_link: %s)', page.title) soup = BeautifulSoup(html, 'html.parser') nav = soup.find(class_='md-header-nav') if not nav: # after 7.x nav = soup.find('nav', class_='md-header__inner') if nav: a = soup.new_tag('a', href=href, title='PDF', **{'class': 'md-header-nav__button md-icon'}) a.append(_pdf_icon()) nav.append(a) return str(soup) return html # def pre_js_render(soup: BeautifulSoup, logger: logging) -> BeautifulSoup: # logger.info('(hook on pre_js_render)') # return soup # def pre_pdf_render(soup: BeautifulSoup, logger: logging) -> BeautifulSoup: # logger.info('(hook on pre_pdf_render)') # tag = soup.find(lambda tag: tag.name == # 'body' and 'data-md-color-scheme' in tag.attrs) # if tag: # tag['data-md-color-scheme'] = 'print' # return soup