// 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 goldmark_test import ( "testing" "github.com/gohugoio/hugo/hugolib" ) func TestTableOfContents(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- disableKinds = ['home','rss','section','sitemap','taxonomy','term'] enableEmoji = false [markup.tableOfContents] startLevel = 2 endLevel = 4 ordered = false [markup.goldmark.extensions] strikethrough = false [markup.goldmark.extensions.typographer] disable = true [markup.goldmark.parser] autoHeadingID = false autoHeadingIDType = 'github' [markup.goldmark.renderer] unsafe = false xhtml = false -- layouts/_default/single.html -- {{ .TableOfContents }} -- content/p1.md -- --- title: p1 (basic) --- # Title ## Section 1 ### Section 1.1 ### Section 1.2 #### Section 1.2.1 ##### Section 1.2.1.1 -- content/p2.md -- --- title: p2 (markdown) --- ## Some *emphasized* text ## Some ` + "`" + `inline` + "`" + ` code ## Something to escape A < B && C > B --- -- content/p3.md -- --- title: p3 (image) --- ## An image ![kitten](a.jpg) -- content/p4.md -- --- title: p4 (raw html) --- ## Some raw HTML -- content/p5.md -- --- title: p5 (typographer) --- ## Some "typographer" markup -- content/p6.md -- --- title: p6 (strikethrough) --- ## Some ~~deleted~~ text -- content/p7.md -- --- title: p7 (emoji) --- ## A :snake: emoji ` b := hugolib.Test(t, files) // basic b.AssertFileContentExact("public/p1/index.html", ``) // markdown b.AssertFileContent("public/p2/index.html", `