Generate the index from Keywords in each file.#

import glob, json
from IPython.display import display, Markdown

def generate_index():
    all_keywords = set()
    index = {}

    for ipynb in glob.glob('**/*.ipynb'):
        with open(ipynb) as f:
            j = json.loads(f.read())
        
        for cell in j['cells']:
            if cell['cell_type'] == 'markdown':
                for line in cell['source']:
                    if 'KEYWORDS' in line:
                        keywords = [x.strip() for x in line.replace('- KEYWORDS:', '').strip().split(',')]
                    else:
                        keywords = []
                    
        index[ipynb] = keywords
        all_keywords = all_keywords.union(keywords)
    
    all_keywords = sorted(list(all_keywords))


    for key in all_keywords:
        display(Markdown(f'## {key}'))
        for ipynb in index:
            if key in index[ipynb]:
                display(Markdown(f'-   [{ipynb}]({ipynb})'))

Generate tag index#

import re



def generate_tags():
    all_keywords = set()
    index = {}

    for ipynb in glob.glob('*/*.ipynb'):
        with open(ipynb) as f:
            j = json.loads(f.read())
        
        for cell in j['cells']:
            if cell['cell_type'] == 'markdown':
                for line in cell['source']:
                    m = re.findall(' #[a-zA-Z]+', line)
                    if m:
                        for tag in m:
                            all_keywords.add(tag)
                        index[ipynb] = m
                        
    all_keywords = sorted(list(all_keywords))

    for key in all_keywords:
        display(Markdown(f'## {key}'))
        for ipynb in index:
            if key in index[ipynb]:
                display(Markdown(f'-   [{ipynb}]({ipynb})'))