Uses custom date format YYYY-MM-DD

Fix #106
This commit is contained in:
Eduardo Cuducos
2021-10-04 20:12:06 -04:00
committed by Maas Lalani
parent 165c5aa514
commit e4a3413409
3 changed files with 89 additions and 5 deletions

View File

@@ -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
}

View File

@@ -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",