From 406838dc7de562948297a16ff189b2768a282bf8 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 28 Feb 2021 13:26:01 +0530 Subject: [PATCH] Better fix for sphinx latex breakage --- manual/custom.py | 56 ++++++++++++++++++++---------------------------- 1 file changed, 23 insertions(+), 33 deletions(-) diff --git a/manual/custom.py b/manual/custom.py index e6eaf56f06..b09a5e5e96 100644 --- a/manual/custom.py +++ b/manual/custom.py @@ -14,16 +14,6 @@ from epub import EPUBHelpBuilder from latex import LaTeXHelpBuilder -class FixedLaTeXHelpBuilder(LaTeXHelpBuilder): - # see https://github.com/sphinx-doc/sphinx/issues/8936 - - def visit_substitution_definition(self, node): - pass - - def depart_substitution_definition(self, node): - pass - - def substitute(app, doctree): pass @@ -93,14 +83,14 @@ CLI_PREAMBLE='''\ ''' -def titlecase(app, x): - if x and app.config.language == 'en': +def titlecase(language, x): + if x and language == 'en': from calibre.utils.titlecase import titlecase as tc x = tc(x) return x -def generate_calibredb_help(preamble, app): +def generate_calibredb_help(preamble, language): from calibre.db.cli.main import COMMANDS, option_parser_for, get_parser preamble = preamble[:preamble.find('\n\n\n', preamble.find('code-block'))] preamble += '\n\n' @@ -140,14 +130,14 @@ details and examples. global_parser = get_parser('') groups = [] for grp in global_parser.option_groups: - groups.append((titlecase(app, grp.title), grp.description, grp.option_list)) + groups.append((titlecase(language, grp.title), grp.description, grp.option_list)) global_options = '\n'.join(render_options('calibredb', groups, False, False)) lines = [] for cmd in COMMANDS: parser = option_parser_for(cmd)() - lines += ['.. _calibredb-%s-%s:' % (app.config.language, cmd), ''] + lines += ['.. _calibredb-%s-%s:' % (language, cmd), ''] lines += [cmd, '~'*20, ''] usage = parser.usage.strip() usage = [i for i in usage.replace('%prog', 'calibredb').splitlines()] @@ -163,11 +153,11 @@ details and examples. for group in parser.option_groups: if not getattr(group, 'is_global_options', False): lines.extend(render_options( - 'calibredb_' + cmd, [[titlecase(app, group.title), group.description, group.option_list]], False, False, header_level='^')) + 'calibredb_' + cmd, [[titlecase(language, group.title), group.description, group.option_list]], False, False, header_level='^')) lines += [''] raw = preamble + '\n\n'+'.. contents::\n :local:'+ '\n\n' + global_options+'\n\n'+'\n'.join(lines) - update_cli_doc('calibredb', raw, app) + update_cli_doc('calibredb', raw, language) def generate_ebook_convert_help(preamble, app): @@ -206,10 +196,10 @@ def generate_ebook_convert_help(preamble, app): update_cli_doc('ebook-convert', raw, app) -def update_cli_doc(name, raw, app): +def update_cli_doc(name, raw, language): if isinstance(raw, bytes): raw = raw.decode('utf-8') - path = 'generated/%s/%s.rst' % (app.config.language, name) + path = 'generated/%s/%s.rst' % (language, name) old_raw = open(path, encoding='utf-8').read() if os.path.exists(path) else '' if not os.path.exists(path) or old_raw != raw: import difflib @@ -284,7 +274,7 @@ def get_cli_docs(): return documented_cmds, undocumented_cmds -def cli_docs(app): +def cli_docs(language): info(bold('creating CLI documentation...')) documented_cmds, undocumented_cmds = get_cli_docs() @@ -298,7 +288,7 @@ def cli_docs(app): undocumented='\n'.join(undocumented)) if not os.path.exists('cli'): os.makedirs('cli') - update_cli_doc('cli-index', raw, app) + update_cli_doc('cli-index', raw, language) for cmd, parser in documented_cmds: usage = [mark_options(i) for i in parser.usage.replace('%prog', cmd).splitlines()] @@ -306,11 +296,11 @@ def cli_docs(app): usage = usage[1:] usage = [i.replace(cmd, ':command:`%s`'%cmd) for i in usage] usage = '\n'.join(usage) - preamble = CLI_PREAMBLE.format(cmd=cmd, cmdref=cmd + '-' + app.config.language, cmdline=cmdline, usage=usage) + preamble = CLI_PREAMBLE.format(cmd=cmd, cmdref=cmd + '-' + language, cmdline=cmdline, usage=usage) if cmd == 'ebook-convert': - generate_ebook_convert_help(preamble, app) + generate_ebook_convert_help(preamble, language) elif cmd == 'calibredb': - generate_calibredb_help(preamble, app) + generate_calibredb_help(preamble, language) else: groups = [(None, None, parser.option_list)] for grp in parser.option_groups: @@ -318,18 +308,18 @@ def cli_docs(app): raw = preamble lines = render_options(cmd, groups) raw += '\n'+'\n'.join(lines) - update_cli_doc(cmd, raw, app) + update_cli_doc(cmd, raw, language) -def generate_docs(app): - cli_docs(app) - template_docs(app) +def generate_docs(app, config): + cli_docs(config.language) + template_docs(config.language) -def template_docs(app): +def template_docs(language): from template_ref_generate import generate_template_language_help - raw = generate_template_language_help(app.config.language) - update_cli_doc('template_ref', raw, app) + raw = generate_template_language_help(language) + update_cli_doc('template_ref', raw, language) def localized_path(app, langcode, pagename): @@ -385,10 +375,10 @@ def setup(app): setup_man_pages(app) app.add_css_file('custom.css') app.add_builder(EPUBHelpBuilder) - app.add_builder(FixedLaTeXHelpBuilder) + app.add_builder(LaTeXHelpBuilder) app.connect('source-read', source_read_handler) app.connect('doctree-read', substitute) - app.connect('builder-inited', generate_docs) + app.connect('config-inited', generate_docs) app.connect('html-page-context', add_html_context) app.connect('build-finished', finished) roles.register_local_role('guilabel', guilabel_role)