dendrite.daemon/core/frontmatter/parser.go

33 lines
630 B
Go

package frontmatter
import (
"bufio"
"bytes"
"errors"
"io"
)
func ParseFrontMatter(r io.Reader) (map[string]string, error) {
scanner := bufio.NewScanner(r)
frontMatter := make(map[string]string)
for scanner.Scan() {
line := scanner.Text()
if line == "---" {
break
}
parts := bytes.SplitN([]byte(line), []byte(":"), 2)
if len(parts) != 2 {
return nil, errors.New("invalid front matter format")
}
key := string(bytes.TrimSpace(parts[0]))
value := string(bytes.TrimSpace(parts[1]))
frontMatter[key] = value
}
if err := scanner.Err(); err != nil {
return nil, err
}
return frontMatter, nil
}