@@ -7,32 +7,42 @@ import (
77 "fmt"
88 "strings"
99
10+ "code.gitea.io/gitea/modules/markup"
11+
1012 "github.com/yuin/goldmark/ast"
1113 "gopkg.in/yaml.v3"
1214)
1315
1416// RenderConfig represents rendering configuration for this file
1517type RenderConfig struct {
16- Meta string
18+ Meta markup. RenderMetaMode
1719 Icon string
18- TOC bool
20+ TOC string // "false": hide, "side"/empty: in sidebar, "main"/"true": in main view
1921 Lang string
2022 yamlNode * yaml.Node
2123}
2224
25+ func renderMetaModeFromString (s string ) markup.RenderMetaMode {
26+ switch strings .TrimSpace (strings .ToLower (s )) {
27+ case "none" :
28+ return markup .RenderMetaAsNone
29+ case "table" :
30+ return markup .RenderMetaAsTable
31+ default : // "details"
32+ return markup .RenderMetaAsDetails
33+ }
34+ }
35+
2336// UnmarshalYAML implement yaml.v3 UnmarshalYAML
2437func (rc * RenderConfig ) UnmarshalYAML (value * yaml.Node ) error {
2538 if rc == nil {
26- rc = & RenderConfig {
27- Meta : "table" ,
28- Icon : "table" ,
29- Lang : "" ,
30- }
39+ return nil
3140 }
41+
3242 rc .yamlNode = value
3343
3444 type commonRenderConfig struct {
35- TOC bool `yaml:"include_toc"`
45+ TOC string `yaml:"include_toc"`
3646 Lang string `yaml:"lang"`
3747 }
3848 var basic commonRenderConfig
@@ -54,58 +64,45 @@ func (rc *RenderConfig) UnmarshalYAML(value *yaml.Node) error {
5464
5565 if err := value .Decode (& stringBasic ); err == nil {
5666 if stringBasic .Gitea != "" {
57- switch strings .TrimSpace (strings .ToLower (stringBasic .Gitea )) {
58- case "none" :
59- rc .Meta = "none"
60- case "table" :
61- rc .Meta = "table"
62- default : // "details"
63- rc .Meta = "details"
64- }
67+ rc .Meta = renderMetaModeFromString (stringBasic .Gitea )
6568 }
6669 return nil
6770 }
6871
69- type giteaControl struct {
72+ type yamlRenderConfig struct {
7073 Meta * string `yaml:"meta"`
7174 Icon * string `yaml:"details_icon"`
72- TOC * bool `yaml:"include_toc"`
75+ TOC * string `yaml:"include_toc"`
7376 Lang * string `yaml:"lang"`
7477 }
7578
76- type complexGiteaConfig struct {
77- Gitea * giteaControl `yaml:"gitea"`
79+ type yamlRenderConfigWrapper struct {
80+ Gitea * yamlRenderConfig `yaml:"gitea"`
7881 }
79- var complex complexGiteaConfig
80- if err := value .Decode (& complex ); err != nil {
81- return fmt .Errorf ("unable to decode into complexRenderConfig %w" , err )
82+
83+ var cfg yamlRenderConfigWrapper
84+ if err := value .Decode (& cfg ); err != nil {
85+ return fmt .Errorf ("unable to decode into yamlRenderConfigWrapper %w" , err )
8286 }
8387
84- if complex .Gitea == nil {
88+ if cfg .Gitea == nil {
8589 return nil
8690 }
8791
88- if complex .Gitea .Meta != nil {
89- switch strings .TrimSpace (strings .ToLower (* complex .Gitea .Meta )) {
90- case "none" :
91- rc .Meta = "none"
92- case "table" :
93- rc .Meta = "table"
94- default : // "details"
95- rc .Meta = "details"
96- }
92+ if cfg .Gitea .Meta != nil {
93+ rc .Meta = renderMetaModeFromString (* cfg .Gitea .Meta )
9794 }
9895
99- if complex .Gitea .Icon != nil {
100- rc .Icon = strings .TrimSpace (strings .ToLower (* complex .Gitea .Icon ))
96+ if cfg .Gitea .Icon != nil {
97+ rc .Icon = strings .TrimSpace (strings .ToLower (* cfg .Gitea .Icon ))
10198 }
10299
103- if complex .Gitea .Lang != nil && * complex .Gitea .Lang != "" {
104- rc .Lang = * complex .Gitea .Lang
100+ if cfg .Gitea .Lang != nil && * cfg .Gitea .Lang != "" {
101+ rc .Lang = * cfg .Gitea .Lang
105102 }
106103
107- if complex .Gitea .TOC != nil {
108- rc .TOC = * complex .Gitea .TOC
104+ if cfg .Gitea .TOC != nil {
105+ rc .TOC = * cfg .Gitea .TOC
109106 }
110107
111108 return nil
@@ -116,9 +113,9 @@ func (rc *RenderConfig) toMetaNode() ast.Node {
116113 return nil
117114 }
118115 switch rc .Meta {
119- case "table" :
116+ case markup . RenderMetaAsTable :
120117 return nodeToTable (rc .yamlNode )
121- case "details" :
118+ case markup . RenderMetaAsDetails :
122119 return nodeToDetails (rc .yamlNode , rc .Icon )
123120 default :
124121 return nil
0 commit comments