go-by-test/blogposts/blogposts.go

40 lines
761 B
Go
Raw Normal View History

2024-09-23 21:09:10 +00:00
package blogposts
2024-09-24 18:57:28 +00:00
import (
2024-09-24 20:13:33 +00:00
"errors"
2024-09-24 18:57:28 +00:00
"io/fs"
2024-09-24 20:13:33 +00:00
"strings"
2024-09-24 18:57:28 +00:00
)
2024-09-23 21:09:10 +00:00
2024-09-24 20:13:33 +00:00
var markdownSuffix = map[string]struct{}{
"md": {},
}
var ErrUnknownFileType = errors.New("unknown file type, must be markdown")
2024-09-24 18:57:28 +00:00
func NewPostsFromFS(fileSystem fs.FS) ([]Post, error) {
dir, err := fs.ReadDir(fileSystem, ".")
if err != nil {
return nil, err
}
var posts []Post
for _, f := range dir {
2024-09-24 20:13:33 +00:00
fileName := f.Name()
if !isMarkdownFile(fileName) {
return nil, ErrUnknownFileType
}
post, err := getPost(fileSystem, fileName)
2024-09-24 18:57:28 +00:00
if err != nil {
return nil, err
}
posts = append(posts, post)
}
return posts, nil
}
2024-09-24 20:13:33 +00:00
func isMarkdownFile(fileName string) bool {
splitted := strings.Split(fileName, ".")
_, ok := markdownSuffix[splitted[len(splitted)-1:][0]]
return ok
}