📚 The CoCalc Library - books, templates and other resources
License: OTHER
import os1import itertools23from ipykernel import kernelspec as ks4import nbformat5from nbformat.v4.nbbase import new_markdown_cell67from generate_contents import NOTEBOOK_DIR, REG, iter_notebooks, get_notebook_title8910def prev_this_next(it):11a, b, c = itertools.tee(it,3)12next(c)13return zip(itertools.chain([None], a), b, itertools.chain(c, [None]))141516PREV_TEMPLATE = "< [{title}]({url}) "17CONTENTS = "| [Contents](Index.ipynb) |"18NEXT_TEMPLATE = " [{title}]({url}) >"19NAV_COMMENT = "<!--NAVIGATION-->\n"2021COLAB_LINK = """2223<a href="https://colab.research.google.com/github/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/{notebook_filename}"><img align="left" src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open in Colab" title="Open and Execute in Google Colaboratory"></a>24"""252627def iter_navbars():28for prev_nb, nb, next_nb in prev_this_next(iter_notebooks()):29navbar = NAV_COMMENT30if prev_nb:31navbar += PREV_TEMPLATE.format(title=get_notebook_title(prev_nb),32url=prev_nb)33navbar += CONTENTS34if next_nb:35navbar += NEXT_TEMPLATE.format(title=get_notebook_title(next_nb),36url=next_nb)3738navbar += COLAB_LINK.format(notebook_filename=os.path.basename(nb))3940yield os.path.join(NOTEBOOK_DIR, nb), navbar414243def write_navbars():44for nb_name, navbar in iter_navbars():45nb = nbformat.read(nb_name, as_version=4)46nb_file = os.path.basename(nb_name)47is_comment = lambda cell: cell.source.startswith(NAV_COMMENT)4849if is_comment(nb.cells[1]):50print("- amending navbar for {0}".format(nb_file))51nb.cells[1].source = navbar52else:53print("- inserting navbar for {0}".format(nb_file))54nb.cells.insert(1, new_markdown_cell(source=navbar))5556if is_comment(nb.cells[-1]):57nb.cells[-1].source = navbar58else:59nb.cells.append(new_markdown_cell(source=navbar))60nbformat.write(nb, nb_name)616263if __name__ == '__main__':64write_navbars()656667