mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
from pathlib import Path
|
|
|
|
from markdown import Markdown
|
|
|
|
from lib.Content.AbstractTemplatedItem import AbstractTemplatedItem
|
|
from lib.BootstrapExtension import BootstrapExtension
|
|
|
|
|
|
class MDPage(AbstractTemplatedItem):
|
|
root_dir = Path("pages/")
|
|
extensions = ('md', 'markdown')
|
|
|
|
MARKDOWN_SETTINGS = {
|
|
'extensions': ['extra', 'toc', 'meta', BootstrapExtension()],
|
|
'output-format': 'html5'
|
|
}
|
|
|
|
def load_metadata(self):
|
|
md = self.__get_md()
|
|
with self.in_path.open(mode='r', encoding='utf-8') as file:
|
|
md.convert(file.read())
|
|
|
|
self.meta['title'] = md.Meta.get('title')[0]
|
|
self.meta['description'] = md.Meta.get('description', [None])[0]
|
|
self.render_toc = md.Meta.get('toc', ['True'])[0].strip().lower() == "true"
|
|
if self.render_toc:
|
|
self.table_of_contents = md.toc_tokens
|
|
raw_priority = md.Meta.get('sort-priority')
|
|
if raw_priority is not None:
|
|
self.meta['sort_priority'] = int(raw_priority[0])
|
|
out_name = md.Meta.get('out-file', None)
|
|
if out_name is not None:
|
|
self.out_path = self.out_path.with_stem(out_name[0])
|
|
super(MDPage, self).load_metadata()
|
|
|
|
def __get_md(self):
|
|
return Markdown(**self.MARKDOWN_SETTINGS)
|
|
|
|
def inner_render(self, template, **context):
|
|
rendered_markdown = super(MDPage, self).inner_render(template, **context)
|
|
md = self.__get_md()
|
|
return md.convert(rendered_markdown)
|
|
|