resume/processing/content.py

86 lines
2.1 KiB
Python
Raw Permalink Normal View History

from typing import Any
2023-06-22 16:03:59 +00:00
def summary_to_md(data: dict[str, Any], lang: str = "en", headline: str = ""):
if "summary" not in data:
return ""
md = f"{headline}\n\n {data['summary'][lang]}\n\n"
return md
2023-06-27 16:02:01 +00:00
def _publication_md(publication: str, subdued: bool):
md = "> "
if subdued:
md += "\\textcolor{publication}{"
md += publication
if subdued:
md += "}"
return f"{md}\n\n"
2023-06-27 16:02:01 +00:00
def experience_to_md(
data: dict[str, Any],
lang: str = "en",
headline: str = "",
subdued_publications: bool = True,
):
if "experience" not in data:
return ""
md = f"{headline}\n\n"
2023-06-27 16:02:01 +00:00
md += "\\definecolor{publication}{rgb}{0.5,0.5,0.5}\n\n"
for exp in data["experience"]:
md += f"## {exp['title'][lang]}\\hfill{exp['date'][lang]}\n\n"
if "publication" in exp:
md += _publication_md(exp["publication"][lang], subdued_publications)
for point in exp["bullets"]:
2023-06-22 16:03:59 +00:00
md += f"* {point[lang]}\n"
md += "\n\n"
return md
2023-06-22 16:03:59 +00:00
def thesis_to_md(data: dict[str, Any], lang: str = "en"):
md = ""
for thesis in data["thesis"]:
md += f"{thesis['type'][lang]}\n"
md += f": {thesis['title'][lang]}\n"
md += f": {thesis['abstract'][lang]}\n"
return f"{md}\n"
def education_to_md(
data: dict[str, Any], lang: str = "en", headline: str = "", thesis: bool = True
):
if "education" not in data:
return ""
md = f"{headline}\n\n"
if thesis and "thesis" in data:
md += thesis_to_md(data, lang)
for edu in data["education"]:
md += (
2023-06-22 16:03:59 +00:00
f"{edu['place'][lang]}\n\n: {edu['program'][lang]}; {edu['date'][lang]}\n\n"
)
return md
2023-06-22 16:03:59 +00:00
def qualifications_to_md(data: dict[str, Any], lang: str = "en", headline: str = ""):
if "skills" not in data:
return ""
2023-06-22 16:03:59 +00:00
md = f"{headline}\n\n"
for skillset in data["skills"]:
md += f"{skillset[lang]}\n\n"
for content in skillset["content"]:
md += f": {content['name'][lang]} ({', '.join([item[lang] for item in content['items']])})\n"
md += "\n"
return md