github.com/linchen2chris/hugo@v0.0.0-20230307053224-cec209389705/tpl/resources/init.go (about)

     1  // Copyright 2018 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 resources
    15  
    16  import (
    17  	"context"
    18  
    19  	"github.com/gohugoio/hugo/deps"
    20  	"github.com/gohugoio/hugo/tpl/internal"
    21  )
    22  
    23  const name = "resources"
    24  
    25  func init() {
    26  	f := func(d *deps.Deps) *internal.TemplateFuncsNamespace {
    27  		ctx, err := New(d)
    28  		if err != nil {
    29  			// TODO(bep) no panic.
    30  			panic(err)
    31  		}
    32  
    33  		ns := &internal.TemplateFuncsNamespace{
    34  			Name:    name,
    35  			Context: func(cctx context.Context, args ...any) (any, error) { return ctx, nil },
    36  		}
    37  
    38  		ns.AddMethodMapping(ctx.Get,
    39  			nil,
    40  			[][2]string{},
    41  		)
    42  
    43  		ns.AddMethodMapping(ctx.GetRemote,
    44  			nil,
    45  			[][2]string{},
    46  		)
    47  
    48  		// Add aliases for the most common transformations.
    49  
    50  		ns.AddMethodMapping(ctx.Fingerprint,
    51  			[]string{"fingerprint"},
    52  			[][2]string{},
    53  		)
    54  
    55  		ns.AddMethodMapping(ctx.Minify,
    56  			[]string{"minify"},
    57  			[][2]string{},
    58  		)
    59  
    60  		ns.AddMethodMapping(ctx.ToCSS,
    61  			[]string{"toCSS"},
    62  			[][2]string{},
    63  		)
    64  
    65  		ns.AddMethodMapping(ctx.PostCSS,
    66  			[]string{"postCSS"},
    67  			[][2]string{},
    68  		)
    69  
    70  		ns.AddMethodMapping(ctx.Babel,
    71  			[]string{"babel"},
    72  			[][2]string{},
    73  		)
    74  
    75  		return ns
    76  	}
    77  
    78  	internal.AddTemplateFuncsNamespace(f)
    79  }