Parameterized by language

master
Félix Desmaretz 2024-01-26 00:25:39 +01:00
parent 40a4692be5
commit ae155ccfe5
5 changed files with 134 additions and 41 deletions

3
cv_en.typ Normal file
View File

@ -0,0 +1,3 @@
#import "main.typ"
#main.render("en")

3
cv_fr.typ Normal file
View File

@ -0,0 +1,3 @@
#import "main.typ"
#main.render("fr")

View File

@ -1,17 +1,16 @@
#import "cv/cv.typ": *
#import "cv/utils.typ"
#let language = "fr"
#let cvdata = utils.filterLanguage(language, (
personal: yaml(("data/", "en", "/personal.yaml").join()),
experience: yaml(("data/", "en", "/experience.yaml").join()),
education: yaml(("data/", "en", "/education.yaml").join()),
skills: yaml(("data/", "en", "/skills.yaml").join()),
languages: yaml("data/en/languages.yaml"),
#let render(language) = {
let cvdata = utils.filterLanguage(language, (
personal: yaml("data/personal.yaml"),
experience: yaml("data/experience.yaml"),
education: yaml("data/education.yaml"),
skills: yaml("data/skills.yaml"),
languages: yaml("data/languages.yaml"),
))
#let uservars = (
let uservars = (
headingfont: "Roboto",
bodyfont: "Roboto",
fontsize: 10pt, // 10pt, 11pt, 12pt
@ -21,7 +20,7 @@
headingsmallcaps: false,
)
#let customrules(doc) = {
let customrules(doc) = {
// add custom document style rules here
set page(
paper: "a4", // a4, us-letter
@ -33,7 +32,7 @@
doc
}
#let cvinit(doc) = {
let cvinit(doc) = {
doc = setrules(uservars, doc)
doc = showrules(uservars, doc)
doc = customrules(doc)
@ -41,11 +40,12 @@
doc
}
#show: doc => cvinit(doc)
show: doc => cvinit(doc)
#cvheading(language, cvdata, uservars)
#cvwork(language, cvdata)
#cveducation(language, cvdata)
#cvlanguages(language, cvdata)
#cvskills(language, cvdata)
#endnote()
cvheading(language, cvdata, uservars)
cvwork(language, cvdata)
cveducation(language, cvdata)
cvlanguages(language, cvdata)
cvskills(language, cvdata)
endnote()
}

15
render.sh Executable file
View File

@ -0,0 +1,15 @@
#!/bin/sh
### VARS ###
NAME="Felix"
SURNAME="Desmaretz"
### CLEAN ###
mkdir -p out
rm -f out/*
### COMPILE ###
# EN
typst compile --font-path fonts cv_en.typ && mv cv_en.pdf "out/Resume_${SURNAME}_${NAME}.pdf"
# FR
typst compile --font-path fonts cv_fr.typ && mv cv_fr.pdf "out/CV_${SURNAME}_${NAME}.pdf"

72
test.typ Normal file
View File

@ -0,0 +1,72 @@
#let language = "en"
#let cvdata = (
personal: yaml("data/en/personal.yaml"),
experience: yaml("data/en/experience.yaml"),
education: yaml("data/en/education.yaml")
// skills: yaml("data/en/skills.yaml")
)
#let w = cvdata.experience
#let getWithLang(lang, data) = {
if type(data) == dictionary {
data.at(lang)
} else {
data
}
}
#(regex("\d{4}-\d{2}-\d{2}") in "2023-04-12")
#let myarr = (2, 1, 3, 4,)
// #myarr.sorted(key: a => getWithLang(a.gt))
#let filterLanguage(lang, data) = {
if type(data) == dictionary {
if data.at(lang, default: none) == none {
data = data
.pairs()
.map(xs => (xs.first(), filterLanguage(lang, xs.last())))
.fold((:), (acc, xs) => {
acc.insert(xs.first(), xs.last())
acc
})
}
else {
data = filterLanguage(lang, data.at(lang))
}
} else if type(data) == array {
data = data.map(v => filterLanguage(lang, v))
}
data
}
#filterLanguage("fr", cvdata)
#let dict = (
name: "myName",
address: "myAddress"
)
#let a = (a: 1, b: 2)
#let f(data) = {
data
.pairs()
.map(xs => (xs.first(), xs.last()))
.fold((:), (acc, xs) => {
acc.insert(xs.first(), xs.last())
acc
})
}
#f(dict)
#let a = (:)
#type(a)