50 lines
998 B
Go
50 lines
998 B
Go
package mdparser
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
|
|
"github.com/lorenzhohermuth/portfolio/pkg/github"
|
|
"github.com/lorenzhohermuth/portfolio/view/component"
|
|
)
|
|
|
|
func GetWork() []component.Event {
|
|
projectsFile, ghErr := github.FetchGHFile(context.Background(), "/interactive/work.md")
|
|
if ghErr != nil {
|
|
panic(ghErr)
|
|
}
|
|
components := make([]component.Event, 0)
|
|
|
|
lines := strings.Split(projectsFile, "\n")
|
|
tmpTitle := ""
|
|
tmpPeriod := ""
|
|
for _, l := range lines {
|
|
isFilled, elm := parseMdWork(l, &tmpTitle, &tmpPeriod)
|
|
if isFilled {
|
|
components = append(components, elm)
|
|
}
|
|
}
|
|
|
|
return components
|
|
}
|
|
|
|
func parseMdWork(line string, title *string, periode *string) (bool, component.Event){
|
|
char := getChar(line, 0)
|
|
|
|
if char == "" {
|
|
elm := component.Event{
|
|
TimePeriode: *periode,
|
|
Title: *title,
|
|
}
|
|
*title = ""
|
|
*periode = ""
|
|
return true, elm
|
|
|
|
} else if char == "#" {
|
|
*title = strings.TrimSpace(line[1:])
|
|
} else {
|
|
*periode = line
|
|
}
|
|
return false, component.Event{}
|
|
}
|