diff --git a/internal/meta/meta.go b/internal/meta/meta.go index 244d882..c642e94 100644 --- a/internal/meta/meta.go +++ b/internal/meta/meta.go @@ -12,19 +12,19 @@ import ( // from values set to empty strings in the YAML header. We replace values not // set by defaults values when parsing a header. type parsedMeta struct { - Theme *string `yaml:"theme"` - Author *string `yaml:"author"` - Date *string `yaml:"date"` - Numbering *string `yaml:"numbering"` + Theme *string `yaml:"theme"` + Author *string `yaml:"author"` + Date *string `yaml:"date"` + Paging *string `yaml:"paging"` } // Meta contains all of the data to be parsed // out of a markdown file's header section type Meta struct { - Theme string - Author string - Date string - Numbering string + Theme string + Author string + Date string + Paging string } // New creates a new instance of the @@ -40,10 +40,10 @@ func New() *Meta { // return false to acknowledge that there is no front matter in this slide func (m *Meta) Parse(header string) (*Meta, bool) { fallback := &Meta{ - Theme: defaultTheme(), - Author: defaultAuthor(), - Date: defaultDate(), - Numbering: defaultNumbering(), + Theme: defaultTheme(), + Author: defaultAuthor(), + Date: defaultDate(), + Paging: defaultPaging(), } var tmp parsedMeta @@ -70,10 +70,10 @@ func (m *Meta) Parse(header string) (*Meta, bool) { m.Date = fallback.Date } - if tmp.Numbering != nil { - m.Numbering = *tmp.Numbering + if tmp.Paging != nil { + m.Paging = *tmp.Paging } else { - m.Numbering = fallback.Numbering + m.Paging = fallback.Paging } return m, true @@ -96,6 +96,6 @@ func defaultDate() string { return "2006-01-02" } -func defaultNumbering() string { +func defaultPaging() string { return "Slide %d / %d" } diff --git a/internal/meta/meta_test.go b/internal/meta/meta_test.go index a997ec4..ba84e03 100644 --- a/internal/meta/meta_test.go +++ b/internal/meta/meta_test.go @@ -22,90 +22,90 @@ func TestMeta_ParseHeader(t *testing.T) { name: "Parse theme from header", slideshow: fmt.Sprintf("---\ntheme: %q\n", "dark"), want: &meta.Meta{ - Theme: "dark", - Author: user.Name, - Date: date, - Numbering: "Slide %d / %d", + Theme: "dark", + Author: user.Name, + Date: date, + Paging: "Slide %d / %d", }, }, { name: "Fallback to default if no theme provided", slideshow: "\n# Header Slide\n > Subtitle\n", want: &meta.Meta{ - Theme: "default", - Author: user.Name, - Date: date, - Numbering: "Slide %d / %d", + Theme: "default", + Author: user.Name, + Date: date, + Paging: "Slide %d / %d", }, }, { name: "Parse author from header", slideshow: fmt.Sprintf("---\nauthor: %q\n", "gopher"), want: &meta.Meta{ - Theme: "default", - Author: "gopher", - Date: date, - Numbering: "Slide %d / %d", + Theme: "default", + Author: "gopher", + Date: date, + Paging: "Slide %d / %d", }, }, { name: "Fallback to default if no author provided", slideshow: "\n# Header Slide\n > Subtitle\n", want: &meta.Meta{ - Theme: "default", - Author: user.Name, - Date: date, - Numbering: "Slide %d / %d", + Theme: "default", + Author: user.Name, + Date: date, + Paging: "Slide %d / %d", }, }, { name: "Parse date from header", slideshow: fmt.Sprintf("---\ndate: %q\n", "31/01/1970"), want: &meta.Meta{ - Theme: "default", - Author: user.Name, - Date: "31/01/1970", - Numbering: "Slide %d / %d", + Theme: "default", + Author: user.Name, + Date: "31/01/1970", + Paging: "Slide %d / %d", }, }, { name: "Fallback to default if no date provided", slideshow: "\n# Header Slide\n > Subtitle\n", want: &meta.Meta{ - Theme: "default", - Author: user.Name, - Date: date, - Numbering: "Slide %d / %d", + Theme: "default", + Author: user.Name, + Date: date, + Paging: "Slide %d / %d", }, }, { - name: "Parse numbering from header", - slideshow: fmt.Sprintf("---\nnumbering: %q\n", "%d of %d"), + name: "Parse paging from header", + slideshow: fmt.Sprintf("---\npaging: %q\n", "%d of %d"), want: &meta.Meta{ - Theme: "default", - Author: user.Name, - Date: date, - Numbering: "%d of %d", + Theme: "default", + Author: user.Name, + Date: date, + Paging: "%d of %d", }, }, { name: "Fallback to default if no numebring provided", slideshow: "\n# Header Slide\n > Subtitle\n", want: &meta.Meta{ - Theme: "default", - Author: user.Name, - Date: date, - Numbering: "Slide %d / %d", + Theme: "default", + Author: user.Name, + Date: date, + Paging: "Slide %d / %d", }, }, { name: "Fallback if first slide is valid yaml", slideshow: "---\n# Header Slide---\nContent\n", want: &meta.Meta{ - Theme: "default", - Author: user.Name, - Date: date, - Numbering: "Slide %d / %d", + Theme: "default", + Author: user.Name, + Date: date, + Paging: "Slide %d / %d", }, }, } @@ -142,7 +142,7 @@ func ExampleMeta_Parse() { theme: "dark" author: "Gopher" date: "Apr. 4, 2021" -numbering: "%d" +paging: "%d" --- ` // Parse the header from the markdown @@ -154,5 +154,5 @@ numbering: "%d" fmt.Println(m.Theme) fmt.Println(m.Author) fmt.Println(m.Date) - fmt.Println(m.Numbering) + fmt.Println(m.Paging) } diff --git a/internal/model/model.go b/internal/model/model.go index 3e63a6d..094d722 100644 --- a/internal/model/model.go +++ b/internal/model/model.go @@ -25,14 +25,14 @@ const ( ) type Model struct { - Slides []string - Page int - Author string - Date string - Theme glamour.TermRendererOption - Numbering string - FileName string - viewport viewport.Model + Slides []string + Page int + Author string + Date string + Theme glamour.TermRendererOption + Paging string + FileName string + viewport viewport.Model // VirtualText is used for additional information that is not part of the // original slides, it will be displayed on a slide and reset on page change VirtualText string @@ -83,7 +83,7 @@ func (m *Model) Load() error { m.Slides = slides m.Author = metaData.Author m.Date = time.Now().Format(metaData.Date) - m.Numbering = metaData.Numbering + m.Paging = metaData.Paging if m.Theme == nil { m.Theme = styles.SelectTheme(metaData.Theme) } @@ -149,19 +149,19 @@ func (m Model) View() string { slide = styles.Slide.Render(slide) left := styles.Author.Render(m.Author) + styles.Date.Render(m.Date) - right := styles.Page.Render(m.numbering()) + right := styles.Page.Render(m.paging()) status := styles.Status.Render(styles.JoinHorizontal(left, right, m.viewport.Width)) return styles.JoinVertical(slide, status, m.viewport.Height) } -func (m *Model) numbering() string { - switch strings.Count(m.Numbering, "%d") { +func (m *Model) paging() string { + switch strings.Count(m.Paging, "%d") { case 2: - return fmt.Sprintf(m.Numbering, m.Page+1, len(m.Slides)) + return fmt.Sprintf(m.Paging, m.Page+1, len(m.Slides)) case 1: - return fmt.Sprintf(m.Numbering, m.Page+1) + return fmt.Sprintf(m.Paging, m.Page+1) default: - return m.Numbering + return m.Paging } }