aboutsummaryrefslogtreecommitdiffstats
path: root/modules/markup/markdown/renderconfig.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/markup/markdown/renderconfig.go')
-rw-r--r--modules/markup/markdown/renderconfig.go96
1 files changed, 52 insertions, 44 deletions
diff --git a/modules/markup/markdown/renderconfig.go b/modules/markup/markdown/renderconfig.go
index 003579115f..1ba75dbb68 100644
--- a/modules/markup/markdown/renderconfig.go
+++ b/modules/markup/markdown/renderconfig.go
@@ -5,10 +5,9 @@
package markdown
import (
+ "fmt"
"strings"
- "code.gitea.io/gitea/modules/log"
-
"github.com/yuin/goldmark/ast"
"gopkg.in/yaml.v3"
)
@@ -33,17 +32,13 @@ func (rc *RenderConfig) UnmarshalYAML(value *yaml.Node) error {
}
rc.yamlNode = value
- type basicRenderConfig struct {
- Gitea *yaml.Node `yaml:"gitea"`
- TOC bool `yaml:"include_toc"`
- Lang string `yaml:"lang"`
+ type commonRenderConfig struct {
+ TOC bool `yaml:"include_toc"`
+ Lang string `yaml:"lang"`
}
-
- var basic basicRenderConfig
-
- err := value.Decode(&basic)
- if err != nil {
- return err
+ var basic commonRenderConfig
+ if err := value.Decode(&basic); err != nil {
+ return fmt.Errorf("unable to decode into commonRenderConfig %w", err)
}
if basic.Lang != "" {
@@ -51,54 +46,67 @@ func (rc *RenderConfig) UnmarshalYAML(value *yaml.Node) error {
}
rc.TOC = basic.TOC
- if basic.Gitea == nil {
- return nil
+
+ type controlStringRenderConfig struct {
+ Gitea string `yaml:"gitea"`
}
- var control *string
- if err := basic.Gitea.Decode(&control); err == nil && control != nil {
- log.Info("control %v", control)
- switch strings.TrimSpace(strings.ToLower(*control)) {
- case "none":
- rc.Meta = "none"
- case "table":
- rc.Meta = "table"
- default: // "details"
- rc.Meta = "details"
+ var stringBasic controlStringRenderConfig
+
+ if err := value.Decode(&stringBasic); err == nil {
+ if stringBasic.Gitea != "" {
+ switch strings.TrimSpace(strings.ToLower(stringBasic.Gitea)) {
+ case "none":
+ rc.Meta = "none"
+ case "table":
+ rc.Meta = "table"
+ default: // "details"
+ rc.Meta = "details"
+ }
}
return nil
}
type giteaControl struct {
- Meta string `yaml:"meta"`
- Icon string `yaml:"details_icon"`
- TOC *yaml.Node `yaml:"include_toc"`
- Lang string `yaml:"lang"`
+ Meta *string `yaml:"meta"`
+ Icon *string `yaml:"details_icon"`
+ TOC *bool `yaml:"include_toc"`
+ Lang *string `yaml:"lang"`
+ }
+
+ type complexGiteaConfig struct {
+ Gitea *giteaControl `yaml:"gitea"`
+ }
+ var complex complexGiteaConfig
+ if err := value.Decode(&complex); err != nil {
+ return fmt.Errorf("unable to decode into complexRenderConfig %w", err)
}
- var controlStruct *giteaControl
- if err := basic.Gitea.Decode(controlStruct); err != nil || controlStruct == nil {
- return err
+ if complex.Gitea == nil {
+ return nil
}
- switch strings.TrimSpace(strings.ToLower(controlStruct.Meta)) {
- case "none":
- rc.Meta = "none"
- case "table":
- rc.Meta = "table"
- default: // "details"
- rc.Meta = "details"
+ if complex.Gitea.Meta != nil {
+ switch strings.TrimSpace(strings.ToLower(*complex.Gitea.Meta)) {
+ case "none":
+ rc.Meta = "none"
+ case "table":
+ rc.Meta = "table"
+ default: // "details"
+ rc.Meta = "details"
+ }
}
- rc.Icon = strings.TrimSpace(strings.ToLower(controlStruct.Icon))
+ if complex.Gitea.Icon != nil {
+ rc.Icon = strings.TrimSpace(strings.ToLower(*complex.Gitea.Icon))
+ }
- if controlStruct.Lang != "" {
- rc.Lang = controlStruct.Lang
+ if complex.Gitea.Lang != nil && *complex.Gitea.Lang != "" {
+ rc.Lang = *complex.Gitea.Lang
}
- var toc bool
- if err := controlStruct.TOC.Decode(&toc); err == nil {
- rc.TOC = toc
+ if complex.Gitea.TOC != nil {
+ rc.TOC = *complex.Gitea.TOC
}
return nil