Files
cv-site/templates/cv-text.txt
T
juanatsap 5f85a7cc8d fix: Handle Unicode/emoji in plain text CV with proper centering
- Fix infinite loop caused by byte-based string slicing on multi-byte chars
- Use rune-based operations for proper Unicode handling
- Add template functions: center, separator, box
- Box function creates rounded corners with dynamic width
- Account for emoji display width (2 chars) in calculations
- Make line width configurable via plainTextLineWidth constant
2025-11-30 17:15:44 +00:00

131 lines
5.9 KiB
Plaintext

================================================================================
{{if .Icons}}{{center "📄 CURRICULUM VITAE"}}
{{else}}{{center "CURRICULUM VITAE"}}
{{end}}================================================================================
{{if .Icons}}{{center (printf "👤 %s" .CV.Personal.Name)}}
{{else}}{{center .CV.Personal.Name}}
{{end}}
{{if .Icons}}{{box (printf "💼 %s" .CV.Personal.Title)}}
{{else}}{{box .CV.Personal.Title}}
{{end}}
- {{if .Icons}}📍{{else}}Location:{{end}} {{.CV.Personal.Location}}
- {{if .Icons}}📧{{else}}Email: {{end}} {{.CV.Personal.Email}}
- {{if .Icons}}📱{{else}}Phone: {{end}} {{.CV.Personal.Phone}}
- {{if .Icons}}💼{{else}}LinkedIn:{{end}} {{.CV.Personal.LinkedIn}}
- {{if .Icons}}💻{{else}}GitHub: {{end}} {{.CV.Personal.GitHub}}
- {{if .Icons}}🌐{{else}}Website: {{end}} {{.CV.Personal.Website}}
================================================================================
{{if .Icons}} 📝 SUMMARY
{{else}} SUMMARY
{{end}}================================================================================
{{.CV.Summary}}
================================================================================
{{if .Icons}} 💼 EXPERIENCE
{{else}} EXPERIENCE
{{end}}================================================================================
{{range .CV.Experience}}
--------------------------------------------------------------------------------
{{if $.Icons}}💼 {{end}}{{.Position}}
{{if $.Icons}}🏢 {{end}}{{.Company}} | {{.Location}}
{{if $.Icons}}📅 {{end}}{{.StartDate}} - {{if .Current}}Present{{else}}{{.EndDate}}{{end}}{{if .Duration}} ({{.Duration}}){{end}}
--------------------------------------------------------------------------------
{{.ShortDescription}}
{{if $.Icons}}📋 Responsibilities:{{else}}Responsibilities:{{end}}
{{range .Responsibilities}}- {{.}}
{{end}}
{{if $.Icons}}🛠️ Technologies:{{else}}Technologies:{{end}} {{range $i, $t := .Technologies}}{{if $i}}, {{end}}{{$t}}{{end}}
{{end}}
================================================================================
{{if .Icons}} 🎓 EDUCATION
{{else}} EDUCATION
{{end}}================================================================================
{{range .CV.Education}}
{{if $.Icons}}📜 {{end}}{{.Degree}}{{if .Field}} - {{.Field}}{{end}}
{{.Institution}} - {{.Location}}
{{.StartDate}} - {{.EndDate}}
{{end}}
================================================================================
{{if .Icons}} 🛠️ TECHNICAL SKILLS
{{else}} TECHNICAL SKILLS
{{end}}================================================================================
{{range .CV.Skills.Technical}}
{{if $.Icons}}## 📦 {{.Category}}{{else}}## {{.Category}}{{end}}
{{range .Items}}- {{.}}
{{end}}
{{end}}
================================================================================
{{if .Icons}} 🏆 AWARDS
{{else}} AWARDS
{{end}}================================================================================
{{range .CV.Awards}}
{{if $.Icons}}🥇 {{end}}{{.Title}} - {{.Issuer}} ({{.Date}})
{{.Description}}
{{end}}
================================================================================
{{if .Icons}} 📁 PROJECTS
{{else}} PROJECTS
{{end}}================================================================================
{{range .CV.Projects}}
--------------------------------------------------------------------------------
{{if $.Icons}}🚀 {{end}}{{.Title}}{{if .URL}} - {{.URL}}{{end}}
{{if .Location}}{{.Location}}{{end}}
--------------------------------------------------------------------------------
{{.ShortDescription}}
{{range .Responsibilities}}- {{.}}
{{end}}
{{if $.Icons}}🛠️ Technologies:{{else}}Technologies:{{end}} {{range $i, $t := .Technologies}}{{if $i}}, {{end}}{{$t}}{{end}}
{{end}}
================================================================================
{{if .Icons}} 📚 COURSES
{{else}} COURSES
{{end}}================================================================================
{{range .CV.Courses}}
{{if $.Icons}}📖 {{end}}{{.Title}} - {{.Institution}} ({{.Date}})
{{.Location}}
{{if .Description}}{{.Description}}{{end}}
{{range .Responsibilities}}- {{.}}
{{end}}
{{end}}
================================================================================
{{if .Icons}} 🌍 LANGUAGES
{{else}} LANGUAGES
{{end}}================================================================================
{{range .CV.Languages}}
- {{if $.Icons}}🗣️ {{end}}{{.Language}}: {{.Proficiency}}{{if .Detail}} - {{.Detail}}{{end}}
{{end}}
================================================================================
{{if .Icons}} 📬 CONTACT
{{else}} CONTACT
{{end}}================================================================================
- {{if .Icons}}👤{{else}}Name: {{end}} {{.CV.Personal.Name}}
- {{if .Icons}}📧{{else}}Email: {{end}} {{.CV.Personal.Email}}
- {{if .Icons}}📱{{else}}Phone: {{end}} {{.CV.Personal.Phone}}
- {{if .Icons}}💼{{else}}LinkedIn:{{end}} {{.CV.Personal.LinkedIn}}
- {{if .Icons}}💻{{else}}GitHub: {{end}} {{.CV.Personal.GitHub}}
- {{if .Icons}}🌐{{else}}Website: {{end}} {{.CV.Personal.Website}}
================================================================================
Generated from: {{.BaseURL}} | Last Updated: {{.CV.Meta.LastUpdated}}
================================================================================