commit
						fbe572c5f4
					
				@ -37,6 +37,35 @@ def depth_from(root: str, path: str) -> int:
 | 
			
		||||
      first = os.path.split(first)[0]
 | 
			
		||||
    return depth
 | 
			
		||||
 | 
			
		||||
def generate_toc(header_content, articles):
 | 
			
		||||
    """given header_content and a list of dicts with keys title, href, and path this function
 | 
			
		||||
    generates the toc page's content"""
 | 
			
		||||
 | 
			
		||||
    toc_content = '{}\n'.format(update_title(header_content, 'table of contents'))
 | 
			
		||||
 | 
			
		||||
    toplevel_articles = [a for a in articles if a['path'] == '']
 | 
			
		||||
    articles = [a for a in articles if a['path'] != '']
 | 
			
		||||
    sorted(articles, key=lambda a: a['path'])
 | 
			
		||||
    toc_content += '<h1>Table of Contents</h1>\n'
 | 
			
		||||
    toc_content += '<h2>unsorted articles</h2>\n<ul>\n'
 | 
			
		||||
    for a in toplevel_articles:
 | 
			
		||||
        toc_content += '<li><a href="{}">{}</a></li>\n'.format(a['href'], a['title'])
 | 
			
		||||
 | 
			
		||||
    seen = set()
 | 
			
		||||
    for article in articles:
 | 
			
		||||
        if article['path'] not in seen:
 | 
			
		||||
            path = article['path']
 | 
			
		||||
            components = path.split('/')
 | 
			
		||||
            hlvl = len(components) + 1
 | 
			
		||||
            toc_content += '</ul>'
 | 
			
		||||
            toc_content += f'<h{hlvl}>' + path.split('/')[-1] + f'</h{hlvl}>'
 | 
			
		||||
            toc_content += '<ul>'
 | 
			
		||||
            seen.add(path)
 | 
			
		||||
        toc_content += '<li><a href="{href}">{title}</a></li>'.format(**article)
 | 
			
		||||
 | 
			
		||||
    toc_content += '</ul>'
 | 
			
		||||
    return toc_content
 | 
			
		||||
 | 
			
		||||
def compile_wiki(source_path: str,
 | 
			
		||||
                 dest_path: str,
 | 
			
		||||
                 on_create: Callable[[str], None]=DEFAULT_ON_CREATE) -> None:
 | 
			
		||||
@ -60,7 +89,7 @@ def compile_wiki(source_path: str,
 | 
			
		||||
 | 
			
		||||
    articles_root = os.path.join(source_path, 'src/articles')
 | 
			
		||||
 | 
			
		||||
    toc_content = '{}\n<ul>'.format(update_title(header_content, 'table of contents'))
 | 
			
		||||
    articles = []
 | 
			
		||||
 | 
			
		||||
    copy(logo_path, dest_path)
 | 
			
		||||
    copy(css_path, dest_path)
 | 
			
		||||
@ -88,16 +117,17 @@ def compile_wiki(source_path: str,
 | 
			
		||||
                footer_content)
 | 
			
		||||
            output = relativize_links(output, depth)
 | 
			
		||||
            dest_filename = source_filename.split('.')[0] + '.html'
 | 
			
		||||
            toc_content += '<li><a href="{}">{}</a></li>\n'.format(
 | 
			
		||||
                os.path.join(current_suffix, dest_filename),
 | 
			
		||||
                os.path.join(current_suffix,dest_filename.split('.')[0]))
 | 
			
		||||
            articles.append({
 | 
			
		||||
                'title': dest_filename.split('.')[0],
 | 
			
		||||
                'href': os.path.join(current_suffix, dest_filename),
 | 
			
		||||
                'path': current_suffix})
 | 
			
		||||
            final_path = os.path.join(dest_root, dest_filename)
 | 
			
		||||
            with open(final_path, 'w') as f:
 | 
			
		||||
                f.write(output)
 | 
			
		||||
            on_create(final_path)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    toc_content += '\n</ul>'
 | 
			
		||||
    toc_content = generate_toc(header_content, articles)
 | 
			
		||||
    toc_path = os.path.join(dest_path, 'toc.html')
 | 
			
		||||
    with open(toc_path, 'w') as f:
 | 
			
		||||
        f.write(relativize_links(toc_content, 1))
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user