mirror of
https://github.com/gohugoio/hugo.git
synced 2025-04-28 06:30:33 +03:00
Some minify configuration adjustments
This commit is contained in:
parent
574c2959b8
commit
7204b354a9
18 changed files with 173 additions and 143 deletions
|
@ -15,37 +15,37 @@
|
|||
// is of limited interest for the general Hugo user.
|
||||
package docshelper
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
type (
|
||||
DocProviderFunc = func() DocProvider
|
||||
DocProvider map[string]map[string]interface{}
|
||||
)
|
||||
|
||||
// DocProviders contains all DocProviders added to the system.
|
||||
var DocProviders = make(map[string]DocProvider)
|
||||
var docProviderFuncs []DocProviderFunc
|
||||
|
||||
// AddDocProvider adds or updates the DocProvider for a given name.
|
||||
func AddDocProvider(name string, provider DocProvider) {
|
||||
if prev, ok := DocProviders[name]; !ok {
|
||||
DocProviders[name] = provider
|
||||
} else {
|
||||
DocProviders[name] = merge(prev, provider)
|
||||
}
|
||||
func AddDocProviderFunc(fn DocProviderFunc) {
|
||||
docProviderFuncs = append(docProviderFuncs, fn)
|
||||
}
|
||||
|
||||
// DocProvider is used to save arbitrary JSON data
|
||||
// used for the generation of the documentation.
|
||||
type DocProvider func() map[string]interface{}
|
||||
func GetDocProvider() DocProvider {
|
||||
provider := make(DocProvider)
|
||||
|
||||
// MarshalJSON returns a JSON representation of the DocProvider.
|
||||
func (d DocProvider) MarshalJSON() ([]byte, error) {
|
||||
return json.MarshalIndent(d(), "", " ")
|
||||
for _, fn := range docProviderFuncs {
|
||||
p := fn()
|
||||
for k, v := range p {
|
||||
if prev, found := provider[k]; !found {
|
||||
provider[k] = v
|
||||
} else {
|
||||
merge(prev, v)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return provider
|
||||
}
|
||||
|
||||
func merge(a, b DocProvider) DocProvider {
|
||||
next := a()
|
||||
for k, v := range b() {
|
||||
next[k] = v
|
||||
}
|
||||
return func() map[string]interface{} {
|
||||
return next
|
||||
// Shallow merge
|
||||
func merge(dst, src map[string]interface{}) {
|
||||
for k, v := range src {
|
||||
dst[k] = v
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue