Index: pkg/present/parse.go |
=================================================================== |
--- a/pkg/present/parse.go |
+++ b/pkg/present/parse.go |
@@ -14,6 +14,7 @@ |
"log" |
"net/url" |
"strings" |
+ "time" |
"unicode" |
"unicode/utf8" |
) |
@@ -48,6 +49,7 @@ |
type Doc struct { |
Title string |
Subtitle string |
+ Time time.Time |
Authors []Author |
Sections []Section |
Template *template.Template |
@@ -217,6 +219,13 @@ |
if !ok { |
return nil, errors.New("no subtitle") |
} |
+ text, ok := lines.next() |
+ if !ok { |
+ return nil, errors.New("unexpected EOF") |
+ } |
+ if t, ok := parseTime(text); ok { |
+ doc.Time = t |
+ } |
if mode&TitlesOnly > 0 { |
return doc, nil |
} |
@@ -411,3 +420,17 @@ |
} |
return Link{URL: u} |
} |
+ |
+func parseTime(text string) (t time.Time, ok bool) { |
+ t, err := time.Parse("15:04 2 Jan 2006", text) |
+ if err == nil { |
+ return t, true |
+ } |
+ t, err = time.Parse("2 Jan 2006", text) |
+ if err == nil { |
+ // at 11am UTC it is the same date everywhere |
+ t = t.Add(time.Hour * 11) |
+ return t, true |
+ } |
+ return time.Time{}, false |
+} |