{{define "section-summary"}} {{if .Summary}}

{{emphasize .Summary .Layout}}

{{end}} {{end}} {{define "section-certifications"}} {{if .Certifications}} {{if .Certifications.Items}}
{{default "Certifications" .Certifications.Title}}
{{end}} {{end}} {{end}} {{define "section-education"}} {{if .Education.Institutions}}
{{default "Education" .Education.Title}}
{{range sortEducationByOrder .Education.Institutions}} {{if .Thesis}} {{end}} {{- $descriptions := filterEmpty .Degree.Descriptions -}} {{- if $descriptions }} {{- end }} {{end}}
{{.Institution}} {{- if .Degree.Name}}, {{.Degree.Name}}{{end -}} {{- if .GPA}}{{$gpa := formatGPA .GPA}}{{if $gpa}} (GPA: {{$gpa}}){{end}}{{end -}} {{fmtDateRange .Dates}}
{{- if .Thesis.Title -}} Thesis: {{.Thesis.Title}} {{- if .Thesis.Link.URI}} | {{if .Thesis.Link.Label}}{{.Thesis.Link.Label}}{{else}}{{.Thesis.Link.URI}}{{end}}{{end -}} {{- end -}} {{- range .Thesis.Highlights}}. {{.}}{{end -}}
    {{- range $descriptions}}
  • {{.}}
  • {{- end}}
{{end}} {{end}} {{define "section-skills"}} {{if .Skills.Categories}}
{{default "Skills" .Skills.Title}}
{{end}} {{end}} {{define "section-experience"}} {{if .Experience.Positions}}
{{default "Experience" .Experience.Title}}
{{- /* Group every position under one heading per company. Positions are sorted most-recent-first; a company appears where its most recent non-co-op role falls, with all of its non-co-op roles (including non-adjacent stints) listed beneath it. Co-op/intern roles (matched on employment_type) are always collected into a single "Internships" block at the end, keeping the career section strictly chronological when co-op terms interleave with full-time roles. */ -}} {{$sorted := sortExperienceByOrder .Experience.Positions}} {{range $i, $p := $sorted}} {{$pCoop := or (contains (lower $p.EmploymentType) "co-op") (contains (lower $p.EmploymentType) "intern")}} {{if not $pCoop}} {{- /* Emit the company block only at the company's first (most recent) non-co-op position. */ -}} {{$seen := false}} {{range $j, $q := $sorted}} {{$qCoop := or (contains (lower $q.EmploymentType) "co-op") (contains (lower $q.EmploymentType) "intern")}} {{if and (lt $j $i) (eq $q.Company $p.Company) (not $qCoop)}}{{$seen = true}}{{end}} {{end}} {{if not $seen}}
{{$p.Company}}
{{range $sorted}} {{$qCoop := or (contains (lower .EmploymentType) "co-op") (contains (lower .EmploymentType) "intern")}} {{if and (eq .Company $p.Company) (not $qCoop)}}
{{.Title}}
{{fmtDateRange .Dates}}
{{if .Technologies}}
{{formatList .Technologies}}
{{end}} {{$high := filterEmpty .Highlights}} {{if $high}}
    {{range $high}}
  • {{emphasize . $.Layout}}
  • {{end}}
{{end}}
{{end}} {{end}}
{{end}} {{end}} {{end}} {{- /* Single aggregated block for all co-op/intern roles. */ -}} {{$hasCoop := false}} {{range $sorted}}{{if or (contains (lower .EmploymentType) "co-op") (contains (lower .EmploymentType) "intern")}}{{$hasCoop = true}}{{end}}{{end}} {{if $hasCoop}}
Internships
{{range $sorted}} {{if or (contains (lower .EmploymentType) "co-op") (contains (lower .EmploymentType) "intern")}}
{{.Title}}{{if .EmploymentType}} ({{.EmploymentType}}){{end}}{{if .Company}} | {{.Company}}{{end}}
{{fmtDateRange .Dates}}
{{if .Technologies}}
{{formatList .Technologies}}
{{end}} {{$high := filterEmpty .Highlights}} {{if $high}}
    {{range $high}}
  • {{emphasize . $.Layout}}
  • {{end}}
{{end}}
{{end}} {{end}}
{{end}}
{{end}} {{end}} {{define "section-projects"}} {{if .Projects}} {{if .Projects.Projects}}
{{default "Projects" .Projects.Title}}
{{range sortProjectsByOrder .Projects.Projects}}
{{if .Dates}}
{{fmtOptDateRange .Dates}}
{{end}}
{{if .Technologies}}
{{formatList .Technologies}}
{{end}} {{$high := filterEmpty .Highlights}} {{if $high}} {{end}}
{{end}}
{{end}} {{end}} {{end}} {{define "section-languages"}} {{if .Languages}} {{if .Languages.Languages}}
{{default "Languages" .Languages.Title}}
{{end}} {{end}} {{end}} {{.Contact.Name}} Resume

{{.Contact.Name}}

{{- if .Contact.Headline}}
{{.Contact.Headline}}
{{end}}

{{- $sep := false -}} {{- if .Contact.Email -}} {{if $sep}} | {{end}}{{.Contact.Email}} {{- $sep = true -}} {{- end -}} {{- if .Contact.Phone -}} {{if $sep}} | {{end}}{{.Contact.Phone}} {{- $sep = true -}} {{- end -}} {{- if .Contact.Credentials -}} {{if $sep}} | {{end}}{{.Contact.Credentials}} {{- $sep = true -}} {{- end -}} {{- if .Contact.Location -}} {{- $loc := formatLocation .Contact.Location -}} {{- if $loc -}} {{if $sep}} | {{end}}{{$loc}} {{- $sep = true -}} {{- end -}} {{- end -}} {{- range .Contact.Links -}} {{- if .URI -}} {{if $sep}} | {{end}}{{if .Label}}{{.Label}}{{else}}{{.URI}}{{end}} {{- $sep = true -}} {{- end -}} {{- end -}}

{{$root := .}} {{range .SectionOrder}} {{if eq . "summary"}}{{template "section-summary" $root}} {{else if eq . "certifications"}}{{template "section-certifications" $root}} {{else if eq . "education"}}{{template "section-education" $root}} {{else if eq . "skills"}}{{template "section-skills" $root}} {{else if eq . "experience"}}{{template "section-experience" $root}} {{else if eq . "projects"}}{{template "section-projects" $root}} {{else if eq . "languages"}}{{template "section-languages" $root}} {{end}} {{end}} {{if and .Layout .Layout.References}}
References available upon request
{{end}}