You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
2.8 KiB
Plaintext
109 lines
2.8 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "6f73330a-e0d5-4d22-a4c7-246b928394e9",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import os\n",
|
|
"import frontmatter\n",
|
|
"from datetime import datetime\n",
|
|
"\n",
|
|
"from mako.template import Template\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "3d183b25-72fb-4b90-a639-188a68e02fc1",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def list_folders(folder):\n",
|
|
" ''' Return all the folders in a folder '''\n",
|
|
" names = []\n",
|
|
" for entry in os.scandir(folder):\n",
|
|
" # add to the list only proper files\n",
|
|
" if not entry.name.startswith('.') and entry.is_dir():\n",
|
|
" # remove the extension from the filename\n",
|
|
" names.append(entry.name)\n",
|
|
" return names\n",
|
|
"/\n",
|
|
"def get_md_contents(filename, directory='./contents'):\n",
|
|
" ''' Return contents from a filename as frontmatter handler '''\n",
|
|
" with open(f\"{directory}/{filename}\", \"r\") as f:\n",
|
|
" metadata, content = frontmatter.parse(f.read())\n",
|
|
" return metadata, content\n",
|
|
"\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "a7b4d409-d42d-4a74-b093-10ace148cc71",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import mako.runtime\n",
|
|
"mako.runtime.UNDEFINED = ''\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"folders = list_folders('../')\n",
|
|
"projects = []\n",
|
|
"\n",
|
|
"for folder in folders:\n",
|
|
" project, content = get_md_contents('documentation.md', f'../{folder}')\n",
|
|
" project_date = datetime.strptime(project['date'], '%d/%m/%Y')\n",
|
|
" project['date'] = datetime.strftime(project_date, '%d %b, %y')\n",
|
|
" project['slug'] = folder\n",
|
|
" project['categories'].sort()\n",
|
|
" projects.append(project)\n",
|
|
"\n",
|
|
"projects.sort(reverse=False, key=lambda project: datetime.strptime(\n",
|
|
" project['date'], '%d %b, %y'))\n",
|
|
"\n",
|
|
"baloons = Template(filename=\"baloons.html\")\n",
|
|
"\n",
|
|
"with open('output.html', 'w') as f:\n",
|
|
" f.write(baloons.render(projects=projects))\n",
|
|
"\n",
|
|
"\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "faa6e297-3685-415a-8617-f3f4198da21d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.7.3"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|