aboutsummaryrefslogtreecommitdiffhomepage
path: root/parser
diff options
context:
space:
mode:
authorJoe Mooring <[email protected]>2024-12-15 17:21:05 -0800
committerBjørn Erik Pedersen <[email protected]>2024-12-16 10:30:27 +0100
commit48dd6a918a0ef070819ef80d59b2553bc99e2964 (patch)
tree089e94f1742e44db1f962f623dd7fc1ddfe41922 /parser
parent744b8566ec8ea138a63d3787dc2a0dd81511e492 (diff)
downloadhugo-48dd6a918a0ef070819ef80d59b2553bc99e2964.tar.gz
hugo-48dd6a918a0ef070819ef80d59b2553bc99e2964.zip
parser/pageparser: Fix Org Mode summary delimiter assignment
Closes #13152
Diffstat (limited to 'parser')
-rw-r--r--parser/pageparser/pagelexer_intro.go4
-rw-r--r--parser/pageparser/pagelexer_intro_test.go46
2 files changed, 48 insertions, 2 deletions
diff --git a/parser/pageparser/pagelexer_intro.go b/parser/pageparser/pagelexer_intro.go
index 925c61c9e..334d9a79c 100644
--- a/parser/pageparser/pagelexer_intro.go
+++ b/parser/pageparser/pagelexer_intro.go
@@ -91,14 +91,14 @@ func lexFrontMatterOrgMode(l *pageLexer) stateFunc {
#+DESCRIPTION: Just another golang parser for org content!
*/
- l.summaryDivider = summaryDividerOrg
-
l.backup()
if !l.hasPrefix(delimOrg) {
return lexMainSection
}
+ l.summaryDivider = summaryDividerOrg
+
// Read lines until we no longer see a #+ prefix
LOOP:
for {
diff --git a/parser/pageparser/pagelexer_intro_test.go b/parser/pageparser/pagelexer_intro_test.go
new file mode 100644
index 000000000..c074e6f50
--- /dev/null
+++ b/parser/pageparser/pagelexer_intro_test.go
@@ -0,0 +1,46 @@
+// Copyright 2024 The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package pageparser
+
+import (
+ "testing"
+
+ qt "github.com/frankban/quicktest"
+)
+
+func Test_lexIntroSection(t *testing.T) {
+ t.Parallel()
+ c := qt.New(t)
+ for i, tt := range []struct {
+ input string
+ expectItemType ItemType
+ expectSummaryDivider []byte
+ }{
+ {"{\"title\": \"JSON\"}\n", TypeFrontMatterJSON, summaryDivider},
+ {"#+TITLE: ORG\n", TypeFrontMatterORG, summaryDividerOrg},
+ {"+++\ntitle = \"TOML\"\n+++\n", TypeFrontMatterTOML, summaryDivider},
+ {"---\ntitle: YAML\n---\n", TypeFrontMatterYAML, summaryDivider},
+ // Issue 13152
+ {"# ATX Header Level 1\n", tText, summaryDivider},
+ } {
+ errMsg := qt.Commentf("[%d] %v", i, tt.input)
+
+ l := newPageLexer([]byte(tt.input), lexIntroSection, Config{})
+ l.run()
+
+ c.Assert(l.items[0].Type, qt.Equals, tt.expectItemType, errMsg)
+ c.Assert(l.summaryDivider, qt.DeepEquals, tt.expectSummaryDivider, errMsg)
+
+ }
+}