go-resume/resume.go

123 lines
2.8 KiB
Go

package main
import (
"fmt"
"html/template"
)
type Resume struct {
Basepath string `yaml:"basepath"`
Theme string `yaml:"theme"`
Meta *Meta `yaml:"meta"`
Profile *Profile `yaml:"profile"`
Year string
}
type Profile struct {
Name string `yaml:"name"`
Title string `yaml:"title"`
City string `yaml:"city"`
Phone string `yaml:"phone"`
Email string `yaml:"email"`
Socials Socials `yaml:"socials"`
Photo string `yaml:"photo"`
Summary string `yaml:"summary"`
Experience []Job `yaml:"experience"`
Education []Education `yaml:"education"`
Skills []Skill `yaml:"skills"`
Projects any `yaml:"projects"`
Languages []Language `yaml:"languages"`
Certificates []Certificate `yaml:"certificates"`
}
func (p *Profile) GetTagWidth(t string) string {
l := 0
switch t {
case "skills":
for _, skill := range p.Skills {
if len(skill.Name) > l {
l = len(skill.Name)
}
}
case "languages":
for _, skill := range p.Languages {
if len(skill.Name) > l {
l = len(skill.Name)
}
}
}
return fmt.Sprintf("%dch", l)
}
//func (job *Job) html(raw string) template.HTML {
// return template.HTML(raw)
//}
type Job struct {
Company string `yaml:"company"`
Location string `yaml:"location"`
Title string `yaml:"title"`
Period string `yaml:"period"`
Description []string `yaml:"description"`
}
type Education struct {
Name string `yaml:"name"`
Degree string `yaml:"degree"`
Faculty string `yaml:"faculty"`
City string `yaml:"city"`
Period string `yaml:"period"`
}
type Skill struct {
Name string `yaml:"name"`
Level int `yaml:"level"`
}
func _visualLevel(level int) template.HTML {
tagString := ""
if level > 5 {
level = 5
} else if level < 1 {
level = 1
}
for i := 0; i < level; i++ {
tagString += "<span class=\"tag is-info is-success is-size-6\" style=\"color: black\">☆</span>"
}
return template.HTML(tagString)
}
func (skill *Skill) VisualLevel(level int) template.HTML {
return _visualLevel(level)
}
func (language *Language) VisualLevel(level int) template.HTML {
return _visualLevel(level)
}
type Social struct {
Media string `yaml:"media"`
UserId string `yaml:"userId"`
Link string `yaml:"link"`
}
type Socials []Social
type Meta struct {
Language string `yaml:"language"`
Author string `yaml:"author"`
Title string `yaml:"title"`
Description string `yaml:"description"`
Robots string `yaml:"robots"`
ThemeColor string `yaml:"theme-color"`
GithubCorner bool `yaml:"github-corner"`
}
type Language struct {
Name string `yaml:"name"`
Level int `yaml:"level"`
}
type Certificate struct {
Name string `yaml:"name"`
}