markup/goldmark: Add config options for the typographer extension

Note that the config per language part of this will be handled in #10602.

Updates #9772
This commit is contained in:
Bjørn Erik Pedersen
2023-04-12 10:15:02 +02:00
parent d01731d53c
commit 5596dc24a0
5 changed files with 139 additions and 12 deletions

View File

@@ -62,15 +62,32 @@ func Decode(cfg config.Provider) (conf Config, err error) {
func normalizeConfig(m map[string]any) {
v, err := maps.GetNestedParam("goldmark.parser", ".", m)
if err != nil {
return
if err == nil {
vm := maps.ToStringMap(v)
// Changed from a bool in 0.81.0
if vv, found := vm["attribute"]; found {
if vvb, ok := vv.(bool); ok {
vm["attribute"] = goldmark_config.ParserAttribute{
Title: vvb,
}
}
}
}
vm := maps.ToStringMap(v)
// Changed from a bool in 0.81.0
if vv, found := vm["attribute"]; found {
if vvb, ok := vv.(bool); ok {
vm["attribute"] = goldmark_config.ParserAttribute{
Title: vvb,
// Changed from a bool in 0.112.0.
v, err = maps.GetNestedParam("goldmark.extensions", ".", m)
if err == nil {
vm := maps.ToStringMap(v)
const typographerKey = "typographer"
if vv, found := vm[typographerKey]; found {
if vvb, ok := vv.(bool); ok {
if !vvb {
vm[typographerKey] = goldmark_config.Typographer{
Disable: true,
}
} else {
delete(vm, typographerKey)
}
}
}
}

View File

@@ -52,4 +52,38 @@ func TestConfig(t *testing.T) {
c.Assert(conf.AsciidocExt.Extensions[0], qt.Equals, "asciidoctor-html5s")
})
c.Run("Decode legacy typographer", func(c *qt.C) {
c.Parallel()
v := config.New()
// typographer was changed from a bool to a struct in 0.112.0.
v.Set("markup", map[string]any{
"goldmark": map[string]any{
"extensions": map[string]any{
"typographer": false,
},
},
})
conf, err := Decode(v)
c.Assert(err, qt.IsNil)
c.Assert(conf.Goldmark.Extensions.Typographer.Disable, qt.Equals, true)
v.Set("markup", map[string]any{
"goldmark": map[string]any{
"extensions": map[string]any{
"typographer": true,
},
},
})
conf, err = Decode(v)
c.Assert(err, qt.IsNil)
c.Assert(conf.Goldmark.Extensions.Typographer.Disable, qt.Equals, false)
c.Assert(conf.Goldmark.Extensions.Typographer.Ellipsis, qt.Equals, "…")
})
}