mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
73 lines
2.5 KiB
Python
73 lines
2.5 KiB
Python
from dataclasses import dataclass
|
|
from pathlib import Path
|
|
|
|
from jinja2 import Environment, PackageLoader, select_autoescape
|
|
from json_schema_for_humans.schema.schema_importer import get_schemas_to_render
|
|
from json_schema_for_humans.generate import generate_from_filename, GenerationConfiguration, generate_schemas_doc, \
|
|
copy_additional_files_to_target
|
|
from json_schema_for_humans.template_renderer import TemplateRenderer, _minify
|
|
|
|
env = Environment(
|
|
loader=PackageLoader('docs_templates', 'templates'),
|
|
autoescape=select_autoescape(['jinja2'])
|
|
)
|
|
|
|
env.filters["lowerfirst"] = lambda x: x[0].lower() + x[1:]
|
|
|
|
home = env.get_template("base.jinja2")
|
|
|
|
|
|
@dataclass
|
|
class Page:
|
|
in_name: str
|
|
out_name: str
|
|
title: str
|
|
|
|
def render(self, **options):
|
|
template = env.get_template(self.in_name + ".jinja2")
|
|
options.update({'page': self})
|
|
rendered_string = template.render(**options)
|
|
with open("out/" + self.out_name + ".html", 'w+') as file:
|
|
file.write(rendered_string)
|
|
|
|
|
|
config = GenerationConfiguration(custom_template_path="docs_templates/templates/schema_base.jinja2")
|
|
config.link_to_reused_ref = False
|
|
|
|
|
|
@dataclass
|
|
class Schema(Page):
|
|
|
|
def render(self, **options):
|
|
schemas = get_schemas_to_render("schemas/" + self.in_name + ".json", Path("out/schemas/" + self.out_name + ".html"), ".html")
|
|
template_renderer = TemplateRenderer(config)
|
|
template_renderer.render = lambda inter: template_override(template_renderer, inter, self)
|
|
generate_schemas_doc(schemas, template_renderer)
|
|
copy_additional_files_to_target(schemas, config)
|
|
|
|
|
|
pages = (
|
|
Page(in_name="home", out_name="index", title="Home"),
|
|
Schema(in_name="schema", out_name="body_schema", title="Body"),
|
|
Schema(in_name="star_system_schema", out_name="star_system_schema", title="Star System"),
|
|
Schema(in_name="translation_schema", out_name="translation_schema", title="Translation")
|
|
)
|
|
|
|
schemas = [s for s in pages if s.__class__.__name__ == "Schema"]
|
|
|
|
|
|
def template_override(template, intermediate_schema, inter_page):
|
|
template.template.environment.filters["lowerfirst"] = env.filters["lowerfirst"]
|
|
rendered = template.template.render(schema=intermediate_schema, config=config, schemas=schemas, page=inter_page, title=inter_page.title + " Schema")
|
|
|
|
if template.config.minify:
|
|
rendered = _minify(rendered, template.config.template_is_markdown, template.config.template_is_html)
|
|
|
|
return rendered
|
|
|
|
|
|
for page in pages:
|
|
page.render(schemas=schemas)
|
|
|
|
print("Done")
|