From 998cbf1cc44f68895f00aa98082dd8c8930ddd81 Mon Sep 17 00:00:00 2001 From: Cristian Dominguez Date: Fri, 30 Oct 2020 12:14:36 -0300 Subject: [PATCH] Ignore YAML frontmatter --- main.go | 3 +++ ui/ui.go | 2 ++ utils/utils.go | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 utils/utils.go diff --git a/main.go b/main.go index 9e6b402..f540cfc 100644 --- a/main.go +++ b/main.go @@ -22,6 +22,7 @@ import ( "github.com/charmbracelet/charm/ui/common" "github.com/charmbracelet/glamour" "github.com/charmbracelet/glow/ui" + "github.com/charmbracelet/glow/utils" ) var ( @@ -195,6 +196,8 @@ func executeArg(cmd *cobra.Command, arg string, w io.Writer) error { return err } + b = utils.RemoveFrontmatter(b) + // render var baseURL string u, err := url.ParseRequestURI(src.URL) diff --git a/ui/ui.go b/ui/ui.go index 0e82980..8fd04a0 100644 --- a/ui/ui.go +++ b/ui/ui.go @@ -15,6 +15,7 @@ import ( "github.com/charmbracelet/charm" "github.com/charmbracelet/charm/keygen" "github.com/charmbracelet/charm/ui/common" + "github.com/charmbracelet/glow/utils" "github.com/muesli/gitcha" te "github.com/muesli/termenv" ) @@ -355,6 +356,7 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { case fetchedMarkdownMsg: m.pager.currentDocument = *msg + msg.Body = string(utils.RemoveFrontmatter([]byte(msg.Body))) cmds = append(cmds, renderWithGlamour(m.pager, msg.Body)) case contentRenderedMsg: diff --git a/utils/utils.go b/utils/utils.go new file mode 100644 index 0000000..e03298c --- /dev/null +++ b/utils/utils.go @@ -0,0 +1,19 @@ +package utils + +import "regexp" + +func RemoveFrontmatter(content []byte) []byte { + if frontmatterBoundaries := detectFrontmatter(content); frontmatterBoundaries[0] == 0 { + return content[frontmatterBoundaries[1]:] + } + return content +} + +var yamlPattern = regexp.MustCompile(`(?m)^---\r?\n(\s*\r?\n)?`) + +func detectFrontmatter(c []byte) []int { + if matches := yamlPattern.FindAllIndex(c, 2); len(matches) > 1 { + return []int{matches[0][0], matches[1][1]} + } + return []int{-1, -1} +}