github.com/anakojm/hugo-katex@v0.0.0-20231023141351-42d6f5de9c0b/resources/page/page_data.go (about)

     1  // Copyright 2019 The Hugo Authors. All rights reserved.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  // http://www.apache.org/licenses/LICENSE-2.0
     7  //
     8  // Unless required by applicable law or agreed to in writing, software
     9  // distributed under the License is distributed on an "AS IS" BASIS,
    10  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    11  // See the License for the specific language governing permissions and
    12  // limitations under the License.
    13  
    14  // Package page contains the core interfaces and types for the Page resource,
    15  // a core component in Hugo.
    16  package page
    17  
    18  import (
    19  	"fmt"
    20  )
    21  
    22  // Data represents the .Data element in a Page in Hugo. We make this
    23  // a type so we can do lazy loading of .Data.Pages
    24  type Data map[string]any
    25  
    26  // Pages returns the pages stored with key "pages". If this is a func,
    27  // it will be invoked.
    28  func (d Data) Pages() Pages {
    29  	v, found := d["pages"]
    30  	if !found {
    31  		return nil
    32  	}
    33  
    34  	switch vv := v.(type) {
    35  	case Pages:
    36  		return vv
    37  	case func() Pages:
    38  		return vv()
    39  	default:
    40  		panic(fmt.Sprintf("%T is not Pages", v))
    41  	}
    42  }