mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
markup/goldmark: Fix attribute nilpointer
Fixes 9819
This commit is contained in:
parent
13ceef7599
commit
d7b54a4c37
3 changed files with 49 additions and 19 deletions
|
@ -302,3 +302,51 @@ Attributes: {{ .Attributes }}|Options: {{ .Options }}|
|
|||
testLanguage("bash", "Attributes: map[]|Options: map[style:monokai]|")
|
||||
testLanguage("hugo", "Attributes: map[style:monokai]|Options: map[]|")
|
||||
}
|
||||
|
||||
func TestPanics(t *testing.T) {
|
||||
|
||||
files := `
|
||||
-- config.toml --
|
||||
[markup]
|
||||
[markup.goldmark]
|
||||
[markup.goldmark.parser]
|
||||
autoHeadingID = true
|
||||
autoHeadingIDType = "github"
|
||||
[markup.goldmark.parser.attribute]
|
||||
block = true
|
||||
title = true
|
||||
-- content/p1.md --
|
||||
---
|
||||
title: "p1"
|
||||
---
|
||||
|
||||
BLOCK
|
||||
|
||||
Common
|
||||
|
||||
-- layouts/_default/single.html --
|
||||
{{ .Content }}
|
||||
|
||||
|
||||
`
|
||||
|
||||
for _, test := range []struct {
|
||||
name string
|
||||
markdown string
|
||||
}{
|
||||
{"issue-9819", "asdf\n: {#myid}"},
|
||||
} {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
b := hugolib.NewIntegrationTestBuilder(
|
||||
hugolib.IntegrationTestConfig{
|
||||
T: t,
|
||||
TxtarString: strings.ReplaceAll(files, "BLOCK", test.markdown),
|
||||
},
|
||||
).Build()
|
||||
|
||||
b.AssertFileContent("public/p1/index.html", "Common")
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -16,9 +16,6 @@ package goldmark
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"runtime/debug"
|
||||
|
||||
"github.com/gohugoio/hugo/markup/goldmark/codeblocks"
|
||||
"github.com/gohugoio/hugo/markup/goldmark/internal/extensions/attributes"
|
||||
|
@ -26,11 +23,6 @@ import (
|
|||
|
||||
"github.com/gohugoio/hugo/identity"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"github.com/spf13/afero"
|
||||
|
||||
"github.com/gohugoio/hugo/hugofs"
|
||||
"github.com/gohugoio/hugo/markup/converter"
|
||||
"github.com/gohugoio/hugo/markup/tableofcontents"
|
||||
"github.com/yuin/goldmark"
|
||||
|
@ -178,16 +170,6 @@ func (c converterResult) GetIdentities() identity.Identities {
|
|||
var converterIdentity = identity.KeyValueIdentity{Key: "goldmark", Value: "converter"}
|
||||
|
||||
func (c *goldmarkConverter) Convert(ctx converter.RenderContext) (result converter.Result, err error) {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
dir := afero.GetTempDir(hugofs.Os, "hugo_bugs")
|
||||
name := fmt.Sprintf("goldmark_%s.txt", c.ctx.DocumentID)
|
||||
filename := filepath.Join(dir, name)
|
||||
afero.WriteFile(hugofs.Os, filename, ctx.Src, 07555)
|
||||
fmt.Print(string(debug.Stack()))
|
||||
err = errors.Errorf("[BUG] goldmark: %s: create an issue on GitHub attaching the file in: %s", r, filename)
|
||||
}
|
||||
}()
|
||||
|
||||
buf := &render.BufWriter{Buffer: &bytes.Buffer{}}
|
||||
result = buf
|
||||
|
|
|
@ -101,7 +101,7 @@ func (a *transformer) Transform(node *ast.Document, reader text.Reader, pc parse
|
|||
// Attributes for fenced code blocks are handled in their own extension,
|
||||
// but note that we currently only support code block attributes when
|
||||
// CodeFences=true.
|
||||
if node.PreviousSibling().Kind() != ast.KindFencedCodeBlock && !node.HasBlankPreviousLines() {
|
||||
if node.PreviousSibling() != nil && node.PreviousSibling().Kind() != ast.KindFencedCodeBlock && !node.HasBlankPreviousLines() {
|
||||
attributes = append(attributes, node)
|
||||
return ast.WalkSkipChildren, nil
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue