package pikdex import ( "github.com/charmbracelet/lipgloss" "github.com/ewy1/pik/describe" "strings" ) type MetaSetter func(s *SourceData, content string) var MetaFiles = map[string]MetaSetter{ ".wants": func(s *SourceData, content string) { s.Wants = contentLines(content) }, ".includes": func(s *SourceData, content string) { s.Includes = contentLines(content) }, ".alias": func(s *SourceData, content string) { s.Aliases = contentLines(content) }, ".icon": func(s *SourceData, content string) { lines := contentLines(content) if len(lines) == 0 { return } icon := lines[0] desiredWidth := lipgloss.Width(icon) diff := desiredWidth - len([]rune(icon)) icon += strings.Repeat(" ", diff) s.Icon = icon }, } func contentLines(input string) []string { result := make([]string, 0, len(input)) nextLine: for _, l := range strings.Split(input, "\n") { l = strings.TrimSpace(l) if l == "" { continue nextLine } for _, c := range describe.CommentPrefixes { if strings.HasPrefix(l, c) { continue nextLine } } result = append(result, l) } return result }