plugins/mkdocs-atlas-formatting-plugin/mkdocs_atlas_formatting_plugin/plugin.py (23 lines of code) (raw):
from typing import Optional
from mkdocs.config.base import Config
from mkdocs.plugins import BasePlugin
from mkdocs.structure.files import Files
from mkdocs.structure.pages import Page
from .atlaswebserver import AtlasWebServer
from .logconfig import setup_logging
from .parser import Parser
logger = setup_logging(__name__)
class AtlasFormattingPlugin(BasePlugin):
webserver: Optional[AtlasWebServer] = None
def on_pre_build(self, config: Config) -> None:
self.webserver = AtlasWebServer()
def on_page_content(self, html: str, page: Page, config: Config, files: Files) -> str:
parser = Parser(page.title, html)
return parser.html
def on_post_build(self, config: Config) -> None:
if config['site_url'] == 'https://netflix.github.io/atlas-docs/':
logger.info('shutdown webserver')
self.webserver.shutdown()
def on_build_error(self, error) -> None:
logger.info('shutdown webserver, due to error')
self.webserver.shutdown()