hugo option 源码

2022-10-23 浏览 (611)

hugo option 代码

文件路径:/tpl/internal/go_templates/texttemplate/option.go

/ Copyright 2015 The Go Authors. All rights reserved.
/ Use of this source code is governed by a BSD-style
/ license that can be found in the LICENSE file.

/ This file contains the code to handle template options.

package template

import "strings"

/ missingKeyAction defines how to respond to indexing a map with a key that is not present.
type missingKeyAction int

const (
	mapInvalid   missingKeyAction = iota / Return an invalid reflect.Value.
	mapZeroValue                         / Return the zero value for the map element.
	mapError                             / Error out
)

type option struct {
	missingKey missingKeyAction
}

/ Option sets options for the template. Options are described by
/ strings, either a simple string or "key=value". There can be at
/ most one equals sign in an option string. If the option string
/ is unrecognized or otherwise invalid, Option panics.
/
/ Known options:
/
/ missingkey: Control the behavior during execution if a map is
/ indexed with a key that is not present in the map.
/	"missingkey=default" or "missingkey=invalid"
/		The default behavior: Do nothing and continue execution.
/		If printed, the result of the index operation is the string
/		"<no value>".
/	"missingkey=zero"
/		The operation returns the zero value for the map type's element.
/	"missingkey=error"
/		Execution stops immediately with an error.
/
func (t *Template) Option(opt ...string) *Template {
	t.init()
	for _, s := range opt {
		t.setOption(s)
	}
	return t
}

func (t *Template) setOption(opt string) {
	if opt == "" {
		panic("empty option string")
	}
	/ key=value
	if key, value, ok := strings.Cut(opt, "="); ok {
		switch key {
		case "missingkey":
			switch value {
			case "invalid", "default":
				t.option.missingKey = mapInvalid
				return
			case "zero":
				t.option.missingKey = mapZeroValue
				return
			case "error":
				t.option.missingKey = mapError
				return
			}
		}
	}
	panic("unrecognized option: " + opt)
}

相关信息

hugo 源码目录

相关文章

hugo doc 源码

hugo exec 源码

hugo funcs 源码

hugo helper 源码

hugo hugo_template 源码

hugo template 源码

^