mirror of
https://github.com/maaslalani/slides.git
synced 2026-01-09 14:28:05 -05:00
committed by
Maas Lalani
parent
165c5aa514
commit
e4a3413409
@@ -4,6 +4,7 @@ package meta
|
||||
|
||||
import (
|
||||
"os/user"
|
||||
"strings"
|
||||
|
||||
"gopkg.in/yaml.v2"
|
||||
)
|
||||
@@ -65,7 +66,7 @@ func (m *Meta) Parse(header string) (*Meta, bool) {
|
||||
}
|
||||
|
||||
if tmp.Date != nil {
|
||||
m.Date = *tmp.Date
|
||||
m.Date = parseDate(*tmp.Date)
|
||||
} else {
|
||||
m.Date = fallback.Date
|
||||
}
|
||||
@@ -99,3 +100,21 @@ func defaultDate() string {
|
||||
func defaultPaging() string {
|
||||
return "Slide %d / %d"
|
||||
}
|
||||
|
||||
func parseDate(value string) string {
|
||||
pairs := [][]string{
|
||||
{"YYYY", "2006"},
|
||||
{"YY", "06"},
|
||||
{"MMMM", "January"},
|
||||
{"MMM", "Jan"},
|
||||
{"MM", "01"},
|
||||
{"mm", "1"},
|
||||
{"DD", "02"},
|
||||
{"dd", "2"},
|
||||
}
|
||||
|
||||
for _, p := range pairs {
|
||||
value = strings.ReplaceAll(value, p[0], p[1])
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ func TestMeta_ParseHeader(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Parse date from header",
|
||||
name: "Parse static date from header",
|
||||
slideshow: fmt.Sprintf("---\ndate: %q\n", "31/01/1970"),
|
||||
want: &meta.Meta{
|
||||
Theme: "default",
|
||||
@@ -68,6 +68,56 @@ func TestMeta_ParseHeader(t *testing.T) {
|
||||
Paging: "Slide %d / %d",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Parse go-styled date from header",
|
||||
slideshow: fmt.Sprintf("---\ndate: %q\n", "Jan 2, 2006"),
|
||||
want: &meta.Meta{
|
||||
Theme: "default",
|
||||
Author: user.Name,
|
||||
Date: "Jan 2, 2006",
|
||||
Paging: "Slide %d / %d",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Parse YYYY-MM-DD date from header",
|
||||
slideshow: fmt.Sprintf("---\ndate: %q\n", "YYYY-MM-DD"),
|
||||
want: &meta.Meta{
|
||||
Theme: "default",
|
||||
Author: user.Name,
|
||||
Date: "2006-01-02",
|
||||
Paging: "Slide %d / %d",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Parse dd/mm/YY date from header",
|
||||
slideshow: fmt.Sprintf("---\ndate: %q\n", "dd/mm/YY"),
|
||||
want: &meta.Meta{
|
||||
Theme: "default",
|
||||
Author: user.Name,
|
||||
Date: "2/1/06",
|
||||
Paging: "Slide %d / %d",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Parse MMM dd, YYYY date from header",
|
||||
slideshow: fmt.Sprintf("---\ndate: %q\n", "MMM dd, YYYY"),
|
||||
want: &meta.Meta{
|
||||
Theme: "default",
|
||||
Author: user.Name,
|
||||
Date: "Jan 2, 2006",
|
||||
Paging: "Slide %d / %d",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Parse MMMM DD, YYYY date from header",
|
||||
slideshow: fmt.Sprintf("---\ndate: %q\n", "MMMM DD, YYYY"),
|
||||
want: &meta.Meta{
|
||||
Theme: "default",
|
||||
Author: user.Name,
|
||||
Date: "January 02, 2006",
|
||||
Paging: "Slide %d / %d",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Fallback to default if no date provided",
|
||||
slideshow: "\n# Header Slide\n > Subtitle\n",
|
||||
|
||||
Reference in New Issue
Block a user