Mercurial > hgrepos > Python > libs > pygments-lexer-pseudocode2
diff docs/conf.py @ 185:b27557f6d393
Allow to build the documentation when the project is not installed
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Tue, 12 May 2026 19:43:48 +0200 |
| parents | e3523930294a |
| children | 95754197f5b3 |
line wrap: on
line diff
--- a/docs/conf.py Tue May 12 15:54:07 2026 +0200 +++ b/docs/conf.py Tue May 12 19:43:48 2026 +0200 @@ -11,9 +11,17 @@ import sys import re +import pygments.lexers +import pygments.filters +import sphinx.util.logging + sys.path.insert(0, os.path.dirname(os.path.abspath('.'))) -from pygments_lexer_pseudocode2.lexers.algpseudocode import AlgPseudocodeLexer +from pygments_lexer_pseudocode2.lexers.algpseudocode import ( + AlgPseudocodeLexer, AlgPseudocodeLexer_DE, AlgPseudocodeLexer_FR) +from pygments_lexer_pseudocode2.lexers.fr_pseudocode import FrPseudocodeLexer +from pygments_lexer_pseudocode2.filters import ( + TokenReplaceFilter, ErrorToGenericErrorTokenFilter) needs_sphinx = '2.1' @@ -180,3 +188,51 @@ app.add_lexer("genericerror-algpseudocode", functools.partial(AlgPseudocodeLexer, filters=["errortogenericerror"])) + + # + # Prepare for building docs while the package is not installed: + # Install by "hand" into pygments! + # This is an ugly *HACK*! + # + # IMPORTANT: Synchronize names with pyproject.toml! + # + try: + if not pygments.lexers.find_lexer_class("AlgPseudocode"): + sphinx.util.logging.getLogger("conf-setup").info( + "%s","Installing lexer `AlgPseudocode' and language variants") + for clsname, lexer in ( + ("AlgPseudocodeLexer", AlgPseudocodeLexer), + ("AlgPseudocodeLexer_DE", AlgPseudocodeLexer_DE), + ("AlgPseudocodeLexer_FR", AlgPseudocodeLexer_FR)): + pygments.lexers.LEXERS[clsname] = ( + "pygments_lexer_pseudocode2.lexers.algpseudocode", + lexer.name, + tuple(lexer.aliases), + tuple(lexer.filenames), + tuple(lexer.mimetypes)) + if not pygments.lexers.find_lexer_class("FrPseudocode"): + sphinx.util.logging.getLogger("conf-setup").info( + "%s","Installing lexer `FrPseudocode'") + for clsname, lexer in ( + ("FrPseudocodeLexer", FrPseudocodeLexer),): + pygments.lexers.LEXERS[clsname] = ( + "pygments_lexer_pseudocode2.lexers.fr_pseudocode", + lexer.name, + tuple(lexer.aliases), + tuple(lexer.filenames), + tuple(lexer.mimetypes)) + if not pygments.filters.find_filter_class("tokenreplace"): + sphinx.util.logging.getLogger("conf-setup").info( + "%s","Installing filter `tokenreplace'") + pygments.filters.FILTERS["tokenreplace"] = TokenReplaceFilter + if not pygments.filters.find_filter_class("errortogenericerror"): + sphinx.util.logging.getLogger("conf-setup").info( + "%s","Installing filter `errortogenericerror'") + pygments.filters.FILTERS["errortogenericerror"] = \ + ErrorToGenericErrorTokenFilter + except Exception as ex: + sphinx.util.logging.getLogger("conf-setup").error("%s", str(ex)) + sphinx.util.logging.getLogger("conf-setup").error( + "%s", + "No lexers/filters from pygments_lexer_pseudocode2 available;" + " please install or call `pip install -e .' .")
