go-by-test/blogposts/blogposts.go

40 lines
761 B
Go

package blogposts
import (
"errors"
"io/fs"
"strings"
)
var markdownSuffix = map[string]struct{}{
"md": {},
}
var ErrUnknownFileType = errors.New("unknown file type, must be markdown")
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 {
fileName := f.Name()
if !isMarkdownFile(fileName) {
return nil, ErrUnknownFileType
}
post, err := getPost(fileSystem, fileName)
if err != nil {
return nil, err
}
posts = append(posts, post)
}
return posts, nil
}
func isMarkdownFile(fileName string) bool {
splitted := strings.Split(fileName, ".")
_, ok := markdownSuffix[splitted[len(splitted)-1:][0]]
return ok
}