From 667e7be221a21e488667a1af7203c1c0e81efc73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillaume=20H=C3=A9rail?= Date: Wed, 25 Jan 2023 10:52:00 +0100 Subject: [PATCH] fix: Title not being extracted when not on the first line While a page with a macro is processed, having a macro leaves an unclean buffer for further processing steps, including title extraction. The problem seems to come from `ExtractMeta`: as it runs through the metadata, it hits the first line of the macro but since it doesn't look like a complete Metadata (e.g. matching either `\[\]:\s*#\s*\(([^:]+):\s*(.*)\)` or `` in https://github.com/kovetskiy/mark/blob/master/pkg/mark/meta.go#L37:L38, it will break the loop in https://github.com/kovetskiy/mark/blob/master/pkg/mark/meta.go#L61 and return the final document as: ``` Template: ac:children Style: h2 Excerpt: none Page: TestSpace:Test Reverse: false All: true --> :children: ``` This then goes into `ExtractDocumentLeadingH1` which doesn't find a match for the regex `^#[^#]\s*(.*)\s*\n`, returning an empty title since the title is not on the first line. This commit, while it doesn't fix the unclean document, fixes the regex to properly find the title. Closes #214 --- pkg/mark/markdown.go | 2 +- pkg/mark/testdata/header.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/mark/markdown.go b/pkg/mark/markdown.go index 98576c04..ddea59f7 100644 --- a/pkg/mark/markdown.go +++ b/pkg/mark/markdown.go @@ -345,7 +345,7 @@ func DropDocumentLeadingH1( // ExtractDocumentLeadingH1 will extract leading H1 heading func ExtractDocumentLeadingH1(markdown []byte) string { - h1 := regexp.MustCompile(`^#[^#]\s*(.*)\s*\n`) + h1 := regexp.MustCompile(`#[^#]\s*(.*)\s*\n`) groups := h1.FindSubmatch(markdown) if groups == nil { return "" diff --git a/pkg/mark/testdata/header.md b/pkg/mark/testdata/header.md index 9c1d2f05..81a9738f 100644 --- a/pkg/mark/testdata/header.md +++ b/pkg/mark/testdata/header.md @@ -1,3 +1,4 @@ + # a ## b ### c