From e7b5b55f6718b25a437a891a06a26c21384b6818 Mon Sep 17 00:00:00 2001 From: Brian Picciano Date: Wed, 18 Jan 2023 20:15:12 +0100 Subject: Add format column to post tables --- src/post/format.go | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/post/format.go (limited to 'src/post/format.go') diff --git a/src/post/format.go b/src/post/format.go new file mode 100644 index 0000000..21ef79f --- /dev/null +++ b/src/post/format.go @@ -0,0 +1,44 @@ +package post + +import "errors" + +// ErrFormatStringMalformed indicates that a string could not be converted to a +// Format. +var ErrFormatStringMalformed = errors.New("format string malformed") + +// Format describes the format of the body of a Post. +type Format string + +// Enumeration of possible formats. +const ( + FormatMarkdown Format = "md" + FormatGemtext Format = "gmi" +) + +// Formats slice of all possible Formats. +var Formats = []Format{ + FormatMarkdown, + FormatGemtext, +} + +var strsToFormats = func() map[string]Format { + + m := map[string]Format{} + + for _, f := range Formats { + m[string(f)] = f + } + + return m +}() + +// FormatFromString parses a string into a Format, or returns +// ErrFormatStringMalformed. +func FormatFromString(str string) (Format, error) { + + if f, ok := strsToFormats[str]; ok { + return f, nil + } + + return "", ErrFormatStringMalformed +} -- cgit v1.2.3