def get_page(dir, file):
    filename = (file)
    if filename in cache:
        return cache[filename]
    path = os.path.abspath(os.path.join(os.path.dirname(__file__), dir, filename))
    try:
        file_contents = open(path, encoding='utf-8').read()
    except:
        return None

    data, text = file_contents.split('--\n', 1)
    page = yaml.load(data)
    page['content'] = Markup(Markup.markdown(text))
    page['path'] = file

    cache[filename] = page
    return page