sphinx_gemini_builder/sphinx_gemini_builder/__init__.py

50 lines
1.1 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Build Gemini blog from Sphinx.
"""
__version_info__ = (0, 0, 1)
__version__ = '.'.join([str(val) for val in __version_info__])
from typing import Set, Dict, Any
from sphinx.builders.text import TextBuilder
from sphinx.util import logging
from sphinx.locale import __
from sphinx.application import Sphinx
from .writer import GeminiTranslator, GeminiWriter
logger = logging.getLogger(__name__)
class GeminiBuilder(TextBuilder):
"""
Gemini builder, based on native TextBuilder code from Sphinx
"""
name = 'gemini'
format = 'gemini'
epilog = __('The gemini files are in %(outdir)s.')
out_suffix = '.gmi'
allow_parallel = True
default_translator_class = GeminiTranslator
current_docname = None
def prepare_writing(self, docnames: Set[str]) -> None:
self.writer = GeminiWriter(self)
def setup(app: Sphinx) -> Dict[str, Any]:
app.add_builder(GeminiBuilder)
return {
'version': __version__,
'parallel_read_safe': True,
'parallel_write_safe': True
}