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("bash", "Attributes: map[]|Options: map[style:monokai]|")
|
||||||
testLanguage("hugo", "Attributes: map[style:monokai]|Options: map[]|")
|
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 (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
|
||||||
"path/filepath"
|
|
||||||
"runtime/debug"
|
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/markup/goldmark/codeblocks"
|
"github.com/gohugoio/hugo/markup/goldmark/codeblocks"
|
||||||
"github.com/gohugoio/hugo/markup/goldmark/internal/extensions/attributes"
|
"github.com/gohugoio/hugo/markup/goldmark/internal/extensions/attributes"
|
||||||
|
@ -26,11 +23,6 @@ import (
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/identity"
|
"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/converter"
|
||||||
"github.com/gohugoio/hugo/markup/tableofcontents"
|
"github.com/gohugoio/hugo/markup/tableofcontents"
|
||||||
"github.com/yuin/goldmark"
|
"github.com/yuin/goldmark"
|
||||||
|
@ -178,16 +170,6 @@ func (c converterResult) GetIdentities() identity.Identities {
|
||||||
var converterIdentity = identity.KeyValueIdentity{Key: "goldmark", Value: "converter"}
|
var converterIdentity = identity.KeyValueIdentity{Key: "goldmark", Value: "converter"}
|
||||||
|
|
||||||
func (c *goldmarkConverter) Convert(ctx converter.RenderContext) (result converter.Result, err error) {
|
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{}}
|
buf := &render.BufWriter{Buffer: &bytes.Buffer{}}
|
||||||
result = buf
|
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,
|
// Attributes for fenced code blocks are handled in their own extension,
|
||||||
// but note that we currently only support code block attributes when
|
// but note that we currently only support code block attributes when
|
||||||
// CodeFences=true.
|
// 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)
|
attributes = append(attributes, node)
|
||||||
return ast.WalkSkipChildren, nil
|
return ast.WalkSkipChildren, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue