From 63a248e3dd9fc6857098c75ffbd49f72cf362c13 Mon Sep 17 00:00:00 2001 From: Kévin Le Gouguec Date: Fri, 28 Aug 2020 19:06:45 +0200 Subject: Make sure titles are not redundant with breadcrumbs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The logic for the various titles on any given page is: ∃README ∃title block ⇒ title block <header> <h1> ⇒ title block TOC <h1> ⇒ "Index for {target}" ∄title block <title> ⇒ "{target}" or "README" <header> <h1> ⇒ ∅ TOC <h1> ⇒ "Index for {target}" ∄README <title> ⇒ "Index for {target}" <header> <h1> ⇒ "Index" TOC <h1> ⇒ ∅ --- repo/www/generate-index.py | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) (limited to 'repo/www/generate-index.py') diff --git a/repo/www/generate-index.py b/repo/www/generate-index.py index a993c41..3bce69d 100755 --- a/repo/www/generate-index.py +++ b/repo/www/generate-index.py @@ -92,17 +92,14 @@ def main(arguments): folders, files = list_files(arguments.site_tree, target) pages, readme = list_pages(files) + toc_title = f'Index for {target}' if target else 'Index' html_toc = format_toc(folders, pages) - if target: - index_title = f'Index for {target}' - path_to_top = path.relpath('.', target) - else: - index_title = 'Index' - path_to_top = '.' - + path_to_top = path.relpath('.', start=target) stylesheets = (path.join(path_to_top, s) for s in arguments.css) + variables = {'crumbs': generate_crumbs(Path(target)/'index')} + metadata = {} if readme is not None: repo_top = Repo(search_parent_directories=True).working_dir @@ -110,17 +107,20 @@ def main(arguments): # If the README doesn't have a title, give a default to pandoc # out-of-band. - page_title = None if has_title(readme_path) else 'README' + if not has_title(readme_path): + metadata['pagetitle'] = target or 'README' with NamedTemporaryFile(mode='w+') as toc: - toc.write('<h1>{title}</h1>\n'.format(title=index_title)) + toc.write(f'<h1>{toc_title}</h1>\n') toc.write(html_toc) toc.flush() - pandoc(readme_path, arguments.output, arguments.template, - arguments.filters, stylesheets, title=page_title, - site_title=arguments.site_title, include_after=(toc.name,), - variables=variables) + pandoc( + readme_path, arguments.output, + arguments.template, arguments.filters, stylesheets, + site_title=arguments.site_title, include_after=(toc.name,), + variables=variables, metadata=metadata + ) return with NamedTemporaryFile(suffix='.md') as dummy_readme, \ @@ -128,10 +128,15 @@ def main(arguments): toc.write(html_toc) toc.flush() - pandoc(dummy_readme.name, arguments.output, arguments.template, - arguments.filters, stylesheets, title=index_title, - site_title=arguments.site_title, include_after=(toc.name,), - variables=variables) + metadata['pagetitle'] = toc_title + metadata['title'] = 'Index' + + pandoc( + dummy_readme.name, arguments.output, + arguments.template, arguments.filters, stylesheets, + site_title=arguments.site_title, include_after=(toc.name,), + variables=variables, metadata=metadata + ) if __name__ == '__main__': -- cgit v1.2.3