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 }