hugoext/page_metadata.go

64 lines
1.2 KiB
Go
Raw Permalink Normal View History

package main
import (
"time"
2024-06-08 21:27:32 +03:00
"gitrepo.ru/neonxp/hugoext/hugo"
)
2021-07-11 07:00:30 +03:00
func NewContentFromMeta(meta map[string]interface{}) *hugo.PageMetadata {
return &hugo.PageMetadata{
Title: stringFromInterface(meta["title"]),
Slug: stringFromInterface(meta["slug"]),
Summary: stringFromInterface(meta["summary"]),
Categories: stringArrayFromInterface(meta["categories"]),
Tags: stringArrayFromInterface(meta["tags"]),
Date: dateFromInterface(meta["date"]),
Draft: boolFromInterface(meta["draft"]),
}
}
func stringFromInterface(input interface{}) string {
str, _ := input.(string)
return str
}
func boolFromInterface(input interface{}) bool {
v, _ := input.(bool)
return v
}
func dateFromInterface(input interface{}) time.Time {
str, ok := input.(string)
if !ok {
return time.Now()
}
2021-07-11 12:34:52 +03:00
t, err := time.Parse(time.RFC3339, str)
if err != nil {
// try just date, or give up
t, err := time.Parse("2006-01-02", str)
if err != nil {
return time.Now()
}
2021-07-11 12:34:52 +03:00
return t
}
2021-07-11 12:34:52 +03:00
return t
}
func stringArrayFromInterface(input interface{}) []string {
strarr, ok := input.([]interface{})
if ok {
var out []string
for _, str := range strarr {
out = append(out, stringFromInterface(str))
}
2021-07-11 12:34:52 +03:00
return out
}
2021-07-11 12:34:52 +03:00
return nil
}