diff --git a/resume.typ b/resume.typ index 41715dd..dcc4ca9 100644 --- a/resume.typ +++ b/resume.typ @@ -1,6 +1,92 @@ #import "lib.typ": * -#let resume(contents, main: ("experience_by_type", "education"), sidebar: ("volunteering", "languages", "skills")) = { +#let create_body(main: (), contents: (:)) = { + for item in main { + if item == "summary" and "summary" in contents { + section( + title: "", + { + contents.summary.at(lang) + }, + ) + } + + if item == "experience_by_type" and "experience" in contents { + let title = (en: "Professional Experience", de: "Berufserfahrung").at(lang) + section(title: title)[] + by_experience_type(experience: contents.experience, type: contents.experience_types) + } + if item == "experience_by_client" and "experience" in contents { + let title = (en: "Professional Experience", de: "Berufserfahrung").at(lang) + section(title: title)[] + by_client(experience: contents.experience) + } + if item == "experience" and "experience" in contents { + let title = (en: "Professional Experience", de: "Berufserfahrung").at(lang) + section(title: title, entries: contents.experience)[] + } + + if item == "education" and "education" in contents { + let title = (en: "Education", de: "Ausbildung").at(lang) + section(title: title, entries: contents.thesis + contents.education)[] + } + + if item == "volunteering" and "volunteering" in contents { + let title = (en: "Volunteer Work", de: "Ehrenamt").at(lang) + section(title: title, entries: contents.volunteering)[] + } + + if item == "skills" and "skills" in contents { + let title = (en: "Qualifications", de: "Qualifikationen").at(lang) + section( + title: title, + { + sidebar_entry(item: contents.skills) + }, + ) + } + + if item == "languages" and "languages" in contents { + let title = (en: "Languages", de: "Sprachen").at(lang) + section( + title: title, + { + sidebar_entry(item: contents.languages) + }, + ) + } + } +} + +#let create_sidebar(sidebar: (), contents: (:)) = { + for item in sidebar { + if item == "volunteering" and "volunteering" in contents { + let title = (en: "Volunteer Work", de: "Ehrenamt").at(lang) + [== #title] + for e in contents.at("volunteering") { + [ + - *#e.title.at(lang)* (#e.date.at(lang)) + #par(e.bullets.at(0).at(lang)) \ + ] + } + } + + if item == "languages" and "languages" in contents { + let title = (en: "Languages", de: "Sprachen").at(lang) + [== #title] + sidebar_entry(item: contents.languages, is_sidebar: true) + [\ ] + } + + if item == "skills" and "skills" in contents { + let title = (en: "Qualifications", de: "Kenntnisse").at(lang) + [== #title] + sidebar_entry(item: contents.skills, is_sidebar: true) + } + } +} + +#let resume(contents, main: ( "experience", "education"), sidebar: ("volunteering", "languages", "skills")) = { show: style set text(lang: lang) @@ -33,91 +119,6 @@ header(contents.about) - let body = { - for item in main { - if item == "summary" and "summary" in contents { - section( - title: "", - { - contents.summary.at(lang) - }, - ) - } - - if item == "experience_by_type" and "experience" in contents { - let title = (en: "Professional Experience", de: "Berufserfahrung").at(lang) - section(title: title)[] - by_experience_type(experience: contents.experience, type: contents.experience_types) - } - if item == "experience_by_client" and "experience" in contents { - let title = (en: "Professional Experience", de: "Berufserfahrung").at(lang) - section(title: title)[] - by_client(experience: contents.experience) - } - if item == "experience" and "experience" in contents { - let title = (en: "Professional Experience", de: "Berufserfahrung").at(lang) - section(title: title, entries: contents.experience)[] - } - - if item == "education" and "education" in contents { - let title = (en: "Education", de: "Ausbildung").at(lang) - section(title: title, entries: contents.thesis + contents.education)[] - } - - if item == "volunteering" and "volunteering" in contents { - let title = (en: "Volunteer Work", de: "Ehrenamt").at(lang) - section(title: title, entries: contents.volunteering)[] - } - - if item == "skills" and "skills" in contents { - let title = (en: "Qualifications", de: "Qualifikationen").at(lang) - section( - title: title, - { - sidebar_entry(item: contents.skills) - }, - ) - } - - if item == "languages" and "languages" in contents { - let title = (en: "Languages", de: "Sprachen").at(lang) - section( - title: title, - { - sidebar_entry(item: contents.languages) - }, - ) - } - } - } - - let sidebar = { - for item in sidebar { - if item == "volunteering" and "volunteering" in contents { - let title = (en: "Volunteer Work", de: "Ehrenamt").at(lang) - [== #title] - for e in contents.at("volunteering") { - [ - - *#e.title.at(lang)* (#e.date.at(lang)) - #par(e.bullets.at(0).at(lang)) \ - ] - } - } - - if item == "languages" and "languages" in contents { - let title = (en: "Languages", de: "Sprachen").at(lang) - [== #title] - sidebar_entry(item: contents.languages, is_sidebar: true) - [\ ] - } - - if item == "skills" and "skills" in contents { - let title = (en: "Qualifications", de: "Kenntnisse").at(lang) - [== #title] - sidebar_entry(item: contents.skills, is_sidebar: true) - } - } - } let margin = 1pt grid( @@ -143,7 +144,7 @@ ), ) }) - body + create_body(main: main, contents: contents) }, ), align( @@ -160,7 +161,7 @@ set par(justify: false) align(right, block(it)) } - sidebar + create_sidebar(sidebar: sidebar, contents: contents) v(15pt) }, ),